




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章
單片機應用系統抗干擾技術一干擾的主要來源三抗干擾措施
硬件抗干擾措施
軟件抗干擾措施二干擾產生帶來的后果第五章
單片機應用系統抗干擾技術一干擾的主要來源三抗干1一、干擾的主要來源工業現場環境中的干擾通常是以脈沖的形式進入單片機系統,其主要的渠道有三條
1、空間干擾空間干擾,又稱場干擾。電磁信號通過空間輻射進入系統,多發生在高電壓、大電流、高頻電磁場附近,并通過靜電感應,電磁感應等方式侵入系統內部。
2、供電系統干擾電磁信號通過供電線路進入系統。供電系統干擾主要由電源的噪聲干擾引起的。
一、干擾的主要來源工業現場環境中的干擾通常是以脈沖的形式23、過程通道干擾干擾通過與系統相連的前向通道、后向通道及與其它系統的相互通道進入,一般沿各種線路侵入系統。說明:⒈一般情況下空間干擾在強度上遠小于其它兩種,故微機系統中應重點防止過程通道干擾和供電系統干擾。⒉此外,系統接地裝置不可靠等,也是產生干擾的重要原因;各類傳感器,輸入輸出線路的絕緣損壞也有可能引入干擾。3、過程通道干擾干擾通過與系統相連的前向通道、后向通道3二、干擾產生帶來的后果1、數據采集誤差加大
2、程序運行失常3、系統被控對象誤操作
4、被控對象狀態不穩定
5、定時不準
6、數據發生變化
二、干擾產生帶來的后果1、數據采集誤差加大2、程序運行失常42、程序運行失常
⑴控制狀態失靈當干擾侵入單片機系統的前向通道疊加在信號上,會使數據采集誤差增大,特別是前向通道的傳感器接口是小電壓信號輸入時,此現象會更加嚴重。
在單片機系統中,由于干擾的加入使輸出誤差加大,造成邏輯狀態改變,最終導致控制失常。
⑵死機
在單片機系統受強干擾后,造成程序計數器PC值的改變,破壞程序正常運行,造成死循環。1、數據采集誤差的加大2、程序運行失常⑴控制狀態失靈當干擾侵入單片機系統的53.系統被控對象誤操作
4.被控對象狀態不穩定鎖存電路與被控對象間的線路(包括驅動電路)受干擾,從而造成被控對象狀態不穩定(鎖存電路一般較敏感)。
⑴單片機內部程序指針錯亂,指向了其它地方,從而運行了錯誤的程序。
⑵RAM中的某些數據被沖亂或者特殊寄存器的值被改變,使程序計算出錯誤的結果。
⑶中斷誤觸發,使系統進行錯誤的中斷處理。
3.系統被控對象誤操作4.被控對象狀態不穩定鎖存電路66.數據發生變化在單片機應用系統中,由于外部RAM是可讀寫的,在干擾的侵入下,RAM中數據有可能發生改變,雖然ROM能避免干擾破壞,但單片機片內RAM以及片內各種特殊功能寄存器等狀態都有可能受干擾而變化,甚至EEPROM中的數據也可能誤讀寫,使程序計算出錯誤的結果。
5.定時不準⑵RAM中計時數據被沖亂,使程序計算出錯誤的結果。
⑴單片機內部程序指針錯亂,使中斷程序運行超出定時時間。
6.數據發生變化在單片機應用系統中,由于外部RAM是7抗干擾措施有硬件措施和軟件措施。硬件措施如果得當,可將絕大部分干擾拒之門外,但仍然會有少數干擾進入微機系統,故軟件措施作為第二道防線必不可少。由于軟件抗干擾措施是以降低CPU效率為代價的,如果沒有硬件消除絕大多數干擾,CPU將疲于奔命,無暇顧及正常工作,嚴重影響系統的工作效率和實時性。因此,一個成功的抗干擾系統是由硬件和軟件相結合構成的。
三、抗干擾措施抗干擾措施有硬件措施和軟件措施。硬件措施如果得當,可將絕81、注意印制電路板的布線與工藝
2、屏蔽4、光電隔離3、提高元器件的可靠性5、過壓保護電路6、增加硬件看門狗電路7、供電系統抗干擾措施㈠硬件抗干擾措施1、注意印制電路板的布線與工藝2、屏蔽4、光電隔離3、提91、注意印制電路板的布線與工藝
⑴盡量采用多層印制電路板,多層板可提供良好的接地網,可防止產生地電位差和元件之間的耦合(但要考慮性價比)。
⑵印制電路板要合理分區。模擬電路區、數字電路區、功率驅動區要盡量分開,地線不能相混,分別和電源端的地線相連。⑶元件面和焊接面應采用相互垂直、盡量避免相互平行走線以減小寄生耦合;避免相鄰導線平行段過長;加大信號線間距。高頻電路互聯導線盡量短,使用45°或者圓弧折線布線,不要使用90°折線,以減小高頻信號的發射。1、注意印制電路板的布線與工藝⑴盡量采用多層印制電路板,多10⑷三個區域的電源線、地線分三路引出。地線、電源線要盡量粗,噪聲元件與非噪聲元件要盡量離遠一些。時鐘振蕩電路、特殊高速邏輯電路部分用地線圈起來,讓周圍電場趨近于零。⑸使用滿足系統要求的最低頻率的時鐘,時鐘產生器要盡量靠近用到該時鐘的器件。石英晶體振蕩器外殼要接地,時鐘線盡量短,時鐘線要遠離I/O線,在石英晶體振蕩器下面要加大接地的面積而不應該走其它信號線。
⑷三個區域的電源線、地線分三路引出。地線、電源線要盡量粗,噪11⑹I/O驅動器件、功率放大器件盡量靠近印制板的邊、靠近引出接插件。重要的信號線盡量短并要盡量粗,并在兩側加上保護地。將信號通過扁平電纜引出時,要使用地線-信號-地線相間的結構。
⑺原則上每個IC元件要加一個0.01~0.1μF去耦電容,布線時去耦電容應盡量靠近IC的電源腳和接地腳。要選高頻特性好的獨石電容或瓷片電容作去耦電容。去耦電容焊在印制電路板上時,引腳要盡量短。這樣便可以消除大部分高頻干擾。
⑹I/O驅動器件、功率放大器件盡量靠近印制板的邊、靠近引出接12⑻閑置不用的IC管腳不要懸空以避免干擾引入。單片機不用的I/O口定義成輸出。單片機上有一個以上電源、接地端,每個都要接上,不要懸空。
2、屏蔽⑼避免環流的產生。加粗的線晶振盡量靠近用到時鐘的器件AT89c2051⑻閑置不用的IC管腳不要懸空以避免干擾引入。單片機不用的I/13⑴選用質量好的電子元件并進行嚴格的測試、篩選和老化。⑵設計時元件技術參數要有一定的余量。⑶提高印制板和組裝的質量。
4、光電隔離在輸入和輸出通道上采用光電隔離器來進行信息傳輸,將微機系統與各種傳感器、開關、執行機構從電氣上隔離開來,很大一部分干擾將被阻擋。
3、提高元器件的可靠性2、屏蔽對容易產生干擾和被干擾的部件使用金屬盒進行屏蔽以使干擾電磁波短路接地。
⑴選用質量好的電子元件并進行嚴格的測試、篩選和老化。4、光電14在輸入輸出通道上應采用一過壓保護電路,以防引入高電壓,傷害微機系統。過壓保護電路由限流電阻和穩壓管組成,限流電阻選擇要適宜,太大會引起信號衰減,太小起不到保護穩壓管的作用。穩壓管的選擇也要適宜,其穩壓值以略高于最高傳送信號電壓為宜,太低將對有效信號起限幅效果,使信號失真。
5、過壓保護電路outin在輸入輸出通道上應采用一過壓保護電路,以防引入高電壓,傷156、增加硬件看門狗電路對于失控的CPU,最簡單的方法是使其復位,程序自動從0000H開始執行。為此只要在單片機的RESET端加上一個高電平信號,并持續10ms以上即可。
WATCHDOG有如下特征:
⑴本身能獨立工作,基本上不依賴于CPU。CPU只在一個固定的時間間隔內與之打一次交道,表明整個系統“目前尚屬正常”。⑵當CPU落入死循環之后,能及時發現并使整個系統復位。
6、增加硬件看門狗電路對于失控的CPU,最簡單的方法是使16
“喂狗”過程一般安排在監控循環或定時中斷中,如果有比較長的延時子程序,則應該在其中插入“喂狗”過程。目前有很多單片機在內部已經集成了片內的硬件WATCHDOG電路,使用起來更為方便。對于片內看門狗,是通過兩條特定的賦值指令來完成。此外,也可以也可以用軟件程序來形成WATCHDOG。CPUWATCHDOGRESET脈沖···RESET“喂狗”過程一般安排在監控循環或定時中斷中,如果有比較長17⒎供電系統抗干擾措施(1)防止從電源系統引入干擾,可采取交流穩壓器保證供電的穩定性,防止電源的過壓和欠壓。使用隔離變壓器濾掉高頻噪聲,低通濾波器濾掉工頻干擾。(2)采用開關電源并提供足夠的功率余量,主機部分使用單獨的穩壓電路,必要時輸入,輸出供電分別采用DC-DC模塊隔離,以避免各個部分相互干擾。⒎供電系統抗干擾措施(1)防止從電源系統引入干擾,可采取交流181.開機自檢2.軟件陷阱(程序“跑飛”檢測)3.設置程序運行狀態標記4.輸出端口刷新5.輸入多次采樣6.數據濾波7.指令冗余8.軟件“看門狗”
㈡常用軟件抗干擾措施:1.開機自檢㈡常用軟件抗干擾措施:191、開機自檢開機后首先對單片機系統的硬件及軟件狀態進行檢測,一旦發現不正常,就進行相應的處理。開機自檢程序通常包括對RAM、ROM、I/O通道等的檢測。1、開機自檢開機后首先對單片機系統的硬件及軟件狀態進行檢測,20檢測RAM檢查RAM讀寫是否正常,出錯時應作出提示(聲光)或標志。方法:1.向RAM單元寫“00H”和“FFH”,讀出也應為“00H”和“FFH”,檢查通過。 2.不改變RAM單元內容的檢查方法。(實例程序)
檢測RAM檢查RAM讀寫是否正常,出錯時應作出提示(聲光)或21不改變RAM單元內容的檢查方法實例程序設有1片6264,地址為2000H~3FFFH,結果F0=1:出錯。
TEST7: MOVDPTR,#2000H;診斷6264 MOVR2,#20H ;共20H頁TEST70:LCALLTEST75 ; JBF0TEST71 ;出錯_跳 DJNZR2,TEST70TEST71:RETTEST75:SETB
F0 ;頁內檢測TEST76:MOVXA,@DPTR ;檢查一個字節 MOVB,A ;保存副本 CPLA ;取反 MOVX@DPTR,A;寫 MOVXA,@DPTR;讀 CPLA ;取反
CJNEA,B,TEST78;校對,錯轉 MOVX@DPTR,A
;恢復 MOVXA,@DPTR;再讀 CJNEA,B,TEST78;校對,錯轉 INCDPTR ;下一單元 MOVA,DPL JNZTEST76 ;全頁完?
CLRF0TEST78:RET
說明:256Byte為1頁,1K有4頁。6264是8KRAM,故有32頁=20H頁。不改變RAM單元內容的檢查方法實例程序設有1片6264,地址22檢測ROM對ROM單元的檢測主要是檢查ROM單元的內容的校驗和。1.將ROM的內容逐一相加,放棄進位后得到的一個數值。2.將ROM的內容逐一異或相加,得到的一個數值。校驗和求法:編程完成后,另編程序求出校驗和,存入ROM的最后一個單元,校驗時用相同方法求校驗和并和ROM最后一個單元中的內容進行比較,若相同則校驗通過。校驗方法:實例程序:檢測ROM對ROM單元的檢測主要是檢查ROM單元的內容的校驗23⑴求校驗和程序(異或和)設有1片EPROM2764(8K),地址:0000H~1FFFH方法:在應用軟件(包括各種抗干擾措施)編譯后,把目標碼調入開發系統的RAM中,例如0A000H~0BFFFH,然后用程序求出這8K字節(最后1個單元除外)的校驗和,并把它存入最后1個單元0BFFFH中。至此即可將0A000H~0BFFFH的內容寫入2764中了。(程序)⑴求校驗和程序(異或和)設有1片EPROM2764(8K),24求異或校驗和程序
ORG8000HROMT:MOVDPTR,#0BFFFH ;指向最后單元 CLRA MOVB,A MOVX@DPTR,A ;最后單元清零, MOVR2,#20H ;8K有20H頁 MOVDPTR,#0A000HXRT0:MOVXA,@DPTR XRLB,A INCDPTR MOVA,DPL JNZXRT0 ;本頁結束否,沒結束-跳 DJNZR2,XRT0 ;全部結束否,沒結束-跳 MOVDPTR,#0BFFFH ;指向最后單元 MOVA,B MOVX@DPTR,A ;存異或和
RET求和區...008000HBFFFHBFFEH求異或校驗和程序 ORG8000H8000HBFFFHB25⑵ROM檢測程序ROMT1:MOVDPTR,#0000H ;首地址 MOVR2,#20H MOVB,#0 R0MT2:CLRA MOVCA,@A+DPTR ;讀ROM XRLB,A INCDPTR MOVA,DPL JNZROMT2 ;本頁校完? DJNZR2,ROMT2 ;全部校完?
MOVA,B ;判斷:A=0正確
RET ;A≠0出錯⑵ROM檢測程序ROMT1:MOVDPTR,#000026檢測I/O通道數字I/O通道模擬I/O通道方法:人機互動進行檢測檢測I/O通道數字I/O通道27⒈數字I/O通道顯示器件(數碼管、指示燈)
一般開機時全部點亮數秒鐘,或閃亮數秒種。鍵盤
逐個按動并作相應指示來檢查。報警器(蜂鳴器、喇叭)
開機鳴響數秒。通訊口
進行通訊檢測。⒈數字I/O通道顯示器件(數碼管、指示燈)28⒉模擬I/O通道A/D通道
用基準電壓源進行轉換,檢查結果是否正確。D/A通道輸出標準數據(固定之值或步進增長值),檢查結果是否正確。⒉模擬I/O通道A/D通道29⒉軟件陷阱設置目的:捕捉“跑飛”程序設置位置:⑴程序存儲器未使用的區域⑵程序段之間⑶程序存儲器的結尾處捕捉方法:若干條空操作和無條件跳轉指令相結合,使程序轉到“跑飛”處理程序入口。實例程序:軟件陷阱NOP NOPNOPLJMPFLY⒉軟件陷阱設置目的:捕捉“跑飛”程序軟件陷阱30⑴程序存儲器未使用區域的代碼數據:FFH相當指令:MOVR7,A....FFFFFFFFFF0000H07FFH有程序區無程序區⑴程序存儲器未使用區域的代碼數據:FFH00031⑵在程序存儲器未使用的區域設軟件陷阱設有4K地址范圍:0000H~0FFFH,空區域0800H~0FFFH ORG0800H NOP ;軟件陷阱
NOP
NOPLJMPFLY ORG0C00H NOP ;軟件陷阱
NOP
NOPLJMPFLY....NOPNOPNOPLJMPFLY_hFLY_l···0000H0FFFH07FFH0800H⑵在程序存儲器未使用的區域設軟件陷阱設有4K地址范圍:0032⑶程序段之間設軟件陷阱
DSP:……;顯示子程序 ……RET
NOP ;軟件陷阱
NOP
NOPLJMPFLY;D10MS:MOVR0,#010H;延時子程序
……
RET
NOP;軟件陷阱
NOP
NOP
LJMPFLY
……
FLY:…… ;“跑飛”處理子程序
RET
⑶程序段之間設軟件陷阱DSP:……;顯示子程序33⑷在長程序段中的非連續程序處設軟件陷阱 …… …… CJNERn,#DATA,L1 ;<>跳轉L1 ……
……SJMPL2 ;=跳轉L2 NOP;軟件陷阱
NOP
NOP
LJMPFLY
L1:………….
L2:…..⑷在長程序段中的非連續程序處設軟件陷阱 ……34⑸在程序存儲器的結尾處設軟件陷阱設ROM為8K,地址范圍:0000H~1FFFHORG1FFAH
1FFAH:NOP;軟件陷阱1FFBH:NOP
1FFCH:NOP1FFDH~1FFFH:LJMPFLY
...FFFFFFFFFFFF0000H1FFFH0000H如果不設陷阱,程序又將從頭開始執行。ROM地址對應指令:MOVR7,A⑸在程序存儲器的結尾處設軟件陷阱設ROM為8K,地址范圍:35⑹程序開頭中斷地址處理地址機器碼ORG0000H0000020100STR:LJMPKS00030205C5 LJMPWZD0;外中斷0000600 NOP000700 NOP0008020030 LJMPERR000B020030 LJMPERR;T0中斷(沒用)000E00 NOP000F00 NOP0010020030 LJMPERR00130205E2 LJMPWZD1
;外中斷1001600 NOP001700 NOP0018020030 LJMPERR001B0205FF LJMPDDS
;定時⑹程序開頭中斷地址處理地址機器碼36001B0205FF LJMPDDS;定時001E00 NOP001F00 NOP0020020030 LJMPERR0023020030 LJMPERR ;串行口中斷(沒用)002600 NOP002700 NOP0028020030 LJMPERR002B020030 LJMPERR002E00 NOP002F00 NOP
0030ERR:······注意;沒用到的中斷入口設置軟件陷阱001B0205FF LJMP37⒊設置程序運行狀態標記程序運行狀態標記是在RAM區中設立一些標志位,這些標志位分別代表程序運行的不同階段及運行后的狀態。在初始化程序中,首先對這些單元置初值,在程序運行的不同階段,這些單元的內容將被改變成特定值,標記程序運行的階段和運行后的狀態。這些標志除了在程序正常運行中起到條件轉移的作用外,還能在程序“跑飛”,而RAM區數據正常時起到恢復程序運行現場的作用。
⒊設置程序運行狀態標記程序運行狀態標記是在RAM區中設立一38⒋輸出端口刷新由于單片機的I/O口很容易受到外部信號的干擾,輸出口的狀態也可能因此而改變。在程序中周期性地添加輸出端刷新指令,可以降低干擾對輸出口狀態的影響。方法:1。在程序中指定RAM單元存儲輸出口當時應處的狀態,在程序運行過程中根據這些RAM單元的內容去刷新I/O口。2。輸出時連續兩次對端口置狀態。
SETBP1.0 NOP SETBP1.0⒋輸出端口刷新由于單片機的I/O口很容易受到外部信號的干擾39⒌輸入多次采樣鍵輸入
要注意消抖。數據輸入(如A/D轉換結果)
對輸入數據進行多次采樣,而后進行數據濾波。⒌輸入多次采樣鍵輸入40鍵輸入去抖一般每隔10mS讀一次鍵進行去抖。讀鍵去抖動執行等待鍵釋放讀鍵去抖動執行等待鍵釋放實例1實例2鍵輸入去抖一般每隔10mS讀一次鍵進行去抖。讀鍵去抖動執行等41鍵輸入去抖程序實例1(設鍵值為8位,無鍵時為FF)KEY: LCALLKEYIN ;讀鍵 CPL A ;取反 JZ KEY ;取反后,無鍵時全0 LCALLTIME ;延時10mS,去抖 LCALLKEYIN ;再讀 CPL A ; JZ KEY ;未按,再讀 CPL A ;恢復有效鍵碼 . ;散轉到各執行模塊 . ;K_OFF:LCALLKEYIN ;讀鍵 CJNE A,#0FFH,K_OFF;未釋放,再讀 LJMP KEY ;已釋放,讀新的按鍵鍵輸入去抖程序實例1(設鍵值為8位,無鍵時為FF)KEY: 42鍵輸入去抖程序實例2(設一個鍵對應一個I/O口);高電平輸入有效,讀鍵程序為:;KEY: JNB P1.0,$ ;設從P1.0讀入 LCALLTIME ;延時10mS,去抖 JNB P1.0,KEYKEY1: JB P1.0,$ ;等鍵釋放 LCALLTIME JB P1.0,KEY1 ;已釋放 . ;散轉到各執行模塊 . ; LJMP KEY ;讀新的按鍵
鍵輸入去抖程序實例2(設一個鍵對應一個I/O口);高電平輸入43實例2說明1。這是一段開關量輸入信號必加的去抖程序,開關量輸入信號有光電傳感信號、繼電器觸點輸入、水銀接點、干簧管輸入、比較器信號輸出等等。2。去抖方法有多種,要否等鍵釋放、等待時間有否限制等諸多因素的考慮,視實際項目而定。試編一段等待按鍵時間為2秒的程序,2秒之內如未按鍵,程序繼續執行。實例2說明1。這是一段開關量輸入信號必加的去抖程序,開關量輸44⒍數據濾波為排除干擾的影響,對采樣數據必須進行數據濾波。數據濾波的前提:對同一數據進行多次采樣。數據濾波方法:
中值濾波:一般采樣5、7次,排序后取中間值。★
求平均值:一般采樣8次,求平均值。
去極值平均濾波:去掉最大最小值后求平均值一般采樣10、12次。★
加權平均濾波:各加權系數之和為1。
滑動平均濾波:本次采樣值和前n次采樣值求平均。★
數據濾波方法選用:視現場環境和被測對象而定。⒍數據濾波為排除干擾的影響,對采樣數據必須進行數據濾波。45⒎指令冗余MCS51指令系統最多為三字節指令,CPU受干擾后,會把雙字節指令、三字節指令中的操作數當作指令碼來執行,即把多字節指令拆散了,從而使程序出錯,所以應盡量采用單字節指令,并在一些關鍵地方插入一些單字節指令(NOP)或將有效單字節指令重復設置,這便是指令冗余。原指令正常入口ANL30H,#dataJNBbit,rel5330data
ROM5330dataROM如跑飛并從此處入口,會形成錯誤指令:正確指令錯誤指令data1指令錯誤并沖散下條指令data1
下條指令⒎指令冗余MCS51指令系統最多為三字節指令,CPU受干擾后46指令冗余(續)具體操作:1。在雙字節指令、三字節指令之后,插入兩條NOP指令,這樣保證其后的指令不被拆散。2。在一些對程序流程起決定性作用的指令前插入兩條NOP指令。此類指令有:RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、CJNE、DJNZ等。RETNOPNOP
ROMLCALLdata1data2
ROMNOPNOPLJMPdata1data2
ROMNOPNOP舉例:指令冗余(續)具體操作:RETROMLCALLROMNOP47指令冗余(續)說明:1。指令冗余降低了系統的效率,所以只有關鍵地方才加上指令冗余。2。在冗余指令起作用時,系統已受干擾,并由此可能已使系統發生紊亂。表面上看冗余指令又使系統回到正常軌道,這只是一個假象,系統正常與否,還要看系統的容錯能力。指令冗余(續)說明:48⒏軟件“看門狗”
“看門狗”是根據程序在運行指定時間間隔內未進行相應的操作,即未按時復位定時器,來判斷程序運行出錯的。有軟件看門狗和硬件看門狗之分。它和軟件陷阱都可檢測程序出錯,但檢錯方法不一樣。軟件看門狗設計方法:⒏軟件“看門狗”“看門狗”是根據程序在運行指定時間間隔內49軟件“看門狗”設計方法:設計思路:看門狗作用的前提是程序進入死循環,不能及時喂狗而導致的,當系統掉入死循環后,只有比這個死循環程序更高級的中斷程序才能奪取對CPU的控制權。為此用一個定時器來作watchdog,并把它的溢出設為高級中斷。此時系統中的其它中斷要設為低級中斷。例如,T0作watchdog,定時約16mS,則初始化程序如下:軟件“看門狗”設計方法:設計思路:50watchdog初始化程序;設晶振為6MHz,定時常數為#0E0C0HMOV TMOD,#01H ;設T0為16位定時器SETB ET0 ;允許T0中斷SETBPT0 ;置T0為高級中斷MOV TH0,#0E0H ;定時約16mS,TL0忽略SETB TR0 ;啟動T0SETB EA ;開中斷
Watchdog啟動后,系統必須每隔不大于16mS喂它一次,執行指令MOVTH0,#0E0H即可,如果用指令MOVTH0,#0來喂它,它將安靜131mS(而不是設計的16mS,思考為什么?)。watchdog初始化程序;設晶振為6MHz,定時常數為#051Watchdog說明當程序掉入死循環后,16mS之后即可產生T0中斷,T0中斷可直接轉向出錯處理程序。 ORG000BH LJMPERR純軟件看門狗要占用系統資源,建議采用硬件看門狗或帶硬件看門狗的單片機。Watchdog說明當程序掉入死循環后,16mS之后即可產生52簡單的ERR處理程序ERRO:CLREA MOVDPTR,#ERR1 PUSHDPL PUSHDPH RETIERR1:CLRA PUSHACC PUSHACC RETI兩次退中斷,保證系統啟動時無中斷請求.;從0000H重新執行,也可從其它地址;開始執行,方法一樣.簡單的ERR處理程序ERRO:CLREA兩次退中斷53第五章
單片機應用系統抗干擾技術一干擾的主要來源三抗干擾措施
硬件抗干擾措施
軟件抗干擾措施二干擾產生帶來的后果第五章
單片機應用系統抗干擾技術一干擾的主要來源三抗干54一、干擾的主要來源工業現場環境中的干擾通常是以脈沖的形式進入單片機系統,其主要的渠道有三條
1、空間干擾空間干擾,又稱場干擾。電磁信號通過空間輻射進入系統,多發生在高電壓、大電流、高頻電磁場附近,并通過靜電感應,電磁感應等方式侵入系統內部。
2、供電系統干擾電磁信號通過供電線路進入系統。供電系統干擾主要由電源的噪聲干擾引起的。
一、干擾的主要來源工業現場環境中的干擾通常是以脈沖的形式553、過程通道干擾干擾通過與系統相連的前向通道、后向通道及與其它系統的相互通道進入,一般沿各種線路侵入系統。說明:⒈一般情況下空間干擾在強度上遠小于其它兩種,故微機系統中應重點防止過程通道干擾和供電系統干擾。⒉此外,系統接地裝置不可靠等,也是產生干擾的重要原因;各類傳感器,輸入輸出線路的絕緣損壞也有可能引入干擾。3、過程通道干擾干擾通過與系統相連的前向通道、后向通道56二、干擾產生帶來的后果1、數據采集誤差加大
2、程序運行失常3、系統被控對象誤操作
4、被控對象狀態不穩定
5、定時不準
6、數據發生變化
二、干擾產生帶來的后果1、數據采集誤差加大2、程序運行失常572、程序運行失常
⑴控制狀態失靈當干擾侵入單片機系統的前向通道疊加在信號上,會使數據采集誤差增大,特別是前向通道的傳感器接口是小電壓信號輸入時,此現象會更加嚴重。
在單片機系統中,由于干擾的加入使輸出誤差加大,造成邏輯狀態改變,最終導致控制失常。
⑵死機
在單片機系統受強干擾后,造成程序計數器PC值的改變,破壞程序正常運行,造成死循環。1、數據采集誤差的加大2、程序運行失常⑴控制狀態失靈當干擾侵入單片機系統的583.系統被控對象誤操作
4.被控對象狀態不穩定鎖存電路與被控對象間的線路(包括驅動電路)受干擾,從而造成被控對象狀態不穩定(鎖存電路一般較敏感)。
⑴單片機內部程序指針錯亂,指向了其它地方,從而運行了錯誤的程序。
⑵RAM中的某些數據被沖亂或者特殊寄存器的值被改變,使程序計算出錯誤的結果。
⑶中斷誤觸發,使系統進行錯誤的中斷處理。
3.系統被控對象誤操作4.被控對象狀態不穩定鎖存電路596.數據發生變化在單片機應用系統中,由于外部RAM是可讀寫的,在干擾的侵入下,RAM中數據有可能發生改變,雖然ROM能避免干擾破壞,但單片機片內RAM以及片內各種特殊功能寄存器等狀態都有可能受干擾而變化,甚至EEPROM中的數據也可能誤讀寫,使程序計算出錯誤的結果。
5.定時不準⑵RAM中計時數據被沖亂,使程序計算出錯誤的結果。
⑴單片機內部程序指針錯亂,使中斷程序運行超出定時時間。
6.數據發生變化在單片機應用系統中,由于外部RAM是60抗干擾措施有硬件措施和軟件措施。硬件措施如果得當,可將絕大部分干擾拒之門外,但仍然會有少數干擾進入微機系統,故軟件措施作為第二道防線必不可少。由于軟件抗干擾措施是以降低CPU效率為代價的,如果沒有硬件消除絕大多數干擾,CPU將疲于奔命,無暇顧及正常工作,嚴重影響系統的工作效率和實時性。因此,一個成功的抗干擾系統是由硬件和軟件相結合構成的。
三、抗干擾措施抗干擾措施有硬件措施和軟件措施。硬件措施如果得當,可將絕611、注意印制電路板的布線與工藝
2、屏蔽4、光電隔離3、提高元器件的可靠性5、過壓保護電路6、增加硬件看門狗電路7、供電系統抗干擾措施㈠硬件抗干擾措施1、注意印制電路板的布線與工藝2、屏蔽4、光電隔離3、提621、注意印制電路板的布線與工藝
⑴盡量采用多層印制電路板,多層板可提供良好的接地網,可防止產生地電位差和元件之間的耦合(但要考慮性價比)。
⑵印制電路板要合理分區。模擬電路區、數字電路區、功率驅動區要盡量分開,地線不能相混,分別和電源端的地線相連。⑶元件面和焊接面應采用相互垂直、盡量避免相互平行走線以減小寄生耦合;避免相鄰導線平行段過長;加大信號線間距。高頻電路互聯導線盡量短,使用45°或者圓弧折線布線,不要使用90°折線,以減小高頻信號的發射。1、注意印制電路板的布線與工藝⑴盡量采用多層印制電路板,多63⑷三個區域的電源線、地線分三路引出。地線、電源線要盡量粗,噪聲元件與非噪聲元件要盡量離遠一些。時鐘振蕩電路、特殊高速邏輯電路部分用地線圈起來,讓周圍電場趨近于零。⑸使用滿足系統要求的最低頻率的時鐘,時鐘產生器要盡量靠近用到該時鐘的器件。石英晶體振蕩器外殼要接地,時鐘線盡量短,時鐘線要遠離I/O線,在石英晶體振蕩器下面要加大接地的面積而不應該走其它信號線。
⑷三個區域的電源線、地線分三路引出。地線、電源線要盡量粗,噪64⑹I/O驅動器件、功率放大器件盡量靠近印制板的邊、靠近引出接插件。重要的信號線盡量短并要盡量粗,并在兩側加上保護地。將信號通過扁平電纜引出時,要使用地線-信號-地線相間的結構。
⑺原則上每個IC元件要加一個0.01~0.1μF去耦電容,布線時去耦電容應盡量靠近IC的電源腳和接地腳。要選高頻特性好的獨石電容或瓷片電容作去耦電容。去耦電容焊在印制電路板上時,引腳要盡量短。這樣便可以消除大部分高頻干擾。
⑹I/O驅動器件、功率放大器件盡量靠近印制板的邊、靠近引出接65⑻閑置不用的IC管腳不要懸空以避免干擾引入。單片機不用的I/O口定義成輸出。單片機上有一個以上電源、接地端,每個都要接上,不要懸空。
2、屏蔽⑼避免環流的產生。加粗的線晶振盡量靠近用到時鐘的器件AT89c2051⑻閑置不用的IC管腳不要懸空以避免干擾引入。單片機不用的I/66⑴選用質量好的電子元件并進行嚴格的測試、篩選和老化。⑵設計時元件技術參數要有一定的余量。⑶提高印制板和組裝的質量。
4、光電隔離在輸入和輸出通道上采用光電隔離器來進行信息傳輸,將微機系統與各種傳感器、開關、執行機構從電氣上隔離開來,很大一部分干擾將被阻擋。
3、提高元器件的可靠性2、屏蔽對容易產生干擾和被干擾的部件使用金屬盒進行屏蔽以使干擾電磁波短路接地。
⑴選用質量好的電子元件并進行嚴格的測試、篩選和老化。4、光電67在輸入輸出通道上應采用一過壓保護電路,以防引入高電壓,傷害微機系統。過壓保護電路由限流電阻和穩壓管組成,限流電阻選擇要適宜,太大會引起信號衰減,太小起不到保護穩壓管的作用。穩壓管的選擇也要適宜,其穩壓值以略高于最高傳送信號電壓為宜,太低將對有效信號起限幅效果,使信號失真。
5、過壓保護電路outin在輸入輸出通道上應采用一過壓保護電路,以防引入高電壓,傷686、增加硬件看門狗電路對于失控的CPU,最簡單的方法是使其復位,程序自動從0000H開始執行。為此只要在單片機的RESET端加上一個高電平信號,并持續10ms以上即可。
WATCHDOG有如下特征:
⑴本身能獨立工作,基本上不依賴于CPU。CPU只在一個固定的時間間隔內與之打一次交道,表明整個系統“目前尚屬正常”。⑵當CPU落入死循環之后,能及時發現并使整個系統復位。
6、增加硬件看門狗電路對于失控的CPU,最簡單的方法是使69
“喂狗”過程一般安排在監控循環或定時中斷中,如果有比較長的延時子程序,則應該在其中插入“喂狗”過程。目前有很多單片機在內部已經集成了片內的硬件WATCHDOG電路,使用起來更為方便。對于片內看門狗,是通過兩條特定的賦值指令來完成。此外,也可以也可以用軟件程序來形成WATCHDOG。CPUWATCHDOGRESET脈沖···RESET“喂狗”過程一般安排在監控循環或定時中斷中,如果有比較長70⒎供電系統抗干擾措施(1)防止從電源系統引入干擾,可采取交流穩壓器保證供電的穩定性,防止電源的過壓和欠壓。使用隔離變壓器濾掉高頻噪聲,低通濾波器濾掉工頻干擾。(2)采用開關電源并提供足夠的功率余量,主機部分使用單獨的穩壓電路,必要時輸入,輸出供電分別采用DC-DC模塊隔離,以避免各個部分相互干擾。⒎供電系統抗干擾措施(1)防止從電源系統引入干擾,可采取交流711.開機自檢2.軟件陷阱(程序“跑飛”檢測)3.設置程序運行狀態標記4.輸出端口刷新5.輸入多次采樣6.數據濾波7.指令冗余8.軟件“看門狗”
㈡常用軟件抗干擾措施:1.開機自檢㈡常用軟件抗干擾措施:721、開機自檢開機后首先對單片機系統的硬件及軟件狀態進行檢測,一旦發現不正常,就進行相應的處理。開機自檢程序通常包括對RAM、ROM、I/O通道等的檢測。1、開機自檢開機后首先對單片機系統的硬件及軟件狀態進行檢測,73檢測RAM檢查RAM讀寫是否正常,出錯時應作出提示(聲光)或標志。方法:1.向RAM單元寫“00H”和“FFH”,讀出也應為“00H”和“FFH”,檢查通過。 2.不改變RAM單元內容的檢查方法。(實例程序)
檢測RAM檢查RAM讀寫是否正常,出錯時應作出提示(聲光)或74不改變RAM單元內容的檢查方法實例程序設有1片6264,地址為2000H~3FFFH,結果F0=1:出錯。
TEST7: MOVDPTR,#2000H;診斷6264 MOVR2,#20H ;共20H頁TEST70:LCALLTEST75 ; JBF0TEST71 ;出錯_跳 DJNZR2,TEST70TEST71:RETTEST75:SETB
F0 ;頁內檢測TEST76:MOVXA,@DPTR ;檢查一個字節 MOVB,A ;保存副本 CPLA ;取反 MOVX@DPTR,A;寫 MOVXA,@DPTR;讀 CPLA ;取反
CJNEA,B,TEST78;校對,錯轉 MOVX@DPTR,A
;恢復 MOVXA,@DPTR;再讀 CJNEA,B,TEST78;校對,錯轉 INCDPTR ;下一單元 MOVA,DPL JNZTEST76 ;全頁完?
CLRF0TEST78:RET
說明:256Byte為1頁,1K有4頁。6264是8KRAM,故有32頁=20H頁。不改變RAM單元內容的檢查方法實例程序設有1片6264,地址75檢測ROM對ROM單元的檢測主要是檢查ROM單元的內容的校驗和。1.將ROM的內容逐一相加,放棄進位后得到的一個數值。2.將ROM的內容逐一異或相加,得到的一個數值。校驗和求法:編程完成后,另編程序求出校驗和,存入ROM的最后一個單元,校驗時用相同方法求校驗和并和ROM最后一個單元中的內容進行比較,若相同則校驗通過。校驗方法:實例程序:檢測ROM對ROM單元的檢測主要是檢查ROM單元的內容的校驗76⑴求校驗和程序(異或和)設有1片EPROM2764(8K),地址:0000H~1FFFH方法:在應用軟件(包括各種抗干擾措施)編譯后,把目標碼調入開發系統的RAM中,例如0A000H~0BFFFH,然后用程序求出這8K字節(最后1個單元除外)的校驗和,并把它存入最后1個單元0BFFFH中。至此即可將0A000H~0BFFFH的內容寫入2764中了。(程序)⑴求校驗和程序(異或和)設有1片EPROM2764(8K),77求異或校驗和程序
ORG8000HROMT:MOVDPTR,#0BFFFH ;指向最后單元 CLRA MOVB,A MOVX@DPTR,A ;最后單元清零, MOVR2,#20H ;8K有20H頁 MOVDPTR,#0A000HXRT0:MOVXA,@DPTR XRLB,A INCDPTR MOVA,DPL JNZXRT0 ;本頁結束否,沒結束-跳 DJNZR2,XRT0 ;全部結束否,沒結束-跳 MOVDPTR,#0BFFFH ;指向最后單元 MOVA,B MOVX@DPTR,A ;存異或和
RET求和區...008000HBFFFHBFFEH求異或校驗和程序 ORG8000H8000HBFFFHB78⑵ROM檢測程序ROMT1:MOVDPTR,#0000H ;首地址 MOVR2,#20H MOVB,#0 R0MT2:CLRA MOVCA,@A+DPTR ;讀ROM XRLB,A INCDPTR MOVA,DPL JNZROMT2 ;本頁校完? DJNZR2,ROMT2 ;全部校完?
MOVA,B ;判斷:A=0正確
RET ;A≠0出錯⑵ROM檢測程序ROMT1:MOVDPTR,#000079檢測I/O通道數字I/O通道模擬I/O通道方法:人機互動進行檢測檢測I/O通道數字I/O通道80⒈數字I/O通道顯示器件(數碼管、指示燈)
一般開機時全部點亮數秒鐘,或閃亮數秒種。鍵盤
逐個按動并作相應指示來檢查。報警器(蜂鳴器、喇叭)
開機鳴響數秒。通訊口
進行通訊檢測。⒈數字I/O通道顯示器件(數碼管、指示燈)81⒉模擬I/O通道A/D通道
用基準電壓源進行轉換,檢查結果是否正確。D/A通道輸出標準數據(固定之值或步進增長值),檢查結果是否正確。⒉模擬I/O通道A/D通道82⒉軟件陷阱設置目的:捕捉“跑飛”程序設置位置:⑴程序存儲器未使用的區域⑵程序段之間⑶程序存儲器的結尾處捕捉方法:若干條空操作和無條件跳轉指令相結合,使程序轉到“跑飛”處理程序入口。實例程序:軟件陷阱NOP NOPNOPLJMPFLY⒉軟件陷阱設置目的:捕捉“跑飛”程序軟件陷阱83⑴程序存儲器未使用區域的代碼數據:FFH相當指令:MOVR7,A....FFFFFFFFFF0000H07FFH有程序區無程序區⑴程序存儲器未使用區域的代碼數據:FFH00084⑵在程序存儲器未使用的區域設軟件陷阱設有4K地址范圍:0000H~0FFFH,空區域0800H~0FFFH ORG0800H NOP ;軟件陷阱
NOP
NOPLJMPFLY ORG0C00H NOP ;軟件陷阱
NOP
NOPLJMPFLY....NOPNOPNOPLJMPFLY_hFLY_l···0000H0FFFH07FFH0800H⑵在程序存儲器未使用的區域設軟件陷阱設有4K地址范圍:0085⑶程序段之間設軟件陷阱
DSP:……;顯示子程序 ……RET
NOP ;軟件陷阱
NOP
NOPLJMPFLY;D10MS:MOVR0,#010H;延時子程序
……
RET
NOP;軟件陷阱
NOP
NOP
LJMPFLY
……
FLY:…… ;“跑飛”處理子程序
RET
⑶程序段之間設軟件陷阱DSP:……;顯示子程序86⑷在長程序段中的非連續程序處設軟件陷阱 …… …… CJNERn,#DATA,L1 ;<>跳轉L1 ……
……SJMPL2 ;=跳轉L2 NOP;軟件陷阱
NOP
NOP
LJMPFLY
L1:………….
L2:…..⑷在長程序段中的非連續程序處設軟件陷阱 ……87⑸在程序存儲器的結尾處設軟件陷阱設ROM為8K,地址范圍:0000H~1FFFHORG1FFAH
1FFAH:NOP;軟件陷阱1FFBH:NOP
1FFCH:NOP1FFDH~1FFFH:LJMPFLY
...FFFFFFFFFFFF0000H1FFFH0000H如果不設陷阱,程序又將從頭開始執行。ROM地址對應指令:MOVR7,A⑸在程序存儲器的結尾處設軟件陷阱設ROM為8K,地址范圍:88⑹程序開頭中斷地址處理地址機器碼ORG0000H0000020100STR:LJMPKS00030205C5 LJMPWZD0;外中斷0000600 NOP000700 NOP0008020030 LJMPERR000B020030 LJMPERR;T0中斷(沒用)000E00 NOP000F00 NOP0010020030 LJMPERR00130205E2 LJMPWZD1
;外中斷1001600 NOP001700 NOP0018020030 LJMPERR001B0205FF LJMPDDS
;定時⑹程序開頭中斷地址處理地址機器碼89001B0205FF LJMPDDS;定時001E00 NOP001F00 NOP0020020030 LJMPERR0023020030 LJMPERR ;串行口中斷(沒用)002600 NOP002700 NOP0028020030 LJMPERR002B020030 LJMPERR002E00 NOP002F00 NOP
0030ERR:······注意;沒用到的中斷入口設置軟件陷阱001B0205FF LJMP90⒊設置程序運行狀態標記程序運行狀態標記是在RAM區中設立一些標志位,這些標志位分別代表程序運行的不同階段及運行后的狀態。在初始化程序中,首先對這些單元置初值,在程序運行的不同階段,這些單元的內容將被改變成特定值,標記程序運行的階段和運行后的狀態。這些標志除了在程序正常運行中起到條件轉移的作用外,還能在程序“跑飛”,而RAM區數據正常時起到恢復程序運行現場的作用。
⒊設置程序運行狀態標記程序運行狀態標記是在RAM區中設立一91⒋輸出端口刷新由于單片機的I/O口很容易受到外部信號的干擾,輸出口的狀態也可能因此而改變。在程序中周期性地添加輸出端刷新指令,可以降低干擾對輸出口狀態的影響。方法:1。在程序中指定RAM單元存儲輸出口當時應處的狀態,在程序運行過程中根據這些RAM單元的內容去刷新I/O口。2。輸出時連續兩次對端口置狀態。
SETBP1.0 NOP SETBP1.0⒋輸出端口刷新由于單片機的I/O口很容易受到外部信號的干擾92⒌輸入多次采樣鍵輸入
要注意消抖。數據輸入(如A/D轉換結果)
對輸入數據進行多次采樣,而后進行數據濾波。⒌輸入多次采樣鍵輸入93鍵輸入去抖一般每隔10mS讀一次鍵進行去抖。讀鍵去抖動執行等待鍵釋放讀鍵去抖動執行等待鍵釋放實例1實例2鍵輸入去抖一般每隔10mS讀一次鍵進行去抖。讀鍵去抖動執行等94鍵輸入去抖程序實例1(設鍵值為8位,無鍵時為FF)KEY: LCALLKEYIN ;讀鍵 CPL A ;取反 JZ KEY ;取反后,無鍵時全0 LCALLTIME ;延時10mS,去抖 LCALLKEYIN ;再讀 CPL A ; JZ KEY ;未按,再讀 CPL A ;恢復有效鍵碼 . ;散轉到各執行模塊 . ;K_OFF:LCALLKEYIN ;讀鍵 CJNE A,#0FFH,K_OFF;未釋放,再讀 LJMP KEY ;已釋放,讀新的按鍵鍵輸入去抖程序實例1(設鍵值為8位,無鍵時為FF)KEY: 95鍵輸入去抖程序實例2(設一個鍵對應一個I/O口);高電平輸入有效,讀鍵程序為:;KEY: JNB P1.0,$ ;設從P1.0讀入 LCALLTIME ;延時10mS,去抖 JNB P1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧食儲備的社區糧食安全計劃考核試卷
- 釀酒行業節能減排措施考核試卷
- 道路工程測繪技術考核試卷
- 遙感技術在應急管理與救援中的應用考核試卷
- 組織結構優化與流程再造考核試卷
- 常見心臟疾病手術方式
- 新生兒NICU出科報告
- 麻醉專業就業分析研究
- Quadrilineatin-生命科學試劑-MCE
- 9-Heptadecanone-Heptadecan-9-one-生命科學試劑-MCE
- 建行反洗錢應急預案
- 路燈養護投標方案(技術方案)
- 國家開放大學電大本科《管理英語4》期末試題題庫及答案(試卷號:1389)
- 詢價投標文件(范本)
- 去小學化家長培訓講座課件
- 單光纖光鑷數值仿真和光阱力計算的中期報告
- 一份完整的鹵菜店創業計劃書 工作計劃
- 手術物品清點手術室護理實踐指南課件
- 中國鋁業股份有限公司偃師市東溝鋁土礦礦山地質環境保護與土地復墾方案
- 2023-2024學年河南省濮陽市小學語文五年級期末通關考試題附參考答案和詳細解析
- 國語經典歌曲歌詞接龍考試題庫(180題)
評論
0/150
提交評論