WDT(WatchDogTimer)

Download Report

Transcript WDT(WatchDogTimer)

[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 的大部分設定皆操作在一個16bit 暫存器WDTCTL中
 除了WDTIE bit 和WDTIFG 是設置在
SFR系列暫存器中
 WDTCTL暫存器是一個受到密碼保護
的暫存器寫入時需要在高位元寫入密
碼,否則也會導致系統重置(resetPUC)
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≅
1.045𝑀𝐻𝑧
 01=ACLK=32768𝐻𝑧
10=VLOCLK≅ 10𝐾𝐻𝑧
11=X_CLK=VLOCLK
WDT
WDT 設定
 WDTTMSEL(BIT4):
選擇WDT模式,預設是0= Watchdog Mode
 1=間格時間計時器
WDT
WDT 設定
 WDTCNTCL(BIT3):
WDTCNT Clear,在此bit寫入1能夠清除
WDTCNT中的數值
WDT
WDT 設定
 WDTTIS(BIT2-0):
WDT Time interval selection,WDT的計時區
間只能透過TIS設定,不能直接修改WDTCNT,
因此只有固定8種組合。
WDT
WDT 設定
 WDTTIS(BIT2-0):
預設為100b = 𝑇𝑐𝑙𝑘 × 215
 因此,在預設的WDT設定中,32ms內沒有設
定WDT,則會自動reset系統
WDT
WDT 設定









WDTTIS(BIT2-0)的時間區間:
000b = 𝑇𝑐𝑙𝑘 × 231 (65536sec at 32kHz)
001b = 𝑇𝑐𝑙𝑘 × 227 (4096sec at 32kHz)
010b = 𝑇𝑐𝑙𝑘 × 223 (256sec at 32kHz)
011b = 𝑇𝑐𝑙𝑘 × 219 (16sec at 32kHz)
100b = 𝑇𝑐𝑙𝑘 × 215 (1sec at 32kHz)
101b = 𝑇𝑐𝑙𝑘 × 213 (250ms at 32kHz)
110b = 𝑇𝑐𝑙𝑘 × 29 (15.625ms at 32kHz)
111b = 𝑇𝑐𝑙𝑘 × 26 (1.95ms at 32kHz)
WDT
WDT 設定
 WDTIE 設置於SFRIE1的BIT0
 WDTIFG設置於SFRIFG1的BIT0
 在Interval Timer模式下,設置WDTIE和GIE,
即可令系統回應來自WDT的中斷訊號,進入
專屬的WDT_VECTOR執行中斷向量副程式
WDT
WDT Clock 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,以附
檔形式寄到 [email protected],並在
主旨中註明姓名、系級與學號,
source檔名稱請利於辨識。
EX:
 主旨:
微處理機實習 LAB3 王大明 電機碩二 7101064123