單片機(jī)應(yīng)用系統(tǒng)的抗干擾解決方案
3.2 軟件陷阱技術(shù)
軟件冗余技術(shù)適用于干擾后PC指向不正確的程序區(qū),當(dāng)跑飛程序進(jìn)入非程序區(qū)(如EPROM未使用的空間)或表格區(qū)時,使用冗余指令的措施已不再適用,可采用軟件陷阱的辦法攔截跑飛程序,將其迅速引向一個指定的位置,執(zhí)行一段對程序運行出錯的處理程序。軟件陷阱可采用以下形式:
NOP
NOP
LJMP ERROR ;ERROR為指定地址,安排有出錯處理程序
軟件陷阱可安排在下面幾個區(qū)域。
①未使用的中斷向量區(qū)。
當(dāng)干擾使未使用的中斷開放,并激活這些中斷時,就會引起系統(tǒng)程序的混亂,如果在這些地方設(shè)置陷阱,就能及時捕捉到錯誤中斷。
②未使用的EPROM區(qū)。
假設(shè)使用了一片2764,但程序并沒有用完這個2764區(qū)域,這些非程序區(qū)可以用0000020000數(shù)據(jù)填滿,020000是指令LJMP 0000H的機(jī)器碼,當(dāng)跑飛程序進(jìn)入此區(qū)后,便會迅速自動進(jìn)入正確軌道。
③數(shù)據(jù)表格區(qū)。
由于表格中內(nèi)容和檢索值有一一對應(yīng)關(guān)系,在表格中安排陷阱將會破壞其連續(xù)性和對應(yīng)關(guān)系,應(yīng)在表格區(qū)的尾部設(shè)置軟件陷阱。
④程序區(qū)。
前面已介紹,跑飛的程序在用戶程序內(nèi)部跳轉(zhuǎn)時可用指令冗余技術(shù)加以解決,也可以設(shè)置軟件陷阱,更有效地抑制程序跑飛。程序設(shè)計常采用模塊化設(shè)計,模塊化的程序是由一序列執(zhí)行指令構(gòu)成的,一般不能在這些指令串中間任意安排陷阱,否則正常執(zhí)行的程序也可能被抓走,可以將陷阱指令分散放置在各模塊之間的空余單元中。正常程序中不執(zhí)行這些陷阱指令,但當(dāng)程序跑飛一旦進(jìn)入陷阱區(qū),馬上將程序拉回正確軌道。陷阱的多少視用戶程序的大小而定,一般每1K字節(jié)有幾個陷阱就夠了。
⑤非EPROM芯片空間
MCS-51有64K程序系統(tǒng)空間,一般除了EPROM芯片占用的地址外,還剩余大片未編程的EPROM空間。當(dāng)PC跑飛進(jìn)入這些空間時,讀入數(shù)據(jù)為0FFH,對51系列而言,相當(dāng)于指令MOV R7,A,將修改R7的內(nèi)容。
當(dāng)CPU讀程序存儲器時,會產(chǎn)生一個PSEN的低電平信號,可利用該信號和EPROM的地址譯碼信號產(chǎn)生選通信號,引起一個空閑的中斷,在中斷服務(wù)程序中設(shè)置軟件陷阱,將跑飛程序拉入正規(guī)。圖2是一個實例。
3.3 看門狗技術(shù)
PC受到干擾引起程序失控,有可能使程序進(jìn)入死循環(huán),指令冗余和陷阱技術(shù)都不能解決這個問題,通常采用看門狗技術(shù)(Watchdog)。該技術(shù)就是不斷監(jiān)視程序循環(huán)運行的時間,若發(fā)現(xiàn)時間超過已知的循環(huán)設(shè)定時間,即認(rèn)為進(jìn)入死循環(huán),然后強(qiáng)迫程序返回到0000H入口地址,在0000H安排出錯處理程序,使系統(tǒng)納入正規(guī)。看門狗技術(shù)既可由硬件實現(xiàn),也可以由軟件來實現(xiàn),二者還可以結(jié)合使用。
評論