999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種實時性強并且可移植的按鍵消抖方法*

2015-11-23 02:35:17胡傳志沈建華李躍華
關鍵詞:嵌入式方法系統(tǒng)

胡傳志,沈建華,李躍華

(1.南通大學計算機科學與技術學院,南通 226019;2.華東師范大學)

一種實時性強并且可移植的按鍵消抖方法*

胡傳志1,2,沈建華2,李躍華1

(1.南通大學計算機科學與技術學院,南通 226019;2.華東師范大學)

延時消抖方法是嵌入式系統(tǒng)中常見的按鍵消抖方法,其通過延時程序跳過抖動態(tài),該方法雖然可行,但既不具備實時性,也不具備可移植性。針對這種情況,提出了一種新的按鍵消抖方法,該方法通過一個累乘算法來有效識別按鍵抖動態(tài)和穩(wěn)定態(tài)的區(qū)別,達到消除抖動影響的目的。實驗結果表明,該方法不僅實時性強而且具備可移植性。

嵌入式系統(tǒng);按鍵消抖;抖動態(tài);穩(wěn)定態(tài);實時性

引 言

在嵌入式系統(tǒng)中,按鍵消抖是一個常見問題,延時消抖方法是教科書上常提到的一種按鍵消抖方法。延時消抖方法的原理是通過調用一個延時程序跳過抖動態(tài),從而達到消抖的目的。這種方法有兩個致命的缺點:一是延時期間CPU一直被延時程序占用,長達幾十ms,這對于實時性要求很高的嵌入式系統(tǒng)來說無異于死機;二是延時程序通過指令周期的累加來實現延時,而不同系統(tǒng)的指令周期是不同的,所以該方法不具備可移植性。

為了克服延時消抖的缺點,有人提出了定時器中斷消抖方法,該方法的原理和延時消抖其實是一樣的,也是通過延時跳過抖動態(tài),區(qū)別在于使用定時器取代延時程序。雖然通過定時器延時解決了實時性的問題,但是定時器的配置和使用在不同系統(tǒng)中是不同的,所以依然沒有解決可移植性的問題。

本文提出了一種新的按鍵消抖方法,與上述兩種方法不同,該方法不是機械地跳過抖動態(tài),而是設法識別按鍵的抖動態(tài)和穩(wěn)定態(tài),從而避開抖動影響。因為該方法的核心是通過一個累乘算法來識別抖動態(tài)和穩(wěn)定態(tài),所以將該方法命名為累乘消抖方法。

1 按鍵信號分析

按鍵是嵌入式系統(tǒng)中常用的輸入單元,常見的電路形式如圖1所示。

按下按鍵SW,按鍵值(即keyin端電平)由高變低;松開按鍵,keyin端電平由低變高,即在keyin端出現一個負脈沖,如圖2所示。

圖1 按鍵電路單元

圖2 理想的按鍵信號

這樣,系統(tǒng)通過讀取keyin端電平來識別按鍵狀態(tài),一個負脈沖代表一次按鍵。然而,實際中,在按下按鍵和松開按鍵的瞬間,由于觸點的彈性作用而引發(fā)電信號不穩(wěn)定,導致在這兩個瞬間都會有非常短暫(10ms左右,取決于按鍵的機電特性)的抖動毛刺存在,如圖3所示(為便于討論,將按鍵的狀態(tài)分為前沿抖動態(tài)、穩(wěn)定按下態(tài)、后沿抖動態(tài)和穩(wěn)定松開態(tài))。

圖3 實際的按鍵信號

盡管抖動時間非常短暫,但是對于指令周期ns級的微控制器來說還是漫長的,以至于在微控制器看來就不是一個負脈沖,而是很多個負脈沖,從而導致一次按鍵被誤認為多次按鍵。按鍵消抖就是為了消除抖動影響,對于一次按鍵,只讓系統(tǒng)看作一次。延時消抖的原理是通過延時程序跳過抖動態(tài),本文介紹的累乘消抖方法的原理是有效地識別當前按鍵所處狀態(tài),然后根據不同的按鍵狀態(tài)做相應的處理。

2 累乘消抖方法

2.1 抖動態(tài)和穩(wěn)定態(tài)的區(qū)別

累乘消抖方法的關鍵是識別抖動態(tài)和穩(wěn)定態(tài)的區(qū)別。由圖3可知,抖動態(tài)是頻繁的1、0跳變;穩(wěn)定態(tài)或者一直為0(穩(wěn)定按下態(tài)),或者一直為1(穩(wěn)定松開態(tài))。抖動態(tài)的特征是變化,穩(wěn)定態(tài)的特征是不變,基于這點,只要設計出一個能夠區(qū)別變化量和不變量的算法,就可以識別出抖動態(tài)和穩(wěn)定態(tài)。

如圖3所示,在一次按鍵過程中,按鍵依次經歷了前沿抖動態(tài)、穩(wěn)定按下態(tài)、后沿抖動態(tài)和穩(wěn)定松開態(tài)。其中,前沿抖動態(tài)是變化的,期間按鍵值keyin不會一直為0,會有若干次跳變回1;穩(wěn)定按下態(tài)是不變的,期間按鍵值一直為0;后沿抖動態(tài)是變化的,期間按鍵值不會一直為1,會有若干次跳變?yōu)?;穩(wěn)定松開態(tài)是不變的,期間按鍵值一直為1。

兩種“變化”都表現為“不一直”,兩種“不變”都表現為“一直”。按鍵狀態(tài)分析見表1。

表1 按鍵狀態(tài)分析

設計一種算法,如果能夠區(qū)別“不一直”和“一直”,那么問題便迎刃而解。借助邏輯乘運算的“全真才真,有假則假”的特點可以輕松解決這個問題。

2.2 累乘算法

在等待按鍵按下時,如果檢測到有低電平,則緊接著連續(xù)讀取按鍵信號N次。如果處于剛按下時的抖動態(tài),這N次讀取可能發(fā)生在毛刺的底部(低電平),也可能發(fā)生在毛刺的頂部(高電平),當N不是太小時,能夠保證其中至少會有一次發(fā)生在毛刺的頂部。如果對這N次按鍵值是否為0進行累計邏輯乘操作,那么結果為假。如果是處于穩(wěn)定的按下態(tài),這N次讀取都為低電平,則對這N次按鍵值是否為0進行累計邏輯乘操作,結果為真。

在等待按鍵松開時,如果檢測到有高電平,緊接著連續(xù)讀取按鍵信號N次。如果處于剛松開時的抖動態(tài),這N次讀取可能發(fā)生在毛刺的頂部(高電平),也可能發(fā)生在毛刺的底部(低電平),當N不是太小時,能夠保證其中至少會有一次發(fā)生在毛刺的底部。如果對這N次按鍵值是否為1進行累計邏輯乘操作,則結果為假。如果是處于穩(wěn)定松開態(tài),這N次讀取都為高電平,對這N次按鍵值是否為1進行累計邏輯乘操作,結果為真。

至此可以給出一個算法,在N次循環(huán)中,將按鍵值與期望值進行比較,將它們是否與期望值相等的邏輯結果用邏輯乘運算作累計,根據累計值來判別按鍵狀態(tài),鑒于累計、邏輯乘這兩個關鍵要素,將此算法命名為累乘算法,描述如下:

算法分析:從循環(huán)條件可以看出,對于抖動態(tài),是不會將循環(huán)執(zhí)行到底的,在第一次沒有讀到期望值時,就否定了循環(huán)條件。對于穩(wěn)定態(tài),一直讀到的都是期望值,退出循環(huán)的原因是計數次數已到。退出循環(huán)后的累計值Andup若為假,即為抖動態(tài),若為真,即為穩(wěn)定態(tài)。

2.3 累乘消抖方法

基于累乘算法識別按鍵狀態(tài),建立的按鍵消抖程序如下:

程序分析:靜態(tài)布爾變量Pressed記錄按鍵的狀態(tài),假表示松開,真表示按下。當按鍵處于穩(wěn)定按下態(tài)時,返回真,其他狀態(tài)返回假。通過一個不超過COUNT次的循環(huán)檢測來判別抖動態(tài)和穩(wěn)定態(tài),尚未達到COUNT次但因為Andup為假而退出循環(huán)的是抖動態(tài);達到了COUNT次而退出循環(huán)的是穩(wěn)定態(tài),此時Andup為真。

循環(huán)次數COUNT的設置很重要,COUNT值太小,可能導致判斷不準確;取值太大,則會浪費。浪費只會發(fā)生在穩(wěn)定態(tài),在抖動態(tài)是不存在浪費的,因為一旦沒有讀到期望值就導致Andup值為假,從而否定了循環(huán)條件。只有在穩(wěn)定態(tài),直到COUNT次才退出循環(huán),總共循環(huán)COUNT次。COUNT次循環(huán)相對于延時消抖里的幾十ms來說,可以說是完全釋放了CPU,大大提高了系統(tǒng)的實時性。另外,該方法不涉及指令周期和定時器等底層硬件,所以完全具備可移植性。

3 實驗與分析

本文以Tiva C LaunchPad為實驗平臺驗證累乘消抖方法的可行性和實時性。在將算法實例化之前,首先要考慮的就是COUNT的取值問題,因為COUNT的取值決定了算法的可行性和實時性。

3.1 COUNT取值方法

COUNT取值太小的話,不能保證在次數很少的循環(huán)累乘中一定能讀到抖動態(tài)的某次逆跳變,所謂逆跳變指前沿抖動態(tài)的跳回1,以及后沿抖動態(tài)的跳回0。可能出現這樣的情況,前沿抖動時恰巧每次讀取都發(fā)生在0處,后沿抖動時恰巧每次讀取都發(fā)生在1處。這樣就導致把抖動態(tài)誤認為穩(wěn)定態(tài),從而使算法失去了可行性。COUNT取值太大的話,又會在穩(wěn)定態(tài)的循環(huán)累乘中浪費大量CPU時間,從而使算法損失了實時性。

實驗中,依次取COUNT值為20、10、2。同時,為了記錄每次循環(huán)累乘的執(zhí)行情況,在循環(huán)累乘的一開始添加一條語句,將循環(huán)計數器n通過串行口輸出到上位機的串口終端程序,這樣便可以清楚地看到每次循環(huán)累乘都執(zhí)行了幾次。不到COUNT次的是抖動態(tài),到了COUNT次的是穩(wěn)定態(tài)。特別要注意每次抖動態(tài)的循環(huán)次數,目的是了解大概幾次就可以讀到逆跳變。這為盡量縮小COUNT提供了依據,縮小COUNT就等于提高實時性。

當COUNT=20時,按鍵靈敏,證明可行,其中隨機一次按鍵,串口記錄的執(zhí)行情況見表2。

表2 COUNT=20時串口記錄的執(zhí)行情況

第1次循環(huán)累乘,循環(huán)體執(zhí)行了2次,在第2次時讀到了逆跳變,說明是抖動。第2次循環(huán)累乘,循環(huán)體執(zhí)行了3次,在第3次時讀到了逆跳變,說明是抖動。第3次循環(huán)累乘,循環(huán)體執(zhí)行了20次,一直沒有讀到逆跳變,說明是穩(wěn)定態(tài)。第4次循環(huán)累乘,循環(huán)體執(zhí)行了2次,在第2次時讀到了逆跳變,說明是抖動。第5次循環(huán)累乘,循環(huán)體執(zhí)行了3次,在第3次時讀到了逆跳變,說明是抖動。第6次循環(huán)累乘,循環(huán)體執(zhí)行了2次,在第2次時讀到了逆跳變,說明是抖動。第7次循環(huán)累乘,循環(huán)體執(zhí)行了20次,一直沒有讀到逆跳變,說明是穩(wěn)定態(tài)。對于本次按鍵,抖動態(tài)的循環(huán)累乘次數為2~3次。

當COUNT=10時,按鍵靈敏,證明可行。其中隨機一次按鍵,串口記錄情況見表3。

對于本次按鍵,抖動態(tài)的循環(huán)累乘次數也為2~3次。

當COUNT=2時,按鍵不靈,說明不可行。因為兩次循環(huán)不足以保證在抖動態(tài)期間一定有一次能讀到逆跳變,以至于將抖動態(tài)誤認為穩(wěn)定態(tài),從而導致一次按鍵被誤認為多次。

表3 COUNT=10時串口記錄的執(zhí)行情況表

多做幾次實驗之后發(fā)現,每次抖動態(tài)的循環(huán)累乘最多需要三次就可以讀到逆跳變,所以COUNT值要大于3,為了留有一定冗余,取COUNT值為10即可。限于篇幅不能把每次實驗結果都羅列出來。

3.2 評估

累乘消抖程序總是在執(zhí)行幾次循環(huán)后就交出執(zhí)行權,最多的循環(huán)次數也就是COUNT次,相比較延時消抖中的百萬次循環(huán)(將ns級的指令周期累加到ms級,需要執(zhí)行百萬次循環(huán))來說大大提高了實時性。另外,累乘消抖程序并不涉及指令周期和定時器等底層硬件具有可移植性。

結 語

使用累乘消抖方法建立的消抖程序在識別出按鍵的狀態(tài)后立刻返回,交出CPU使用權。區(qū)別是不同的返回代碼反映了不同的按鍵狀態(tài),如果是抖動態(tài)則不予處理,如果是穩(wěn)定態(tài)則給予相應處理。如果把按鍵消抖比作家長吩咐正在看電視的小孩看著燒水的水壺,抖動態(tài)好比水正在燒,穩(wěn)定態(tài)好比水已燒開。那么,延時消抖就好比一個笨小孩,離開了電視機,一直盯著水壺,直到水開。

累乘消抖則好比一個聰明的小孩,沒有停止看電視,只是定期地看一眼水壺的狀態(tài),如果水沒開,繼續(xù)看電視,如果水開了就告知家長。通過這個比喻可以形象地看到累乘消抖具有很強的實時性。另外,累乘消抖不涉及指令周期和定時器等底層硬件,所以又具備可移植性。雖然為了達到最理想的實時性,要通過實驗確定當前系統(tǒng)最適合的COUNT值,但如果要求不是過于嚴苛,直接選用COUNT為100即可。

[1]卜登立.基于優(yōu)先級編碼器的非編碼矩陣鍵盤接口設計[J].化工自動化及儀表,2010,37(4):93-95.

[2]張迎偉.基于嵌入式系統(tǒng)的機械設備點檢儀研制[D].西安:西安科技大學,2011.

[3]曾立志.基于嵌入式系統(tǒng)的按鍵接口設計技術研究[J].軟件,2013,34(7):63-64.

[4]陳良琳,肖春發(fā).基于Atmel QTouch的ATmega48感應按鍵設計[J].單片機與嵌入式系統(tǒng)應用,2011,11(5):37-39.

[5]袁鑫.以MCU為核心的嵌入式系統(tǒng)通用硬件平臺設計[D].天津:南開大學,2011.

[6]楊茂林.基于移動BREW3.1.5平臺的嵌入式應用的開發(fā)與研究[D].北京:北京郵電大學,2010.

[7]孫強,張振華,曹躍龍.使用UML和C語言實現基于對象的嵌入式軟件開發(fā)[J].計算機測量與控制,2003,11(4):292-294.

[8]Maeda Y,Kentaro T,MIYAKAWA M.Quantitative Analysis on Usability of Button-Input Interfaces[J].IEICE transactions on fundamentals of electronics,communications and computer sciences,2011,94(2):789-794.

[9]Morimoto K,Miyajima C,Itou K,et al.A virtual button interface using fingertip movements[C]//Machine Learning and Cybernetics,2007International Conference on IEEE,2007(4):2089-2093.

胡傳志(碩士研究生),主要研究方向為嵌入式系統(tǒng)和計算機系統(tǒng)結構。

High Real-time and Portable Method for Shaking Elimination of Keystroke

Hu Chuanzhi1,2,Shen Jianhua2,Li Yuehua1
(1.School of Computer Science&Technology,Nantong University,Nantong 226019,China;2.East China Normal University)

Time-lapse method is a common method of shaking elimination of keystroke in the embedded system,it skips shaking-state via a time-lapse program,but this method has neither real-time performance nor portability.For this reason,a new method of shaking elimination of keystroke is proposed.It recognizes the difference between the shaking-state and steady-state via an algorithm of accumulated multiplication,so that it can eliminate the influence of shaking.The experimental results show that the method has both high real-time performance and portability.

embedded system;shaking elimination of keystroke;shaking-state;steady-state;real-time performance

TP368.1

A

??楊迪娜

2015-01-26)

南通市應用研究項目(BK2012068);南通大學自然科學基金(13Z002)。

猜你喜歡
嵌入式方法系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發(fā)平臺
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 免费一级毛片不卡在线播放| 操美女免费网站| 国产一级在线播放| 黄色网在线| 婷婷亚洲最大| 亚洲日韩久久综合中文字幕| 欧美另类第一页| 国产屁屁影院| 国产91蝌蚪窝| 2022精品国偷自产免费观看| 老司国产精品视频| 香蕉国产精品视频| 国产男人天堂| www.亚洲色图.com| 久久人搡人人玩人妻精品| 婷婷色婷婷| 亚洲一区二区在线无码| 亚洲天堂.com| 任我操在线视频| 亚洲乱码在线视频| 一区二区三区国产| 国产极品嫩模在线观看91| 91色国产在线| 精品小视频在线观看| 久久精品国产精品国产一区| 婷婷丁香在线观看| 国产精品亚洲一区二区三区z | 亚洲国产精品无码久久一线| 噜噜噜综合亚洲| 色成人综合| 无码高潮喷水在线观看| 婷婷久久综合九色综合88| 国产免费网址| 亚洲国产成人在线| 在线看片中文字幕| 人妻丰满熟妇av五码区| 日韩成人在线网站| 国产精品亚洲精品爽爽 | 午夜丁香婷婷| 制服丝袜一区二区三区在线| 欧美成人看片一区二区三区| 亚洲成人动漫在线观看 | 亚洲欧美日韩视频一区| 成人午夜精品一级毛片| 香蕉99国内自产自拍视频| a天堂视频| 草逼视频国产| 欧美www在线观看| 538国产视频| 午夜视频日本| 丁香五月婷婷激情基地| 东京热一区二区三区无码视频| 国产尤物在线播放| 人妻一本久道久久综合久久鬼色| 亚洲av综合网| 亚洲三级视频在线观看| 欧美午夜小视频| 精品国产免费人成在线观看| 亚洲人成成无码网WWW| a级毛片免费播放| 制服丝袜无码每日更新| 亚洲日本www| 亚洲视频三级| jijzzizz老师出水喷水喷出| 婷婷久久综合九色综合88| swag国产精品| 日韩无码黄色| 98精品全国免费观看视频| 97在线视频免费观看| 老司机久久精品视频| 亚洲中文字幕av无码区| 久操线在视频在线观看| 亚洲精品少妇熟女| 国产哺乳奶水91在线播放| 亚洲清纯自偷自拍另类专区| 熟女视频91| 视频国产精品丝袜第一页| 亚洲啪啪网| 国产精品男人的天堂| 久久a级片| 国产成人超碰无码| 香蕉视频国产精品人|