如何确保中断被延迟,直到发出“中断休眠”为止?

时间:2014-01-15 15:02:53

标签: interrupt microcontroller

想象一下以下场景。微控制器是总线上的从机,比如SPI。一旦在总线上写入一个字节,它就想要睡眠,直到传输完字节为止。代码看起来像这样:

write_byte_to_bus(byte);
wait_for_interrupt(); /* a single assembly instruction */

既然微控制器不是主设备,理论上(并且可能是总线真的很快),字节可以在主设备请求时立即传输,因此会发生这样的事情:

write_byte_to_bus(byte);
                                          interrupt arrives saying
                                          that operations is done
wait_for_interrupt();

导致微控制器在中断到来后暂停中断。如何保护自己免受这种情况的影响?

1 个答案:

答案 0 :(得分:1)

对于您的特定微控制器,您可以先使用SIM禁用中断,然后执行write_byte_to_bus,然后WFI将重新启用中断。

其他微控制器可能有不同的方法来管理它。