什么情况导致计时器中断冲突/错过?

时间:2014-01-27 16:41:31

标签: timer embedded hardware interrupt rtos

我正在开发一个运行完成状态机RTOS。我想知道在什么条件下可以错过中断?最大CPU利用率条件(100%)是否会导致错过中断?另外,如果两个具有不同处理程序但相同中断线的定时器在同一个时钟点超时,那么ISR首先运行?

[从软件/固件工程师的角度回复,硬件知识有限。]

1 个答案:

答案 0 :(得分:4)

错过中断的典型方法是在第二次出现相同的中断源之前不首次发生中断。当您没有足够快地为第一次出现服务时,您将错过后续出现,因为它无法与第一次出现区分开。没有队列可以叠加多次出现的中断,因此您需要在再次发生特定中断之前提供服务并清除每个中断。 (请注意,不同的中断源可以同时处于挂起状态,并且可以单独进行维护,因为它们可以被区分。同一个中断源的两次出现会导致您错过一个。)

100%的CPU利用率并不一定会导致错过中断,但我想它可能有所贡献。它也可能导致其他问题。

许多微控制器都包含一个中断优先级排序机制,该机制定义哪些中断源将通过哪些中断来断言。这种情况因微控制器而异,因此您需要查看特定微控制器的数据表以获取详细信息。

更新: 那么什么条件可能导致中断不能足够快地得到服务呢? 如果中断被禁用的时间过长,则可能无法足够快地中断中断。或者,如果优先级较高的中断处理程序需要的时间太长,那么较低优先级的中断可能无法足够快地进行服务。

要避免这些情况,请缩短禁用中断的时间段和中断处理程序例程。