單片機(jī)系統(tǒng)常用軟件抗干擾措施
發(fā)布時(shí)間:2015-10-30 責(zé)任編輯:susan
【導(dǎo)讀】可靠性設(shè)計(jì)是一項(xiàng)系統(tǒng)工程,單片機(jī)系統(tǒng)的可靠性必須從軟件、硬件以及結(jié)構(gòu)設(shè)計(jì)等方面全面考慮。硬件系統(tǒng)的可靠性設(shè)計(jì)是單片機(jī)系統(tǒng)可靠性的根本,而軟件系統(tǒng)的可靠性設(shè)計(jì)起到抑制外來干擾的作用。
軟件系統(tǒng)的可靠性設(shè)計(jì)的主要方法有:開機(jī)自檢、軟件陷阱(進(jìn)行程序“跑飛”檢測)、設(shè)置程序運(yùn)行狀態(tài)標(biāo)記、輸出端口刷新、輸入多次采樣、軟件“看門狗”等。通過軟件系統(tǒng)的可靠性設(shè)計(jì),達(dá)到最大限度地降低干擾對(duì)系統(tǒng)工作的影響,確保單片機(jī)及時(shí)發(fā)現(xiàn)因干擾導(dǎo)致程序出現(xiàn)的錯(cuò)誤,并使系統(tǒng)恢復(fù)到正常工作狀態(tài)或及時(shí)報(bào)警的目的。
一.開機(jī)自檢
開機(jī)后首先對(duì)單片機(jī)系統(tǒng)的硬件及軟件狀態(tài)進(jìn)行檢測,一旦發(fā)現(xiàn)不正常,就進(jìn)行相應(yīng)的處理。開機(jī)自檢程序通常包括對(duì)RAM、ROM、I/O口狀態(tài)等的檢測。
1.檢測RAM 檢查RAM讀寫是否正常,實(shí)際操作是向RAM單元寫“00H”,讀出也應(yīng)為“00H”,再向其寫“FFH”,讀出也應(yīng)為“FFH”。如果RAM單元讀寫出錯(cuò),應(yīng)給出RAM出錯(cuò)提示(聲光或其它形式),等待處理。
2.檢查ROM單元的內(nèi)容 對(duì)ROM單元的檢測主要是檢查ROM單元的內(nèi)容的校驗(yàn)和。所謂ROM的校驗(yàn)和是將ROM的內(nèi)容逐一相加后得到一個(gè)數(shù)值,該值便稱校驗(yàn)和。ROM單元存儲(chǔ)的是程序、常數(shù)和表格。一旦程序編寫完成,ROM中的內(nèi)容就確定了,其校驗(yàn)和也就是唯一的。若ROM校驗(yàn)和出錯(cuò),應(yīng)給出ROM出錯(cuò)提示(聲光或其它形式),等待處理。
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)給出出錯(cuò)提示(聲光或其它形式),等待處理。
4.其它接口電路檢測 除了對(duì)上述單片機(jī)內(nèi)部資源進(jìn)行檢測外,對(duì)系統(tǒng)中的其它接口電路,比如擴(kuò)展的E2PROM、A/D轉(zhuǎn)換電路等,又如數(shù)字測溫儀中的555單穩(wěn)測溫電路,均應(yīng)通過軟件進(jìn)行檢測,確定是否有故障。
只有各項(xiàng)檢查均正常,程序方能繼續(xù)執(zhí)行,否則應(yīng)提示出錯(cuò)。
二.軟件陷阱
在程序存儲(chǔ)器中總會(huì)有一些區(qū)域未使用,如果因干擾導(dǎo)致單片機(jī)的指令計(jì)數(shù)器PC值被錯(cuò)置,程序跳到這些未用的程序存儲(chǔ)空間,系統(tǒng)就會(huì)出錯(cuò)。軟件陷阱是在程序存儲(chǔ)器的未使用的區(qū)域中,加上若干條空操作和無條件跳轉(zhuǎn)指令,無條件跳轉(zhuǎn)指令指向程序“跑飛”處理子程序的入口地址。如果程序跳到這些未用區(qū)域,就會(huì)執(zhí)行無條件跳轉(zhuǎn)指令,轉(zhuǎn)到相應(yīng)的程序出錯(cuò)“跑飛”處理程序。除程序未用區(qū)域外,還可以在程序段之間(如子程序之間及一段處理程序完成后)及一頁的末尾處插入軟件陷阱,效果會(huì)更好。下面是一段帶軟件陷阱的程序;
DSP:……;顯示子程序
RET
NOP;軟件陷阱
NOP
NOP
LIMP FLY
D10MS:MOV R0,#010H;延時(shí)子程序
……
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ù)到原來的出錯(cuò)地點(diǎn),只能由人工或由軟件復(fù)位從頭開始執(zhí)行。要進(jìn)行RAM區(qū)數(shù)據(jù)正常檢測,首先應(yīng)在初始化程序中,對(duì)RAM的若干單元設(shè)置RAM數(shù)據(jù)正常標(biāo)志。通常是在RAM區(qū)中選數(shù)個(gè)單元,在初始化程序中將其置成固定的數(shù),如“55H”或“0AAH”,只要程序正常運(yùn)行,這些單元的內(nèi)容是不會(huì)被修改的,若因程序“跑飛”或其它干擾導(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)。在初始化程序中,首先對(duì)這些單元置初值,在程序運(yùn)行的不同階段,這些單元的內(nèi)容將被改變成特定值,標(biāo)記程序運(yùn)行的階段和運(yùn)行后的狀態(tài)。這些標(biāo)志除了在程序正常運(yùn)行中起到條件轉(zhuǎn)移的作用外,還能在程序“跑飛”,而RAM區(qū)數(shù)據(jù)正常時(shí)起到恢復(fù)程序運(yùn)行現(xiàn)場的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測到“跑飛”后,轉(zhuǎn)入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”影響的程度,根據(jù)影響程度的不同,決定是報(bào)警復(fù)位還是自動(dòng)恢復(fù)現(xiàn)場。如自動(dòng)恢復(fù)現(xiàn)場,則需根據(jù)程序運(yùn)行狀態(tài)標(biāo)記進(jìn)行。具體如何進(jìn)行程序“跑飛”處理,要根據(jù)控制系統(tǒng)的設(shè)計(jì)要求進(jìn)行。
四.輸出端口刷新
由于單片機(jī)的I/O口很容易受到外部信號(hào)的干擾,輸出口的狀態(tài)也可能因此而改變。在程序中周期性地添加輸出端刷新指令,可以降低干擾對(duì)輸出口狀態(tài)的影響。在程序中指定RAM單元存儲(chǔ)輸出口當(dāng)時(shí)應(yīng)處的狀態(tài),在程序運(yùn)行過程中根據(jù)這些RAM單元的內(nèi)容去刷新I/O口。
五.輸入多次采樣
干擾對(duì)單片機(jī)的輸入,會(huì)造成輸入信號(hào)瞬間采樣的誤差或誤讀。要排除干擾的影響,通常采取重復(fù)采樣、加權(quán)平均的方法。
比如對(duì)于外部電平采樣(如按鍵),采取軟件每隔10ms讀一次鍵盤或連續(xù)讀若干次,每次讀出的數(shù)據(jù)都相同或者采取表決的方法確認(rèn)輸入的鍵值。又如在用單穩(wěn)電路檢測溫度的系統(tǒng)中(參《電子報(bào)》1999年第51期第九版)采取對(duì)單穩(wěn)電路的脈沖寬度計(jì)數(shù),然后查表求溫度值的方法。為排除干擾的影響,可以采取三次采樣求平均值,也可以采取兩次采樣、差值小于設(shè)定值為有效,然后求平均值的方法(又稱軟件濾波)。總之,對(duì)輸入信號(hào)進(jìn)行多次采樣,其后如何進(jìn)行處理是要根據(jù)具體對(duì)象實(shí)際處理的效果來優(yōu)選的,讀者可通過實(shí)驗(yàn)室調(diào)試時(shí)施加干擾及現(xiàn)場環(huán)境調(diào)試時(shí)的效果來確定。
六.軟件“看門狗”
軟件陷阱是在程序運(yùn)行到ROM的非法區(qū)域時(shí)檢測程序出錯(cuò)的方法。而“看門狗”是根據(jù)程序在運(yùn)行指定時(shí)間間隔內(nèi)未進(jìn)行相應(yīng)的操作,即未按時(shí)復(fù)位看門狗定時(shí)器,來判斷程序運(yùn)行出錯(cuò)的。
在系統(tǒng)成本允許的情況下,應(yīng)選擇專門的看門狗電路芯片或片內(nèi)帶看門狗定時(shí)器的單片機(jī)。如果條件不允許,應(yīng)加軟件“看門狗”。
特別推薦
- 音頻放大器的 LLC 設(shè)計(jì)注意事項(xiàng)
- 服務(wù)器電源設(shè)計(jì)中的五大趨勢
- 電子技術(shù)如何助力高鐵節(jié)能?
- 利用創(chuàng)新FPGA技術(shù):實(shí)現(xiàn)USB解決方案的低功耗、模塊化與小尺寸
- 加速度傳感器不好選型?看這6個(gè)重要參數(shù)!
- 功率器件熱設(shè)計(jì)基礎(chǔ)(十三)——使用熱系數(shù)Ψth(j-top)獲取結(jié)溫信息
- IGBT并聯(lián)設(shè)計(jì)指南,拿下!
技術(shù)文章更多>>
- MD&M West展會(huì):Micro Crystal攜創(chuàng)新定時(shí)元件,共繪醫(yī)療科技新藍(lán)圖
- PLC 交流模塊的 TRIAC 輸出故障排除
- 解鎖AI設(shè)計(jì)潛能,ASO.ai如何革新模擬IC設(shè)計(jì)
- 汽車拋負(fù)載Load Dump
- 50%的年長者可能會(huì)聽障?!救贖的辦法在這里
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
功率電阻
功率放大器
功率管
功率繼電器
功率器件
共模電感
固態(tài)盤
固體繼電器
光傳感器
光電池
光電傳感器
光電二極管
光電開關(guān)
光電模塊
光電耦合器
光電器件
光電顯示
光繼電器
光控可控硅
光敏電阻
光敏器件
光敏三極管
光收發(fā)器
光通訊器件
光纖連接器
軌道交通
國防航空
過流保護(hù)器
過熱保護(hù)
過壓保護(hù)