打印

MSP430F5529看门狗的设置

[复制链接]
1026|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Stannis|  楼主 | 2017-11-16 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

看门狗定时器(Watchdog Timer(WDT_A))实际上是一个特殊的定时器,即可以用来作为看门狗使用,也可以用作定时器。
所谓的看门狗功能,是指可以监控程序是否由于某些干扰或者错误而跑飞。其原理就是发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位。这样当在调试程序或预计程序在某个地方可能瞬时发生错误时(如外部电路干扰),选用设置看门狗定时中断可以避免程序跑飞。
当然,它也可以用作一般的定时功能。
不过实际上,由于看门狗定时器(作看门狗使用时)需要很严密的设置(否则程序容易经常重启),所以很多人都不会使用这项功能。所以,程序一开始就加上一句话:WDTCTL=WDTPW+WDTHOLD来关闭看门狗。

2.1  WDT_A的简介
              特点:
                     ①有8种可选定时时间;
②看门狗模式;
③定时器模式;
④看门狗控制寄存器存在密码保护;
⑤时钟源可选,且具有时钟源意外保护;
⑥可以被终止来节省能源;
⑦无论是用作看门狗还是定时器,其间隔时间都无法随意设定,只能从8种设定中选择,当然可以通过更改时钟频率来间接更改时间;
注意默认设置:程序启动,看门狗即启动;监控周期为32ms/32.768KHZ(也就是说当看门狗的时钟频率为32.768KHZ时,每过32ms,如果不软件清空,程序就会重启);所用的时钟源为SMclk(实际频率不是32.768KHZ,后面会提到)。
2.2  WDT_A的寄存器及操作
                     注意:所有的寄存器都存字操作和字节操作模式。例如对WDTCTL寄存器直接赋值是字操作,你也可以通过WDTCTL_L(低字节寄存器)、WDTCTL_H来进行字节操作赋值。
                                   该类寄存器只能赋值不要进行“|=、&=”等逻辑操作。
              2.2.1看门狗控制寄存器WDTCTL(Watchdog Timer Control)

                     该寄存器是一个16位带有密码保护的读写寄存器。所谓的密码保护,是为了防止该寄存器被不小心篡改。那么是如何实现密码保护呢?事实上,该寄存器的高字节用来存放口令,低字节才是控制数据。写口令为05Ah,读口令为069h,任何和口令不一样的高字节操作都会导致系统复位。
该寄存器的位功能定义如下:(支持位操作)

              WDTPW:Bits15-8,WDT Password,写为05Ah,读为069h。

              WDTHOLD:Bit7,WDT HOLD,
                                   0:打开看门狗计时器;
                                   1:关闭

              WDTSSEL:Bits6-5,WDT Clock Source Select时钟源选择

WDTTMSEL:Bit4,工作模式选择
0:看门狗模式;
                                   1:定时器模式;
WDTCNTCL:Bit3,计时器清零
0:无效;
                                   1:清空计数器,即WDTCNT=0x0000h
WDTIS:  Bits2-0,WDT Interval Select,间隔时间选择。用来选择计数的周期,共有8种时间可以选择。

               备注:括号前数字为计数器的值


2.2.2 看门狗计数值寄存器WDTCNT(Watchdog Timer Counter)
      这是一个32Bit的加计数器,但是不能通过软件来直接对其进行赋值等操作,只能通过WDTCTL中的WDTIS来选择时间。或者你可以通过WDTSSEL选择不同的时钟源,来间接改变时间。
   2.2.3  看门狗中断 位控制
                   WDT利用sfrS总寄存器中的两位来控制中断。
                   WDT中断标志位:WDTifg,位于SFRIFG1.0
                   WDT 中断使能位:WDTIE,位于SFRIE1.0

                   看门狗模式:如果不及时对WDTCNT清零或者对WDT初始化,WDTIFG就会置位,然后程序就会重启。
                   计时器模式:必须开总中断GIE和看门狗中断WDTIE。此外,当执行完中断服务程序后,标志位WDTIFG会自动清零。




2.3常用操作

                   WDTCTL=WDTPW+WDTHOLD;




                   WDTCTL = WDTPW + WDTCNTCL+WDTSSEL0+WDTIS2;



                   WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS2+WDTIS0

总结例程:



#include
void main(void)
{

   WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1;
   __enable_interrupt(); //开总中断
   SFRIE1|=WDTIE;        //开看门狗定时器中断
   P1DIR=0xff;
   int i,j;
   P1OUT=0xff;
      for(i=0;i<30000;i++)
         for(j=0;j<50;j++);    //延时约8S
      P1OUT=0x00;
   while(1);
}


#pragma vector=WDT_VECTOR
__interrupt void WatchTimer(void)
{
   WDTCTL=WDTPW+WDTCNTCL+WDTIS1;  //看门狗模式,时间设定约为8S
}

相关帖子

沙发
angerbird| | 2017-11-16 22:01 | 只看该作者
看门狗定时器(Watchdog Timer(WDT_A))实际上是一个特殊的定时器,即可以用来作为看门狗使用,也可以用作定时器。

使用特权

评论回复
板凳
baimiaocun2015| | 2017-11-23 23:12 | 只看该作者
WDTCTL=WDTPW+WDTHOLD关闭看门狗,这个需要重视的。

使用特权

评论回复
地板
updownq| | 2017-12-2 22:27 | 只看该作者
看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。

使用特权

评论回复
5
sanfuzi| | 2017-12-2 22:28 | 只看该作者
看门狗定时器最大的时间可以到1S

使用特权

评论回复
6
gygp| | 2017-12-2 22:28 | 只看该作者
看门狗定时器当做普通定时器使用

使用特权

评论回复
7
chenci2013| | 2017-12-2 22:28 | 只看该作者
在程序较为简单时可以考虑使用看门狗定时器简化设计。

使用特权

评论回复
8
biechedan| | 2017-12-2 22:29 | 只看该作者
实际上是一个特殊的定时器,即可以用来作为看门狗使用

使用特权

评论回复
9
wangdezhi| | 2017-12-2 22:29 | 只看该作者
发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断

使用特权

评论回复
10
isseed| | 2017-12-2 22:30 | 只看该作者
看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器

使用特权

评论回复
11
xietingfeng| | 2017-12-2 22:30 | 只看该作者
MSP430的看门狗默认是打开的

使用特权

评论回复
12
suzhanhua| | 2017-12-2 22:31 | 只看该作者
看门狗有三种工作模式:停止模式,计时器模式,看门狗模式。

使用特权

评论回复
13
mituzu| | 2017-12-2 22:31 | 只看该作者
可以用作一般的定时功能

使用特权

评论回复
14
updownq| | 2017-12-2 22:32 | 只看该作者
在很多单片机中都内置了看门狗,看门狗本身是一个定时器

使用特权

评论回复
15
sanfuzi| | 2017-12-2 22:32 | 只看该作者
在程序中可以灵活的利用看门狗定时器实现想要的功能。

使用特权

评论回复
16
gygp| | 2017-12-2 22:32 | 只看该作者
在需要的定时与看门狗定时器的几个时间相同时可以考虑使用看门狗。

使用特权

评论回复
17
chenci2013| | 2017-12-2 22:32 | 只看该作者
还是很有必要对着头文件和寄存器把主要的寄存器

使用特权

评论回复
18
biechedan| | 2017-12-2 22:32 | 只看该作者
可以监控程序是否由于某些干扰或者错误而跑飞。

使用特权

评论回复
19
wangdezhi| | 2017-12-2 22:32 | 只看该作者
选用设置看门狗定时中断可以避免程序跑飞。

使用特权

评论回复
20
xietingfeng| | 2017-12-2 22:32 | 只看该作者
在程序开始关闭程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

721

帖子

1

粉丝