admin 发表于 2019-5-6 22:07:00

【个人笔记】中断响应速度快,某些情况下,也会带来麻...

一个简单的中断服务函数,按键按下就产生中断,然后进入中断服务函数清除边沿捕获寄存器以清中断,然后done++。

实验时候发现,每次done都会加2次,经过分析,觉得应该是按下一次按键而中断服务函数却进入了两次,想了很久没想通问题原因,然后联想到这个按键我是使用了一个avalon总线跨时钟域桥连接到NIOS的,会不会是因为CPU执行清边沿捕获寄存器指令发出之后,指令还没有到达PIO这个核的寄存器,中断还没有被清零掉,中断服务函数就已经完成退出了,然后此时又马上被触发中断,导致二次进入中断服务函数。带着这个疑问,我在中断服务函数中加入了5个循环的延迟,然后问题就解决了,不会进入两次了。


有网友质疑按键没有消抖,实际上,这个我早考虑到了,并使用了Verilog硬件消掉了 。所以抖动不是原因。

页: [1]
查看完整版本: 【个人笔记】中断响应速度快,某些情况下,也会带来麻...