最近做一款产品,打算使用小小调度器的架构,但关于任务的划分上总是搞不明白白,请各位指点迷津!
产品要求是这样的,外设有按键,led,马达,红外发射和接收。按键我开了个20ms的任务扫描,这个没问题。马达和led我用硬件pwm驱动,在逻辑任务里改变他们的pwm值,这个也没事。到红外这里我就懵逼了,红外的发射和接收都不能放到中断里做(硬件资源欠缺,我们假设不能用中断),发射一组码大概占用10ms时间,100ms发射一组,如果我把这10ms的发射函数放到一个任务里,那这个时候tick时钟中断里的UpdateTimers()是在继续的,但任务不能及时调度,那对其它任务的延时或执行就会造成拖延,那我怎么处理才能更好的适应这个系统要求。另外接收部分呢?希望有经验的大佬指点一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1.对的,只有一个定时器。
2中断里的代码太长担心影响到接受的准确度。谢谢,我要实际测试一下
我试了,发射阻塞10ms对其他任务影响是不大。接收如果在任务里查询应该是不行的,那样要求调度器的节拍比红外码的小才不容易漏,(任务里扫描红外信号的句子要跟延时,延时函数最小是一个任务节拍,我的理解对么?).我再想想看是否利用外部中断来扫描红外信号。 谢谢你
哦,那就好。
对了,接收如果采用定时查询则需要至少达到3倍的波特率,假如红外码是0.56ms节拍,则查询周期为0.56ms/3才足够。
一周热门 更多>