PIC看門(mén)狗定時(shí)器WDT(watch dog timer)的理解
pic單片機看門(mén)狗計時(shí)器(Watch Dog Timer)是一個(gè)片內自振式的RC振蕩計時(shí)器,無(wú)需任何的外接元件。這意味著(zhù)即使芯片OSC1/OSC2上振蕩停止了(例如執行指令SLEEP后),WDT照樣保持計時(shí)。WDT計時(shí)溢出將產(chǎn)生RESET。在PIC16C5X 芯片內有一個(gè)特殊的謂之"定義EPROM"(Configuration EPROM)的單元,其中的一個(gè)位是用于定義WDT的。你可以將其置"0"來(lái)抑制WDT使之永遠不起作用。這將在第七章的燒寫(xiě)器介紹部分詳細說(shuō)明,請參閱。
1、WDT周期
WDT有一個(gè)基本的溢出周期16ms(無(wú)預分頻器pic16F917),如果你需要更長(cháng)的WDT周期,可以把預分頻器分配給WDT,最大分頻比可達1:128,這時(shí)的WDT溢出周期約為2.5S。pic16F917看門(mén)狗還提供了一個(gè)16位的預分頻器,使WTD的超時(shí)值提高到268s。WDT溢出周期和環(huán)境溫度、VDD等參數有關(guān)系,請參閱附錄的圖表。
"CLRWDT"和"SLEEP"指令將清除WDT計時(shí)器以及預分頻器里已有的計數值(當預分頻器分配給WDT時(shí))。WDT一般用來(lái)防止系統失控或者說(shuō)防止單片機程序運行"失控"。在正常情況下,WDT應在計滿(mǎn)溢出前被CLRWDT指令清零,以防止產(chǎn)生RESET。如果程序由于某種干擾而失控,那么不能在WDT溢出前執行一條CLRWDT指令,就會(huì )使WDT溢出而產(chǎn)生RESET,使系統重新啟動(dòng)運行而不至失去控制。若WDT溢出產(chǎn)生RESET,則狀態(tài)寄存器STATUS的"TO"位會(huì )被清零,用戶(hù)程序可藉此判斷復位是否由WDT溢時(shí)所造成。
2、pic單片機WDT編程注意事項
如果使用WDT,一定要仔細在程序中的某些地方放一條"CLRWDT"指令,以保證在WDT在溢出前能被請零。否則會(huì )造成芯片不停地產(chǎn)生RESET,使系統無(wú)法正常工作。
分頻器相關(guān)文章:分頻器原理
評論