看門(mén)狗定時(shí)器是一個(gè)獨(dú)立于CPU的計(jì)數(shù)單元,如果不采用特定的指令周期地使看門(mén)狗定時(shí)器復(fù)位,看門(mén)狗單元將會(huì)使系統(tǒng)復(fù)位。為了避免不必要的復(fù)位,要求用戶(hù)軟件周期地對(duì)看門(mén)狗定時(shí)器進(jìn)行復(fù)位操作。如果不明原因使CPU中斷程序,比如系統(tǒng)軟件進(jìn)人了一個(gè)死循環(huán)或者CPU的程序運(yùn)行到了不確定的程序空間,從而使系統(tǒng)不能正常工作,則看門(mén)狗電路將產(chǎn)生一個(gè)復(fù)位信號(hào)使CPU復(fù)位,程序從系統(tǒng)軟件的開(kāi)始執(zhí)行。通過(guò)這種方式,看門(mén)狗就可以監(jiān)測(cè)軟件和硬件的運(yùn)行狀態(tài),提高了系統(tǒng)的可靠性。
F28l2/F281O DSP上的看門(mén)狗與240x器件上的基本相同,當(dāng)8位的看門(mén)狗計(jì)數(shù)器計(jì)數(shù)到最大值時(shí),看門(mén)狗模塊產(chǎn)生一個(gè)輸出脈沖(512個(gè)振蕩器時(shí)鐘寬度)。如果不希望產(chǎn)生脈沖信號(hào),則需要屏蔽計(jì)數(shù)器,或用軟件周期地向看門(mén)狗復(fù)位控制寄存器寫(xiě)0x55+OxAA,該寄存器能夠使看門(mén)狗計(jì)數(shù)器清零。圖1為看門(mén)狗的功能框圖。
WDINT信號(hào)使能看門(mén)狗作為IDLE/STANDBY模式喚醒的定時(shí)器。在STANDBY模式下,所有外設(shè)都將被關(guān)閉,只有看門(mén)狗起作用。WATCHDOG模塊將脫離PLL時(shí)鐘運(yùn)行。WDINT信號(hào)反饋到LPM +H塊,可以將器件從STANDBY模式喚醒。在IDI'E模式下,WDINT信號(hào)能夠向CPU產(chǎn)生中斷(該中斷為WAKEINT)使CPU脫離IDLE工作模式。在HALT模式下,Pl-I-和OSC單元被關(guān)閉,因此不能實(shí)現(xiàn)上述功能。
圖1 看門(mén)狗功能框圖
在看門(mén)狗計(jì)數(shù)器(WDCNTR)溢出之前,如果采用正確的時(shí)序向WDKEY寫(xiě)人數(shù)據(jù)就可以使WDCNTR復(fù)位。當(dāng)向WDKEY寫(xiě)0x55時(shí),WDCNTR復(fù)位到使能位置;只有在向WDKEY寫(xiě)0xAA后才會(huì)使WDCNTR真正地復(fù)位。0x55和0xAA以外的任何數(shù)據(jù)寫(xiě)到WDKEY都會(huì)引起系統(tǒng)復(fù)位。只要向WDKEY寫(xiě)0x55和0xAA,無(wú)論寫(xiě)的順序如何都不會(huì)導(dǎo)致系統(tǒng)復(fù)位,而只有先寫(xiě)Ox55再寫(xiě)OxAA才會(huì)使WDCNTR復(fù)位。表1列出了看門(mén)狗操作的幾種情況。