嵌入式系统中的中断处理与调试技巧
1. 计数器中断问题及解决方法
在嵌入式系统中,计数器的操作可能会受到中断的影响,导致计数结果出现偏差。例如,当计数器的值为 01FF 时,在重置计数器字节的两条指令之间发生了中断。非中断服务程序(non - ISR)代码将高字节重置为 00,然后中断发生。低字节从 FF 递增到 00,导致高字节递增到 01,最终计数结果为 100,而不是预期的 200 或 0000,位置计数完全出错。
解决方法
- 中断禁用/启用对保护 :可以通过使用中断禁用/启用对来保护这两个重置操作。然而,在某些系统中,这种解决方案会在中断服务中引入不可接受的延迟。
- 先重置低字节 :先重置低字节,如果在重置之间发生中断,低字节会从 00 递增到 01,当非 ISR 代码恢复执行时,不会影响高字节。
- 中断代码执行重置和递增 :当计数器需要重置时,非 ISR 代码设置一个标志。当 ISR 执行时,它检查该标志。如果标志未设置,它递增计数;如果标志设置,ISR 代码将计数归零并清除标志。但这种方法在某些情况下(如两个值位于硬件寄存器中)不起作用。
2. 双 DSP 系统中的低优先级中断服务时间优化
系统概述
图 5.10 展示了一个双数字信号处理器(DSP)系统,使用一对 Analog Devices ADSP - 2101 实现。ADSP - 2101 具有高速串行接口,可用于两个 DSP 之间的通信。在这个系统中,两个
超级会员免费看
订阅专栏 解锁全文
1348

被折叠的 条评论
为什么被折叠?



