單片機係統常用軟件抗幹擾措施
發布時間: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區中的標誌去恢複程序運行現場。
程序運行標記 程序運行狀態標記是在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定dingRAM單元存儲輸出口當時應處的狀態,在程序運行過程中根據這些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可編程電源,賦能高端裝備製造
技術文章更多>>
- 貿澤EIT係列新一期,探索AI如何重塑日常科技與用戶體驗
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 創新不止,創芯不已:第六屆ICDIA創芯展8月南京盛大啟幕!
- AI時代,為什麼存儲基礎設施的可靠性決定數據中心的經濟效益
- 矽典微ONELAB開發係列:為毫米波算法開發者打造的全棧工具鏈
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索






