基于單片機(jī)測控系統(tǒng)中的抗干擾技術(shù)
7 軟件抗干擾措施
a) 數(shù)字濾波技術(shù)
通常使用的方法有:算術(shù)平均法、中值法、抑制脈沖算術(shù)平均法、一階慣性濾波法、程序判斷濾波法和遞推平均濾波法等。
b) 軟件冗余
對于條件控制系統(tǒng),對控制條件的一次采樣、處理控制輸出改為多采樣、處理控制輸出??捎行У叵既桓蓴_。
c) 設(shè)置軟件陷阱
當(dāng)由于干擾使操作系統(tǒng)失控而進(jìn)入非程序區(qū)時(shí),用引導(dǎo)指令強(qiáng)行將捕獲到的亂飛程序引向復(fù)位入口地址,在此處將程序轉(zhuǎn)向?qū)iT對程序出錯(cuò)進(jìn)行處理的程序,使程序納入正軌。
d) 重要指令冗余
對程序流向起決定作用的指令(如RET、RETI、LCALL、JZ、JC、JNC等)和某些對系統(tǒng)工作狀態(tài)起重要作用的指令(如SETB、EA等)的后面,可重復(fù)寫上這些指令,以確保這些指令的正確執(zhí)行。
e) “看門狗”技術(shù)
PC受到干擾而失控,引起程序亂飛,也可能使程序進(jìn)入“死循環(huán)”。指令冗余技術(shù)、軟件陷阱技術(shù)不能使失控的程序擺脫“死循環(huán)”的困境,通常采用程序監(jiān)視技術(shù),又稱“看門狗”技術(shù)(Watchdog),“看門狗”技術(shù)就是不斷監(jiān)視程序循環(huán)運(yùn)行時(shí)間,若發(fā)現(xiàn)時(shí)間超過已知的循環(huán)設(shè)定時(shí)間,則認(rèn)為系統(tǒng)陷入了“死循環(huán)”,然后強(qiáng)迫程序返回到0000H入口,在0000H處安排一段出錯(cuò)處理程序,使系統(tǒng)運(yùn)行納入正軌。在設(shè)計(jì)看門狗時(shí)可設(shè)計(jì)兩個(gè)定時(shí)器,一個(gè)為短定時(shí)器,一個(gè)為長定時(shí)器,并各自獨(dú)立,短定時(shí)器像典型看門狗一樣工作,它保證一般情況下看門狗有快的反映速度,長定時(shí)器的定時(shí)大于CPU執(zhí)行一個(gè)主循環(huán)程序的時(shí)間,用來防止看門狗失效。
f) 數(shù)據(jù)的保護(hù)與恢復(fù)技術(shù)
在編寫程序的過程中,對于由指令改變結(jié)果性質(zhì)的數(shù)據(jù),可以考慮在每次改變后都盡可能地保護(hù)起來,以便必要時(shí)恢復(fù)。有時(shí)計(jì)算機(jī)在強(qiáng)制復(fù)位后,I/O端口和特殊寄存器SFR中的內(nèi)容都將變成芯片出廠時(shí)的設(shè)定值,這很有可能引起系統(tǒng)的運(yùn)行混亂。因此單片機(jī)在重新啟動(dòng)后,應(yīng)當(dāng)首先執(zhí)行數(shù)據(jù)恢復(fù)程序,把控制端口等重要寄存器被保護(hù)的內(nèi)容恢復(fù)還原。
g) NOP的使用
在雙字節(jié)和3字節(jié)指令之后插入兩個(gè)單字節(jié)NOP指令,這可保證指令不被拆散。因?yàn)椤皝y飛”的程序即使落到操作數(shù)上,由于兩個(gè)空操作指令NOP的存在,不會(huì)將其后的指令當(dāng)操作數(shù)執(zhí)行,從而使程序納入正軌。
評論