[問題] 該如何處理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