單片機(jī)看門(mén)狗電路的作用,看門(mén)狗系統(tǒng)設(shè)計(jì)技巧及其抗干擾措施
(3)采用計(jì)數(shù)器、單穩(wěn)態(tài)觸發(fā)器、定時(shí)器等器件構(gòu)成。在圖3中用4060構(gòu)成了一個(gè)二級(jí)“看門(mén)狗”電路。
因/I/N/T/O中斷入口0003H處僅有0003H~000AH單元可為中斷服務(wù)程序所用,很可能容納不下中斷服務(wù)程序,故應(yīng)在其內(nèi)安排一條JMP Watch dog指令。由于“跑飛”,PC值在響應(yīng)中斷前已被破壞,在響應(yīng)中斷后,該內(nèi)容自動(dòng)被壓入堆棧,故一定要用兩條POP A指令將無(wú)用內(nèi)容彈出,以便為中斷返回時(shí)由堆棧給PC賦予“跑飛”處的正確值,這一點(diǎn)在設(shè)計(jì)中斷服務(wù)程序時(shí)尤其要引起重視。通過(guò)對(duì)P1.0取反,恢復(fù)對(duì)4060的觸發(fā)脈沖。在中斷服務(wù)中應(yīng)安排被破壞數(shù)據(jù)的診斷、修復(fù)以及查找“跑飛”處的地址正確入口,并在返回前將其壓棧。當(dāng)執(zhí)行RETI時(shí),“跑飛”處斷點(diǎn)地址入口自動(dòng)彈棧到PC,恢復(fù)正常運(yùn)行。P1.0取反指令在何處插入應(yīng)通過(guò)計(jì)算指令周期讓兩條CLR P1.0指令間隔小于定時(shí)器的定時(shí)時(shí)間T1
(4)利用8031片內(nèi)定時(shí)器/計(jì)數(shù)器 8031片內(nèi)有兩個(gè)十六位的定時(shí)器/計(jì)數(shù)器,可用定時(shí)器T0。在應(yīng)用程序?qū)0初始化時(shí),將其定時(shí)時(shí)間T2設(shè)置得比應(yīng)用程序循環(huán)體執(zhí)行時(shí)間T1長(zhǎng),可?。篢2=(1.5~2)T1。當(dāng)程序正常時(shí),T0不會(huì)溢出,“跑飛”時(shí)溢出,定時(shí)器/計(jì)數(shù)器控制寄存器TCON的TF0(TCON.5)由8031內(nèi)部硬件置位TF0=1,發(fā)出中斷信號(hào)。設(shè)8031采用12MHz晶振,經(jīng)定時(shí)器內(nèi)部12分頻后得1MHz的定時(shí)時(shí)鐘,對(duì)應(yīng)定時(shí)時(shí)間1μs,最長(zhǎng)可定時(shí)約65.5ms,如應(yīng)用程序循環(huán)時(shí)間T1=10ms,則可取T2=2T1=20ms,定時(shí)器的初值X可由下式確定:
(216-X)×1μs=20ms
X=45536D=B1EOH
定時(shí)器的初始化程序:
MOV TLO,#OEOH
MOV THO,#OB1H;定時(shí)器/計(jì)數(shù)器T0寫(xiě)入初值
MOV TMOD,#O1H;設(shè)置定時(shí)器/計(jì)數(shù)器工作方式1
SETB TRO; 起動(dòng)定時(shí)器/計(jì)數(shù)器T0
在應(yīng)用程序的系統(tǒng)初始化時(shí)用下面指令設(shè)定T0優(yōu)先級(jí):
SETB EA; 開(kāi)放中斷
SETB ETO; 允許T0中斷
SETB PTO; 置T0中斷優(yōu)先級(jí)最高
T0中斷服務(wù)流程與/I/N/T/O中斷服務(wù)流程(見(jiàn)圖4)相比,其中斷入口為000BH,去掉P1.0取反的指令,其余相同???jī)?yōu)先級(jí)別最高的中斷將控制權(quán)重新奪回交給CPU,使系統(tǒng)恢復(fù)正常。
6
4、 斷點(diǎn)的查找與恢復(fù)
斷點(diǎn)的查找與恢復(fù)是人們最關(guān)注的問(wèn)題,我們的方法是擴(kuò)展一外部數(shù)據(jù)存儲(chǔ)器,用以存儲(chǔ)“跑飛”前斷點(diǎn)(或接近斷點(diǎn))的PC之值以及一些重要的變量、指針及控制字的值。利用正常工作時(shí)P1.0向“看門(mén)狗”發(fā)送的觸發(fā)脈沖經(jīng)反向、延時(shí)等作為外部擴(kuò)展RAM的片選信號(hào)以T1為周期定時(shí)對(duì)外部RAM中內(nèi)容進(jìn)行刷新。當(dāng)“跑飛”后因觸發(fā)脈沖丟失而避免了外部RAM被攻擊,保證其內(nèi)容的可靠性。隨著T1的減少,被恢復(fù)的值就愈趨近斷點(diǎn)值,但要非常準(zhǔn)確找到斷點(diǎn),還值得人們研究。在中斷響應(yīng)時(shí)由于P1.0恢復(fù)了輸出觸發(fā)脈沖,故可將斷點(diǎn)值讀出。
結(jié)束語(yǔ)
“看門(mén)狗”是對(duì)付“跑飛”的有力手段,在生產(chǎn)過(guò)程中由于特定的生產(chǎn)條件使得“看門(mén)狗”技術(shù)有其相當(dāng)?shù)淖饔?。我們?cè)趯?duì)某水泥廠微機(jī)配料系統(tǒng)的技術(shù)改造過(guò)程中采用了二級(jí)“看門(mén)狗”技術(shù),該系統(tǒng)運(yùn)行兩年多來(lái)經(jīng)受住了各種強(qiáng)干擾的考驗(yàn),取得了令人滿意的效果。
對(duì)于“跑飛”后的診斷、恢復(fù),尤其是如何更準(zhǔn)確地找到程序“跑飛”斷點(diǎn),對(duì)被損數(shù)據(jù)加以恢復(fù)等方面盡管有許多軟件可以利用,但還是值得人們多加關(guān)注的問(wèn)題。
評(píng)論