1、用CD4060制作看門狗報(bào)警電路
看門狗定時(shí)器(WDT,WatchDogTimer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù)器,一般給看門狗一個(gè)大數(shù),程序開(kāi)始運(yùn)行后看門狗開(kāi)始倒計(jì)數(shù)。如果程序運(yùn)行正常,過(guò)一段時(shí)間CPU應(yīng)發(fā)出指令讓看門狗,重新開(kāi)始倒計(jì)數(shù)。如果看門狗減到0就認(rèn)為程序沒(méi)有正常工作,強(qiáng)制整個(gè)系統(tǒng)復(fù)位。
原理圖:

CD4060芯片特性
1)電壓范圍寬,應(yīng)該可以工作在3V~15V,輸入阻抗高,驅(qū)動(dòng)能力差外,跟74系列的功能基本沒(méi)有區(qū)別;
2)輸入時(shí),1/2工作電壓以下為0,1/2工作電壓以上為1;
3)輸出時(shí),1=工作電壓;0=0V;
4)驅(qū)動(dòng)能力奇差,在設(shè)計(jì)時(shí)最多只能帶1個(gè)TTL負(fù)載;
5)如果加上拉電阻的話,至少要100K電阻;
6)唯一現(xiàn)在使用的可能就是計(jì)數(shù)器,CD4060的計(jì)數(shù)器可以到14級(jí)二進(jìn)制串行計(jì)數(shù)。

看門狗電路由14位二進(jìn)制計(jì)數(shù)器CD4060和三極管VT1、VT2等組成。
Vout接單片機(jī)AT89C51的引腳輸出口P1.7,由單片機(jī)的CPU向看門狗電路發(fā)送喂狗信號(hào)——正脈沖,在兩個(gè)正脈沖間隔內(nèi),P1.7保持為低電平(此功能要結(jié)合軟件才能實(shí)現(xiàn),相應(yīng)的軟件設(shè)計(jì)在下面介紹)。我們知道,單片機(jī)AT89C51的I/O口帶灌電流負(fù)載的能力比較大,每個(gè)引腳低電平時(shí)的吸入電流為20mA,帶拉電流負(fù)載的能力卻很小,實(shí)測(cè)情況是,每個(gè)引腳高電平時(shí)的輸出電流僅25μA,現(xiàn)在P1.7口被設(shè)計(jì)成帶拉電流負(fù)載的方式,為了提高P1.7口帶拉電流負(fù)載的能力,所以,電路中設(shè)置了上拉電阻R3。
14位二進(jìn)制計(jì)數(shù)器CD4060的計(jì)數(shù)脈沖由其內(nèi)部振蕩器和外接阻容元件R1、R2、C1組成的電路產(chǎn)生,振蕩周期為
T0SC=2.2×R1×C1=0.22ms
振蕩器產(chǎn)生的計(jì)數(shù)脈沖(矩形波)可以直接引出,同時(shí)還可以從CD4060的10個(gè)輸出端Q4~Q10和Q12~Q14得到不同分頻系數(shù)的方波輸出,各方波輸出信號(hào)的周期如表1所示。這樣,如果CD4060得不到CPU通過(guò)P1.7口發(fā)送來(lái)的喂狗信號(hào)——正脈沖,則CD4060的輸出端Q14在1.8S內(nèi)將產(chǎn)生一個(gè)完整周期的方波信號(hào),而且低電平在前,高電平在后,其高電平經(jīng)三極管VT1、VT2處理后形成單片機(jī)AT89C51的復(fù)位信號(hào),使單片機(jī)AT89C51復(fù)位。
由此可見(jiàn),單片機(jī)AT89C51正常工作時(shí),只要在0.9S內(nèi)從P1.7口送出一個(gè)正脈沖,便可及時(shí)清零看門狗,輸出端Q14就不會(huì)產(chǎn)生定時(shí)溢出信號(hào),從而使看門狗電路對(duì)單片機(jī)系統(tǒng)不起作用。并且,從CD4060的10個(gè)輸出端Q4~Q10和Q12~Q14可以得到不同周期的方波信號(hào),經(jīng)三極管VT1、VT2處理后形成單片機(jī)系統(tǒng)的復(fù)位信號(hào),可以適應(yīng)不同用戶應(yīng)用程序,從而該硬件看門狗電路可以適應(yīng)不同的單片機(jī)應(yīng)用系統(tǒng)。

對(duì)MCS-51系列的單片機(jī)而言,它所需要的復(fù)位信號(hào)是高電平寬度大于2個(gè)機(jī)器周期的正脈沖,例如,單片機(jī)的時(shí)鐘脈沖頻率為12MHz時(shí),則所需要的復(fù)位信號(hào)高電平寬度為2μs以上就可以了,而由上面的分析可知,CD4060的Q14輸出的是高電平寬度為0.9s的方波,如果讓它直接作為單片機(jī)的復(fù)位信號(hào),則單片機(jī)的復(fù)位時(shí)間勢(shì)必在0.9s以上,這樣盡管可以使程序跑飛的單片機(jī)復(fù)位,但是顯然沒(méi)有做到盡快地引導(dǎo)跑飛的程序到正確的軌道來(lái),如果這樣做的話,對(duì)于某些單片機(jī)應(yīng)用系統(tǒng)而言可能帶來(lái)非常嚴(yán)重的后果。
圖1中的三極管VT1、VT2及其周圍阻容元件構(gòu)成波形轉(zhuǎn)換電路,把較寬的正脈沖變換為較窄的正脈沖,從而較好地解決了上述的問(wèn)題。三極管VT1、VT2構(gòu)成的2級(jí)直接耦合放大器作為緩沖器使用,它是CD4060的輸出端Q14的灌電流負(fù)載,C2、R8是微分電路。
經(jīng)分析后不難看出,電路中的R7、R8、C2還具有單片機(jī)上電復(fù)位的功能。
2、上電復(fù)位與看門狗信號(hào)復(fù)位的不同處理過(guò)程
由于程序跑飛很可能會(huì)造成一些隨機(jī)破壞事件,對(duì)某些系統(tǒng)而言,希望盡可能從斷點(diǎn)處恢復(fù)運(yùn)行,因此,有必要妥善解決跑飛的程序回復(fù)后的處理。
單片機(jī)應(yīng)用系統(tǒng)上電時(shí),上電復(fù)位電路會(huì)使得單片機(jī)處于復(fù)位狀態(tài),這一般稱為冷啟動(dòng),這種情況下,單片機(jī)處于復(fù)位狀態(tài)表現(xiàn)為:
(1)程序計(jì)數(shù)器PC的值為0000H。
(2)I/O口(P0、P1、P2、P3(1))為FFH狀態(tài),即準(zhǔn)雙向I/O口的輸入狀態(tài)。
(3)堆棧指示器SP=07H,即堆棧底為片內(nèi)RAM的07H單元。
(4)除上述狀態(tài)外,所有特殊功能寄存器SFR的有效位均為0。
(5)上電復(fù)位時(shí),由于是重新供電,RAM在斷電時(shí)數(shù)據(jù)丟失,上電復(fù)位后為隨機(jī)數(shù)。
單片機(jī)應(yīng)用系統(tǒng)的程序跑飛時(shí),看門狗產(chǎn)生復(fù)位信號(hào),也會(huì)使得單片機(jī)處于復(fù)位狀態(tài),這一般稱為熱啟動(dòng),這種情況下,單片機(jī)處于復(fù)位狀態(tài)表現(xiàn)為:
(1)程序計(jì)數(shù)器PC的值為0000H。
(2)I/O口(P0、P1、P2、P3)為FFH狀態(tài),即準(zhǔn)雙向I/O口的輸入狀態(tài)。
(3)堆棧指示器SP=07H,即堆棧底為片內(nèi)RAM的07H單元。
(4)除上述狀態(tài)外,所有特殊功能寄存器SFR的有效位均為0。
(5)復(fù)位信號(hào)使得單片機(jī)處于復(fù)位狀態(tài)時(shí),片內(nèi)RAM中的數(shù)據(jù)不受影響。
比較上面兩種單片機(jī)復(fù)位方式可知,上電復(fù)位與信號(hào)復(fù)位不同之處是第(5)點(diǎn),這正是我們區(qū)分兩種單片機(jī)復(fù)位方式的根據(jù)。具體方法是設(shè)置上電復(fù)位標(biāo)志,例如,片內(nèi)RAM的7EH單元和7FH單元分別為(7EH)=18H且(7FH)=81H時(shí)表示已完成上電復(fù)位。上面兩種單片機(jī)復(fù)位方式都使得程序從0000H入口。然而,上電復(fù)位后要進(jìn)行系統(tǒng)的完全初始化,而程序跑飛回復(fù)后往往要求保留一些過(guò)程參數(shù),不允許重新初始化,而且還要對(duì)一些關(guān)鍵參數(shù)進(jìn)行檢查與修復(fù)。
因此,要根據(jù)不同情況進(jìn)行不同的初始化處理。圖2是上電復(fù)位與程序跑飛回復(fù)初始化處理框圖。0000H是MCU的復(fù)位人口,程序啟動(dòng)后,首先判斷是上電復(fù)位(冷啟動(dòng)),還是程序跑飛回復(fù)(熱啟動(dòng))。上電復(fù)位是開(kāi)機(jī)操作,要建立上電標(biāo)志,并進(jìn)行系統(tǒng)的完全初始化。程序跑飛回復(fù)應(yīng)進(jìn)行相關(guān)資源的檢查與修復(fù),以防止系統(tǒng)運(yùn)行出錯(cuò)。另外,根據(jù)系統(tǒng)特點(diǎn),需要保留一些過(guò)程數(shù)據(jù),不得進(jìn)行完全初始化。

3、喂狗指令插入原理與位置
單片機(jī)應(yīng)用系統(tǒng)運(yùn)行正常時(shí),單片機(jī)的CPU應(yīng)在0.9s內(nèi)從P1.7口送出一個(gè)正脈沖,使看門狗及時(shí)清零,也就是說(shuō),CPU要在0.9s以內(nèi)執(zhí)行一次下面的喂狗程序段(喂狗指令):
SETBP1.7
NOP
NOP
CLRP1.7
喂狗程序段插入到用戶應(yīng)用程序之中。單片機(jī)系統(tǒng)的用戶應(yīng)用程序一般由循環(huán)結(jié)構(gòu)的主程序和中斷服務(wù)子程序組成。首先,應(yīng)盡可能準(zhǔn)確地估算各應(yīng)用功能模塊的運(yùn)行時(shí)間,估算運(yùn)行時(shí)間的時(shí)候,應(yīng)考慮程序可能被中斷,應(yīng)把中斷程序的運(yùn)行時(shí)間也計(jì)算在內(nèi)。然后,在若干個(gè)應(yīng)用功能模塊的運(yùn)行時(shí)間小于0.9s的兩個(gè)應(yīng)用功能模塊之間插入上面的喂狗程序段。
為了防止看門狗非正常失效(即:已發(fā)生程序跑飛但看門狗不“叫”——不產(chǎn)生單片機(jī)所需要的復(fù)位信號(hào)),在用戶應(yīng)用程序中插入喂狗程序段時(shí)應(yīng)注意下面3點(diǎn)。
(1)避免在中斷服務(wù)子程序中插入喂狗程序段。
當(dāng)MCU受干擾而發(fā)生程序跑飛,只要MCU片內(nèi)中斷允許控制寄存器不遭破壞,則不論程序飛到什么地方,CPU仍能像程序正常運(yùn)行時(shí)一樣響應(yīng)和執(zhí)行中斷服務(wù)子程序。因此,在各中斷服務(wù)子程序中都不應(yīng)該插入喂狗程序段。
(2)避免在用戶應(yīng)用程序中的局部循環(huán)圈內(nèi)插入喂狗程序段。
這樣的話,即使程序跑飛后非正常進(jìn)入該循環(huán)圈內(nèi),并且跑飛后的程序在該循環(huán)圈內(nèi)“死循環(huán)”,也會(huì)因?yàn)榭撮T狗接收不到喂狗信號(hào),發(fā)生看門狗定時(shí)計(jì)數(shù)溢出,進(jìn)而使系統(tǒng)恢復(fù)正常運(yùn)行。
(3)對(duì)P1口的其它7根I/O線的輸入和輸出操作全部采用位操作指令,這樣的話,對(duì)P1口的所有操作都是采用的位操作指令。因?yàn)槿绻麑?duì)P1.0~P1.6的輸入和輸出操作采用直接尋址的方式完成,則勢(shì)必會(huì)有可能影響到P1.7的輸出操作,從而可能導(dǎo)致看門狗非正常失效。
4、結(jié)論
在用戶應(yīng)用程序中插入喂狗程序段后,相當(dāng)于啟動(dòng)了看門狗,就無(wú)法再使用各類單片機(jī)開(kāi)發(fā)系統(tǒng)或單片機(jī)仿真器對(duì)該應(yīng)用系統(tǒng)進(jìn)行仿真調(diào)試。所以,單片機(jī)應(yīng)用系統(tǒng)在開(kāi)始設(shè)計(jì)和調(diào)試用戶應(yīng)用程序時(shí),通常不連接看門狗電路,也不在用戶應(yīng)用程序中插入喂狗程序段,而是在用戶應(yīng)用程序研發(fā)成功后,再將看門狗電路連接到硬件系統(tǒng)中,并在用戶應(yīng)用程序中插入喂狗程序段,并且進(jìn)行系統(tǒng)的現(xiàn)場(chǎng)試驗(yàn),以檢驗(yàn)系統(tǒng)的抗干擾能力是否滿足系統(tǒng)的設(shè)計(jì)要求。
將采用了CD4060的硬件看門狗技術(shù)的單片機(jī)應(yīng)用系統(tǒng)放置在具有較強(qiáng)電磁干擾的環(huán)境中工作,如果能長(zhǎng)時(shí)間連續(xù)正常地工作,則說(shuō)明系統(tǒng)具有較強(qiáng)的抗干擾能力。曾在采用了基于CD4060的硬件看門狗技術(shù)的單片機(jī)應(yīng)用系統(tǒng)的交流電源插座處,較頻繁地插撥其它用電設(shè)備的交流電源插頭,沒(méi)有發(fā)現(xiàn)系統(tǒng)程序跑飛的現(xiàn)象。相反地,把系統(tǒng)中的硬件看門狗電路拆掉,則系統(tǒng)在多次插撥其它用電設(shè)備的交流電源插頭的情況下,有時(shí)會(huì)出現(xiàn)系統(tǒng)程序跑飛的現(xiàn)象。由此可見(jiàn),基于CD4060的硬件看門狗技術(shù)確實(shí)提高了單片機(jī)應(yīng)用系統(tǒng)的抗干擾能力。本文所介紹的看門狗技術(shù),已成功地使用在多個(gè)實(shí)際的MCU應(yīng)用系統(tǒng)中,保證了系統(tǒng)的可靠運(yùn)行。
電路工作的時(shí)候只要給CD4060復(fù)位脈沖,就能保證Q1處于截止?fàn)顟B(tài),從而使受控的NMOS管處于導(dǎo)通狀態(tài)給處理器電路系統(tǒng)供電。
該電路的優(yōu)點(diǎn)是定時(shí)的時(shí)間可以比較長(zhǎng),幾分鐘都沒(méi)問(wèn)題,可以給那些需要較長(zhǎng)時(shí)間初始化工作。脈沖觸發(fā)喂狗,上電通過(guò)R2、C1、R3自動(dòng)給計(jì)數(shù)器一個(gè)復(fù)位脈沖,確保Vout有輸出。電路成本也低廉。
該電路的最大缺點(diǎn)是喂狗脈沖要求比較寬。
電子發(fā)燒友App


















































評(píng)論