2091|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

MSP430F169单片机编程基础——(五)WDT 看门狗定时器 [复制链接]

Watchdog Timer Module
    看门狗定时器(WDT)是MSP430系列单片机中常用的一种部件。
    在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于
数字器件,极易使其产生误动作,从而失去应有的控制功能,引起 MSP430发生“程序跑飞”事故。若不
进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。
    看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。
    在正常操作器件,一次 WDT 定时时间到,将产生一次器件复位。如果通过编制程序使 WDT 定时时
间稍大于程序执行一遍所用的时间时,并且程序执行过程中都有对看门狗定时器清零的指令,使计数器重
新计数,则程序正常执行时,就会在WDT定时时间到达之前对WDT清零,不会产生WDT溢出,如果由
于干扰使程序跑飞,则不会在WDT定时时间到达之前执行WDT清零指令,WDT就会产生溢出,从而产
生系统复位CPU 需用重新运行用户程序,这样程序就可以又恢复正常运行状态。
    MSP430看门狗除了具有上述系统监测的特定用途之外,还可以作为内部定时器来使用,当选择的时
间到达之后,和其他定时器一样产生一个定时中断。此外 WDT 还可以被完全停止活动以支持超低功耗应
用。

看门狗定时器寄存器

(一)  WDTCTL  看门狗控制寄存器
    WDTCTL由两部分组成:
    高 8 位是对 WDT 操作的控制命令。要写入操作 WDT 的控制命令,出于安全原因必须先正确写入高字节
看门狗口令。口令位5AH,如果口令写错将导致系统复位。
    读WDTCTL时,不需要口令,可直接读取地址 120H中的内容,读出数据低字节位WDTCTL的值,高字
节始终位69H。WDTCTL除了看门狗定时器的控制位之外,还有两个用于设置NMI引脚功能。
     捕获
WDTISx:选择看门狗定时器的计时输出
    其中T是WDTCNT的输入时钟源周期。
    0 T×215
    1 T×213
    2 T×29
    3 T×26
WDTSSEL:选择WDTCNT的时钟源
    0 SMCLK
    1 ACLK
    由WDTISx 及WDTSSEL位便可确定WDT定时时间, 因此通过软件对计数器设置不同的初始值就可实现不同时间的定时。与其他定时器不同之处在于,WDT最多只能定时 8种和时钟源相关的时间。
下表列出了WDT可选的定时时间(晶振为 32.768KHz,SMCLK=1MHz)。
   捕获
WDTCNTCL:看门狗计数器清零位
    0: 无操作
    1: 将WDTCTL的值清零
    当该位为1时,清除WDTCNT。
WDTTMSEL:工作模式选择
    0 看门狗模式;
    1 定时器模式。
WDTNMI:选择RST/NMI引脚功能(在PUC 后被复位)
    0 RST/NMI引脚为复位端;
    1 RST/NMI引脚为边沿触发的非屏蔽中断输入。
WDTNMIES:选择中断的边沿触发方式
    0 WDT功能激活;
    1 时钟禁止输入,计数停止。
WDTHOLD:停止看门狗计数器
    0 WDT功能激活
    1 时钟禁止输入,计数停止
(二)  WDTCNT  计数单元

     捕获

    WDTCNT 时 16 位增计数器,由于 MSP430 所选定的时钟电路产生的固定周期脉冲信号对计数器进行加法计数。 如果计数器事先被预置的初始状态不同, 那么从开始计数到计数溢出为止的时间就不同。 WDTCNT不能直接通过软件直接通过软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。

(三) IE1  中断允许寄存器

    捕获
WDTIE:看门狗定时器模式中断允许控制位
    0 看门狗定时器中断禁止
    1 看门狗定时器中断允许
NMIIE:非屏蔽中断允许控制位
    0 禁止非屏蔽中断
    1 允许非屏蔽中断
(四) IFG1 中断标志寄存器
    捕获
WDTIFG:看门狗定时器模式中断标志
    0  无看门狗定时器中断标志
    1  有看门狗定时器中断标志
NMIIFG:非屏蔽中断标志
    0  无非屏蔽中断标志
    1  有非屏蔽中断标志
看门狗定时器操作
(一)看门狗模式
    由于在上电复位或系统复位时,WDTCNT和WDTCL两寄存器内容被全部清除(晶振为 32768Hz,
SMCLK=1MHz):
    复位后,工作在看门狗模式,以 ACLK为时钟,WDT定时时间为32ms。
    上述情况将导致WDT的运行自动进入看门狗模式。
    所以,用户软件一般都需要进行如下操作:
■  进行WDT的初始化:设置合适的时间(通过 SSEL、IS0、IS1位来选定) 。
■  周期性的对WDTCNT清零:防止WDT溢出,保证WDT的正确使用。
■  在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号,系统从上电
复位的地址重启动。
■  如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。
(二)定时器模式
   WDTCTL 的 WDTTMSEL 位置位选择定时器模式。这一模式产生选定时间的周期性中断。定时时间
可以通过WDTCTL的WDTCNCTL位置位来开始。
■  改变定时时间而不同时清楚 WDTCNT 将导致不可预料的系统立即复位或中断。定时时间可以通过
WDTCTL的 CNCTL位置位来开始。
■  如果先后分别进行清除和定时时间选择,则可能立即引起不可预料的系统复位或中断。
■ 另外,在终场工作时。改变时钟源可能导致WDTCNT额外的计数时钟。
(三) 低功耗模式
     当系统不需要WDT做看门狗和定时器时,可关闭WDT以减小功耗。
    控制位WDTHOLD=1时关闭WDT,这时看门狗停止工作。


看门狗示例程序

例:使用看门狗定时器功能产生一个方波(周期的取反 P1.0) 。
#include

void main(void)
{
  WDTCTL = WDT_MDLY_32;   // 以SMCLK进行32ms的延迟(can't understand it)
  IE1 |= WDTIE;      // 开WDT中断(can't understand it)
  P1DIR |= BIT0;     // 信号输出
  _EINT();         // 总中断开

  while(1)
  {
    _NOP();         //空语句
  }
}

// 看门狗 中断服务子程序
#pragma vector = WDT_VECTOR
__interrupt void WDT_IRQ(void)
{
  P1OUT ^= BIT0;   // 对引脚取反
}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表