打印
[MCU]

MSP430使用指南-> WDT看门狗模块

[复制链接]
351|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
观海|  楼主 | 2020-8-6 12:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

看门狗WDT电路在平时调试过程中使用并不多,但在真正产品应用上,可以说每一个系统都会使用看门狗,其主要功能和作用如下:

看门狗电路基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作。

使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。

MSP430  MCU内部直接集成了看门狗模块,可以通过用户的设置进行对程序是否跑死进行监控,同时可以通过寄存器配置成两种模式,使得客户使用起来更加方便,看门狗电路内部结构图如下图所示:

由上图结构图中可以看出,MSP430   MCU内部会提供一个PUC信号,用于清除看门狗计数器,这也就是外部看门狗所描述的喂狗操作,当程序跑死后,这个信号没有产生,因此当看门狗定时器定时时间到时,则会产生一个复位信号,使得系统重新启动。同时看门狗计数器的时钟源可以由用户进行选择。

MSP430看门狗比较简单,可以配置成两种模式:看门狗模式和间隔时间模式。这两种模式的描述及区别如下:

  • 看门狗模式:和硬件看门狗功能一致,在设置好看门狗计数时间后,如果程序跑死情况出现,在设定的时间过后就会触发看门狗中断,同时软件复位,程序指针PC会指向复位向量,程序实现软件复位。注意:看门狗复位顺序是:程序跑死 -> 触发看门狗中断 -> 执行中断服务程序(保存数据等操作,这个由用户决定) -> 复位程序。
  • 间隔时间模式:这个和定时器类似,不过时间不是很精确,在看门狗计数器达到设定时间后,会触发看门狗中断,但不会让软件重启,同时间隔时间模式是不存在喂狗操作的,类似于定时器,每隔设定的时间周期,都会触发看门狗中断,因此可以当作定时器使用。

使用特权

评论回复

相关帖子

沙发
观海|  楼主 | 2020-8-6 12:59 | 只看该作者

下面讲解一下看门狗的寄存器,这个比较简单,看门狗仅有一个寄存器,如下图所示:
WDTCLY寄存器:

  • WDTPW:首先看这个寄存器的高八位,是WDT的密码,在操作这个寄存器时,必须同时输入密码(5Ah),否则写任何数字都会导致看门狗复位程序。(注意,是同事写入不是先写密码,再操作寄存器) 同时这个高八位密码寄存器的读取结果一致都是69h。
  • WDTHOLD:看门狗定时器的使能,0停止此定时器,1使能此定时器。
  • WDTSSEL:看门狗定时器时钟源选择,默认是SMCLK,X_CLK时钟尽在部分MSP430 MCU中存在。
  • WDTTMSEL:模式选择,0选择看门狗模式,1选择间隔时间模式。
  • WDTCNTCL:看门狗定时器清除位,写1会清除看门狗定时器当前的值,在此定时器达到定时时间后会自动清除。
  • WDTIS:定时时间设置,在这里有八个定时时间可选,起始这个就是对定时器的设定值进行设定,看门狗计数器是个32位寄存器,最大数为232,但由于看门狗并不要求精确时间,因此设置成8段,提供八个时间足够了,如上图所示计算时间,这个跟时钟源有关系,如图如果时钟源频率是32768Hz,WDTIS = 100b,那么也就是设置的计数值是215=32768,因此定时时间为1秒。

同时,细心的话你会发现,如果正常使用看门狗功能的话,还缺少两个寄存器:中断使能寄存器和中断标志位寄存器。这两个参数WDTIE和WDEIFG分别在SFRIE1.0和SFRIFG1.0寄存器中,如下图所示:

  • WDTIE(仅有1bit)


WDTIE在SFRIE1寄存器的0bit上,默认是0,即失能看门狗中断,注意:就算失能看门狗终端,如果看门狗定时器设置在看门狗模式下,在程序跑飞后,依旧会复位程序,知识不产生中断了而已,因此如果不适用看门狗定时器,请失能定时器,用下面程序:


WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


  • WDTIFG(仅有1bit)


WDTIFG在SFRIFG1寄存器的0bit上,默认是0,即没有中断产证,可以手动清除,当然,看门狗定时器在进入中断后会自动清除此标志位。


使用特权

评论回复
板凳
观海|  楼主 | 2020-8-6 12:59 | 只看该作者

好啦,讲解完原理和寄存器之后,依旧给出看门狗的程序:

Code 1: 间隔时间模式,toggle LED:



使用特权

评论回复
地板
观海|  楼主 | 2020-8-6 13:00 | 只看该作者

Code 2: 看门狗模式,1秒(使用过程中,看门狗时间需要用户根据自身程序去设定):



768795f2b8e4e4e16c.png (65.87 KB )

768795f2b8e4e4e16c.png

使用特权

评论回复
5
coshi| | 2020-9-2 23:12 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
aoyi| | 2020-9-2 23:12 | 只看该作者
楼主辛苦了

使用特权

评论回复
7
drer| | 2020-9-2 23:12 | 只看该作者
很基础的知识

使用特权

评论回复
8
gwsan| | 2020-9-2 23:12 | 只看该作者
介绍的还是很详细的

使用特权

评论回复
9
kxsi| | 2020-9-2 23:13 | 只看该作者
支持楼主一下

使用特权

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

本版积分规则

99

主题

4103

帖子

1

粉丝