登录 注册
当前位置:主页 > 资源下载 > 5 > avr_atomic_demo:展示中断与原子竞争条件故障的实例

avr_atomic_demo:展示中断与原子竞争条件故障的实例

  • 更新:2024-11-21 18:16:50
  • 大小:5KB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:其它 - 开发技术
  • 格式:ZIP

资源介绍

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