嵌入式 – 如何保持中断简短?

嵌入式编程中最受欢迎的建议是“保持中断”.

现在我的情况是,我的main()循环中有一个非常长的运行任务(将大量数据写入SDcard),有时可能需要100ms.所以为了保持系统响应,我把所有其他的东西都移到了中断处理程序.

例如,通常会在一个中断中处理输入的UART数据,然后在main()循环中处理传入的命令,然后发送回应答.但是在我的情况下,命令的整个处理/处理也会在中断中发生,因为我的main()循环可以被阻塞(相对)长的时间.

最佳的解决方案是切换到RTOS,但是我没有RAM.我的设计是否有替代方案,中断可能很短?

传统的方法是中断来安排延迟过程并尽快结束中断.

中断完成后,延期程序列表从最重要到最不重要.

考虑到您具有主要(较低的优势)动作以及两个中断I1和I2的情况,其中I2比主要更重要,但不如I1重要.

在这种情况下,假设您正在运行主要和I1火灾. I1调度延迟过程并向硬件发出信号I1完成. I1的DPC现在开始运行.突然,I2从硬件进来. I2的中断从I1的DPC接管,并将I2的DPC和信号记录到硬件上.

调度程序然后返回到I1的DPC(因为更重要),当I1的DPC完成时,I2的DPC开始(因为它比main更重要),然后最终将执行返回给main.

此设计允许您安排不同中断的重要性,鼓励您将中断保持在较小的位置,并允许您以有序且按顺序优先排列的方式完成DPC.

相关文章
相关标签/搜索