單片機(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è)置程序運行狀態(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)行程序“跑飛”處理,就要分清程序“跑飛”所造成的影響,以及程序“跑飛”前運行的進(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”,只要程序正常運行,這些單元的內(nèi)容是不會被修改的,若因程序“跑飛”或其它干擾導(dǎo)致這些RAM單元中的任何單元的數(shù)據(jù)發(fā)生變化,說明其它RAM單元的內(nèi)容也可能發(fā)生變化,無法反映程序運行的結(jié)果和狀態(tài),不能根據(jù)RAM區(qū)中的標(biāo)志去恢復(fù)程序運行現(xiàn)場。
程序運行標(biāo)記 程序運行狀態(tài)標(biāo)記是在RAM區(qū)中設(shè)立一些標(biāo)志位,這些標(biāo)志位分別代表程序運行的不同階段及運行后的狀態(tài)。在初始化程序中,首先對這些單元置初值,在程序運行的不同階段,這些單元的內(nèi)容將被改變成特定值,標(biāo)記程序運行的階段和運行后的狀態(tài)。這些標(biāo)志除了在程序正常運行中起到條件轉(zhuǎn)移的作用外,還能在程序“跑飛”,而RAM區(qū)數(shù)據(jù)正常時起到恢復(fù)程序運行現(xiàn)場的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測到“跑飛”后,轉(zhuǎn)入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”影響的程度,根據(jù)影響程度的不同,決定是報警復(fù)位還是自動恢復(fù)現(xiàn)場。如自動恢復(fù)現(xiàn)場,則需根據(jù)程序運行狀態(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),在程序運行過程中根據(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)試時的效果來確定。
六.軟件“看門狗”
軟件陷阱是在程序運行到ROM的非法區(qū)域時檢測程序出錯的方法。而“看門狗”是根據(jù)程序在運行指定時間間隔內(nèi)未進(jìn)行相應(yīng)的操作,即未按時復(fù)位看門狗定時器,來判斷程序運行出錯的。
在系統(tǒng)成本允許的情況下,應(yīng)選擇專門的看門狗電路芯片或片內(nèi)帶看門狗定時器的單片機(jī)。如果條件不允許,應(yīng)加軟件“看門狗”。
特別推薦
- 精度躍升24倍!艾邁斯歐司朗高分辨率dToF傳感器實現(xiàn)1536分區(qū)探測
- 500MHz帶寬!Nexperia車規(guī)多路復(fù)用器突破汽車信號傳輸極限
- 8路降壓+4路LDO集成!貿(mào)澤開售Microchip高密度PMIC破解多電源設(shè)計難題
- 影像技術(shù)新突破!思特威SC535XS傳感器以5000萬像素重塑手機(jī)攝影體驗
- 突破微型化極限!Bourns推出全球最小AEC-Q200認(rèn)證車規(guī)級厚膜電阻
技術(shù)文章更多>>
- 十一月上海見!106屆中國電子展預(yù)登記開啟,共探產(chǎn)業(yè)新機(jī)遇
- CAN/LIN診斷軟件新突破!Kvaser(克薩)推出CanKing擴(kuò)展SDK,賦能工程師定制專屬總線分析工具
- 納祥科技芯片靈活配置,實現(xiàn)WIFI/藍(lán)牙ARC數(shù)字音頻回傳,輸出I2S等信號
- SEMI-e 2025深圳半導(dǎo)體展隆重開幕:全球產(chǎn)業(yè)鏈共探創(chuàng)新未來
- 意法半導(dǎo)體保障SPC58汽車MCU供應(yīng)20年,破解供應(yīng)鏈焦慮
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
斷路器
斷路器型號
多層PCB
多諧振蕩器
扼流線圈
耳機(jī)
二極管
二極管符號
發(fā)光二極管
防靜電產(chǎn)品
防雷
防水連接器
仿真工具
放大器
分立器件
分頻器
風(fēng)力渦輪機(jī)
風(fēng)能
風(fēng)扇
風(fēng)速風(fēng)向儀
風(fēng)揚高科
輔助駕駛系統(tǒng)
輔助設(shè)備
負(fù)荷開關(guān)
復(fù)用器
伽利略定位
干電池
干簧繼電器
感應(yīng)開關(guān)
高頻電感