【发布时间】:2014-01-27 16:41:31
【问题描述】:
我正在开发一个运行到完成状态机 RTOS。我想知道在什么情况下可以错过中断?最大 CPU 利用率条件 (100%) 是否会导致错过中断?此外,如果两个具有不同处理程序但具有相同中断线的计时器在同一滴答声中超时,那么哪个 ISR 先运行?
[从硬件知识有限的软件/固件工程师的角度欣赏回复。]
【问题讨论】:
标签: timer embedded hardware interrupt rtos
我正在开发一个运行到完成状态机 RTOS。我想知道在什么情况下可以错过中断?最大 CPU 利用率条件 (100%) 是否会导致错过中断?此外,如果两个具有不同处理程序但具有相同中断线的计时器在同一滴答声中超时,那么哪个 ISR 先运行?
[从硬件知识有限的软件/固件工程师的角度欣赏回复。]
【问题讨论】:
标签: timer embedded hardware interrupt rtos
中断丢失的典型方式是在第二次发生相同中断源之前未处理第一次发生的中断。如果您没有足够快地为第一次出现提供服务,那么您会错过随后的出现,因为它无法与第一次出现区分开来。没有队列可以堆叠多次出现的中断,因此您需要在该特定中断再次发生之前服务并清除每个中断。 (请注意,不同的中断源可以同时挂起并分别服务,因为它们可以区分。相同的中断源出现两次可能会导致您错过一个。)
100% 的 CPU 利用率不一定会导致中断丢失,但我想它可能会有所贡献。这也可能导致其他问题。
许多微控制器都包含一个中断优先级机制,该机制定义了哪些中断源将被断言高于哪些其他中断。这因微控制器而异,因此您必须查看特定微控制器的数据表以了解详细信息。
更新: 那么什么情况会导致中断服务不够快呢? 如果中断禁用时间过长,则可能无法足够快地处理中断。或者,如果较高优先级的中断处理程序花费的时间太长,则较低优先级的中断可能无法足够快地得到服务。
为避免这些情况,请缩短禁用中断的时间段和中断处理程序例程。
【讨论】: