MAX813L在51系統(tǒng)抗干擾中的應(yīng)用及工作原理
1 MAX813L芯片及其工作原理
1.1 芯片特點(diǎn)
· 加電、掉電以及供電電壓下降情況下的復(fù)位輸出,復(fù)位脈沖寬度典型值為200 ms。
· 獨(dú)立的看門狗輸出,如果看門狗輸入在1.6 s內(nèi)未被觸發(fā),其輸出將變?yōu)楦唠娖健?BR>· 1.25 V門限值檢測(cè)器,用于電源故障報(bào)警、電池低電壓檢測(cè)或+5 V以外的電源監(jiān)控。
· 低電平有效的手動(dòng)復(fù)位輸入。
· 8引腳DIP封裝。
1.2 MAX813L的引腳及功能
1.2.1 MAX813L芯片引腳排列見(jiàn)圖1—1
1.2.2 各引腳功能及工作原理
(1)手動(dòng)復(fù)位輸入端()
當(dāng)該端輸入低電平保持140 ms以上,MAX813L就輸出復(fù)位信號(hào).該輸入端的最小輸入脈寬要求可以有效地消除開(kāi)關(guān)的抖動(dòng)。與TTL/CMOS兼容。
(2)工作電源端(VCC):接+5V電源。
(3)電源接地端(GND):接0 V參考電平。
(4)電源故障輸入端(PFI)
當(dāng)該端輸入電壓低于1.25 V時(shí),5號(hào)引腳輸出端的信號(hào)由高電平變?yōu)榈碗娖健?BR> (5)電源故障輸出端()
電源正常時(shí),保持高電平,電源電壓變低或掉電時(shí),輸出由高電平變?yōu)榈碗娖健?BR>(6)看門狗信號(hào)輸入端(WDI)
程序正常運(yùn)行時(shí),必須在小于1.6 s的時(shí)間間隔內(nèi)向該輸入端發(fā)送一個(gè)脈沖信號(hào),以清除芯片內(nèi)部的看門狗定時(shí)器。若超過(guò)1.6 s該輸入端收不到脈沖信號(hào),則內(nèi)部定時(shí)器溢出,8號(hào)引腳由高電平變?yōu)榈碗娖健?BR>(7)復(fù)位信號(hào)輸出端(RST)
上電時(shí),自動(dòng)產(chǎn)生200 ms的復(fù)位脈沖;手動(dòng)復(fù)位端輸入低電平時(shí),該端也產(chǎn)生復(fù)位信號(hào)輸出。
(8)看門狗信號(hào)輸出端()
正常工作時(shí)輸出保持高電平,看門狗輸出時(shí),該端輸出信號(hào)由高電平變?yōu)榈碗娖健?BR>
2 電路設(shè)計(jì)
2.1 基本工作原理
工業(yè)環(huán)境中的干擾大多是以窄脈沖的形式出現(xiàn),而最終造成微機(jī)系統(tǒng)故障的多數(shù)現(xiàn)象為“死機(jī)”。究其原因是CPU在執(zhí)行某條指令時(shí),受干擾的沖擊,使它的操作碼或地址碼發(fā)生改變,致使該條指令出錯(cuò)。這時(shí),CPU執(zhí)行隨機(jī)拼寫(xiě)的指令,甚至將操作數(shù)作為操作碼執(zhí)行,導(dǎo)致程序“跑飛”或進(jìn)入“死循環(huán)”。為使這種“跑飛”或進(jìn)入“死循環(huán)”的程序自動(dòng)恢復(fù),重新正常工作,一種有效的辦法是采用硬件“看門狗”技術(shù)。用看門狗監(jiān)視程序的運(yùn)行。若程序發(fā)生“死機(jī)”,則看門狗產(chǎn)生復(fù)位信號(hào),引導(dǎo)單片機(jī)程序重新進(jìn)入正常運(yùn)行。
此外,工業(yè)現(xiàn)場(chǎng)由于諸多大型用電設(shè)備的投入或撤出電網(wǎng)運(yùn)行,往往造成系統(tǒng)的電源電壓不穩(wěn),當(dāng)電源電壓降低或掉電時(shí),會(huì)造成重要的數(shù)據(jù)丟失,系統(tǒng)不能正常運(yùn)行。若設(shè)法在電源電壓降至一定的限值之前,單片機(jī)快速地保存重要數(shù)據(jù),將會(huì)最大限度地減少損失。
單片機(jī)的掉電工作方式電路原理圖如圖2—1所示:當(dāng)PD設(shè)置為1時(shí),激活掉電方式,此時(shí)=0,與非門輸出為低電平,時(shí)鐘發(fā)生器停止工作,單片機(jī)內(nèi)所有運(yùn)行狀態(tài)均被停止,只有片內(nèi)RAM和SFR中的數(shù)據(jù)被保存起來(lái)。在單片機(jī)系統(tǒng)中可借助于一定的外部附加電路監(jiān)測(cè)電源電壓,并在電源發(fā)生故障時(shí)及時(shí)通知單片機(jī)(如通過(guò)引發(fā)中斷來(lái)實(shí)現(xiàn))快速保存重要數(shù)據(jù),且斷開(kāi)外圍設(shè)備用電電源,使整個(gè)應(yīng)用系統(tǒng)的功耗降到最少。當(dāng)電源恢復(fù)正常時(shí),取消掉電工作方式,通過(guò)復(fù)位單片機(jī),使系統(tǒng)重新正常工作。
2.2 硬件實(shí)現(xiàn)電路圖
圖2—2給出了MAX813L在單片機(jī)系統(tǒng)中的典型應(yīng)用線路圖。此電路可以實(shí)現(xiàn)上電、瞬時(shí)掉電以及程序運(yùn)行出現(xiàn)“死機(jī)”時(shí)的自動(dòng)復(fù)位和隨時(shí)的手動(dòng)復(fù)位;并且可以實(shí)時(shí)地監(jiān)視電源故障,以便及時(shí)地保存數(shù)據(jù)。
本電路巧妙地利用了MAX813L的手動(dòng)復(fù)位輸入端。只要程序一旦跑飛引起程序“死機(jī)”,端電平由高到低,當(dāng)變低超過(guò)140 ms,將引起MAX813L產(chǎn)生一個(gè)200 ms的復(fù)位脈沖。同時(shí)使看門狗定時(shí)器清0和使引腳變成高電平。也可以隨時(shí)使用手動(dòng)復(fù)位按鈕使MAX813L產(chǎn)生復(fù)位脈沖,由于為產(chǎn)生復(fù)位脈沖端要求低電平至少保持140ms以上,故可以有效地消除開(kāi)關(guān)抖動(dòng)。
該電路可以實(shí)時(shí)地監(jiān)視電源故障(掉電、電壓降低等)。圖2—2中R1的一端接未經(jīng)穩(wěn)壓的直流電源。電源正常時(shí),確保R2上的電壓高于1.26 V,即保證MAX813L的PFI輸入端電平高于1.26 V。當(dāng)電源發(fā)生故障,PFI輸入端的電平低于1.25 V時(shí),電源故障輸出端電平由高變低,引起單片機(jī)中斷,CPU響應(yīng)中斷,執(zhí)行相應(yīng)的中斷服務(wù)程序,保護(hù)數(shù)據(jù),斷開(kāi)外部用電電路等。
3 抗干擾程序設(shè)計(jì)
3.1 程序運(yùn)行“死機(jī)”及相應(yīng)對(duì)策
程序正常運(yùn)行時(shí),由主程序在小于1.6 s的時(shí)間間隔內(nèi)周期性地從P1.7端向MAX813L的WDI輸入端發(fā)送一個(gè)脈沖信號(hào),以清除芯片內(nèi)部的看門狗定時(shí)器。實(shí)現(xiàn)指令為:
RST-PRG:SETB P1.7
NOP
CLR P1.7
若超過(guò)1.6 s該輸入端收不到脈沖信號(hào),則內(nèi)部看門狗定時(shí)器溢出,8號(hào)引腳由高電平變?yōu)榈碗娖健R餗AX813L產(chǎn)生一個(gè)200 ms的復(fù)位脈沖。同時(shí)使看門狗定時(shí)器清0和使引腳變成高電平。
需要引起注意的是,整個(gè)單片機(jī)系統(tǒng)完成復(fù)位后,在PC指針的指引下整個(gè)程序?qū)?000H地址處重新開(kāi)始初始化運(yùn)行,而這在很多情況下是不允許的(如連續(xù)的工藝流程),為此必須采取相應(yīng)的措施。首先在對(duì)單片機(jī)系統(tǒng)完成復(fù)位后,程序應(yīng)該先判斷是開(kāi)機(jī)運(yùn)行(冷啟動(dòng))還是運(yùn)行過(guò)程中“死機(jī)”之后的重新加載運(yùn)行(熱啟動(dòng))。因?yàn)橐话闱闆r下在這兩種啟動(dòng)方式下,系統(tǒng)程序在進(jìn)入主流程前所要做的工作往往不同。如冷啟動(dòng)后,系統(tǒng)程序在初始化程序中往往要進(jìn)行系統(tǒng)資源的自檢以及將各外圍設(shè)備設(shè)置為相應(yīng)的待機(jī)狀態(tài)等。而熱啟動(dòng)后往往不再對(duì)系統(tǒng)的資源自檢,同時(shí)應(yīng)盡量避免對(duì)各外圍設(shè)備修改設(shè)置,只是對(duì)單片機(jī)系統(tǒng)本身的一些資源進(jìn)行必要的設(shè)置工作。其次,在大多數(shù)情況下,我們總可以把一個(gè)連續(xù)的過(guò)程分解開(kāi)來(lái),把它變成一個(gè)個(gè)獨(dú)立的子過(guò)程(狀態(tài))組成的連續(xù)過(guò)程。在主程序運(yùn)行過(guò)程中,適時(shí)保存相應(yīng)狀態(tài)和該狀態(tài)下的相關(guān)參數(shù)。這樣當(dāng)程序運(yùn)行出現(xiàn)“死機(jī)”,在MAX813L作用下系統(tǒng)復(fù)位和初始化后,將首先查詢事先保存的狀態(tài)參數(shù),然后根據(jù)此參數(shù)決定程序的流向。同時(shí)把該狀態(tài)下事先保存的參數(shù)取出,對(duì)系統(tǒng)外圍設(shè)備進(jìn)行必要的恢復(fù)設(shè)置工作和引導(dǎo)程序繼續(xù)運(yùn)行。根據(jù)這一思想設(shè)計(jì)的系統(tǒng)程序流程圖如圖3—1所示。
3.2 電源故障及相應(yīng)對(duì)策
當(dāng)電源發(fā)生故障時(shí),引起單片機(jī)中斷,CPU響應(yīng)中斷,執(zhí)行相應(yīng)的中斷服務(wù)程序,保護(hù)數(shù)據(jù),斷開(kāi)外部用電電路等。為了做到這一點(diǎn),必須把中斷優(yōu)先級(jí)(PX0)設(shè)為最高,特別是系統(tǒng)中還有其它中斷時(shí),更應(yīng)如此。中斷優(yōu)先級(jí)的設(shè)置可通過(guò)中斷優(yōu)先寄存器IP實(shí)現(xiàn),此外還要設(shè)置中斷允許寄存器IE的總允許位(EA)及外部中斷0中斷允許位(EX0)。實(shí)現(xiàn)指令為:
SETB IP.0 ;設(shè)置PX0=1
SETB IE.7 ?。辉O(shè)置EA=1
SETB IE.0 ??;設(shè)置EX0=1
至于中斷源的觸發(fā)方式。如果選擇電平觸發(fā),則中斷擦除時(shí)必須外加輔助電路,否則中斷不能正常執(zhí)行;如果選擇跳變觸發(fā),當(dāng)端出現(xiàn)負(fù)跳變時(shí),CPU內(nèi)部硬件自動(dòng)置位中斷標(biāo)志IE0,CPU響應(yīng)中斷,通過(guò)向量地址轉(zhuǎn)入中斷服務(wù)程序時(shí)IE0被硬件清0。所以基于上述分析,必須選用跳變觸發(fā)方式。觸發(fā)方式由定時(shí)器控制寄存器TCON中的IT0位決定。實(shí)現(xiàn)指令為:
SETB TCON.0
設(shè)計(jì)好中斷服務(wù)程序?qū)τ谙到y(tǒng)的連續(xù)可靠運(yùn)行具有重要意義。在中斷服務(wù)程序中,先保存重要數(shù)據(jù)到片內(nèi)RAM(掉電時(shí)由備用電源供電,相應(yīng)實(shí)現(xiàn)電路未畫(huà)出)。發(fā)出控制信號(hào)斷開(kāi)外圍設(shè)備,最后把電源控制寄存器PCON的PD位置1,激活掉電工作方式,中斷返回。中斷服務(wù)程序?qū)崿F(xiàn)如下(其中R0代表保存的數(shù)據(jù)在內(nèi)存中的緩沖區(qū)首址,DPTR代表要保存的數(shù)據(jù)在外部RAM中的緩沖區(qū)首址,R1代表要保存的數(shù)據(jù)字節(jié)量):
INT0:MOVX A,@DPTR ;保存數(shù)據(jù)
MOV?。繰0,A
INC R0 ;內(nèi)存緩沖區(qū)指針加1
INC DPTR ??;外存緩沖區(qū)指針加1
DJNZ R1,INT0 ??;保存完?沒(méi)完,繼續(xù)保存
SETB PCON.1 ;激活掉電方式
RET1
4 結(jié)束語(yǔ)
本系統(tǒng)巧妙地利用MAX813L芯片,實(shí)現(xiàn)了單片機(jī)系統(tǒng)的看門狗電路、電源故障監(jiān)視電路和手動(dòng)、自動(dòng)復(fù)位電路,電路結(jié)構(gòu)緊湊,設(shè)計(jì)合理。結(jié)合本文給出的程序抗干擾設(shè)計(jì)方案,可有效地解決程序運(yùn)行中出現(xiàn)的“死機(jī)”現(xiàn)象和電源故障帶來(lái)的不利影響。在我們?cè)O(shè)計(jì)氮化鎵半導(dǎo)體薄膜生長(zhǎng)工藝流程實(shí)時(shí)監(jiān)控系統(tǒng)中實(shí)際運(yùn)行表明:該方案設(shè)計(jì)合理,運(yùn)行可靠,抗干擾能力強(qiáng),達(dá)到了滿意的使用效果,并且可推廣應(yīng)用到其它的單片機(jī)控制系統(tǒng)中去。
評(píng)論