[问题] 该如何处理20个按键防弹跳?

楼主: zxzx8059 (zxzx8059)   2018-01-19 12:24:33
各位先进大家好
一般在按钮开关MCU都会做防弹跳(消抖),Timer+状态机之类的,只需判断是否按下,不
判断长短压、连按之类的。
若是一个两个开关还好,但是增加到20个开关对应20个I/O时,请问各位先进会如何处理
呢?
楼主: zxzx8059 (zxzx8059)   2018-01-19 12:26:00
目前还没有很好的想法,最惨就是土法炼钢,相关的code复制20份Orz
作者: dsplab (星野夢美)   2018-01-19 13:03:00
每个按键并联上0.1uF的电容
楼主: zxzx8059 (zxzx8059)   2018-01-19 15:08:00
改硬件要重新送认证... 目前的状况是io被emi打到让mcu以为开关开了
作者: chuegou (chuegou)   2018-01-19 16:12:00
debounce(Button_struct* pbutton)相关参数封装成结构就可以了
楼主: zxzx8059 (zxzx8059)   2018-01-19 18:04:00
谢谢,我想一想
作者: lion21 (好歹我也是个夕阳武士)   2018-01-21 22:57:00
改架构吧 我认为可以更好
作者: TWkobe (中华柯比)   2018-01-24 02:00:00
为什么20个要 debounce 难不成会同时?作成key pad然后用int,timer即可
楼主: zxzx8059 (zxzx8059)   2018-01-24 09:41:00
因为是20个实体的开关机构
作者: TWkobe (中华柯比)   2018-01-24 11:34:00
基本上不太可能多按扭同时按下 timer是够用的只要某个按扭按下 触发int启动isr然后启动timer即可 多按扭就可以用array纪录status不过未何需要20份同样的code?
楼主: zxzx8059 (zxzx8059)   2018-01-24 13:14:00
原本负责的同事在国外出差,用的mcu我没用过架构不了解,原定对应的计画客户说不行这周就要测试,所以就先这样改,能测过才会继续优化写法,产品类似仪表开关,一次动到很多个是有可能的
作者: stupid0319 (征女友)   2018-01-26 12:16:00
用光轴
作者: shinfon (烽燻)   2018-02-18 00:49:00
硬件消抖像是楼上说的电容(不推荐)或是软件消抖
作者: wang3166 (3166)   2018-02-21 15:55:00
74922 这个IC可以试看看,要判断状态 建议用结构体

Links booklink

Contact Us: admin [ a t ] ucptt.com