6101|3

1万

帖子

16

TA的资源

版主

楼主
 

MSP430学习笔记之四:看门狗 [复制链接]

看门狗定时器实际上是一个特殊的定时器,它的的功能是当程序运行发生故障时序时能使系统从新启动。其原理就是发生的故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统的复位。这样当在调试程序或预计程序运行在某段内部可能瞬时发生时序错误时(如外部电路干扰)选用设置看门狗定时中断可以避免程序跑飞看门狗的定时时间可以通过WDTCTL中的低三位(SSELIS1IS0)选择,当系统时钟为1MHz时,最大可设置为1秒钟,最小可设置64微秒。 WDTCTL是一个16位寄存器,其高字节为口令,口令为5AH,当对它写入操作时必须写口令才能操作,否则会导致系统复位。

另外该模块还具有定时器的功能。你可通过TMSET位进行选择。你可通过设置CNTCL来使WDTCNT0开始计数。其定时按选定的时间周期产生中断请求。

WDT工作在定时器模式时,WDTCTL中断标志位在定时间到时置位,因该模式下定时器中断源是单源的,当得到中断服务时其WDTCTL标志位复位。

 

 WDTCNT计数单元

 

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

WDTCTL控制寄存器

15--8

7    6     5    4    3     2    1   0

口令

HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0

WDTCTL由高8位口令和低8位控制命令组成。要写入操作WDT的控制命令,出于安全原因必须先正确写入高字节看门狗口令。口令为5AH,如果口令写错将导致系统复位。读WDTCTL时不需要口令。这个控制寄存器还可以用于设置NMI引脚功能。

ISOIS1 选择看门狗定时器的定时输出。其中TWDTCNT的输入时钟源周期。

0 T x 2(15)

1 T x 2(13)

2 T x 2(9)

3 T x 2(6)

SSEL 选择WDTCNT的时钟源

0 SMCLK

1 ACLK

IS0IS1SSEL3可确定WDT定时时间。WDT最多只能定时8种和时钟源相关的时间。下表列出了WDT可选的定时时间(晶体为32768HZSMCLK=1MHZ) 

WDT的定时时间表

SSEL

IS1

IS0

定时时间/ms

0

1

1

0.056

Tsmclk x 2(6)

0

1

0

0.5

Tsmclk x 2(9)

1

1

1

1.9

Taclk x 2(6)

0

0

1

8

Tsmclk x 2(13)

1

1

0

16

Taclk x 2(9)

0

0

0

32

Tsmclk x 2(15) (PUC复位后的值)

1

0

1

250

Taclk x 2(13)

1

0

0

1000

Taclk x 2(15)

 

CNTCL 当该位为1时,清除WDTCNT

TMSEL 工作模式选择

0 看门狗模式

1 定时器模式

NMI 选择RST/NMI引脚功能,在PUC后被复位。

0 RST/NMI引脚为复位端

1 RST/NMI 引脚为边沿触发的非屏蔽中断输入。

NMIES 选择中断的边沿触发方式

0 上升沿触发NMI中断

1 下降沿触发NMI中断

HOLD 停止看门狗定时器工作,降低功耗。

0 WDT功能激活

1 时钟禁止输入,计数停止

 

 

还是个简单例子:

 

#include "msp430x22x4.h"

/*************************************************************************/
//看狗门WDT计数器清零子程序
void clear_wdt (void)
{
 WDTCTL = WDTPW + WDTCNTCL;       //看门狗计数器清零(WDTCTL=0x5A08)
}
/*************************************************************************/
//主程序
void main(void)
{
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;       //先关看门狗(WDTCTL=0x5A80)
  P1DIR |= BIT1;                  //使P1.1为输出
  P1OUT |= BIT1;                  //关LED
  for(i=0;i<60000;i++);            //延时
  P1OUT &= ~BIT1;                 //开LED
  for(i=0;i<60000;i++);           //延时
 
  WDTCTL = WDTPW;                 //开看门狗(WDTCTL=0x5A00)
 
  for(i=0;i<10;i++)
   {
    clear_wdt ();                 //不断清零,使狗无法复位
   }
 
  ;
}

  

[ 本帖最后由 ddllxxrr 于 2011-3-4 06:48 编辑 ]

最新回复

太好了,期待有更好作品出炉  详情 回复 发表于 2011-8-16 13:02

赞赏

1

查看全部赞赏

 
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复
举报

7219

帖子

192

TA的资源

五彩晶圆(高级)

沙发
 
MARK 过一段时间学430哦 支持下新手入门资料
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

板凳
 
呵呵,又出新帖了,赞一个
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

4
 
太好了,期待有更好作品出炉
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表