1,看门狗介绍
什么是看门狗?从字面的意思理解,看门狗帮我的系统看门,防止我的系统到处乱跑。在实际嵌入式系统中看门狗也是充当这个角色的。看门狗,简称WDT,很明显它实际上是一个定时器,就如同我们所讲的Timer_A3亦或是Timer_B7系统一样,他们可以实现定时器的基本功能。但是,看门狗不具备Timer_A3或者Timer_B7那么多的计数模式以及输出功能,但是看门狗具有它自己的看家本领---看门---就是在某些时候迫使系统复位,主要是在程序死锁、系统异常等情况下完成强制复位。
2,看门狗应的特性:
1、电路里面包含有定时器和时钟源,当定时器计数到一定程度(一般是溢出)后将产生一个特定的信号;
2、在定时器计数的过程中,可以通过某些信号将定时器清零;
3、也可以禁用这个定时器以禁止看门狗功能;
4、另外,从看门狗的功能和应用领域讲,看门狗内部电路不应过于复杂,同时看门狗电路必须具有比处理器更高的稳定性和可靠性。
3,处理器如何控制看门狗
看门狗内部有定时器,如果MCU不能在一段时间内把看门狗定时器清零它就会发出一个信号。“狠狠地”通知MCU---看门狗很生气,后果很严重---MCU将被RESET。因此,一旦你的系统中添加了看门狗电路,你就一定要格外小心,“不要忽略你身边的任何一条狗”。
因此,一旦电路中添加了看门狗的功能,我们就必须在程序中添加将看门狗定时器清零的代码,这种操作我们称之为喂狗。对于喂狗操作,我们应当注意以下几点:
1、MCU中任何两次喂狗操作之间的时间间隔应小于看门狗的定时周期,如果某一任务的执行周期超过了看门狗的定时周期,需要向其中加入喂狗操作;
2、对于无操作系统的系统来说,喂狗操作只能在主循环中或被主循环调用的程序中执行,不可以在定时器中断服务程序中进行;
3、此外,用户还可以根据自己系统的情况来选择适当的看门狗定时器时间。
4,MSP430F14x的内部看门狗定时器
前面介绍的都是看门狗的一些共性,对于MSP430F14x系列微处理器来说,其内部的看门狗相对来说具有更强大的功能和灵活性:
1、四种可供选择的定时周期;
2、可选择的定时器模式或看门狗模式,可关闭看门狗;
3、访问密码保护;
4、可选择的时钟源;
5、可选择RST或NMI。
5,MSP430F14x的内部看门狗
MSP430F14x的内部看门狗结构如图所示。
看门狗部分电路相对于前面的各个功能模块而言是比较简单的,内部具有一个最大16位的定时器,其时钟源可以选择位SMCLK或者ACLK,用户可以控制对应的寄存器以控制看门狗功能。
6,看门狗定时器之寄存器
6.1 MSP430F14x内部看门狗寄存器
用户可以通过控制看门狗定时器对应的寄存器来控制其功能:时钟源选择、定时周期等。看门狗定时器的寄存器主要有以下三个WDTCTL,主要控制看门狗的工作模式、时钟源、看门狗定时器的时间间隔选择等;IE1系统中断寄存器1,控制看门狗电路中断信息;IFG1系统中断标志位,保存了系统的中断信息。
6.2 WDTCTL控制寄存器
WDTPW:看门狗密码设置,从该8位读取时,能读取到0x69。但是向该8位写入时必须写入0x5A,否则会引起PUC。
WDTHOLD:看门狗定时器挂起,即停止看门狗定时器的计数,从而禁用看门狗功能。1:看门狗定时器挂起;0:看门狗定时器工作
我们现在看到的是WDTCTL控制寄存器,下面是寄存器内各位的作用。
WDTNMIES:看门狗定时器NMI边缘选择,该位于WDTNMI共同作用决定NMI需要特别注意的是在修改该位前必须将WDTNMI位复位。1:上升沿产生NMI;0:下降沿产生NMI。
WDTNMI:NMI功能选择位,控制RST/NMI引脚功能。1:NMI功能;0:RESET功能。
WDTTMSEL:看门狗功能模式选择。1:周期定时功能;0:看门狗功能。
WDTCNTCL:看门狗定时器清零。1:将看门狗定时器清零;0:不清零。
WDTSSEL:看门狗定时器时钟选择。1:SMCLK;0:ACLK。
WDTIS:看门狗定时器周期选择,用于选择看门狗定时器的定时周期。11:计数器第6位输出,即看门狗时钟的64分频;10:计数器第10位输出,即看门狗时钟的512分频;01:计数器第13位输出,即看门狗时钟的8192分频;00:计数器第15位输出,即看门狗时钟的32768分频。
6.3IE1系统中断控制寄存器
NMIIE:该位位于IE1的第4位,NMI中断使能控制位。1:允许NMI中断;0:禁止NMI中断。
WDTIE:看门狗定时器中断允许位,该位控制当看门狗电路工作在周期定时模式时WDTIFG的中断使能。1:允许EDTIFG中断;0:禁止WDTIFG中断。
6.4IFG1系统中断标志寄存器
NMIIFG:NMI中断请求标志位,用户必须软件清除该中断请求。1:当前有NMI中断请求;0:当前没有NMI中断请求。
WDTIFG:看门狗定时器中断请求标志位。需要特别注意,在看门狗模式下该位必须由用户在软件中清除,而在周期定时模式下该位是可以被自动清除的。1:当前有看门狗定时器中断请求;0:当前没有看门狗定时器中断请求。
此外还有WDTCNT计数器:该寄存器保存了看门狗定时器内部的16位定时器的值。
7看门狗定时器之程序举例
7.1 IAR对看门狗定时器周期的定义
IAR除了对MSP430内部的寄存器做出了宏定义之外,同时对看门狗部分的定时器后期也做出了宏定义,可以极大的方便看门狗的使用。例如定义当看门狗时钟为32768Hz时,定义了周期定时器模式如图所示。
即看门狗周期分别为1000ms,250ms和16ms。
7.2看门狗定时器周期端口翻转
这是设置看门狗定时器工作在后期定时模式下,ACLK为32768Hz时端口翻转周期为1000ms,并且工作在周期定时器模式下,触发看门狗中断,在中断服务程序中对端口P1.0输出翻转。