芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 5660|回复: 0

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

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 431

    主题

    818

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16150
    QQ
    发表于 2019-5-6 22:07:00 | 显示全部楼层 |阅读模式
    一个简单的中断服务函数,按键按下就产生中断,然后进入中断服务函数清除边沿捕获寄存器以清中断,然后done++。
    未加延时.png
    实验时候发现,每次done都会加2次,经过分析,觉得应该是按下一次按键而中断服务函数却进入了两次,想了很久没想通问题原因,然后联想到这个按键我是使用了一个avalon总线跨时钟域桥连接到NIOS的,会不会是因为CPU执行清边沿捕获寄存器指令发出之后,指令还没有到达PIO这个核的寄存器,中断还没有被清零掉,中断服务函数就已经完成退出了,然后此时又马上被触发中断,导致二次进入中断服务函数。带着这个疑问,我在中断服务函数中加入了5个循环的延迟,然后问题就解决了,不会进入两次了。
    加延时.png

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

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-12-22 19:30 , Processed in 0.081473 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表