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