搜索
bottom↓
回复: 12

请教个小小调度器使用中任务怎么分配的问题?

[复制链接]

出0入0汤圆

发表于 2019-4-22 14:34:16 | 显示全部楼层 |阅读模式
最近做一款产品,打算使用小小调度器的架构,但关于任务的划分上总是搞不明白白,请各位指点迷津!

产品要求是这样的,外设有按键,led,马达,红外发射和接收。按键我开了个20ms的任务扫描,这个没问题。马达和led我用硬件pwm驱动,在逻辑任务里改变他们的pwm值,这个也没事。到红外这里我就懵逼了,红外的发射和接收都不能放到中断里做(硬件资源欠缺,我们假设不能用中断),发射一组码大概占用10ms时间,100ms发射一组,如果我把这10ms的发射函数放到一个任务里,那这个时候tick时钟中断里的UpdateTimers()是在继续的,但任务不能及时调度,那对其它任务的延时或执行就会造成拖延,那我怎么处理才能更好的适应这个系统要求。另外接收部分呢?希望有经验的大佬指点一下。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-4-22 14:42:04 | 显示全部楼层
是这个吗: https://www.amobbs.com/thread-5508723-1-1.html
个人觉得按键没必要20ms执行一次,可以在tick中断里把键值、按键持续时间存起来,
按键处理可以放在任务里,100ms执行一次都没问题。

出0入0汤圆

 楼主| 发表于 2019-4-22 14:44:45 | 显示全部楼层
lcw_swust 发表于 2019-4-22 14:42
是这个吗: https://www.amobbs.com/thread-5508723-1-1.html
个人觉得按键没必要20ms执行一次,可以在tick ...

是这个。
按键已经在跑了,现在就红外不知道怎么安排,给指导下么大佬

出0入0汤圆

发表于 2019-4-22 14:48:08 | 显示全部楼层
shower.xu 发表于 2019-4-22 14:44
是这个。
按键已经在跑了,现在就红外不知道怎么安排,给指导下么大佬


关键在于这个“会造成拖延”会有多严重?还请详细说一下具体问题。
光是这些任务,看起来没啥影响呀。

出0入0汤圆

 楼主| 发表于 2019-4-22 14:52:16 | 显示全部楼层
lcw_swust 发表于 2019-4-22 14:48
关键在于这个“会造成拖延”会有多严重?还请详细说一下具体问题。
光是这些任务,看起来没啥影响呀。 ...

比如调度器的ticks是1ms,那我发射一次10ms这段时间就不能调度,接收也要这么久,这样对整个系统有影响么?可不可以这么用

出0入76汤圆

发表于 2019-4-22 15:05:41 | 显示全部楼层
1. 首先你用的这个CPU不会只有一个定时器吧??
2. 若是,则:
a. 10ms发射使用FSM结构, 把它进行若干片段划分啊, 然后把它放在第1个任务来运行(它的优先级是最高的)
b. 时序严格的,放任务在定时器中断里面去运行

出0入0汤圆

发表于 2019-4-22 15:16:32 | 显示全部楼层
本帖最后由 lcw_swust 于 2019-4-22 15:19 编辑
shower.xu 发表于 2019-4-22 14:52
比如调度器的ticks是1ms,那我发射一次10ms这段时间就不能调度,接收也要这么久,这样对整个系统有影响么 ...


看起来没关系呀,其它任务就算暂停10ms应该没关系吧,就看你实际效果了。
红外码的步长大约0.56ms吧,再不行就以0.56ms为调度器的ticks,并在ticks中断里面用状态机外理红外。
--------
接收也可以在ticks中断里定时查询,也用状态机的思想。
也可写成任务函数的形式在定时中断里直接调用。

出0入0汤圆

 楼主| 发表于 2019-4-22 15:41:21 | 显示全部楼层
foxpro2005 发表于 2019-4-22 15:05
1. 首先你用的这个CPU不会只有一个定时器吧??
2. 若是,则:
a. 10ms发射使用FSM结构, 把它进行若干片段 ...

1.对的,只有一个定时器。
2中断里的代码太长担心影响到接受的准确度。谢谢,我要实际测试一下

出0入0汤圆

 楼主| 发表于 2019-4-22 15:45:56 | 显示全部楼层
lcw_swust 发表于 2019-4-22 15:16
看起来没关系呀,其它任务就算暂停10ms应该没关系吧,就看你实际效果了。
红外码的步长大约0.56ms吧,再 ...

我试了,发射阻塞10ms对其他任务影响是不大。接收如果在任务里查询应该是不行的,那样要求调度器的节拍比红外码的小才不容易漏,(任务里扫描红外信号的句子要跟延时,延时函数最小是一个任务节拍,我的理解对么?).我再想想看是否利用外部中断来扫描红外信号。 谢谢你

出0入0汤圆

发表于 2019-4-22 16:14:09 | 显示全部楼层
shower.xu 发表于 2019-4-22 15:45
我试了,发射阻塞10ms对其他任务影响是不大。接收如果在任务里查询应该是不行的,那样要求调度器的节拍比 ...

哦,那就好。
对了,接收如果采用定时查询则需要至少达到3倍的波特率,假如红外码是0.56ms节拍,则查询周期为0.56ms/3才足够。

出0入0汤圆

发表于 2019-4-23 08:14:02 | 显示全部楼层
只能将定时节拍将就红外最小间隔

出0入0汤圆

发表于 2019-4-23 13:44:10 | 显示全部楼层
还小小调度器,直接FREERTOS

出0入0汤圆

发表于 2019-4-23 15:55:28 | 显示全部楼层
硬件资源欠缺的简单mcu,又要求实时性,还是裸跑状态机。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 14:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表