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

2020-01-13 18:24发布

最近做一款产品,打算使用小小调度器的架构,但关于任务的划分上总是搞不明白白,请各位指点迷津!

产品要求是这样的,外设有按键,led,马达,红外发射和接收。按键我开了个20ms的任务扫描,这个没问题。马达和led我用硬件pwm驱动,在逻辑任务里改变他们的pwm值,这个也没事。到红外这里我就懵逼了,红外的发射和接收都不能放到中断里做(硬件资源欠缺,我们假设不能用中断),发射一组码大概占用10ms时间,100ms发射一组,如果我把这10ms的发射函数放到一个任务里,那这个时候tick时钟中断里的UpdateTimers()是在继续的,但任务不能及时调度,那对其它任务的延时或执行就会造成拖延,那我怎么处理才能更好的适应这个系统要求。另外接收部分呢?希望有经验的大佬指点一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
lcw_swust
1楼-- · 2020-01-13 19:49
是这个吗: https://www.amobbs.com/thread-5508723-1-1.html
个人觉得按键没必要20ms执行一次,可以在tick中断里把键值、按键持续时间存起来,
按键处理可以放在任务里,100ms执行一次都没问题。
shower.xu
2楼-- · 2020-01-13 22:49
lcw_swust 发表于 2019-4-22 14:42
是这个吗: https://www.amobbs.com/thread-5508723-1-1.html
个人觉得按键没必要20ms执行一次,可以在tick ...

是这个。
按键已经在跑了,现在就红外不知道怎么安排,给指导下么大佬
lcw_swust
3楼-- · 2020-01-14 00:27
shower.xu 发表于 2019-4-22 14:44
是这个。
按键已经在跑了,现在就红外不知道怎么安排,给指导下么大佬


关键在于这个“会造成拖延”会有多严重?还请详细说一下具体问题。
光是这些任务,看起来没啥影响呀。
shower.xu
4楼-- · 2020-01-14 04:34
lcw_swust 发表于 2019-4-22 14:48
关键在于这个“会造成拖延”会有多严重?还请详细说一下具体问题。
光是这些任务,看起来没啥影响呀。 ...

比如调度器的ticks是1ms,那我发射一次10ms这段时间就不能调度,接收也要这么久,这样对整个系统有影响么?可不可以这么用
foxpro2005
5楼-- · 2020-01-14 04:58
 精彩回答 2  元偷偷看……
lcw_swust
6楼-- · 2020-01-14 06:31
本帖最后由 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中断里定时查询,也用状态机的思想。
也可写成任务函数的形式在定时中断里直接调用。

一周热门 更多>