Watchdog在8XC552系列單片機(jī)系統(tǒng)中應(yīng)用
1 引言
philips公司的8xc552單片機(jī)以其體積小、功能強(qiáng)、價(jià)格低等優(yōu)勢(shì)而廣泛地使用在工業(yè)控制、dcs控制和智能儀器等領(lǐng)域。筆者在智能配電監(jiān)測(cè)儀的研制過程中,雖然采取了相應(yīng)的抗干擾措施,但由于工業(yè)現(xiàn)場(chǎng)環(huán)境中電磁場(chǎng)、電網(wǎng)尖峰、諧波、浪涌及雷電輻射等影響,仍有可能出現(xiàn)程序死循環(huán)、跑飛等失控現(xiàn)象。為此,筆者采用watchdog技術(shù)保證了系統(tǒng)的正常運(yùn)行,通常watchdog技術(shù)在單片機(jī)應(yīng)用系統(tǒng)中可分為軟件watchdog和硬件watchdog。philips公司的8xc552、intel的8098、motorala的68c05以及microchip的16c5x系列單片機(jī)本身已帶有軟件watchdog功能,因此,只要硬件接法正確,在軟件設(shè)計(jì)中調(diào)用相應(yīng)語(yǔ)句進(jìn)行啟動(dòng)即可。2 硬件組成原理2.1系統(tǒng)工作原理圖1所示是87c522單片機(jī)用于智能型配電儀的連接電路,本智能配電儀中的87c552為主控芯片,該芯片除具有三個(gè)16位定時(shí)器t0、t1及t2外,還有一個(gè)專作監(jiān)視8位定時(shí)器、簡(jiǎn)稱wdt(watchdogtimer)的t3定時(shí)器。因?yàn)槲⒖刂破饔袝r(shí)會(huì)受噪音、射頻干擾等環(huán)境因素的影響而導(dǎo)入錯(cuò)誤的運(yùn)行狀態(tài)。監(jiān)視定時(shí)器的功能就是在某特定的時(shí)限內(nèi)使微控制器復(fù)位,從而將其從錯(cuò)誤的狀態(tài)中恢復(fù)過來以重新開始正常運(yùn)行。當(dāng)t3用作watchdog定時(shí)器并由軟件啟動(dòng)計(jì)時(shí)后,如果系統(tǒng)已達(dá)到所設(shè)定的預(yù)定時(shí)間而仍沒有重新啟動(dòng)定時(shí)器,此時(shí)就會(huì)產(chǎn)生溢出信號(hào)并停止計(jì)時(shí),表明系統(tǒng)出現(xiàn)異常。cpu可以對(duì)定時(shí)器重新啟動(dòng)、清零、設(shè)定計(jì)時(shí)值等操作。系統(tǒng)正常運(yùn)行時(shí),cpu將周期性地重新啟動(dòng)定時(shí)器,當(dāng)然其啟動(dòng)周期應(yīng)小于定時(shí)器的設(shè)定值,以保證定時(shí)器始終不能產(chǎn)生溢出信號(hào)。而當(dāng)系統(tǒng)運(yùn)行不正常時(shí),由于cpu不能周期性地啟動(dòng)定時(shí)器,因而定時(shí)器將產(chǎn)生溢出信號(hào),以強(qiáng)迫cpu恢復(fù)系統(tǒng)的正常運(yùn)行。2.2 watchdog的內(nèi)部結(jié)構(gòu)原理
監(jiān)視定時(shí)器的結(jié)構(gòu)原理如圖2所示。它的核心為一8位定時(shí)器,其前級(jí)是一個(gè)11位定標(biāo)器。后者的輸入信號(hào)為fosc/12,即定標(biāo)器對(duì)機(jī)器周期進(jìn)行遞增計(jì)數(shù)。這樣,每過2個(gè)機(jī)器周期,定時(shí)器t3的值便增加1000次。若用16mhz或24mhz晶體振蕩器,則監(jiān)視定時(shí)器的增值間隔將分別為1.536ms和1.024ms;其相應(yīng)的最大溢出周期分別為393.216ms和262.144ms。 當(dāng)監(jiān)視定時(shí)器溢出時(shí),系統(tǒng)將產(chǎn)生一個(gè)內(nèi)部復(fù)位脈沖以使8xc552復(fù)位。由圖2可以看出,t3溢出時(shí),rst引腳內(nèi)側(cè)的晶體管因柵極出現(xiàn)一個(gè)負(fù)脈沖而瞬時(shí)導(dǎo)通,從而在rst引腳上輸出一個(gè)復(fù)位正脈沖,其寬度為3個(gè)機(jī)器周期。如果rst引腳外接電容,則這么窄的輸出脈沖可能遭到破壞,因?yàn)殡娙莶辉试Srst引腳電壓產(chǎn)生突變,但這不會(huì)影響到內(nèi)部復(fù)位操作。如果將8xc552的引腳接至低電平,則輸入信號(hào)至定標(biāo)器的通路將暢通無阻,于是監(jiān)視定時(shí)器便正常運(yùn)作。但若將引腳接高電平,輸入信號(hào)則會(huì)因與門被封鎖而不能通過,這時(shí)監(jiān)視定時(shí)器處于關(guān)閉狀態(tài)。應(yīng)當(dāng)指出,一旦t3被開啟,則無法用軟件使之關(guān)閉;同時(shí)如果t3被禁止,也無法用軟件啟動(dòng)。
如果=0,那么pcon寄存器的pd位便不可寫入,其初值為0,無法置l,即不可進(jìn)入掉電方式。故監(jiān)視定時(shí)器和掉電方式兩者不可兼得。 3 調(diào)試中的常見問題及其解決方法
在對(duì)系統(tǒng)進(jìn)行調(diào)試時(shí),有可能出現(xiàn)閃屏、無法顯示以及顯示雜亂等現(xiàn)象,現(xiàn)將這些問題的解決方法介紹如下: (1)lcd出現(xiàn)閃屏,無法翻屏顯示現(xiàn)象
筆者在用仿真器運(yùn)行編程時(shí),lcd能夠翻屏并不斷顯示采集來的三相用電參數(shù),但離開仿真器處于脫機(jī)運(yùn)行狀態(tài)時(shí),lcd只能顯示第一屏數(shù)據(jù)。經(jīng)查仿真器的引腳接高電平,而脫機(jī)時(shí)腳懸空,從而引起了腳的狀態(tài)不固定,并不斷產(chǎn)生內(nèi)部復(fù)位信號(hào)使單片機(jī)復(fù)位而出現(xiàn)了上述現(xiàn)象。后來把腳接低電平,仍然出現(xiàn)上述現(xiàn)象。而把腳接高電平后(即禁用watchdog功能),則lcd顯示正常。因