# WWDT_PIC16F18854_I2C_p143&145_ ###### tags:`PIC16F18854` <style> .red {color:red;} </style> ## <span class =" red">窗口式看門狗定時器(WWDT)</span> 看門狗定時器(WDT)是一個系統定時器,如果在超過設定時間還未發出==CLRWDT==指令,該定時器將產生一個複位信號\ \ 看門狗定時器通常用於從意外事件中恢復系統\ \ 窗口式看門狗定時器(WDT)的不同之處在於,僅==當CLRWDT指令在超時期間內在特定窗口內執行時才被接受==\ \ WDT具有以下功能: * 可選時鐘源 * 多種操作模式 -WDT始終打開 -處於休眠狀態時WDT關閉 -WDT由軟件控制-WDT始終關閉 * 可配置的超時時間為1 ms至256 秒(標稱) * 可配置的窗口大小,為超時時間的12.5%至100% * 多種複位條件 * 休眠期間的操作 ## <span class =" red">獨立時鐘源:</span> WDT可以從31 kHz LFINTOSC或31.25 kHz MFINTOSC / 16內部振盪器中獲得時基,具體取決於==WDTCON1的WDTCCS <2:0>== 配置位或 ==WDTCS <2:0>== 位的值。\ \ 本章中的時間間隔基於1 ms的最小標稱間隔。\ \ 有關LFINTOSC和MFINTOSC的公差,請參見第37.0節“電氣規範” \ | WDTE<1:0> | SEN(WDTCON0) | 裝置狀態 |看門狗模式| | -------- | -------- | -------- |-------- | | 11| X| X |啟用| | -------- | -------- | -------- | -------- | | 10| X| 醒著|啟用 | 10| X| 休眠|不啟用| | -------- | -------- | -------- | -------- | | 01| 1| X |啟用| | 01| 0| X |不啟用| | -------- | -------- | -------- | -------- | | 00| X| X |不啟用| X為don't care \ ![](https://i.imgur.com/hjSoOQA.png) ## <span class =" red">超時時間</span> WDTPS(WDT0)位將超時時間設置為1 ms至256秒(標稱)\ \ ==復位後,默認超時時間為兩秒== ## <span class =" red">看門狗窗口</span> 看門狗定時器具有可選的窗口模式,該模式由WDTCON1寄存器的==WDTCWS <2:0>== 和 ==WINDOW <2:0>==\ \ ==在窗口模式下,CLRWDT指令必須在WDT週期的允許窗口內執行==\ \ ==如果WDTCWS <2:0> = 111,則窗口大小由WDTCWS <2:0>或WDTCON1的WINDOW <2:0>控制==\ \ ==如果發生窗口衝突,將產生一個複位,並且WDTWV(PCON)將被清除。 該位由POR設置或可以在固件中設置。== ## <span class =" red">清除WDT</span> 發生以下任何一種情況時,將清除WDT: * 任何復位 * 執行了有效的CLRWDT指令 * 器件進入休眠狀態 * 器件從休眠狀態喚醒 * WDT被禁用 * 振盪器起振定時器(OST)正在運行 * 寫入WDTCON0或WDTCON1寄存器 ## <span class =" red">CLRWDT注意事項(窗口模式)</span> 在窗口模式下,必須先準備WDT,然後再執行CLRWDT指令清除定時器。\ \ 這是通過讀取WDTCON0寄存器執行的。\ \ 在未執行此類布防動作的情況下執行CLRWDT指令將觸發窗口衝突 ## <span class =" red">休眠期間的操作</span> 當設備進入休眠模式時,WDT被清除。\ \ 如果在休眠期間智能了WDT,則WDT將恢復計數。當設備退出休眠模式時,WDT再次被清除。\ \ 在啟用OST之前,WDT保持清除狀態。\ \ 當器件處於休眠狀態時,如果WDT超時,則不會產生復位。\ \ 而是,設備喚醒並恢復操作。 STATUS暫存器中的TO和PD被更改以指示事件。\ \ 也可以使用PCON暫存器中的RWDT位。有關更多信息,請參見第3.0節“內存組織”。 | 情況 | 看門狗 | | ------------------------------ | ------ | | WDTE<1:0> = 00 | Cleared | | WDTE<1:0> = 01 and SEN = 0 | Cleared | | WDTE<1:0> = 10 and enter Sleep | Cleared | | 執行了有效的CLRWDT指令 | Cleared | | 振盪器起振定時器(OST)正在運行 | Cleared | | 設備進入休眠模式 | Cleared | | ------------------------------ | ------ | | 改變INTOSC divider (IRCF bits) | 不影響 |