daybreak21 发表于 2016-1-4 15:04:18

关于使用硬件中断时,按键去抖动的问题

本人使用Arduino 2或3号口中断来执行程序切换,如按下按键,中断程序+1或-1;
但是中断程序不能使用delay函数,所以去抖动是个大问题,我也尝试过并联电容
但是效果不是很理想,大大小小要一个个试,有什么靠谱的方法吗?程序去抖可以吗?
多谢各位前辈!

pathletboy 发表于 2016-1-4 16:21:42

真要去抖,只能再占用一个定时器了,下降沿按下开定时器,然后定时到去抖时间过去,就触发按键事件,并关闭定时器,如果定时期间内出现上升沿,那直接把定时器关闭即可。

daybreak21 发表于 2016-1-4 19:24:56

多谢,我试试

jardon 发表于 2016-9-15 08:15:23

pathletboy 发表于 2016-1-4 16:21
真要去抖,只能再占用一个定时器了,下降沿按下开定时器,然后定时到去抖时间过去,就触发按键事件,并关闭 ...

问题解决了吗?我正好也有这个情况

1981818001 发表于 2016-9-15 13:14:07

用一个 unsigned long 型变量例如 a 就可以解决,中断的时候判断 a 是不是等于0,如果等于0则执行
a =millis(),并处理按钮事件,之后发生中断,先判断 millis() - a 是不是大于去抖时间,如果是小于的
退出,如果是大于,则执行a =millis(),并处理按钮事件,等下一次中断的到来。
页: [1]
查看完整版本: 关于使用硬件中断时,按键去抖动的问题