文件名称:avr_atomic_demo:演示中断和原子竞争条件失败的问题
文件大小:5KB
文件格式:ZIP
更新时间:2024-05-27 13:57:29
Makefile
avr_atomic_demo 演示中断和原子性/竞争条件失败的问题 什么? 这是一个快速演示,说明了为什么您不希望在中断服务程序(ISR)和AVR上的代码主体之间共享16位变量,除非您知道自己在做什么。 有关详细说明,请参阅。 (TL; DR:如果您不想知道自己在做什么,只需将其包装在ATOMIC_BLOCK 。) 真的不行吗? 将代码闪烁到AVR中,并注意LED闪烁。 现在查看代码,看看是否可以找出原因。 ISR正在0x2222和0x7777之间更改变量。 我们将该全局变量复制到另一个局部变量中,并且仅当该局部变量的值为0x2277或0x7722时,LED才会点亮。 但是,LED仍在闪烁。 发生了严重错误。 头是,由于它是8位计算机上的16位变量,因此将其复制需要两条机器语言指令,并且在我们进行分配的一半时,中断可以更改该变量。 啊哈! 但这不太可能,对吧? 看一下闪烁的
【文件预览】:
avr_atomic_demo-master
----main.c(2KB)
----.gitignore(25B)
----Makefile(7KB)
----README.md(2KB)