我正在一个需要实现(实际上)实时行为的系统上工作。我正在为该项目使用无阻塞的裸机编程和dsPIC33e单片机。任务使用队列相互通信。
我有低,中和高优先级的任务。高优先级任务是例如使用触觉开关紧急关闭。低优先级任务和高优先级任务分别用于通信,传感器读取和那里的处理。低优先级任务和高优先级任务在RMS(速率单调调度)下进行检查,并且可以利用60%的处理器时间正常工作。
问题是我想在硬件计时器ISR中调用低优先级和高优先级任务(模块的链接列表),因为dspic33e处理器提供了基于硬件的上下文切换。但是它经常说中断例程应该尽可能小,并且经常说使用标志并读入main。如果我使用这些标志,然后在main中读取这些标志,则无法实现抢占行为。
如果在计时器例程中调用链接列表仍然不错,有人可以建议/指导我吗?