新聞中心

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

MSP430教程10:MSP430單片機(jī)WDT看門狗定時(shí)器

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

本文引用地址:http://m.butianyuan.cn/article/201611/316501.htm

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

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

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

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

二、WDT的操作

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

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

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

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

2.WDT通過SSEL和IS0 IS1 3位可以確定與8種時(shí)鐘源相關(guān)的時(shí)間(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

三、看門狗應(yīng)用
使用看門狗定時(shí)器產(chǎn)生一個(gè)方波(周期性取反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;
}



評(píng)論


技術(shù)專區(qū)

關(guān)閉