[問題] 該如何處理20個按鍵防彈跳?

看板ASM (組合語言)作者 (zxzx8059)時間7年前 (2018/01/19 12:24), 編輯推噓5(5018)
留言23則, 8人參與, 6年前最新討論串1/1
各位先進大家好 一般在按鈕開關MCU都會做防彈跳(消抖),Timer+狀態機之類的,只需判斷是否按下,不 判斷長短壓、連按之類的。 若是一個兩個開關還好,但是增加到20個開關對應20個I/O時,請問各位先進會如何處理 呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.214.128.51 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1516335876.A.680.html

01/19 12:26, 7年前 , 1F
目前還沒有很好的想法,最慘就是土法煉鋼,相關的code
01/19 12:26, 1F

01/19 12:26, 7年前 , 2F
複製20份Orz
01/19 12:26, 2F

01/19 13:03, 7年前 , 3F
每個按鍵併聯上0.1uF的電容
01/19 13:03, 3F

01/19 15:08, 7年前 , 4F
改硬體要重新送認證... 目前的狀況是io被emi打到讓mcu以
01/19 15:08, 4F

01/19 15:08, 7年前 , 5F
為開關開了
01/19 15:08, 5F

01/19 16:12, 7年前 , 6F
debounce(Button_struct* pbutton)
01/19 16:12, 6F

01/19 16:12, 7年前 , 7F
相關參數封裝成結構就可以了
01/19 16:12, 7F

01/19 18:04, 7年前 , 8F
謝謝,我想一想
01/19 18:04, 8F

01/21 22:57, 7年前 , 9F
改架構吧 我認為可以更好
01/21 22:57, 9F

01/24 02:00, 7年前 , 10F
為什麼20個要 debounce 難不成會同時?
01/24 02:00, 10F

01/24 02:01, 7年前 , 11F
作成key pad然後用int,timer即可
01/24 02:01, 11F

01/24 09:41, 7年前 , 12F
因為是20個實體的開關機構
01/24 09:41, 12F

01/24 11:34, 7年前 , 13F
基本上不太可能多按扭同時按下 timer是夠用的
01/24 11:34, 13F

01/24 11:35, 7年前 , 14F
只要某個按扭按下 觸發int啟動isr
01/24 11:35, 14F

01/24 11:36, 7年前 , 15F
然後啟動timer即可 多按扭就可以用array紀錄status
01/24 11:36, 15F

01/24 11:38, 7年前 , 16F
不過未何需要20份同樣的code?
01/24 11:38, 16F

01/24 13:14, 7年前 , 17F
原本負責的同事在國外出差,用的mcu我沒用過架構不了解
01/24 13:14, 17F

01/24 13:14, 7年前 , 18F
,原定對應的計畫客戶說不行
01/24 13:14, 18F

01/24 13:16, 7年前 , 19F
這週就要測試,所以就先這樣改,能測過才會繼續優化寫法
01/24 13:16, 19F

01/24 13:16, 7年前 , 20F
,產品類似儀表開關,一次動到很多個是有可能的
01/24 13:16, 20F

01/26 12:16, 7年前 , 21F
用光軸
01/26 12:16, 21F

02/18 00:49, 6年前 , 22F
硬件消抖像是樓上說的電容(不推薦)或是軟件消抖
02/18 00:49, 22F

02/21 15:55, 6年前 , 23F
74922 這個IC可以試看看,要判斷狀態 建議用結構體
02/21 15:55, 23F
文章代碼(AID): #1QONC4Q0 (ASM)
文章代碼(AID): #1QONC4Q0 (ASM)