單片機(jī)系統(tǒng)常用軟件抗干擾措施
發(fā)布時間:2015-10-30 責(zé)任編輯:susan
【導(dǎo)讀】可靠性設(shè)計是一項系統(tǒng)工程,單片機(jī)系統(tǒng)的可靠性必須從軟件、硬件以及結(jié)構(gòu)設(shè)計等方面全面考慮。硬件系統(tǒng)的可靠性設(shè)計是單片機(jī)系統(tǒng)可靠性的根本,而軟件系統(tǒng)的可靠性設(shè)計起到抑制外來干擾的作用。
軟件系統(tǒng)的可靠性設(shè)計的主要方法有:開機(jī)自檢、軟件陷阱(進(jìn)行程序“跑飛”檢測)、設(shè)置程序運(yùn)行狀態(tài)標(biāo)記、輸出端口刷新、輸入多次采樣、軟件“看門狗”等。通過軟件系統(tǒng)的可靠性設(shè)計,達(dá)到最大限度地降低干擾對系統(tǒng)工作的影響,確保單片機(jī)及時發(fā)現(xiàn)因干擾導(dǎo)致程序出現(xiàn)的錯誤,并使系統(tǒng)恢復(fù)到正常工作狀態(tài)或及時報警的目的。
一.開機(jī)自檢
開機(jī)后首先對單片機(jī)系統(tǒng)的硬件及軟件狀態(tài)進(jìn)行檢測,一旦發(fā)現(xiàn)不正常,就進(jìn)行相應(yīng)的處理。開機(jī)自檢程序通常包括對RAM、ROM、I/O口狀態(tài)等的檢測。
1.檢測RAM 檢查RAM讀寫是否正常,實際操作是向RAM單元寫“00H”,讀出也應(yīng)為“00H”,再向其寫“FFH”,讀出也應(yīng)為“FFH”。如果RAM單元讀寫出錯,應(yīng)給出RAM出錯提示(聲光或其它形式),等待處理。
2.檢查ROM單元的內(nèi)容 對ROM單元的檢測主要是檢查ROM單元的內(nèi)容的校驗和。所謂ROM的校驗和是將ROM的內(nèi)容逐一相加后得到一個數(shù)值,該值便稱校驗和。ROM單元存儲的是程序、常數(shù)和表格。一旦程序編寫完成,ROM中的內(nèi)容就確定了,其校驗和也就是唯一的。若ROM校驗和出錯,應(yīng)給出ROM出錯提示(聲光或其它形式),等待處理。
3.檢查I/O口狀態(tài) 首先確定系統(tǒng)的I/O口在待機(jī)狀態(tài)應(yīng)處的狀態(tài),然后檢測單片機(jī)的I/O口在待機(jī)狀態(tài)下的狀態(tài)是否正常(如是否有短路或開路現(xiàn)象等)。若不正常,應(yīng)給出出錯提示(聲光或其它形式),等待處理。
4.其它接口電路檢測 除了對上述單片機(jī)內(nèi)部資源進(jìn)行檢測外,對系統(tǒng)中的其它接口電路,比如擴(kuò)展的E2PROM、A/D轉(zhuǎn)換電路等,又如數(shù)字測溫儀中的555單穩(wěn)測溫電路,均應(yīng)通過軟件進(jìn)行檢測,確定是否有故障。
只有各項檢查均正常,程序方能繼續(xù)執(zhí)行,否則應(yīng)提示出錯。
二.軟件陷阱
在程序存儲器中總會有一些區(qū)域未使用,如果因干擾導(dǎo)致單片機(jī)的指令計數(shù)器PC值被錯置,程序跳到這些未用的程序存儲空間,系統(tǒng)就會出錯。軟件陷阱是在程序存儲器的未使用的區(qū)域中,加上若干條空操作和無條件跳轉(zhuǎn)指令,無條件跳轉(zhuǎn)指令指向程序“跑飛”處理子程序的入口地址。如果程序跳到這些未用區(qū)域,就會執(zhí)行無條件跳轉(zhuǎn)指令,轉(zhuǎn)到相應(yīng)的程序出錯“跑飛”處理程序。除程序未用區(qū)域外,還可以在程序段之間(如子程序之間及一段處理程序完成后)及一頁的末尾處插入軟件陷阱,效果會更好。下面是一段帶軟件陷阱的程序;
DSP:……;顯示子程序
RET
NOP;軟件陷阱
NOP
NOP
LIMP FLY
D10MS:MOV R0,#010H;延時子程序
……
RET
NOP ;軟件陷阱
NOP
NOP
LJMP FLY
……
FLY:…… ;“跑飛”處理子程序
RET
三.程序
“跑飛”處理 要進(jìn)行程序“跑飛”處理,就要分清程序“跑飛”所造成的影響,以及程序“跑飛”前運(yùn)行的進(jìn)程,這就需要的設(shè)置相應(yīng)的標(biāo)志。
RAM數(shù)據(jù)正常標(biāo)志 RAM數(shù)據(jù)正常標(biāo)志是檢測RAM區(qū)的數(shù)據(jù)是否已經(jīng)因程序“跑飛”或其它干擾而改變。如果RAM區(qū)的數(shù)據(jù)確因程序“跑飛”或其它干擾而改變,則系統(tǒng)無法自行恢復(fù)到原來的出錯地點,只能由人工或由軟件復(fù)位從頭開始執(zhí)行。要進(jìn)行RAM區(qū)數(shù)據(jù)正常檢測,首先應(yīng)在初始化程序中,對RAM的若干單元設(shè)置RAM數(shù)據(jù)正常標(biāo)志。通常是在RAM區(qū)中選數(shù)個單元,在初始化程序中將其置成固定的數(shù),如“55H”或“0AAH”,只要程序正常運(yùn)行,這些單元的內(nèi)容是不會被修改的,若因程序“跑飛”或其它干擾導(dǎo)致這些RAM單元中的任何單元的數(shù)據(jù)發(fā)生變化,說明其它RAM單元的內(nèi)容也可能發(fā)生變化,無法反映程序運(yùn)行的結(jié)果和狀態(tài),不能根據(jù)RAM區(qū)中的標(biāo)志去恢復(fù)程序運(yùn)行現(xiàn)場。
程序運(yùn)行標(biāo)記 程序運(yùn)行狀態(tài)標(biāo)記是在RAM區(qū)中設(shè)立一些標(biāo)志位,這些標(biāo)志位分別代表程序運(yùn)行的不同階段及運(yùn)行后的狀態(tài)。在初始化程序中,首先對這些單元置初值,在程序運(yùn)行的不同階段,這些單元的內(nèi)容將被改變成特定值,標(biāo)記程序運(yùn)行的階段和運(yùn)行后的狀態(tài)。這些標(biāo)志除了在程序正常運(yùn)行中起到條件轉(zhuǎn)移的作用外,還能在程序“跑飛”,而RAM區(qū)數(shù)據(jù)正常時起到恢復(fù)程序運(yùn)行現(xiàn)場的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測到“跑飛”后,轉(zhuǎn)入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”影響的程度,根據(jù)影響程度的不同,決定是報警復(fù)位還是自動恢復(fù)現(xiàn)場。如自動恢復(fù)現(xiàn)場,則需根據(jù)程序運(yùn)行狀態(tài)標(biāo)記進(jìn)行。具體如何進(jìn)行程序“跑飛”處理,要根據(jù)控制系統(tǒng)的設(shè)計要求進(jìn)行。
四.輸出端口刷新
由于單片機(jī)的I/O口很容易受到外部信號的干擾,輸出口的狀態(tài)也可能因此而改變。在程序中周期性地添加輸出端刷新指令,可以降低干擾對輸出口狀態(tài)的影響。在程序中指定RAM單元存儲輸出口當(dāng)時應(yīng)處的狀態(tài),在程序運(yùn)行過程中根據(jù)這些RAM單元的內(nèi)容去刷新I/O口。
五.輸入多次采樣
干擾對單片機(jī)的輸入,會造成輸入信號瞬間采樣的誤差或誤讀。要排除干擾的影響,通常采取重復(fù)采樣、加權(quán)平均的方法。
比如對于外部電平采樣(如按鍵),采取軟件每隔10ms讀一次鍵盤或連續(xù)讀若干次,每次讀出的數(shù)據(jù)都相同或者采取表決的方法確認(rèn)輸入的鍵值。又如在用單穩(wěn)電路檢測溫度的系統(tǒng)中(參《電子報》1999年第51期第九版)采取對單穩(wěn)電路的脈沖寬度計數(shù),然后查表求溫度值的方法。為排除干擾的影響,可以采取三次采樣求平均值,也可以采取兩次采樣、差值小于設(shè)定值為有效,然后求平均值的方法(又稱軟件濾波)。總之,對輸入信號進(jìn)行多次采樣,其后如何進(jìn)行處理是要根據(jù)具體對象實際處理的效果來優(yōu)選的,讀者可通過實驗室調(diào)試時施加干擾及現(xiàn)場環(huán)境調(diào)試時的效果來確定。
六.軟件“看門狗”
軟件陷阱是在程序運(yùn)行到ROM的非法區(qū)域時檢測程序出錯的方法。而“看門狗”是根據(jù)程序在運(yùn)行指定時間間隔內(nèi)未進(jìn)行相應(yīng)的操作,即未按時復(fù)位看門狗定時器,來判斷程序運(yùn)行出錯的。
在系統(tǒng)成本允許的情況下,應(yīng)選擇專門的看門狗電路芯片或片內(nèi)帶看門狗定時器的單片機(jī)。如果條件不允許,應(yīng)加軟件“看門狗”。
特別推薦
- 增強(qiáng)視覺傳感器功能:3D圖像拼接算法幫助擴(kuò)大視場
- PNP 晶體管:特性和應(yīng)用
- 使用IO-Link收發(fā)器管理數(shù)據(jù)鏈路如何簡化微控制器選擇
- 用好 DMA控制器這兩種模式 MCU效率大大提高!
- 深入分析帶耦合電感多相降壓轉(zhuǎn)換器的電壓紋波問題
- Honda(本田)與瑞薩簽署協(xié)議,共同開發(fā)用于軟件定義汽車的高性能SoC
- 第13講:超小型全SiC DIPIPM
技術(shù)文章更多>>
- 貿(mào)澤與TE Connectivity 和Microchip Technology聯(lián)手推出聚焦汽車Zonal架構(gòu)的電子書
- PCI Express Gen5:自動化多通道測試
- 如何通過配置控制器優(yōu)化CAN總線系統(tǒng)性能
- 如何使用高性能監(jiān)控電路來提高工業(yè)功能安全合規(guī)性?
- 學(xué)子專區(qū) - ADALM2000實驗:多相濾波電路
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
線繞電位器
線繞電阻
線束
限位開關(guān)
陷波器
相變存儲器
消弧線圈
肖特基二極管
心率監(jiān)測儀
欣達(dá)旺
新唐科技
信號發(fā)生器
信號繼電器
行程開關(guān)
修復(fù)設(shè)備
蓄電池
旋轉(zhuǎn)開關(guān)
血壓計
血氧儀
壓電蜂鳴器
壓接連接器
壓控振蕩器
壓力傳感器
壓力開關(guān)
壓敏電阻
揚(yáng)聲器
遙控開關(guān)
醫(yī)療電子
醫(yī)用成像
移動電源