<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC看門(mén)狗定時(shí)器WDT(watch dog timer)的理解

          PIC看門(mén)狗定時(shí)器WDT(watch dog timer)的理解

          作者: 時(shí)間:2013-05-30 來(lái)源:網(wǎng)絡(luò) 收藏

          pic單片機(jī)計(jì)時(shí)器(Watch Dog Timer)是一個(gè)片內(nèi)自振式的RC振蕩計(jì)時(shí)器,無(wú)需任何的外接元件。這意味著即使芯片OSC1/OSC2上振蕩停止了(例如執(zhí)行指令SLEEP后),照樣保持計(jì)時(shí)。計(jì)時(shí)溢出將產(chǎn)生RESET。在16C5X 芯片內(nèi)有一個(gè)特殊的謂之"定義EPROM"(Configuration EPROM)的單元,其中的一個(gè)位是用于定義的。你可以將其置"0"來(lái)抑制WDT使之永遠(yuǎn)不起作用。這將在第七章的燒寫(xiě)器介紹部分詳細(xì)說(shuō)明,請(qǐng)參閱。

          1、WDT周期

          WDT有一個(gè)基本的溢出周期16ms(無(wú)預(yù)分頻器pic16F917),如果你需要更長(zhǎng)的WDT周期,可以把預(yù)分頻器分配給WDT,最大分頻比可達(dá)1:128,這時(shí)的WDT溢出周期約為2.5S。pic16F917還提供了一個(gè)16位的預(yù)分頻器,使WTD的超時(shí)值提高到268s。WDT溢出周期和環(huán)境溫度、VDD等參數(shù)有關(guān)系,請(qǐng)參閱附錄的圖表。

          "CLRWDT"和"SLEEP"指令將清除WDT計(jì)時(shí)器以及預(yù)分頻器里已有的計(jì)數(shù)值(當(dāng)預(yù)分頻器分配給WDT時(shí))。WDT一般用來(lái)防止系統(tǒng)失控或者說(shuō)防止單片機(jī)程序運(yùn)行"失控"。在正常情況下,WDT應(yīng)在計(jì)滿(mǎn)溢出前被CLRWDT指令清零,以防止產(chǎn)生RESET。如果程序由于某種干擾而失控,那么不能在WDT溢出前執(zhí)行一條CLRWDT指令,就會(huì)使WDT溢出而產(chǎn)生RESET,使系統(tǒng)重新啟動(dòng)運(yùn)行而不至失去控制。若WDT溢出產(chǎn)生RESET,則狀態(tài)寄存器STATUS的"TO"位會(huì)被清零,用戶(hù)程序可藉此判斷復(fù)位是否由WDT溢時(shí)所造成。

          2、pic單片機(jī)WDT編程注意事項(xiàng)

          如果使用WDT,一定要仔細(xì)在程序中的某些地方放一條"CLRWDT"指令,以保證在WDT在溢出前能被請(qǐng)零。否則會(huì)造成芯片不停地產(chǎn)生RESET,使系統(tǒng)無(wú)法正常工作。

          分頻器相關(guān)文章:分頻器原理


          關(guān)鍵詞: PIC 看門(mén)狗 定時(shí)器 WDT

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();