日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

linux 内核按键抖动,Tiny4412 Linux驱动之按键(定时器防抖动) | 技术部落

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 内核按键抖动,Tiny4412 Linux驱动之按键(定时器防抖动) | 技术部落 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按鍵抖動示意圖

我們平常所用的按鍵為機械彈性開關,由于觸點的彈性作用,按鍵在閉合時不會馬上穩定的接通,而是有一段時間的抖動,在斷開時也不會立即斷開。抖動時間由按鍵的機械特性所決定,一般為5ms~10ms。所以我們在做按鍵檢測時都要加一個消抖的過程。

按鍵消抖主要有兩種方案:

一是延時重采樣;

二是持續采樣。

從理論上來說,延時(如10ms)重采樣的準確率肯定低于持續采樣。

按鍵消抖的方法

(1)延時重采樣

延時重采樣的意思是,當第一次檢測到鍵值由'1'變為'0'時,再延時一段時間(如10ms),再次采樣,確認是否仍是'0';若是'0'則認為此時鍵值為'0',否則,重新執行檢測過程。

該方案的缺陷:a.如果延時太短,有可能兩次采樣時都處于抖動時間,因此可能引起誤判;

b.如果延時太長,可能檢測不出按鍵變換

(2)持續采樣

持續采樣的原理是,當檢測到按鍵處于某電平(如'0')時,在之后的N個時鐘周期內連續檢測此按鍵的電平,如果一直不變,則讀出此按鍵的電平值(如'0')。

持續采樣的優點:a.樣本足夠多,減少誤判的可能性。

b.對于按鍵按下('1'->'0'),按鍵釋放('0'->'1')都可以檢測。

持續采樣的缺點:持續檢測的時間太長(大于按鍵按下和釋放的時間差),則可能無法檢測按鍵的變換。

在這里我們使用的延時采樣的方式,即:當某個鍵被按下后會觸發中斷,上一個試驗中我們進了按鍵中斷之后就喚醒讀取函數,這樣由于按鍵抖動可能會短時間內進好幾次按鍵中斷;現在我們加入內個定時器,當按鍵按下出發了按鍵中斷之后,在按鍵中斷里修改定時器觸發時間(比如定時10ms)。

原理說完了,下面開始做測試:

還是一共三個文件,1驅動相關:. keyIrq_drv_timer.c ?Makefile

2.測試程序 : key_test_irq.c

實驗步驟:

驅動和應用程序都編譯出來之后,首先加載驅動:

insmod keyIrq_drv_timer.ko

加載按鍵驅動

如上圖所示,加載完驅動之后,按鍵節點已經自動創建出來了,

下面開始測試;

輸入 ./key_test_irq

按鍵測試

總結

以上是生活随笔為你收集整理的linux 内核按键抖动,Tiny4412 Linux驱动之按键(定时器防抖动) | 技术部落的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。