單片機係統常用軟件抗幹擾措施
發布時間:2015-10-30 責任編輯:susan
【導讀】可靠性設計是一項係統工程,單片機係統的可靠性必須從軟件、硬ying件jian以yi及ji結jie構gou設she計ji等deng方fang麵mian全quan麵mian考kao慮lv。硬ying件jian係xi統tong的de可ke靠kao性xing設she計ji是shi單dan片pian機ji係xi統tong可ke靠kao性xing的de根gen本ben,而er軟ruan件jian係xi統tong的de可ke靠kao性xing設she計ji起qi到dao抑yi製zhi外wai來lai幹gan擾rao的de作zuo用yong。
軟件係統的可靠性設計的主要方法有:開機自檢、軟件陷阱(進行程序“跑飛”檢測)、設置程序運行狀態標記、輸出端口刷新、輸入多次采樣、軟件“看門狗”等(deng)。通(tong)過(guo)軟(ruan)件(jian)係(xi)統(tong)的(de)可(ke)靠(kao)性(xing)設(she)計(ji),達(da)到(dao)最(zui)大(da)限(xian)度(du)地(di)降(jiang)低(di)幹(gan)擾(rao)對(dui)係(xi)統(tong)工(gong)作(zuo)的(de)影(ying)響(xiang),確(que)保(bao)單(dan)片(pian)機(ji)及(ji)時(shi)發(fa)現(xian)因(yin)幹(gan)擾(rao)導(dao)致(zhi)程(cheng)序(xu)出(chu)現(xian)的(de)錯(cuo)誤(wu),並(bing)使(shi)係(xi)統(tong)恢(hui)複(fu)到(dao)正(zheng)常(chang)工(gong)作(zuo)狀(zhuang)態(tai)或(huo)及(ji)時(shi)報(bao)警(jing)的(de)目(mu)的(de)。
一.開機自檢
開機後首先對單片機係統的硬件及軟件狀態進行檢測,一旦發現不正常,就進行相應的處理。開機自檢程序通常包括對RAM、ROM、I/O口狀態等的檢測。
1.檢測RAM 檢查RAM讀寫是否正常,實際操作是向RAM單元寫“00H”,讀出也應為“00H”,再向其寫“FFH”,讀出也應為“FFH”。如果RAM單元讀寫出錯,應給出RAM出錯提示(聲光或其它形式),等待處理。
2.檢查ROM單元的內容 對ROM單元的檢測主要是檢查ROM單元的內容的校驗和。所謂ROM的校驗和是將ROM的內容逐一相加後得到一個數值,該值便稱校驗和。ROM單元存儲的是程序、常數和表格。一旦程序編寫完成,ROM中的內容就確定了,其校驗和也就是唯一的。若ROM校驗和出錯,應給出ROM出錯提示(聲光或其它形式),等待處理。
3.檢查I/O口狀態 首先確定係統的I/O口在待機狀態應處的狀態,然後檢測單片機的I/O口在待機狀態下的狀態是否正常(如是否有短路或開路現象等)。若不正常,應給出出錯提示(聲光或其它形式),等待處理。
4.其它接口電路檢測 除了對上述單片機內部資源進行檢測外,對係統中的其它接口電路,比如擴展的E2PROM、A/D轉換電路等,又如數字測溫儀中的555單穩測溫電路,均應通過軟件進行檢測,確定是否有故障。
隻有各項檢查均正常,程序方能繼續執行,否則應提示出錯。
二.軟件陷阱
在程序存儲器中總會有一些區域未使用,如果因幹擾導致單片機的指令計數器PC值(zhi)被(bei)錯(cuo)置(zhi),程(cheng)序(xu)跳(tiao)到(dao)這(zhe)些(xie)未(wei)用(yong)的(de)程(cheng)序(xu)存(cun)儲(chu)空(kong)間(jian),係(xi)統(tong)就(jiu)會(hui)出(chu)錯(cuo)。軟(ruan)件(jian)陷(xian)阱(jing)是(shi)在(zai)程(cheng)序(xu)存(cun)儲(chu)器(qi)的(de)未(wei)使(shi)用(yong)的(de)區(qu)域(yu)中(zhong),加(jia)上(shang)若(ruo)幹(gan)條(tiao)空(kong)操(cao)作(zuo)和(he)無(wu)條(tiao)件(jian)跳(tiao)轉(zhuan)指(zhi)令(ling),無(wu)條(tiao)件(jian)跳(tiao)轉(zhuan)指(zhi)令(ling)指(zhi)向(xiang)程(cheng)序(xu)“跑飛”處理子程序的入口地址。如果程序跳到這些未用區域,就會執行無條件跳轉指令,轉到相應的程序出錯“跑飛”處理程序。除程序未用區域外,還可以在程序段之間(如子程序之間及一段處理程序完成後)及一頁的末尾處插入軟件陷阱,效果會更好。下麵是一段帶軟件陷阱的程序;
DSP:……;顯示子程序
RET
NOP;軟件陷阱
NOP
NOP
LIMP FLY
D10MS:MOV R0,#010H;延時子程序
……
RET
NOP ;軟件陷阱
NOP
NOP
LJMP FLY
……
FLY:…… ;“跑飛”處理子程序
RET
三.程序
“跑飛”處理 要進行程序“跑飛”處理,就要分清程序“跑飛”所造成的影響,以及程序“跑飛”前運行的進程,這就需要的設置相應的標誌。
RAM數據正常標誌 RAM數據正常標誌是檢測RAM區的數據是否已經因程序“跑飛”或其它幹擾而改變。如果RAM區的數據確因程序“跑飛”或其它幹擾而改變,則係統無法自行恢複到原來的出錯地點,隻能由人工或由軟件複位從頭開始執行。要進行RAM區數據正常檢測,首先應在初始化程序中,對RAM的若幹單元設置RAM數據正常標誌。通常是在RAM區中選數個單元,在初始化程序中將其置成固定的數,如“55H”或“0AAH”,隻要程序正常運行,這些單元的內容是不會被修改的,若因程序“跑飛”或其它幹擾導致這些RAM單元中的任何單元的數據發生變化,說明其它RAM單元的內容也可能發生變化,無法反映程序運行的結果和狀態,不能根據RAM區中的標誌去恢複程序運行現場。
程序運行標記 程序運行狀態標記是在RAM區(qu)中(zhong)設(she)立(li)一(yi)些(xie)標(biao)誌(zhi)位(wei),這(zhe)些(xie)標(biao)誌(zhi)位(wei)分(fen)別(bie)代(dai)表(biao)程(cheng)序(xu)運(yun)行(xing)的(de)不(bu)同(tong)階(jie)段(duan)及(ji)運(yun)行(xing)後(hou)的(de)狀(zhuang)態(tai)。在(zai)初(chu)始(shi)化(hua)程(cheng)序(xu)中(zhong),首(shou)先(xian)對(dui)這(zhe)些(xie)單(dan)元(yuan)置(zhi)初(chu)值(zhi),在(zai)程(cheng)序(xu)運(yun)行(xing)的(de)不(bu)同(tong)階(jie)段(duan),這(zhe)些(xie)單(dan)元(yuan)的(de)內(nei)容(rong)將(jiang)被(bei)改(gai)變(bian)成(cheng)特(te)定(ding)值(zhi),標(biao)記(ji)程(cheng)序(xu)運(yun)行(xing)的(de)階(jie)段(duan)和(he)運(yun)行(xing)後(hou)的(de)狀(zhuang)態(tai)。這(zhe)些(xie)標(biao)誌(zhi)除(chu)了(le)在(zai)程(cheng)序(xu)正(zheng)常(chang)運(yun)行(xing)中(zhong)起(qi)到(dao)條(tiao)件(jian)轉(zhuan)移(yi)的(de)作(zuo)用(yong)外(wai),還(hai)能(neng)在(zai)程(cheng)序(xu)“跑飛”,而RAM區數據正常時起到恢複程序運行現場的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測到“跑飛”後,轉入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”yingxiangdechengdu,genjuyingxiangchengdudebutong,juedingshibaojingfuweihaishizidonghuifuxianchang。ruzidonghuifuxianchang,zexugenjuchengxuyunxingzhuangtaibiaojijinxing。jutiruhejinxingchengxu“跑飛”處理,要根據控製係統的設計要求進行。
四.輸出端口刷新
由於單片機的I/O口(kou)很(hen)容(rong)易(yi)受(shou)到(dao)外(wai)部(bu)信(xin)號(hao)的(de)幹(gan)擾(rao),輸(shu)出(chu)口(kou)的(de)狀(zhuang)態(tai)也(ye)可(ke)能(neng)因(yin)此(ci)而(er)改(gai)變(bian)。在(zai)程(cheng)序(xu)中(zhong)周(zhou)期(qi)性(xing)地(di)添(tian)加(jia)輸(shu)出(chu)端(duan)刷(shua)新(xin)指(zhi)令(ling),可(ke)以(yi)降(jiang)低(di)幹(gan)擾(rao)對(dui)輸(shu)出(chu)口(kou)狀(zhuang)態(tai)的(de)影(ying)響(xiang)。在(zai)程(cheng)序(xu)中(zhong)指(zhi)定(ding)RAM單元存儲輸出口當時應處的狀態,在程序運行過程中根據這些RAM單元的內容去刷新I/O口。
五.輸入多次采樣
幹擾對單片機的輸入,會造成輸入信號瞬間采樣的誤差或誤讀。要排除幹擾的影響,通常采取重複采樣、加權平均的方法。
比如對於外部電平采樣(如按鍵),采取軟件每隔10ms讀一次鍵盤或連續讀若幹次,每次讀出的數據都相同或者采取表決的方法確認輸入的鍵值。又如在用單穩電路檢測溫度的係統中(參《電子報》1999年第51期第九版)采取對單穩電路的脈衝寬度計數,然後查表求溫度值的方法。為排除幹擾的影響,可以采取三次采樣求平均值,也可以采取兩次采樣、差值小於設定值為有效,然後求平均值的方法(又稱軟件濾波)。總zong之zhi,對dui輸shu入ru信xin號hao進jin行xing多duo次ci采cai樣yang,其qi後hou如ru何he進jin行xing處chu理li是shi要yao根gen據ju具ju體ti對dui象xiang實shi際ji處chu理li的de效xiao果guo來lai優you選xuan的de,讀du者zhe可ke通tong過guo實shi驗yan室shi調tiao試shi時shi施shi加jia幹gan擾rao及ji現xian場chang環huan境jing調tiao試shi時shi的de效xiao果guo來lai確que定ding。
六.軟件“看門狗”
軟件陷阱是在程序運行到ROM的非法區域時檢測程序出錯的方法。而“看門狗”是根據程序在運行指定時間間隔內未進行相應的操作,即未按時複位看門狗定時器,來判斷程序運行出錯的。
在係統成本允許的情況下,應選擇專門的看門狗電路芯片或片內帶看門狗定時器的單片機。如果條件不允許,應加軟件“看門狗”。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索




