單片機(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)行程序“跑飛”檢測(cè))、設(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)行檢測(cè),一旦發(fā)現(xiàn)不正常,就進(jìn)行相應(yīng)的處理。開機(jī)自檢程序通常包括對(duì)RAM、ROM、I/O口狀態(tài)等的檢測(cè)。
1.檢測(cè)RAM 檢查RAM讀寫是否正常,實(shí)際操作是向RAM單元寫“00H”,讀出也應(yīng)為“00H”,再向其寫“FFH”,讀出也應(yīng)為“FFH”。如果RAM單元讀寫出錯(cuò),應(yīng)給出RAM出錯(cuò)提示(聲光或其它形式),等待處理。
2.檢查ROM單元的內(nèi)容 對(duì)ROM單元的檢測(cè)主要是檢查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),然后檢測(cè)單片機(jī)的I/O口在待機(jī)狀態(tài)下的狀態(tài)是否正常(如是否有短路或開路現(xiàn)象等)。若不正常,應(yīng)給出出錯(cuò)提示(聲光或其它形式),等待處理。
4.其它接口電路檢測(cè) 除了對(duì)上述單片機(jī)內(nèi)部資源進(jìn)行檢測(cè)外,對(duì)系統(tǒng)中的其它接口電路,比如擴(kuò)展的E2PROM、A/D轉(zhuǎn)換電路等,又如數(shù)字測(cè)溫儀中的555單穩(wěn)測(cè)溫電路,均應(yīng)通過軟件進(jìn)行檢測(cè),確定是否有故障。
只有各項(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)志是檢測(cè)RAM區(qū)的數(shù)據(jù)是否已經(jīng)因程序“跑飛”或其它干擾而改變。如果RAM區(qū)的數(shù)據(jù)確因程序“跑飛”或其它干擾而改變,則系統(tǒng)無法自行恢復(fù)到原來的出錯(cuò)地點(diǎn),只能由人工或由軟件復(fù)位從頭開始執(zhí)行。要進(jìn)行RAM區(qū)數(shù)據(jù)正常檢測(cè),首先應(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)場(chǎng)。
程序運(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)場(chǎng)的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測(cè)到“跑飛”后,轉(zhuǎn)入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”影響的程度,根據(jù)影響程度的不同,決定是報(bào)警復(fù)位還是自動(dòng)恢復(fù)現(xiàn)場(chǎng)。如自動(dòng)恢復(fù)現(xiàn)場(chǎng),則需根據(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)電路檢測(cè)溫度的系統(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)場(chǎng)環(huán)境調(diào)試時(shí)的效果來確定。
六.軟件“看門狗”
軟件陷阱是在程序運(yùn)行到ROM的非法區(qū)域時(shí)檢測(cè)程序出錯(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)加軟件“看門狗”。
特別推薦
- IOTE 2025深圳物聯(lián)網(wǎng)展:七大科技領(lǐng)域融合,重塑AIoT產(chǎn)業(yè)生態(tài)
- 全局快門CMOS傳感器選型指南:從分辨率到HDR的終極考量
- DigiKey B站頻道火出圈:粉絲破10萬大關(guān),好禮送不停
- ADAS減負(fù)神器:TDK推出全球首款PoC專用一體式電感器
- 國產(chǎn)5G模組里程碑,移遠(yuǎn)通信AI模組SG530C-CN實(shí)現(xiàn)8TOPS算力+全鏈自主化
- 專為高頻苛刻環(huán)境設(shè)計(jì)!Vishay新款CHA系列0402車規(guī)薄膜電阻量產(chǎn)上市
- 散熱效率翻倍!Coherent金剛石-碳化硅復(fù)合材料讓芯片能耗砍半
技術(shù)文章更多>>
- 重磅公告!意法半導(dǎo)體2025年Q2業(yè)績(jī)發(fā)布及電話會(huì)議時(shí)間確定
- 超級(jí)電容技術(shù)全景解析:從物理原理到選型實(shí)踐,解鎖高功率儲(chǔ)能新紀(jì)元
- MHz級(jí)電流測(cè)量突破:分流電阻電感補(bǔ)償技術(shù)解密
- 告別電壓應(yīng)力難題:有源鉗位助力PSFB效率突破
- DigiKey B站頻道火出圈:粉絲破10萬大關(guān),好禮送不停
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
血壓計(jì)
血氧儀
壓電蜂鳴器
壓接連接器
壓控振蕩器
壓力傳感器
壓力開關(guān)
壓敏電阻
揚(yáng)聲器
遙控開關(guān)
醫(yī)療電子
醫(yī)用成像
移動(dòng)電源
音頻IC
音頻SoC
音頻變壓器
引線電感
語音控制
元件符號(hào)
元器件選型
云電視
云計(jì)算
云母電容
真空三極管
振蕩器
振蕩線圈
振動(dòng)器
振動(dòng)設(shè)備
震動(dòng)馬達(dá)
整流變壓器