200 likes | 425 Views
[1205] Lecture 9. WDT 認識 WDT 認識 WDT 的用途與使用方法 操作 WDT 的兩種模式. WDT. WDT 模組 WDT = Watch Dog Timer 看門 狗計時器 主要的功能為確保系統不會因為軟體因素而死當、凍結. WDT. WDT 模組 作動原理為是透過一個計時器設定一段時間區間 在時間區間內,程式必須要將 Watch Dog Timer 計數器歸零 一旦在時間區間內沒有將計數器歸零,系統將自動進行 Reset 、 PUC(Power Up Clear). WDT. WDT 模組
E N D
[1205]Lecture 9 • WDT • 認識WDT • 認識WDT的用途與使用方法 • 操作WDT的兩種模式
WDT • WDT模組 • WDT=Watch Dog Timer • 看門狗計時器 • 主要的功能為確保系統不會因為軟體因素而死當、凍結
WDT • WDT模組 • 作動原理為是透過一個計時器設定一段時間區間 • 在時間區間內,程式必須要將Watch Dog Timer 計數器歸零 • 一旦在時間區間內沒有將計數器歸零,系統將自動進行Reset、PUC(Power Up Clear)
WDT • WDT模組 • WDT 在不用作看門狗功能時,也可當作一個32-bit的計時器使用 • WDT作為計時器使用時,提供一個WDT_VECTOR 中斷向量可以使用 • WDT也支援暫停模式,配合達到省電目的
WDT • WDT設定 • WDT 的大部分設定皆操作在一個16-bit 暫存器WDTCTL中 • 除了WDTIEbit 和WDTIFG 是設置在SFR系列暫存器中 • WDTCTL暫存器是一個受到密碼保護的暫存器寫入時需要在高位元寫入密碼,否則也會導致系統重置(reset-PUC)
WDT • WDT設定 • WDTCTL的高8位元是WDTPW,被設計成讀取時為069h • 在寫入WDTCTL時,高位元皆必須寫入05Ah,否則會導致reset
WDT • WDT設定 • WDTHOLD(BIT7): 暫停WDTCNT,不使用WDT時設定此位元為1,減少耗能,同時避免WDT動作 • 每一次課程中主程式的第一行程式碼的動作即是暫停WDT的動作
WDT • WDT設定 • WDTSSEL(BIT5-6): 選擇WDT的時脈來源,預設是00=SMCLK • 01=ACLK=10=VLOCLK11=X_CLK=VLOCLK
WDT • WDT設定 • WDTTMSEL(BIT4): 選擇WDT模式,預設是0= Watchdog Mode • 1=間格時間計時器
WDT • WDT設定 • WDTCNTCL(BIT3): WDTCNTClear,在此bit寫入1能夠清除WDTCNT中的數值
WDT • WDT設定 • WDTTIS(BIT2-0): WDTTime interval selection,WDT的計時區間只能透過TIS設定,不能直接修改WDTCNT,因此只有固定8種組合。
WDT • WDT設定 • WDTTIS(BIT2-0):預設為 • 因此,在預設的WDT設定中,32ms內沒有設定WDT,則會自動reset系統
WDT • WDT設定 • WDTTIS(BIT2-0)的時間區間: • (65536sec at 32kHz) • (4096sec at 32kHz) • (256sec at 32kHz) • (16sec at 32kHz) • (1sec at 32kHz) • (250ms at 32kHz) • (15.625ms at 32kHz) • (1.95ms at 32kHz)
WDT • WDT設定 • WDTIE 設置於SFRIE1的BIT0 • WDTIFG設置於SFRIFG1的BIT0 • 在Interval Timer模式下,設置WDTIE和GIE,即可令系統回應來自WDT的中斷訊號,進入專屬的WDT_VECTOR執行中斷向量副程式
WDT • WDTClock Fail-Safe Feature • 當WDT設置在看門狗模式時,為了確保時脈供應,在SMCLK或ACLK無法正常提供時脈時,會自動選擇VLOCLK作為備用時脈。
Example • 範例1 • 配置WDT為Interval Timer,並設置中斷副程式切換D1的狀態 • 選用ACLK作為時脈來源 • 選用時間區間為250ms • 範例程式下載
Example • 範例2 • 配置WDT為Watch Dog,觀察其在一定時間後重置。 • 選用ACLK作為時脈來源 • 選用時間區間為1000ms • 程式起始會亮起D1一下然後熄滅 • 接著閃爍D2 • 範例程式下載
Exercise • 練習1 • 配置WDT為Interval Timer,並設置中斷副程式切換D1的狀態 • 選用ACLK作為時脈來源 • 選用時間區間為1000ms • 除了範例中的指令字,有沒有其他的指令字也可以達到一樣的效果?
Exercise • 練習2 • 配置WDT為Watch Dog,但不讓其重置系統(不使用WDTHOLD) • 選用ACLK作為時脈來源 • 選用時間區間為1000ms • 程式起始前要閃一下D1代表程式開端 • 持續閃爍D2不重置
Exercise • 完成後,找到專案裡面的source file,以附檔形式寄到 kchu@ares.ee.nchu.edu.tw,並在主旨中註明姓名、系級與學號,source檔名稱請利於辨識。EX: • 主旨: 微處理機實習 LAB3 王大明 電機碩二 7101064123