Microchip
直播中

张璨

8年用户 204经验值
私信 关注
[问答]

中断功能的大小

我对此有点困惑,有一个普遍的建议,ISR应该尽可能小。接下来,我让定时器变短,每个1ms有一个简单的标志。这个标志将在main中签入并执行所有的1ms任务。但恐怕我没有得到确切的1ms,也不一致。我该怎么办?

回帖(9)

吕聪

2020-3-26 09:24:01
在设置1mS标志时,任何从“main”调用的函数正在执行的操作都将显示1mS处理函数中的延迟。任何阻塞、等待返回main的例程都会增加这个问题。文斯
举报

李铭鑫

2020-3-26 09:49:21
嗨,Small是一个相对的度量,具有很大的灵活性。这个问题在dsPIC33F主题论坛上,所以我假设这就是您正在使用的。dsPIC33和PIC24微控制器有7个中断优先级,所以在c中设计中断的使用有很大的自由度。ode.这在很大程度上取决于您的应用领域和所需的响应。您应该分析您的需求,并设计应用程序,包括相应的中断优先级。您需要了解自己的应用程序以及它的行为。这包括计划希望它如何工作,以及研究程序实际是如何执行的。示波器或逻辑分析器在此上下文中很有用。一般规则是小型和时间关键的中断处理程序应该以最高优先级运行。然后,我通常使用中等优先级,3、4和5作为通信驱动程序,如UART对于一些在低优先级1或2执行的大中断处理程序代码,我没有挂断。文件系统?但是,这会有副作用,主循环中不应该有任何时间关键代码。主回路中的r 1ms任务。当主回路中的1ms任务开始和完成时,您可以安排切换输出引脚,并在示波器上研究其行为。精确执行定时活动的另一种可能性是在最高pr上安排从定时器ISR触发的软件中断。优先级别,在ISR中执行“1 ms任务”,优先选择2到6之间。迈西尔
举报

王璨

2020-3-26 09:57:42
如前所述:“视情况而定”。我认为1ms ISR的最大执行时间不超过300微秒并不重要,除非通过决定在当前ms中断中执行哪个子任务“浪费”了大部分的执行时间。但是所有这些都是“通用规则”,可能适用于也可能不适用于您的独立程序。双重应用。
举报

李渝辉

2020-3-26 10:05:25
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分