變頻空調(diào)單片機(jī)測(cè)控系統(tǒng)的抗干擾設(shè)計(jì)
3軟件的抗干擾設(shè)計(jì)
單片機(jī)在惡劣的環(huán)境中工作時(shí),干擾源不僅會(huì)影響到硬件系統(tǒng)的正常工作,也常常會(huì)使系統(tǒng)的軟件運(yùn)行發(fā)生混亂。因此系統(tǒng)的抗干擾問(wèn)題不能完全靠硬件去解決,軟件的抗干擾設(shè)計(jì)也是一項(xiàng)重要措施。當(dāng)系統(tǒng)受到干擾時(shí),可能使單片機(jī)的程序跑飛,改變程序指針PC值,從而使程序進(jìn)入死循環(huán)而不能正常工作;也可能改變單片機(jī)內(nèi)部特殊功能寄存器(SFR)的值使程序狀態(tài)混亂,甚至發(fā)生故障,損壞器件;如果被測(cè)量信號(hào)受到干擾,則會(huì)造成測(cè)量值失真。對(duì)于這種情況的對(duì)策是及時(shí)發(fā)現(xiàn),及時(shí)引導(dǎo)程序走向正確位置,或者使系統(tǒng)重新復(fù)位開(kāi)始運(yùn)行。在本系統(tǒng)中采用了以下措施。
圖5提高系統(tǒng)抗干擾能力的原理框圖
31利用冗余指令
當(dāng)CPU受到干擾后,往往將一些操作數(shù)當(dāng)作指令碼來(lái)執(zhí)行,引起程序混亂。此時(shí),若程序彈飛到某一條單字節(jié)指令上時(shí),便自動(dòng)納入正規(guī);若程序彈飛到某一條雙字節(jié)或三字節(jié)指令上時(shí),有可能落到其操作數(shù)上而繼續(xù)出錯(cuò)。為此,在對(duì)程序流向起著決定作用的指令之前插入兩條NOP指令,保證彈飛的程序迅速納入正確的控制軌道。此類指令有RET、RETI、LCALL、LJMP、JNC、JNB、CJNE、DJNZ等。
指令冗余措施可以減少程序彈飛的次數(shù),使其很快納入程序軌道,但這不能保證在失控期間不出錯(cuò),更不能保證程序納入正常軌道后就太平無(wú)事了。解決這個(gè)問(wèn)題還必須采用軟件容錯(cuò)技術(shù),使系統(tǒng)的誤動(dòng)作減少,并盡可能消除重大誤動(dòng)作。
32設(shè)置軟件陷阱
所謂軟件陷阱,就是一條引導(dǎo)指令,強(qiáng)行將捕獲的程序引向一個(gè)指定的地址,在那里有一段專門對(duì)程序出錯(cuò)進(jìn)行處理的程序。如果把這段程序的入口標(biāo)號(hào)稱為ERR的話,軟件陷阱即為一條LJMPERR的指令,為加強(qiáng)其捕捉效果,一般還在它前面加兩條NOP指令。因此,真正的軟件陷阱由三條指令構(gòu)成: NOP NOP LJMPERR
軟件陷阱一般安排在下列四種地方:
(1)未使用的中斷向量區(qū)當(dāng)干擾使未使用的中斷開(kāi)放,并激活這些中斷時(shí),就會(huì)引起系統(tǒng)程序的混亂,但如果在這些地方布上陷阱,就能及時(shí)捕捉到錯(cuò)誤中斷;
(2)未使用的大片ROM空間對(duì)于剩余的大片
未編程的ROM空間,一般都維持原狀(0FFH)。程序彈飛到這一區(qū)域后將順流而下,不再跳躍(除非受到新的干擾)。這時(shí)只要每隔一段設(shè)置一個(gè)陷阱,就能捕捉到彈飛的程序;
(3)表格表格有兩類,一類是數(shù)據(jù)表格;另一類是
散轉(zhuǎn)表格。由于表格中內(nèi)容和檢索值有一一對(duì)應(yīng)關(guān)系,在表格中安排陷阱將會(huì)破壞其連續(xù)性和對(duì)應(yīng)關(guān)系,所以只能在表格的最后安排五字節(jié)陷阱(NOPNOPLJMP);
(4)程序區(qū)程序區(qū)是由一序列執(zhí)行指令構(gòu)成
的,一般不能在這些指令串中間任意安排陷阱,否則正常執(zhí)行的程序也可能被抓走。在這些指令串中間有一些斷裂點(diǎn),正常執(zhí)行的程序到此便不會(huì)往下繼續(xù)執(zhí)行了,這類指令有LJMP、SJMP、AJMP、RET、RETI等,在它們后面加軟件陷阱。
33設(shè)置程序運(yùn)行監(jiān)視系統(tǒng)(WDT)
利用CPU內(nèi)部的WDT可以實(shí)現(xiàn)系統(tǒng)定時(shí)復(fù)位。在程序正常運(yùn)行時(shí),每隔一段時(shí)間對(duì)WDT清零。一旦程序運(yùn)行不正常,沒(méi)有及時(shí)給WDT送清零信號(hào),則在WDT計(jì)數(shù)溢出時(shí)自動(dòng)將系統(tǒng)復(fù)位。所使用的西門子公司生產(chǎn)的C504單片機(jī)的WDT溢出時(shí)間可人為設(shè)定。若晶振用12MHz,其可選時(shí)間為512μs~11s。本系統(tǒng)設(shè)計(jì)溢出時(shí)間為7ms。
34采用軟件濾波
被測(cè)信號(hào)的抗干擾可以采用“軟件濾波”的方法解決。常用的有:算術(shù)平均值法,比較取舍法,中值法,一階遞推數(shù)字濾波法。本系統(tǒng)采用的是比較取舍法。
4結(jié)語(yǔ)
經(jīng)試驗(yàn),該系統(tǒng)工作半年多來(lái),運(yùn)行狀況良好,性能穩(wěn)定,噪音低,沒(méi)有出現(xiàn)錯(cuò)誤及損壞器件現(xiàn)象,取得了良好的效果,達(dá)到了預(yù)期的目的,證明在系統(tǒng)設(shè)計(jì)中采用的上述抗干擾措施是行之有效的。
評(píng)論