摘 要:單片機的開發過程中的抗噪是必須解決和處理的問題,單片機的性能不斷優化,片內外干擾也越來越嚴重,因而必須采取有效的辦法。本文研究的問題即是從硬件軟件兩方面來探討抗噪。
關鍵詞:單片機;抗噪;看門狗技術;軟件陷阱
單片機構成系統的抗干擾能力線路板的設計和布線有很大關系。理想的數字電路信號,高低電平穩定,上升,下降沿整齊平穩,沒有過沖與不到位,應為理想的方波。而當用示波器觀察線路上的信號時,會發現有噪聲信號疊加在所謂理想信號上。如果線路板上的噪聲較大,當外界來的隨機電磁干擾信號疊加在原有的噪聲上,就會造成系統出錯。
目前我們對于單片機的噪聲問題的解決辦法主要有下列幾種:
1 監控電路
監控電路是比較低端但是行之極為有效的解決噪聲辦法,主要包括時鐘監控電路和電源電壓監控。高可靠性的額單片機片內有時鐘監控電路,在外部遇到干擾餓時候,外部晶振有可能停振,對于外部晶振停振的問題,可以使用復制產生單片機復位信號的方法使CPU復位,也可以讓CPU改用單片機內部振蕩器工作,這樣可以有助于提高單片機系統的抗干擾能力;也可以通過寫相應寄存器打開時鐘監控電路,并且關掉使用片內時鐘方式,在出現外部時鐘停振時直接產生CPU復位信號,重新啟動單片機系統。也可以寫相應寄存器允許在出現外部時鐘失效時使用片內自時鐘方式。進入自時鐘方式以后,片內的時鐘產生器模塊會對外部時鐘質量進行檢測每當外部時鐘恢復后自動轉入正常外部方式,自時鐘頻率為片內壓控振蕩器的最低頻率,如果降低時鐘頻率運行比復位帶來的系統不確定性更安全,可以允許在出現外部時鐘失效時使用這種自時鐘方式。對于不同模式下的外部時鐘失效干擾,可以通過程序選擇最合適的抗干擾方式。
除了時鐘監控之外,采用電源電壓監控也可以有效的抗噪聲,由于單片機是基于CMOS工藝的超大規模集成電路,允許使用臺的電源電壓范圍很寬,原則上2.7——3.5V都可以,但根據應用領域的不同,對電源電壓的監控,可以根據應用使用不同的抗干擾措施。對于 穩定電壓供電的單片機應用系統,可以使用低電壓復位電路。
2 軟件陷阱
為確保單片機的可靠性,對剩余程序空間要做一些處理。處理的原則是,考慮到一旦由于某種干擾,程序落到這一空間(亂飛),無論這里的數據當作地址解釋還是當作指令解釋,都能使程序恢復正常運行。從軟件的角度來看,對實現功能的程序在設計中不可避免出現亂飛現象。我們以MC51為例說明,當亂飛的程序進入非程序區的時候,我們就可設定軟件陷阱對亂飛的程序進行攔截從而將程序引向一個固定的位置。這樣我們就可將捕獲的程序重新納入正軌。 軟件陷阱主要就是把程序從新引入它的復位入口處,也就是說我們在適當的地方設置這樣的指令:
NOP
NOP
LJMP 0000H
對于軟件陷阱的安排,我們主要安排在這樣一些區域,未使用的中斷區,未使用的EPROM空間及非EPROM空間。程序運行區,及中斷服務程序區。在這里我們主要來看前三種:
未使用的中斷區:如果對于未使用的中斷因干擾而開放的話,我們可以把中斷服務程序這樣來寫:
NOP
NOP
POPD1 ;將原來的錯誤斷點彈出
POPD2 ;將原來的錯誤斷點彈出
PUSH 00H
PUSH 00H ;將斷點地址重寫為0000H
RETI
未使用的EPROM區 :假設我們用了一片2764,但并沒有用完整個存儲區。這時候就可在未用的區域里填充上020000數據,這樣當程序飛入其中時就會很快的走入正軌。這條指令其實是\"LJMP 0000H\"的機器碼。非EPROM空間 :單片機系統的程序空間是64K,正常情況下我們所使用的EPROM不會占用所有的空間,假設我們現在的EPROM占用16K的空間那么剩下的48K空間就被閑置不用了。當亂飛的PC落入這些空間時,讀入的數據將為FFH,這是:MOVR7,A 指令的機器碼,將修改R7的內容。因此,當程序亂飛入非EPROM芯片區后,不僅無法導入正規,面且破壞了R7的內容。
我們知道,當CPU讀程序存儲器的時候,伴隨著會產生一個PSEN信號,我們就可利用這個信號,再加上一個非EPROM區的地址譯碼信號,構成一個選通信號來起動一個空閑的中斷,再用軟件陷阱的方法從中斷程序中把程序導入正規。
3 看門狗技術
我們知道看門狗的作用就是防止程序發生死循環,或者說程序跑飛。硬件看門狗是利用了一個定時器,來監控主程序的運行,也就是說在主程序的運行過程中,我們要在定時時間到之前對定時器進行復位如果出現死循環,或者說PC指針不能回來。那么定時時間到后就會使單片機復位。也就是說,單片機的看門狗電路要求用戶程序定期對一時間遞減計數器做刷新操作,應用程序中應使用單片機的實時中斷,在實時中斷服務子程序中定時刷新這個計數器。在應用程序開發工作基本完成以后,要考慮打開看門狗電路,這是軟件方面的工作軟件上怎么做完全取決與應用。
軟件看門狗技術的原理和看門狗電路技術差不多,只不過是用軟件的方法實現,仍以51系列來講,在51單片機中有兩個定時器,我們就可以用這兩個定時器來對主程序的運行進行監控。我們可以對T0設定一定的定時時間,當產生定時中斷的時候對一個變量進行賦值,而這個變量在主程序運行的開始已經有了一個初值,在這里我們要設定的定時值要小于主程序的運行時間,這樣在主程序的尾部對變量的值進行判斷,如果值發生了預期的變化,就說明T0中斷正常,如果沒有發生變化則使程序復位。
對于T1我們用來監控主程序的運行,我們給T1設定一定的定時時間,在主程序中對其進行復位,如果不能在一定的時間里對其進行復位,T1的定時中斷就會使單片機復位。在這里T1的定時時間要設的大于主程序的運行時間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時中斷子程序來監視。這樣就夠程了一個循環,T0監視T1,T1監視主程序,主程序又來監視T0,從而保證系統的穩定運行。
另外,EFT技術(Electrical Fast Transient)也被廣泛運用到抗噪領域里,它能夠使產生的毛刺被RC濾波和施密特電路處理掉,從而達到抗干擾的目的。當然,單片機的開發應用中的噪聲問題一直都是存在的,這激勵廣大開發人員做更深入的鉆研和探索。
參考文獻
[1]羅余翔等 PCB板層布局與EMC .北京:安全與電磁兼容 2003(5)
[2]余永權,曾碧,單片機模糊邏輯控制.北京:北京航空航天大學出版社,2003
[3]邵貝貝 Motorola DSP型16位單片機原理與實踐,北京,北京航空航天大學出版社,2003