MSP430F169(四)——浅谈F169看门狗

   日期:2020-04-29     浏览:94    评论:0    
核心提示:什么是看门狗在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于嵌入式

什么是看门狗

在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。看门狗有一个RST管脚,用来复位。

看门狗的两种工作模式

(一)看门狗模式:看门狗模式是看门狗这个组件的主要功能,(这不是废话嘛,看门狗组件肯定是看门狗啊)提到看门狗,不得不说这个密码保护了(WDTPW watchdog timer password )任何读写操作必须通过他才能正确执行指令,当密码错误,会产生一个PUC使单片机复位,为什么要这样呢?在早期的时候,有些单片机没有看门狗的密码保护,就很容易被窃取单片机的程序,一些公司以零开发成本就得到了源码,不得不说非常危险。这里给出这个寄存器的图,仅仅给出了高八位

谈完了密码保护,那肯定得说说看门狗的工作原理。既然说看门狗能复位程序,那这个看门狗复位程序是怎么做到的呢?(这里仅从寄存器配置说明,不涉及硬件)
大家看第五个WDTNMI,这个寄存器默认配置为 0,意思是说看门狗默认配置为复位模式,当用户配置为 1 时,使用NMI 模式,而我们大多时候使用复位功能。没必要配置NMI

既然是复位,那肯定得发送复位信号到单片机吧,而这个信号就是中断标记。单片机判断有无中断标记来复位。中断标记是怎么产生的?前面已经说了一个,当用户写入密码错了,就会产生一个错误中断标记;另一个就是,到达用户设定的复位时间。比如单片机默认32ms复位一次。而这个时间用户是可以自行配置的。(看门狗模式可以不打开总中断,也没有打开分控位中断一说)
(二)间隔定时器模式:其实这个跟看门狗模式没多大区别,也是产生一个周期性的中断,那区别在哪?主要的不同是看门狗会复位程序,而定时器不会,定时器执行的中断子程序可以由用户配置,看门狗甚至没有中断子程序一说。还有的不同就是中断标记了。定时器需要打开总中断。

给出一个例子供参考

例:使用看门狗定时器功能产生一个方波(周期的取反P1.0)。
#include <msp430x16x.h>
void main(void)
{
	WDTCTL = WDT_MDLY_32; // 以SMCLK进行32ms的延迟
	IE1 |= WDTIE; // 开WDT中断
	P1DIR |= BIT0; // 信号输出
	_EINT(); // 总中断开
	while(1)
	{
		_NOP();
	}
}
// 看门狗中断服务子程序,这里指的是定时器的中断,
//看门狗模式的中断向量不是这个,看门狗有一个系统的自带的复位中断向量。不需要中断子函数
#pragma vector = WDT_VECTOR
__interrupt void WDT_IRQ(void)
{
	P1OUT ^= BIT0; // 对引脚取反
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服