极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16052|回复: 4

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

[复制链接]
发表于 2016-1-4 15:04:18 | 显示全部楼层 |阅读模式
本人使用Arduino 2或3号口中断来执行程序切换,如按下按键,中断程序+1或-1;
但是中断程序不能使用delay函数,所以去抖动是个大问题,我也尝试过并联电容
但是效果不是很理想,大大小小要一个个试,有什么靠谱的方法吗?程序去抖可以吗?
多谢各位前辈!
回复

使用道具 举报

发表于 2016-1-4 16:21:42 | 显示全部楼层
真要去抖,只能再占用一个定时器了,下降沿按下开定时器,然后定时到去抖时间过去,就触发按键事件,并关闭定时器,如果定时期间内出现上升沿,那直接把定时器关闭即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-4 19:24:56 | 显示全部楼层
多谢,我试试
回复 支持 反对

使用道具 举报

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

问题解决了吗?我正好也有这个情况
回复 支持 反对

使用道具 举报

发表于 2016-9-15 13:14:07 | 显示全部楼层
用一个 unsigned long 型变量例如 a 就可以解决,中断的时候判断 a 是不是等于0,如果等于0则执行
a =millis(),并处理按钮事件,之后发生中断,先判断 millis() - a 是不是大于去抖时间,如果是小于的
退出,如果是大于,则执行a =millis(),并处理按钮事件,等下一次中断的到来。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 01:52 , Processed in 0.036065 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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