單片機(jī)抗干擾技術(shù)及應(yīng)用
發(fā)布時(shí)間:2008/8/25 0:00:00 訪問(wèn)次數(shù):455
1 引 言
在單片機(jī)的應(yīng)用系統(tǒng)中,系統(tǒng)的抗干擾技術(shù)是系統(tǒng)可靠性的重要方面。一個(gè)系統(tǒng)的正確與否,不僅取決于系統(tǒng)的設(shè)計(jì)思想和方法,同時(shí)還取決于系統(tǒng)的抗干擾措施,不然勢(shì)必會(huì)出現(xiàn)原理正確而系統(tǒng)穩(wěn)定性差,甚至不能實(shí)施,使得耗費(fèi)了大量錢財(cái)和時(shí)間研制出來(lái)的控制系統(tǒng)成為一種擺設(shè),電腦變成了“煩惱”。正因如此,抗干擾技術(shù)的研究越來(lái)越引起大家的高度重視。
以下為筆者在多年單片機(jī)控制系統(tǒng)設(shè)計(jì)和應(yīng)用中拾取的一些抗干擾的經(jīng)驗(yàn)體會(huì)。
2 單片機(jī)系統(tǒng)軟件的抗干擾
一般來(lái)講,竄入微機(jī)測(cè)控系統(tǒng)的干擾,其頻譜往往很寬,采用硬件抗干擾措施,只能抑制某個(gè)頻率段的干擾,仍有一些干擾會(huì)進(jìn)入系統(tǒng)。因此,除了采取硬件抗干擾方法外,還要采取軟件抗干擾措施。
2.1 模擬輸入信號(hào)抗干擾
疊加在系統(tǒng)模擬輸入信號(hào)上的噪聲干擾,會(huì)導(dǎo)致較大的測(cè)量誤差。但由于這些噪聲的隨機(jī)性,可以通過(guò)數(shù)字濾波技術(shù)剔除虛假信號(hào),求去真值。常用方法如下:
算術(shù)平均濾波法算術(shù)平均濾波法就是連續(xù)取n個(gè)值進(jìn)行采樣,然后求其平均值。該方法適應(yīng)于對(duì)一般具有隨機(jī)性干擾的信號(hào)進(jìn)行濾波。這種濾波法的特點(diǎn)是:n值較大時(shí),信號(hào)的平滑度好,但靈敏度低;當(dāng)n值較小時(shí),平滑度低,但靈敏度高。
遞推平均濾波法
該方法是把n個(gè)測(cè)量數(shù)據(jù)看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度為n,每進(jìn)行一次新的測(cè)量,就把測(cè)量結(jié)果放入隊(duì)尾,而扔掉原來(lái)隊(duì)首的一次數(shù)據(jù)。計(jì)算n個(gè)數(shù)據(jù)的平均值。對(duì)周期性的干擾,此方法有良好的抑制作用,平滑度高,靈敏度低。但對(duì)偶發(fā)脈沖的干擾抑制作用差。
防脈沖干擾平均值濾波法
在脈沖干擾比較嚴(yán)重的場(chǎng)合,如果采用一般的平均濾波法,則干擾將會(huì)“平均”到結(jié)果中去,故平均值法不易消除由于脈沖干擾而引起的誤差。為此,在n個(gè)采樣數(shù)據(jù)中,取掉最大值和最小值,然后計(jì)算n-2個(gè)數(shù)據(jù)的算術(shù)平均值。為了加快測(cè)量速度,n一般取值為4。
2.2 “死機(jī)”現(xiàn)象的克服
當(dāng)干擾通過(guò)總線或其他口線作用到cpu時(shí),就會(huì)造成程序計(jì)數(shù)器pc值的改變,引起程序混亂,使系統(tǒng)失控。因此,在設(shè)計(jì)單片機(jī)系統(tǒng)時(shí),如何發(fā)現(xiàn)cpu受到干擾,并盡可能無(wú)擾地使系統(tǒng)恢復(fù)到正常工作狀態(tài)是軟件設(shè)計(jì)應(yīng)考慮的主要問(wèn)題。
無(wú)論何種控制系統(tǒng),一般講,死機(jī)現(xiàn)象都是不允許的?朔罊C(jī)現(xiàn)象最有效的辦法就是采用單片機(jī)工加了硬件看門狗電路后仍然有死機(jī)現(xiàn)象,分析原因,可能有以下方面:
因?yàn)槟撤N原因,程序混亂后,看門狗電路雖然發(fā)出了復(fù)位脈沖,但在程序剛剛正常還來(lái)不及發(fā)出一個(gè)脈沖信號(hào),此時(shí)程序再次被干擾,而這時(shí)看門狗電路已處于穩(wěn)態(tài),不能再發(fā)出復(fù)位脈沖。
程序進(jìn)入死循環(huán),在該死循環(huán)中,恰好又有看門狗監(jiān)視i/o口上操作的指令。而該i/o口仍有脈沖信號(hào)輸出,看門狗檢測(cè)不到這種異常情況。
在有嚴(yán)重干擾時(shí),中斷方式控制字有時(shí)會(huì)受到破壞,導(dǎo)致中斷關(guān)閉。
可見(jiàn),只用硬件看門狗電路是無(wú)法確保單片機(jī)正常工作的。因此,可采用以下方法作為補(bǔ)充。
軟件“看門狗”的應(yīng)用
選用定時(shí)器t0作為看門狗,將t0的中斷定義為最高級(jí)中斷?撮T狗啟動(dòng)后,系統(tǒng)必須及時(shí)刷新t0的時(shí)間常數(shù)。
指令冗余技術(shù)
、賜op的使用
在8031單片機(jī)指令系統(tǒng)中所有指令都不超過(guò)3個(gè)字節(jié)。因此,在程序中連續(xù)插入3條nop指令,有助于降低程序計(jì)數(shù)器發(fā)生錯(cuò)誤的概率。
、谥匾噶钊哂
對(duì)于程序流向起決定作用的指令(如ret,reti,acall,ljmp,jz等)和某些對(duì)系統(tǒng)工作狀態(tài)有重要作用的指令(如setbea等)的后面,可重復(fù)寫下這些指令,以確保這些指令的正確執(zhí)行。
軟件陷阱法
單片機(jī)系統(tǒng)程序跑飛意味著cpu執(zhí)行不正確流程程序。而當(dāng)亂飛程序進(jìn)入非程序區(qū),采用冗余技術(shù)無(wú)法使程序納入正確軌道,此時(shí)可采用軟件陷阱法,攔截亂飛程序。軟件陷阱就是用引導(dǎo)指令(如ljmp)將撲獲到的亂飛程序引向復(fù)位入口地址0000h,在此對(duì)程序進(jìn)行出錯(cuò)處理,使其納入正軌。
、佘浖葳甯袷
nop
nop
ljmp0000h
、谲浖葳灏才盼词褂玫闹袛鄥^(qū);
未使用的大片rom空間;
程序區(qū);
中斷服務(wù)程序區(qū)。
2.3 系統(tǒng)復(fù)位特征
單片機(jī)應(yīng)用系統(tǒng)采用看門狗電路后,在一定程度上解決了系統(tǒng)死機(jī)現(xiàn)象,但是每次發(fā)生復(fù)位都使系統(tǒng)執(zhí)行初始化,這在干擾較強(qiáng)的情況下仍不能正常工作。同時(shí)系統(tǒng)雖然沒(méi)有死機(jī),但工作狀態(tài)頻繁改變,這同樣是不能容忍的。
理想的復(fù)位特征應(yīng)該是:系統(tǒng)可以鑒別是首次上電復(fù)位(又稱冷起動(dòng)),還是異常復(fù)位(又稱熱啟動(dòng))。首次上電復(fù)位則進(jìn)行全部初始化,異常復(fù)位則不需要進(jìn)行全部初始化,測(cè)控程序不必從頭開始執(zhí)行,而應(yīng)故障部位開
1 引 言
在單片機(jī)的應(yīng)用系統(tǒng)中,系統(tǒng)的抗干擾技術(shù)是系統(tǒng)可靠性的重要方面。一個(gè)系統(tǒng)的正確與否,不僅取決于系統(tǒng)的設(shè)計(jì)思想和方法,同時(shí)還取決于系統(tǒng)的抗干擾措施,不然勢(shì)必會(huì)出現(xiàn)原理正確而系統(tǒng)穩(wěn)定性差,甚至不能實(shí)施,使得耗費(fèi)了大量錢財(cái)和時(shí)間研制出來(lái)的控制系統(tǒng)成為一種擺設(shè),電腦變成了“煩惱”。正因如此,抗干擾技術(shù)的研究越來(lái)越引起大家的高度重視。
以下為筆者在多年單片機(jī)控制系統(tǒng)設(shè)計(jì)和應(yīng)用中拾取的一些抗干擾的經(jīng)驗(yàn)體會(huì)。
2 單片機(jī)系統(tǒng)軟件的抗干擾
一般來(lái)講,竄入微機(jī)測(cè)控系統(tǒng)的干擾,其頻譜往往很寬,采用硬件抗干擾措施,只能抑制某個(gè)頻率段的干擾,仍有一些干擾會(huì)進(jìn)入系統(tǒng)。因此,除了采取硬件抗干擾方法外,還要采取軟件抗干擾措施。
2.1 模擬輸入信號(hào)抗干擾
疊加在系統(tǒng)模擬輸入信號(hào)上的噪聲干擾,會(huì)導(dǎo)致較大的測(cè)量誤差。但由于這些噪聲的隨機(jī)性,可以通過(guò)數(shù)字濾波技術(shù)剔除虛假信號(hào),求去真值。常用方法如下:
算術(shù)平均濾波法算術(shù)平均濾波法就是連續(xù)取n個(gè)值進(jìn)行采樣,然后求其平均值。該方法適應(yīng)于對(duì)一般具有隨機(jī)性干擾的信號(hào)進(jìn)行濾波。這種濾波法的特點(diǎn)是:n值較大時(shí),信號(hào)的平滑度好,但靈敏度低;當(dāng)n值較小時(shí),平滑度低,但靈敏度高。
遞推平均濾波法
該方法是把n個(gè)測(cè)量數(shù)據(jù)看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度為n,每進(jìn)行一次新的測(cè)量,就把測(cè)量結(jié)果放入隊(duì)尾,而扔掉原來(lái)隊(duì)首的一次數(shù)據(jù)。計(jì)算n個(gè)數(shù)據(jù)的平均值。對(duì)周期性的干擾,此方法有良好的抑制作用,平滑度高,靈敏度低。但對(duì)偶發(fā)脈沖的干擾抑制作用差。
防脈沖干擾平均值濾波法
在脈沖干擾比較嚴(yán)重的場(chǎng)合,如果采用一般的平均濾波法,則干擾將會(huì)“平均”到結(jié)果中去,故平均值法不易消除由于脈沖干擾而引起的誤差。為此,在n個(gè)采樣數(shù)據(jù)中,取掉最大值和最小值,然后計(jì)算n-2個(gè)數(shù)據(jù)的算術(shù)平均值。為了加快測(cè)量速度,n一般取值為4。
2.2 “死機(jī)”現(xiàn)象的克服
當(dāng)干擾通過(guò)總線或其他口線作用到cpu時(shí),就會(huì)造成程序計(jì)數(shù)器pc值的改變,引起程序混亂,使系統(tǒng)失控。因此,在設(shè)計(jì)單片機(jī)系統(tǒng)時(shí),如何發(fā)現(xiàn)cpu受到干擾,并盡可能無(wú)擾地使系統(tǒng)恢復(fù)到正常工作狀態(tài)是軟件設(shè)計(jì)應(yīng)考慮的主要問(wèn)題。
無(wú)論何種控制系統(tǒng),一般講,死機(jī)現(xiàn)象都是不允許的?朔罊C(jī)現(xiàn)象最有效的辦法就是采用單片機(jī)工加了硬件看門狗電路后仍然有死機(jī)現(xiàn)象,分析原因,可能有以下方面:
因?yàn)槟撤N原因,程序混亂后,看門狗電路雖然發(fā)出了復(fù)位脈沖,但在程序剛剛正常還來(lái)不及發(fā)出一個(gè)脈沖信號(hào),此時(shí)程序再次被干擾,而這時(shí)看門狗電路已處于穩(wěn)態(tài),不能再發(fā)出復(fù)位脈沖。
程序進(jìn)入死循環(huán),在該死循環(huán)中,恰好又有看門狗監(jiān)視i/o口上操作的指令。而該i/o口仍有脈沖信號(hào)輸出,看門狗檢測(cè)不到這種異常情況。
在有嚴(yán)重干擾時(shí),中斷方式控制字有時(shí)會(huì)受到破壞,導(dǎo)致中斷關(guān)閉。
可見(jiàn),只用硬件看門狗電路是無(wú)法確保單片機(jī)正常工作的。因此,可采用以下方法作為補(bǔ)充。
軟件“看門狗”的應(yīng)用
選用定時(shí)器t0作為看門狗,將t0的中斷定義為最高級(jí)中斷?撮T狗啟動(dòng)后,系統(tǒng)必須及時(shí)刷新t0的時(shí)間常數(shù)。
指令冗余技術(shù)
、賜op的使用
在8031單片機(jī)指令系統(tǒng)中所有指令都不超過(guò)3個(gè)字節(jié)。因此,在程序中連續(xù)插入3條nop指令,有助于降低程序計(jì)數(shù)器發(fā)生錯(cuò)誤的概率。
、谥匾噶钊哂
對(duì)于程序流向起決定作用的指令(如ret,reti,acall,ljmp,jz等)和某些對(duì)系統(tǒng)工作狀態(tài)有重要作用的指令(如setbea等)的后面,可重復(fù)寫下這些指令,以確保這些指令的正確執(zhí)行。
軟件陷阱法
單片機(jī)系統(tǒng)程序跑飛意味著cpu執(zhí)行不正確流程程序。而當(dāng)亂飛程序進(jìn)入非程序區(qū),采用冗余技術(shù)無(wú)法使程序納入正確軌道,此時(shí)可采用軟件陷阱法,攔截亂飛程序。軟件陷阱就是用引導(dǎo)指令(如ljmp)將撲獲到的亂飛程序引向復(fù)位入口地址0000h,在此對(duì)程序進(jìn)行出錯(cuò)處理,使其納入正軌。
、佘浖葳甯袷
nop
nop
ljmp0000h
、谲浖葳灏才盼词褂玫闹袛鄥^(qū);
未使用的大片rom空間;
程序區(qū);
中斷服務(wù)程序區(qū)。
2.3 系統(tǒng)復(fù)位特征
單片機(jī)應(yīng)用系統(tǒng)采用看門狗電路后,在一定程度上解決了系統(tǒng)死機(jī)現(xiàn)象,但是每次發(fā)生復(fù)位都使系統(tǒng)執(zhí)行初始化,這在干擾較強(qiáng)的情況下仍不能正常工作。同時(shí)系統(tǒng)雖然沒(méi)有死機(jī),但工作狀態(tài)頻繁改變,這同樣是不能容忍的。
理想的復(fù)位特征應(yīng)該是:系統(tǒng)可以鑒別是首次上電復(fù)位(又稱冷起動(dòng)),還是異常復(fù)位(又稱熱啟動(dòng))。首次上電復(fù)位則進(jìn)行全部初始化,異常復(fù)位則不需要進(jìn)行全部初始化,測(cè)控程序不必從頭開始執(zhí)行,而應(yīng)故障部位開
熱門點(diǎn)擊
- 單片機(jī)與RS232串口通信C51程序
- 一種基于單片機(jī)實(shí)現(xiàn)OLED顯示的設(shè)計(jì)
- PIC單片機(jī)CRC校驗(yàn)程序
- PIC單片機(jī)紅外遙控編碼與解碼的問(wèn)題
- 51單片機(jī)與VB串行通信的實(shí)現(xiàn)
- 基于MSP430F149的溫度采集報(bào)警系統(tǒng)的
- 最全的關(guān)于PIC單片機(jī)入門寶典
- 單片機(jī)通信協(xié)議處理
- C8051F12X存儲(chǔ)大量常量代碼的編譯技巧
- PC機(jī)與單片機(jī)的通訊
推薦技術(shù)資料
- 硬盤式MP3播放器終級(jí)改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 首款新結(jié)構(gòu)硅基外腔混合集成光源芯片
- 全大核架構(gòu) X930 超大核的
- 計(jì)算子系統(tǒng)(Compute Sub Syst
- Neoverse CSS V3 架構(gòu)R
- Arm Neoverse CP
- Dimensity 9400芯
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究