28335无BIOS下的任务调度

2019-03-24 10:15发布

我现在用28335完成以下几个任务:1、用epwm产生14K的PWM波驱动IPM2、有CAN通讯和485通讯3、AD采样4、2到3个周期性的查询任务5、其它一些数据转换请教各位不用BIOS的话这些任务应该怎么分配以保证每个任务的时间都比较精确?我的想法是pwm用epwm1的中断产生,这个对时间要求最精确;两个通讯用定时查询的方法,这样的话也有比较严格的时间要求;AD采样可以用pwm来触发;周期性的查询任务时间要求也比较严格;数据转换放在上边几个任务都执行完之后的空闲时间里。对于定时查询和周期性的任务我想用cputimer0的定时中断来做,但是这样的话它的中断优先级比pwm的高,可能会使得PWM的中断不能及时响应,那么还有什么办法既能保证PWM的中断能严格响应而其它的周期性时间又能精确保证?如果两个通讯也用中断方式的话也会发生在通讯中断过程中有了PWM中断不能响应的情况,如果用中断嵌套的话PWM的中断频率很高,会不会发生通讯总被打断而无法连通的情况?请各位指点一二
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
cl0201
2019-03-25 05:14
sure220 发表于 2015-4-20 22:44
个人建议:
1、本身PWM实际上就是一个定时器,可以用PWM中断作为一个定时基准时间,你的PWM的频率为14K,那么就以此为基准时间,在中断中设置时间变量,此变量作为任务查询的标志位,有点类似于时间片轮询的概念,但不全是
2、通讯可以采用中断完成,CAN和485通信分别有CAN通信中断和SCI中断,由于PWM中断的优先级比通信中断优先级高,所以不用干涉,但是要设置好通讯接收完成的标志位,在主循环中一直查询此标志位即可

谢谢,我现在采用的方法和你说的第一点一样,就是在PWM中断中进行计时,到时间则将相应标志置位,然后在主循环中根据这个标志位来执行相应程序。

关于通讯的话我还是想采用查询的方式,尽量不使用中断。PWM的中断优先级比通讯的都高,但是如果通讯已经进入中断之后PWM中断来了,这时候如果没有中断嵌套的话PWM还是得等,不知道这样对于PWM的执行影响有多大?你在实际应用中碰到过因此发生的问题吗,你一般都怎么处理的?

一周热门 更多>

相关问题

    相关文章