單片機係統常用軟件抗幹擾措施
發布時間: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。tongguoruanjianxitongdekekaoxingsheji,dadaozuidaxiandudijiangdiganraoduixitonggongzuodeyingxiang,quebaodanpianjijishifaxianyinganraodaozhichengxuchuxiandecuowu,bingshixitonghuifudaozhengchanggongzuozhuangtaihuojishibaojingdemude。
一.開機自檢
開機後首先對單片機係統的硬件及軟件狀態進行檢測,一旦發現不正常,就進行相應的處理。開機自檢程序通常包括對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區中的標誌去恢複程序運行現場。
程序運行標記 程序運行狀態標記是在RAMquzhongsheliyixiebiaozhiwei,zhexiebiaozhiweifenbiedaibiaochengxuyunxingdebutongjieduanjiyunxinghoudezhuangtai。zaichushihuachengxuzhong,shouxianduizhexiedanyuanzhichuzhi,zaichengxuyunxingdebutongjieduan,zhexiedanyuandeneirongjiangbeigaibianchengtedingzhi,biaojichengxuyunxingdejieduanheyunxinghoudezhuangtai。zhexiebiaozhichulezaichengxuzhengchangyunxingzhongqidaotiaojianzhuanyidezuoyongwai,hainengzaichengxu“跑飛”,而RAM區數據正常時起到恢複程序運行現場的作用。
程序“跑飛”處理 程序“跑飛”處理就是在程序由軟件陷阱檢測到“跑飛”後,轉入“跑飛”處理程序。“跑飛”處理程序判斷“跑飛”影ying響xiang的de程cheng度du,根gen據ju影ying響xiang程cheng度du的de不bu同tong,決jue定ding是shi報bao警jing複fu位wei還hai是shi自zi動dong恢hui複fu現xian場chang。如ru自zi動dong恢hui複fu現xian場chang,則ze需xu根gen據ju程cheng序xu運yun行xing狀zhuang態tai標biao記ji進jin行xing。具ju體ti如ru何he進jin行xing程cheng序xu“跑飛”處理,要根據控製係統的設計要求進行。
四.輸出端口刷新
由於單片機的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可編程電源,賦能高端裝備製造
技術文章更多>>
- 三星上演罕見對峙:工會集會討薪,股東隔街抗議
- 摩爾線程實現DeepSeek-V4“Day-0”支持,國產GPU適配再提速
- 築牢安全防線:智能駕駛邁向規模化應用的關鍵挑戰與破局之道
- GPT-Image 2:99%文字準確率,AI生圖告別“鬼畫符”
- 機器人馬拉鬆的勝負手:藏在主板角落裏的“時鍾戰爭”
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
鑒頻器
江蘇商絡
交流電機
腳踏開關
接觸器接線
接近開關
接口IC
介質電容
介質諧振器
金屬膜電阻
晶體濾波器
晶體諧振器
晶體振蕩器
晶閘管
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發工具
開關
開關電源
開關電源電路
開關二極管
開關三極管
科通
可變電容
可調電感
可控矽
空心線圈

