專利名稱:輸入捕獲中斷方式解碼紅外遙控的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及解碼紅外遙控的方法,尤其涉及輸入捕獲方式來解碼紅外的方法。
背景技術(shù):
所謂的紅外遙控系統(tǒng)主要由兩大部分構(gòu)成紅外編碼發(fā)射部分,紅外解碼接收部分,紅外發(fā)射部分主要由鍵盤、紅外編碼芯片、電源、紅外發(fā)射管組成,紅外解碼部分由紅外接收電路、紅外解碼、電源和應(yīng)用電路組成,傳統(tǒng)使用的專用硬件解碼芯片,其功能固定、一種編碼格式對(duì)應(yīng)一種專用解碼芯片,靈活性差,而現(xiàn)在大多采用將編碼信號(hào)輸入單片機(jī),利用單片機(jī)來解碼,解碼軟件可以根據(jù)自己的實(shí)際需要,設(shè)計(jì)各種各樣的功能,并能適當(dāng)調(diào)整、增加已有電路的功能,通過修改軟件,可以適應(yīng)各種不同的遙控編碼芯片,而軟件解碼通常采用查詢法,即單片機(jī)不斷查詢紅外端口的電平變化,其占用大量CPU時(shí)間和資源,當(dāng)系統(tǒng)存在其它任務(wù)情況下誤碼率高,其步驟如下(見圖I):
步驟100 :初始化,配置GPIO為紅外編碼信號(hào)信號(hào)輸入端;
步驟101 :等待信號(hào)為高電平,開定時(shí)器測(cè)量高電平的時(shí)間,直到遇到低電平,判斷是否符合脈寬的要求,不符合則丟棄認(rèn)為是雜波信號(hào);
步驟102 :測(cè)量低電平寬度,做校驗(yàn);
步驟103 :循環(huán)上述測(cè)試,直到所有位都解碼完畢。
這種查詢法解碼流程中存在著以下缺陷
I、查詢法原理是CPU的一個(gè)端口一直在查詢端口的狀態(tài),一直在檢測(cè)脈沖的寬度并計(jì)數(shù),以此方法來測(cè)量脈沖寬度,再根據(jù)編碼規(guī)則來解碼。
2、查詢法消耗大量的CPU資源,要么禁中斷,要是開了中斷,難以得到準(zhǔn)確的時(shí)間,系統(tǒng)進(jìn)一步擴(kuò)展困難。
發(fā)明內(nèi)容
為了解決背景技術(shù)所存在的問題,本發(fā)明提供一種輸入捕獲中斷方式解碼紅外遙控的方法,包括步驟如下
單片機(jī)主程序中配置輸入捕獲定時(shí)器,啟動(dòng)輸入捕獲定時(shí)器,開中斷;
中斷觸發(fā)獲取捕獲時(shí)刻值;
和上次捕獲時(shí)刻值比較,計(jì)算兩次間隔,即是脈寬;
狀態(tài)機(jī)比較脈寬是否符合引導(dǎo)碼前端;
確認(rèn)是否是碼頭;
狀態(tài)機(jī)進(jìn)入解碼狀態(tài)并比較脈寬是否符合編碼規(guī)則;
編碼變量保存編碼值;
捕獲的值存入變量,供下次比較使用;
清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。
所述的狀態(tài)機(jī)比較脈寬是否符合引導(dǎo)碼前端,是則進(jìn)行確認(rèn)是否為碼頭,否則清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。
所述的確認(rèn)是否是碼頭,是則進(jìn)入解碼狀態(tài),否則返回進(jìn)行比較脈寬是否符合引導(dǎo)碼前端。
所述的狀態(tài)機(jī)進(jìn)入解碼狀態(tài)并比較脈寬是否符合編碼規(guī)則,是則將編碼值保存到編碼變量中,否則即認(rèn)為是雜波,丟棄。
所述的編碼變量每保存一次編碼值,編碼位數(shù)計(jì)數(shù)值加I,直到位數(shù)符合預(yù)定編碼位數(shù),解碼完成,狀態(tài)機(jī)跳到空閑狀態(tài)。
本發(fā)明方法,使用了一個(gè)定時(shí)器,該定時(shí)器具有輸入捕獲功能,在信號(hào)發(fā)生變沿跳變時(shí),會(huì)自動(dòng)記錄下發(fā)生邊沿跳變時(shí)的時(shí)刻,并觸發(fā)中斷,僅在中斷處理程序中處理連續(xù)兩次的時(shí)刻值,以此計(jì)算出信號(hào)脈寬,再解碼,輸入捕獲就是檢驗(yàn)相同的一個(gè)或者幾個(gè)邊沿, 多次計(jì)算求平均值,根據(jù)差值再按照一定得運(yùn)算求出輸入波形的周期信息,每個(gè)通道每次只能配置為不是上升沿就是下降沿。
本發(fā)明采用輸入捕獲中斷方式解碼紅外遙控,只需占用一個(gè)定時(shí)器的輸入捕獲通道,CPU可以做其他的工作,占用系統(tǒng)資源少,執(zhí)行程序效率高,擴(kuò)展性好,對(duì)系統(tǒng)其它任務(wù)的影響小。
圖I為本發(fā)明方法的流程圖。
具體實(shí)施例方式
參照?qǐng)D1,本發(fā)明的實(shí)現(xiàn)步驟如下
SI :單片機(jī)主程序中配置輸入捕獲定時(shí)器,啟動(dòng)輸入捕獲定時(shí)器,開中斷;
S2 :中斷觸發(fā)獲取捕獲時(shí)刻值。
S3 :和上次捕獲時(shí)刻值比較,計(jì)算兩次間隔,即是脈寬。
S4:狀態(tài)機(jī)處在空閑狀態(tài),此時(shí)比較脈寬是否符合引導(dǎo)碼前端,是則轉(zhuǎn)入S5,否則轉(zhuǎn)入S8退出。
S5 :確認(rèn)是否是碼頭,是則進(jìn)入解碼狀態(tài),否則轉(zhuǎn)入S4。
S6 :狀態(tài)機(jī)處在解碼狀態(tài),此時(shí)比較脈寬是否符合數(shù)據(jù)“O”或數(shù)據(jù)“I”或數(shù)據(jù)“F” 的編碼規(guī)則,是則編碼值移位進(jìn)入編碼變量中保存,編碼位數(shù)計(jì)數(shù)值加1,直到位數(shù)符合預(yù)定編碼位數(shù),解碼完成,狀態(tài)機(jī)跳到空閑狀態(tài),即S4,否則認(rèn)為是雜波,丟棄,轉(zhuǎn)入S7。
S7 :捕獲的值存入變量,供下次比較使用。
S8 :清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。
權(quán)利要求
1.一種輸入捕獲中斷方式解碼紅外遙控的方法,包括步驟如下單片機(jī)主程序中配置輸入捕獲定時(shí)器,啟動(dòng)輸入捕獲定時(shí)器,開中斷;中斷觸發(fā)獲取捕獲時(shí)刻值;和上次捕獲時(shí)刻值比較,計(jì)算兩次間隔,即是脈寬;狀態(tài)機(jī)比較脈寬是否符合引導(dǎo)碼前端;確認(rèn)是否是碼頭;狀態(tài)機(jī)進(jìn)入解碼狀態(tài)并比較脈寬是否符合編碼規(guī)則;編碼變量保存編碼值;捕獲的值存入變量,供下次比較使用;清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述的狀態(tài)機(jī)比較脈寬是否符合引導(dǎo)碼前端,是則進(jìn)行確認(rèn)是否為碼頭,否則清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述的確認(rèn)是否是碼頭,是則進(jìn)入解碼狀態(tài),否則返回進(jìn)行比較脈寬是否符合引導(dǎo)碼前端。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述的狀態(tài)機(jī)進(jìn)入解碼狀態(tài)并比較脈寬是否符合編碼規(guī)則,是則將編碼值保存到編碼變量中,否則即認(rèn)為是雜波,丟棄。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述的編碼變量每保存一次編碼值,編碼位數(shù)計(jì)數(shù)值加I,直到位數(shù)符合預(yù)定編碼位數(shù),解碼完成,狀態(tài)機(jī)跳到空閑狀態(tài)。
全文摘要
一種輸入捕獲中斷方式解碼紅外遙控的方法,它涉及解碼紅外遙控的方法。包括步驟為單片機(jī)主程序中配置輸入捕獲定時(shí)器,啟動(dòng)輸入捕獲定時(shí)器,開中斷;中斷觸發(fā)獲取捕獲時(shí)刻值;和上次捕獲時(shí)刻值比較,計(jì)算兩次間隔;狀態(tài)機(jī)比較脈寬是否符合引導(dǎo)碼前端;確認(rèn)是否是碼頭;狀態(tài)機(jī)進(jìn)入解碼狀態(tài)并比較脈寬是否符合編碼規(guī)則;編碼變量保存編碼值;捕獲的值存入變量,供下次比較使用;清除標(biāo)志位,翻轉(zhuǎn)邊沿觸發(fā)方式,為下次捕獲做準(zhǔn)備。本發(fā)明只需占用一個(gè)定時(shí)器的輸入捕獲通道,CPU可以做其他的工作,占用系統(tǒng)資源少,執(zhí)行程序效率高,擴(kuò)展性好,對(duì)系統(tǒng)其它任務(wù)的影響小。
文檔編號(hào)G08C23/04GK102938197SQ20121043686
公開日2013年2月20日 申請(qǐng)日期2012年10月26日 優(yōu)先權(quán)日2012年10月26日
發(fā)明者陳潔 申請(qǐng)人:合肥移瑞通信技術(shù)有限公司