新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430教程10:MSP430單片機WDT看門狗定時器

MSP430教程10:MSP430單片機WDT看門狗定時器

作者: 時間:2016-11-13 來源:網絡 收藏
看門狗定時器用來防止程序因供電電源、空間電磁干擾或其它原因引起的強烈干擾噪聲而跑飛的事故。程序中設置看門狗清零指令WDTCTL=WDTPW+WDTCNTCL,當程序跑飛不能及時清零看門狗,導致看門狗溢出復位,這樣程序可以恢復正常運行狀態(tài)。

本文引用地址:http://2s4d.com/article/201611/316501.htm

一、WDT寄存器包括WDTCNT和WDTCTL,兩個寄存器在上電和系統(tǒng)復位內容全部清零

1.記數(shù)單元WDTCNT:WDTCNT是16位增記數(shù)器,由MSP430選定的時鐘電路產生的固定周期脈沖信號對記數(shù)器進行加法記數(shù)。WDTCNT不能直接軟件存取,必須通過看門狗定時器的控制寄存器WDTCTL來控制。

2.控制寄存器WDTCTL:WDTCTL由兩部分組成,高8位用作口令,即5AH(頭文件中定義為WDTPW),低8位是對WDT操作的控制命令。寫入WDT控制命令時先寫入口令WDTPW,口令寫錯將導致系統(tǒng)復位。讀WDTCTL時不需口令,低字節(jié)WDTCTL的值,高字節(jié)讀出始終為69H。
bit 15-8 765 4 32 10
口令HOLDNMIES NMITMSELCNTCL SSELIS1 IS0

IS1 SI0選擇看門狗定時器的定時輸出,T為WDTCNT的輸入時鐘源周期。TMSELWDT工作模式選擇
00 T*2的15次方0看門狗模式
01 T*2的13次方1定時器模式
10 T*2的9次方NMI選擇RST/NMI引腳功能
11 T*2的6次方0RST/NMI為復位端
SSEL選擇WDTCNT的時鐘源 1RST/NMI為非屏蔽中斷輸入
0 SMCLK
1 ACLK
NMIES選擇NMI中斷的邊沿觸發(fā)方式HOLD停止看門狗定時器工作
0上升沿觸發(fā)NMI中斷0看門狗功能激活
1下降沿觸發(fā)NMI中斷1時鐘禁止輸入,記數(shù)停止

二、WDT的操作

1.用戶通過設置WDTCTL中的TMSEL和HOLD控制位使WDT工作在看門狗模式、定時器模式低功耗模式三種模式。

a.看門狗模式(TMSEL=0 ,HOLD=0)如果記數(shù)時間到,就會產生復位和激活系統(tǒng)上電清除信號,系統(tǒng)從上電復位的地址重啟動中斷向量為RESET_VECTOR

b.定時器模式(TMSEL=1,HOLD=0)這一模式產生選定時間的周期性中斷中斷標志位為WDTIFG中斷向量為WDT_VECTOR

c.低功耗模式(TMSEL=X,HOLD=1) WDTCTL=WDTPW+WDTHOLD;

2.WDT通過SSEL和IS0 IS1 3位可以確定與8種時鐘源相關的時間(ACLK=32768Hz,SMCLK=1MHz)
WDT_MDLY_32WDT_MRST_32
WDT_MDLY_8WDT_MRST_8
WDT_MDLY_0_5WDT_MRST_0_5
WDT_MDLY_0_064 WDT_MRST_0_064

WDT_ADLY_1000 WDT_ARST_1000
WDT_ADLY_250 WDT_ARST_250
WDT_ADLY_16WDT_ARST_16
WDT_ADLY_1_9WDT_ARST_1_9

三、看門狗應用
使用看門狗定時器產生一個方波(周期性取反P1.0)

#include "msp430x201x.h"
void main(void)
{
WDT=WDT_MDLY_32;
IE1 |=WDTIE;
P1DIR |=0x01;
_EINT();
for(;;)
{
_BIS_SR(CPUOFF);
_NOP();
}
}

interrupt[WDT_VECTOR] void watchdog_timer(void)
{
P1OUT^=0x01;
}



評論


技術專區(qū)

關閉