看門狗型復(fù)位電路
看門狗型復(fù)位電路主要利用CPU正常工作時,定時復(fù)位計數(shù)器,使得計數(shù)器的值不超過某一值;當(dāng)CPU不能正常工作時,由于計數(shù)器不能被復(fù)位,因此其計數(shù)會超過某一值,從而產(chǎn)生復(fù)位脈沖,使得CPU恢復(fù)正常工作狀態(tài)。
典型應(yīng)用的Watchdog復(fù)位電路如圖所示。此復(fù)位電路的可靠性主要取決于軟件設(shè)計,即將定時向復(fù)位電路發(fā)出脈沖的程序放在何處。一般設(shè)計,將此段程序放在定時器中斷服務(wù)子程序中。
然而,有時這種設(shè)計仍然會引起程序走飛或工作不正常。原因主要是:當(dāng)程序“走飛”發(fā)生時定時器初始化以及開中斷之后的話,這種“走飛”情況就有可能不能由Watchdog復(fù)位電路校正回來。因為定時器中斷一真在產(chǎn)生,即使程序不正常,Watchdog也能被正常復(fù)位。為此提出定時器加預(yù)設(shè)的設(shè)計方法。即在初始化時壓入堆棧一個地址,在此地址內(nèi)執(zhí)行的是一條關(guān)中斷和一條死循環(huán)語句。在所有不被程序代碼占用的地址盡可能地用子程序返回指令RET代替。這樣,當(dāng)程序走飛后,其進(jìn)入陷阱的可能性將大大增加。而一旦進(jìn)入陷阱,定時器停止工作并且關(guān)閉中斷,從而使Watchdog復(fù)位電路會產(chǎn)生一個復(fù)位脈沖將CPU復(fù)位。
當(dāng)然這種技術(shù)用于實時性較強(qiáng)的控制或處理軟件中有一定的困難
圖 看門狗型復(fù)位電路
編輯:admin 最后修改時間:2018-09-29