單片機系統抗干擾應用實(shí)例
2.2 硬件實(shí)現電路圖
圖2—2給出了MAX813L在單片機系統中的典型應用線(xiàn)路圖。此電路可以實(shí)現上電、瞬時(shí)掉電以及程序運行出現“死機”時(shí)的自動(dòng)復位和隨時(shí)的手動(dòng)復位;并且可以實(shí)時(shí)地監視電源故障,以便及時(shí)地保存數據。
本電路巧妙地利用了MAX813L的手動(dòng)復位輸入端。只要程序一旦跑飛引起程序“死機”,端電平由高到低,
當變低超過(guò)140 ms,將引起MAX813L產(chǎn)生一個(gè)200 ms的復位脈沖。同時(shí)使看門(mén)狗定時(shí)器清0和使
引腳變成高電平。也可以隨時(shí)使用手動(dòng)復位按鈕使MAX813L產(chǎn)生復位脈沖,由于為產(chǎn)生復位脈沖端
要求低電平至少保持140ms以上,故可以有效地消除開(kāi)關(guān)抖動(dòng)。
該電路可以實(shí)時(shí)地監視電源故障(掉電、電壓降低等)。圖2—2中R1的一端接未經(jīng)穩壓的直流電源。電源正常時(shí),確保R2上的電壓高于1.26 V,即保證MAX813L的PFI輸入端電平高于1.26 V。當電源發(fā)生故障,PFI輸入端的電平低于1.25 V時(shí),電源故障輸出端電平由高變低,引起單片機中斷,CPU響應中斷,執行相應的中斷服務(wù)程序,保護數據,斷開(kāi)外部用電電路等。
3 抗干擾程序設計
3.1 程序運行“死機”及相應對策
程序正常運行時(shí),由主程序在小于1.6 s的時(shí)間間隔內周期性地從P1.7端向MAX813L的WDI輸入端發(fā)送一個(gè)脈沖信號,以清除芯片內部的看門(mén)狗定時(shí)器。實(shí)現指令為:
RST-PRG:SETB P1.7
NOP
CLR P1.7
若超過(guò)1.6 s該輸入端收不到脈沖信號,則內部看門(mén)狗定時(shí)器溢出,8號引腳由高電平變?yōu)榈碗娖?。引起MAX813L產(chǎn)生一個(gè)200 ms的復位脈沖。同時(shí)使看門(mén)狗定時(shí)器清0和使引腳變成高電平。
需要引起注意的是,整個(gè)單片機系統完成復位后,在PC指針的指引下整個(gè)程序將從0000H地址處重新開(kāi)始初始化運行,而這在很多情況下是不允許的(如連續的工藝流程),為此必須采取相應的措施。首先在對單片機系統完成復位后,程序應該先判斷是開(kāi)機運行(冷啟動(dòng))還是運行過(guò)程中“死機”之后的重新加載運行(熱啟動(dòng))。因為一般情況下在這兩種啟動(dòng)方式下,系統程序在進(jìn)入主流程前所要做的工作往往不同。如冷啟動(dòng)后,系統程序在初始化程序中往往要進(jìn)行系統資源的自檢以及將各外圍設備設置為相應的待機狀態(tài)等。而熱啟動(dòng)后往往不再對系統的資源自檢,同時(shí)應盡量避免對各外圍設備修改設置,只是對單片機系統本身的一些資源進(jìn)行必要的設置工作。其次,在大多數情況下,我們總可以把一個(gè)連續的過(guò)程分解開(kāi)來(lái),把它變成一個(gè)個(gè)獨立的子過(guò)程(狀態(tài))組成的連續過(guò)程。在主程序運行過(guò)程中,適時(shí)保存相應狀態(tài)和該狀態(tài)下的相關(guān)參數。這樣當程序運行出現“死機”,在MAX813L作用下系統復位和初始化后,將首先查詢(xún)事先保存的狀態(tài)參數,然后根據此參數決定程序的流向。同時(shí)把該狀態(tài)下事先保存的參數取出,對系統外圍設備進(jìn)行必要的恢復設置工作和引導程序繼續運行。根據這一思想設計的系統程序流程圖如圖3—1所示。
3.2 電源故障及相應對策
當電源發(fā)生故障時(shí),引起單片機中斷,CPU響應中斷,執行相應的中斷服務(wù)程序,保護數據,斷開(kāi)外部用電電路等。為了做到這一點(diǎn),必須把中斷優(yōu)先級(PX0)設為最高,特別是系統中還有其它中斷時(shí),更應如此。中斷優(yōu)先級的設置可通過(guò)中斷優(yōu)先寄存器IP實(shí)現,此外還要設置中斷允許寄存器IE的總允許位(EA)及外部中斷0中斷允許位(EX0)。實(shí)現指令為:
SETB IP.0 ??;設置PX0=1
SETB IE.7 ??;設置EA=1
SETB IE.0 ??;設置EX0=1
至于中斷源的觸發(fā)方式。如果選擇電平觸發(fā),則中斷擦除時(shí)必須外加輔助電路,否則中斷不能正常執行;如果選擇跳變觸發(fā),當端出現負跳變時(shí),CPU內部硬件自動(dòng)置位中斷標志IE0,CPU響應中斷,通過(guò)向量地址轉入中斷服務(wù)程序時(shí)IE0被硬件清0。所以基于上述分析,必須選用跳變觸發(fā)方式。觸發(fā)方式由定時(shí)器控制寄存器TCON中的IT0位決定。實(shí)現指令為:
SETB TCON.0
設計好中斷服務(wù)程序對于系統的連續可靠運行具有重要意義。在中斷服務(wù)程序中,先保存重要數據到片內RAM(掉電時(shí)由備用電源供電,相應實(shí)現電路未畫(huà)出)。發(fā)出控制信號斷開(kāi)外圍設備,最后把電源控制寄存器PCON的PD位置1,激活掉電工作方式,中斷返回。中斷服務(wù)程序實(shí)現如下(其中R0代表保存的數據在內存中的緩沖區首址,DPTR代表要保存的數據在外部RAM中的緩沖區首址,R1代表要保存的數據字節量):
INT0:MOVX A,@DPTR ;保存數據
MOV?。繰0,A
INC R0 ??;內存緩沖區指針加1
INC DPTR ??;外存緩沖區指針加1
DJNZ R1,INT0 ??;保存完?沒(méi)完,繼續保存
SETB PCON.1 ??;激活掉電方式
RET1
4 結束語(yǔ)
本系統巧妙地利用MAX813L芯片,實(shí)現了單片機系統的看門(mén)狗電路、電源故障監視電路和手動(dòng)、自動(dòng)復位電路,電路結構緊湊,設計合理。結合本文給出的程序抗干擾設計方案,可有效地解決程序運行中出現的“死機”現象和電源故障帶來(lái)的不利影響。在我們設計氮化鎵半導體薄膜生長(cháng)工藝流程實(shí)時(shí)監控系統中實(shí)際運行表明:該方案設計合理,運行可靠,抗干擾能力強,達到了滿(mǎn)意的使用效果,并且可推廣應用到其它的單片機控制系統中去。
評論