什么是看门狗
在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。看门狗有一个RST管脚,用来复位。
看门狗的两种工作模式
(一)看门狗模式:看门狗模式是看门狗这个组件的主要功能,(这不是废话嘛,看门狗组件肯定是看门狗啊)提到看门狗,不得不说这个密码保护了(WDTPW watchdog timer password )任何读写操作必须通过他才能正确执行指令,当密码错误,会产生一个PUC使单片机复位,为什么要这样呢?在早期的时候,有些单片机没有看门狗的密码保护,就很容易被窃取单片机的程序,一些公司以零开发成本就得到了源码,不得不说非常危险。这里给出这个寄存器的图,仅仅给出了高八位
谈完了密码保护,那肯定得说说看门狗的工作原理。既然说看门狗能复位程序,那这个看门狗复位程序是怎么做到的呢?(这里仅从寄存器配置说明,不涉及硬件)
大家看第五个WDTNMI,这个寄存器默认配置为 0,意思是说看门狗默认配置为复位模式,当用户配置为 1 时,使用NMI 模式,而我们大多时候使用复位功能。没必要配置NMI
既然是复位,那肯定得发送复位信号到单片机吧,而这个信号就是中断标记。单片机判断有无中断标记来复位。中断标记是怎么产生的?前面已经说了一个,当用户写入密码错了,就会产生一个错误中断标记;另一个就是,到达用户设定的复位时间。比如单片机默认32ms复位一次。而这个时间用户是可以自行配置的。(看门狗模式可以不打开总中断,也没有打开分控位中断一说)
(二)间隔定时器模式:其实这个跟看门狗模式没多大区别,也是产生一个周期性的中断,那区别在哪?主要的不同是看门狗会复位程序,而定时器不会,定时器执行的中断子程序可以由用户配置,看门狗甚至没有中断子程序一说。还有的不同就是中断标记了。定时器需要打开总中断。
给出一个例子供参考
例:使用看门狗定时器功能产生一个方波(周期的取反P1.0)。
#include 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; // 对引脚取反
}
关键字:MSP430F169 看门狗 工作模式
引用地址:
MSP430F169(四)——浅谈F169看门狗
推荐阅读最新更新时间:2024-11-11 04:32
STM32看门狗--窗口看门狗
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。 独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。 窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。 图1 窗口看门狗的 上窗口就是配置寄存器WWDG- CFR里设定的W ; 下窗口是固定的0x40; 当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。 图2 && 上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其
[单片机]
ATmega32 看门狗定时器
AVR 看门狗定时器由独立的 1 Mhz 片内振荡器驱动。这是 VCC = 5V时的典型值。请参见特性 数据以了解其他VCC电平下的典型值。通过设置看门狗定时器的预分频器可以调节看门狗 复位的时间间隔,如 P40 Table 17 所示。看门狗复位指令 WDR 用来复位看门狗定时器。 此外,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有 8 个选项。如果没有 及时复位定时器,一旦时间超过复位周期, ATmega32 就复位,并执行复位向量指向的 程序。具体的看门狗复位时序在 P38 有说明。 为了防止无意之间禁止看门狗定时器,在看门狗禁用后必须跟一个特定的修改序列。详见 看门狗定时器控制寄存器-WDTCR · B
[单片机]
stm32 独立看门狗 IWDG
独立看门狗IWDG 独立看门狗简单理解就是一个12位递减计数器,当计数器从某一个值递减到0时,系统就会产生一次复位 独立看门狗由专用低速时钟LSI驱动,其频率一般在30-60KHz之间,通常选择40KHz作为IWDG时钟 IWDG配置步骤 1.开启寄存器访问 2.设置预分频因子 3.设置重装载值 4.看门狗计数器重装载值 5.开启IWDG 举例 void IWDG_init(u8 prescaler, u16 reload) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //开启寄存器访问 IWDG_SetPrescaler(prescaler
[单片机]
STM8 beCAN工作模式
STM8 beCAN工作模式 beCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。 在硬件复位后,beCAN工作在睡眠模式以减少功耗。软件通过对CAN_MCR寄存器的INRQ或SLEEP置'1',可以请求beCAN进入初始化或睡眠模式。一旦进入了初始化或睡眠模式,beCAN就对CAN_MSR寄存器的INAK或SLAK位置'1'来进行确认。当INAK和SLAK位都为'0'时,beCAN就处于正常模式。在进入正常模式前,beCAN必须跟CAN总线取得同步;为取得同步,beCAN要等待直到CAN总线处于空闲状态,即在CANRX引脚上监测到11个连续的隐性位。 初始化模式 软
[单片机]
看门狗watchdog的理解
1.什么是watchdog? watchdog,中文名称叫做“看门狗”,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时(Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows Timer的作用与方才所讨论的定时器在功能上是相同的,只是windows Timer属于软件定时器,当windows Timer记时超时则引起App向System发送一条消息从而触发某个事件的发生。我们从以上的描述可知不论软件定时器或硬件定时器他们的作用都是
[单片机]
看门狗的原理和作用
看门狗,又叫watchdog timer,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端,另外一个部分就是所要处理的部分,暂且称之为MCU。 在MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗电路清零,如果在超过规定的时间不喂狗,WDT定时超时,就会回给一个复位信号到达MCU,使MCU复位,防止MCU死机。总的来说,看门狗电路的作用就是防止程序发生死循环,或者说程序跑飞。 WDT的基本工作原理如下:在整个系统运行以后就启动了看门狗的计数器,此时看门狗就开始自动计时,如果到达了一定的时间还不去给它清零,看门狗计数器就会溢出从而引起
[单片机]
X25045看门狗电路硬件连接图及C语言看门狗程序
采用89C51单片机和X25045组成的看门狗电路,X25045硬件连接图如图2所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图2电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。 图2 X25045看门狗电路硬件连接图 看门狗定时器的预置时间是通过X25045的状态寄存器的
[单片机]
S3C2440看门狗定时器原理
看门狗定时器(Watchdog) 相信大家都看过中国移动前些时间做的一个广告,从城市到山村,到青藏高原,在哪儿都有中国移动的网络,到哪儿都能打电话,由此可以联想到中国移动在全国有无数个信号基站,很多基站建设在环境比较恶劣的地方,我们来思考一个问题?假如,有一天某个基站出了问题不能正常工作了,毫无疑问,移动的工作人员会带各种检测设备去进行修理,如果是出现非硬件故障(如用户电话服务突然巨增,造成繁忙死机或电磁干扰造成CPU运行出错等),导致基站服务器出现异常死机,工作人员只需要进行一个操作,重启一下即可。如果该基站安装在青藏高原上,这样一次上去,成本是很大的。退一步讲,这种情况虽然成本很高,但是还是可以修复的,如果这种情况出现
[单片机]