第十八章看门狗定时器
软件看门狗是利用单片机片内闲置的定时器

第21卷第2期 吉林大学学报(信息科学版) V o l121 N o12 2003年5月 JOU RNAL O F J I L I N UN I V ER S IT Y(I N FORM A T I ON SC IEN CE ED IT I ON) M ay2003文章编号:167125896(2003)022*******单片机应用系统中的看门狗技术α胡 屏1,柏 军2(11哈尔滨工业大学威海分校信息与控制工程系,山东威海 264209;21哈尔滨工业大学威海分校计算机科学与工程系,山东威海 264209)摘要:分析研究了单片机应用系统中软件看门狗、单 双时限和强制复位看门狗等几种常见的看门狗技术及具体的实现方法,从提高看门狗工作可靠性的角度,分析了各种看门狗方案的优缺点,给出了基本的硬件电路和软件控制策略,指出了在设计和应用过程中需注意的一些问题。
关键词:单片机;看门狗;抗干扰;X5045看门狗定时器中图分类号:T P39 文献标识码:A引 言随着单片机技术的发展和制造工艺的日益成熟,单片机的应用领域不断拓宽,但由于单片机自身的抗干扰能力较差,尤其是在一些条件比较恶劣,噪声大的场合,常会出现单片机因受外界干扰而导致死机的现象,造成系统不能正常工作。
设置看门狗是防止单片机死机、提高单片机系统抗干扰性的一种重要途径,笔者研究分析了几种较为实用的看门狗技术,供读者参考。
1 软件看门狗软件看门狗是利用单片机片内闲置的定时器 计数器单元作为看门狗,在单片机程序中适当地插入“喂狗”指令,当程序运行出现异常或进入死循环时,利用软件将程序计数器PC赋予初始值,强制性地使程序重新开始运行。
具体实现方法如下。
1)首先在初始化程序中设置好定时器 计数器的方式控制寄存器(TM OD)和定时时间的初值,并开中断。
2)根据定时器的定时时间,在主程序中按一定的间隔插入复位定时器的指令,即插入“喂狗”指令,两条“喂狗”指令间的时间间隔(可由系统时钟和指令周期计算出来)应小于定时时间,否则看门狗将发生误动作。
AT89S51单片机看门狗定时器的使用

}
}
以上程序中系统在做一个无限循环的动作,通过看门狗定时器可以防止程序在执行过程中跑飞。因为只要程序一跑出while()循环,看门狗定时器溢出以后得不到复位,所以自动复位系统,让程序从mian()开始重新运行。
但是在C语言应用看门狗定时器也特别小心,一定要在看门狗定时器启动后的0.016s内喂一次狗。
RL A ;7 2us
JMP LOOP ;8 2us
DELAY: MOV R7,#200 ;9 1us
AT89S51 看门狗定时器由一个14位定时器及WDTRST(地址为6AH)寄存器构成。开启看门狗定时器后,14位定时器会自动计数,每16384(214)个机器周期溢出一次,并产生一个高电平复位信号,使系统复位。对于12MHZ的时钟脉冲每16384us(约0.016s)产生一个复位信号。
如果启动看门狗定时器,当系统超过0.016s没有动作(程序跑飞),看门狗定时器自动复位,让系统归复于正常运作状16s内必须喂狗一次,即对看门狗定时器进行复位,看门狗的启动和复位的方法是一样的。
END ;14 2us
在程序的每个行标号后面是12MHZ时钟脉冲下的指令执行时间,为了让系统正常工作且不死机将看门狗定时器启动指令放在1和2之间,将看门狗定时器复位指令放在11和12之间。
现在一起通过执行时间来计算看门狗定时器复位指令放在那里比较合适。
{ ……;
WDTRST=0x1e;
WDTRST=0xe1;
While(1)
{ WDTRST=0x1e;
WDTRST=0xe1;
……;
……; 这部分执行时间必须少于0.016s
MOV 0A6H,#0E1H ;3 1us
XMC4000中文参考手册-第09章 窗口看门狗定时器(WDT)

9.8.1
初始化和启动操作
系统复位后,需要完成WDT模块的初始化。 • 检查最后一次系统复位的原因,以确定电源状态 - 读出SCU_RSTSTAT.RSTSTAT寄存器位段,确定最后一次系统复位的原因 - 依据最后系统复位的原因执行适当的操作 看门狗软件初始化序列 用SCU_CLKSET.WDTCEN寄存器位段启用WDT时钟 用SCU_PRCLR2.WDTRS寄存器位段释放WDT复位 用WDT_WLB寄存器设置窗口下限 用WDT_WUB寄存器设置窗口上限 配置外部看门狗服务指示(可选,请参阅SCU/HCU章节) 用SCU_WDTCLKCR寄存器选择和启用WDT输入时钟 用SCU_NMIREQEN寄存器在系统级上启用系统陷阱预警报警(可选,仅用在WDT预警 模式) 软件启动序列 - 选择模式(超时或预警)和用WDT_CTR寄存器启用WDT模块 服务看门狗 - 在WDT_TIM寄存器中,对编程时间窗口检查当前定时器值 - 在有效时间窗内,写魔字到WDT_SRV寄存器 9.8.2 重新配置和重新启动操作 - - - - - - -
参考手册 WDT, V2.3
9-3
V1.2, 2012-12 请遵守产品信息使用协议
XMC4500 XMC4000 家族
窗口看门狗定时器(WDT)
图 9-2
无预警复位
图 9-2中描绘的示例场景展示了在有效时间窗口内WDT模块成功服务后产生的两个连续的服务 脉冲。对于没有服务执行的情况,在计数器的值已经超过窗口上限值后立即触发在wdt_rst_req 输出上的复位请求生成。 9.3 预警模式
在预警模式时,溢出事件的作用在有和没有启用预警是不同的。当预警启用时,计数器第一次 超过上限时触发输出报警信号wdt_alarm。只能在下一个溢出产生复位请求。报警状态通过寄 存器WDTSTS指示且通过寄存器WDTCLR清除。清除报警状态将使WDT回到正常状态。报警 信号发送请求到SCU,在那里上报到NMI。
第 章 STC单片机时钟 复位和电源模式原理及实现

注:在STC-ISP软件中推荐选择“低电压时禁止EEPROM操作”前面的复选框。 下面给出与低压检测有关的电源控制寄存器PCON。该寄存器在特 殊功能寄存器地址为0x87H的位置,当上电复位后该寄存器的值为 00110000。
比特 B7
B6
B5
B4
B3
B2
B1
B0
名字
SMOD
SMOD 0
在低压检测复位结束后,不影响特殊功能寄存器IAP_CONTR中 的 SWBS/IAP_CONTR.6 位 的 值 , 单 片 机 根 据 复 位 前 SWBS/IAP_CONTR.6的值选择从用户应用程序区启动,还是从 系统监控区启动。
STC单片机复位
-- 内部低压检测复位
对于5V和3V供电的单片机都提供了内置8级可选的内部低电压 检测门限电压。对于宽电压供电的STC单片机来说,内置了16级可 选的内部低电压检测门限电压值。用户可以根据工作频率和供电电 压,选择合理的门限电压。典型地: 对于5V供电的单片机来说,常温下工作频率大于20MHz时,可
P47=0;
//P4.7置低,灯亮
for(j=0;j<999999;j++);
//软件延迟
IAP_CONTR=0x60;
//软件复位指令
}
注:读者可以进入本书所提供资料的stc_program_example\例子18-2目录下, 打开并参考该设计。
STC单片机复位
--掉电/上电复位
当电源电压VCC低于掉电复位/上电复位检测门限电压时,将单 片机内的所有电路复位。该复位属于冷启动复位的一种。当内部 VCC电压高于掉电复位/上电复位检测门限电压后,延迟32768个时 钟后结束掉电/上电复位过程。当该过程结束后,单片机将特殊功能 寄存器IAP_CONTR中的SWBS/IAP_CONTR.6位置1,同时从系统 ISP监控区启动程序。
看门狗定时器实训报告

本次实训旨在使学生了解看门狗定时器的基本原理、工作方式以及在嵌入式系统中的应用,通过实际操作,掌握看门狗定时器的配置、使用方法,并学会利用看门狗定时器解决嵌入式系统中的故障和异常。
二、实训内容1. 看门狗定时器原理- 看门狗定时器是一种监测硬件或软件故障的定时器,其工作原理是在程序运行过程中不断重装载,以防止溢出引发中断或复位。
- 看门狗定时器分为独立看门狗和窗口看门狗两种类型。
2. 独立看门狗(FWDGT)- 独立看门狗使用独立的32kHz内部时钟,适用于对计时精度要求不高的场合。
- 独立看门狗内部有一个12位的向下计数的定时器,当计数值达到0时,会产生一个系统复位。
3. 窗口看门狗(WWDGT)- 窗口看门狗使用PCLK分频而来的时钟,计数器位数较小,需要在窗口范围内重装载以防复位。
4. 看门狗定时器的配置与使用- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。
- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。
- 在程序中定期重装载看门狗定时器,以防止系统复位。
5. 看门狗定时器的实际应用- 利用看门狗定时器解决嵌入式系统中的故障和异常。
- 通过看门狗定时器监控程序运行状态,防止死锁。
- 作为系统安全特性的一部分,确保在检测到异常时能够安全地重启系统。
1. 准备工作- 准备好实训所需的硬件设备和软件环境,如单片机开发板、调试器、IDE等。
2. 环境搭建- 根据实际需求搭建实训环境,包括硬件电路连接和软件配置。
3. 看门狗定时器配置- 了解看门狗定时器的相关寄存器,如预分频器、计数器、重装载寄存器、键寄存器和状态寄存器等。
- 根据实际需求配置看门狗定时器的时钟源、计数器值、窗口范围等参数。
4. 程序编写- 编写程序,实现看门狗定时器的初始化、重装载和监控功能。
- 在程序中定期重装载看门狗定时器,以防止系统复位。
5. 调试与验证- 使用调试器对程序进行调试,观察看门狗定时器的运行状态。
016:MSP430_WDT看门狗定时器

016:MSP430_WDT看门狗定时器1, 看门狗定时器概述看门狗定时器(WDT)是 MSP430 系列单⽚机中常⽤的⼀种部件。
在⼯业现场,往往会由于供电电源、空间电磁⼲扰或其他原因引起强烈的⼲扰噪声。
这些⼲扰作⽤于数字器件,极易使其产⽣误动作,从⽽失去应有的控制功能,引起 MSP430 发⽣“程序跑飞”事故。
若不进⾏有效的处理,程序就不能回到正常的状态,从⽽失去应有的控制功能。
看门狗定时器正是为了解放这类问题⽽产⽣的,尤其是在具有循环结构的程序任务中更为有效。
在正常操作器件,⼀次 WDT 定时时间到,将产⽣⼀次器件复位。
如果通过编制程序使 WDT 定时时间稍⼤于程序执⾏⼀遍所⽤的时间时,并且程序执⾏过程中都有对看门狗定时器清零的指令,使计数器重新计数,则程序正常执⾏时,就会在 WDT 定时时间到达之前对 WDT 清零,不会产⽣ WDT 溢出,如果由于⼲扰使程序跑飞,则不会在 WDT 定时时间到达之前执⾏ WDT 清零指令,WDT 就会产⽣溢出,从⽽产⽣系统复位 CPU 需⽤重新运⾏⽤户程序,这样程序就可以⼜恢复正常运⾏状态。
MSP430 看门狗除了具有上述系统监测的特定⽤途之外,还可以作为内部定时器来使⽤,当选择的时间到达之后,和其他定时器⼀样产⽣⼀个定时中断。
此外 WDT 还可以被完全停⽌活动以⽀持超低功耗应⽤2 看门狗定时器结构3 看门狗定时器寄存器[1] WDTCTL 看门狗控制寄存器WDTCTL 由两部分组成:⾼ 8 位是对 WDT 操作的控制命令。
要写⼊操作 WDT 的控制命令,出于安全原因必须先正确写⼊⾼字节看门狗⼝令。
⼝令位 5AH,如果⼝令写错将导致系统复位。
读 WDTCTL 时,不需要⼝令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,⾼字节始终位 69H。
WDTCTL 除了看门狗定时器的控制位之外,还有两个⽤于设置 NMI 引脚功能。
WDTISx:选择看门狗定时器的计时输出其中 T 是 WDTCNT 的输⼊时钟源周期。
EnergyMicro+EFM32系列微控制器看门狗定时器(WDOG)

厦门办事处
E-mail:sales.xiamen@
沈阳办事处
E-mail:sales.shenyang@
产品应用笔记
©2012 Guangzhou ZLG MCU Technology Co., Ltd. ii
广州周立功单片机科技有限公司
看门狗定时器
EFM32 系列微控制器
2.1
基本操作 ................................................................................................................... 4
2.1.1 看门狗使能...........................................................................................................4
广州专卖店
地址:广州市天河区新赛格电子城 203-204 室 电话:(020)87578634 87569917 传真:(020)87578842
南京周立功
地址:南京市珠江路 280 号珠江大厦 1501 室 电话:(025) 68123901 68123902 传真:(025) 68123900
北京周立功
2.1.2 喂狗.......................................................................................................................4
2.2
配置........................................................................................................................... 4
看门狗定时器的使用介绍

看门狗溢出时间
时钟来源
看门狗溢出周期
12kHz(WDTCLK) 32kHz(RTC)
System Frequency/4 注:System Frequency 为 480kHz
2.73066s 1.00000s 0.27306s
总共有三种方法会产生系统复位,如下所示: ·正常操作时由 RES引脚发生复位 ·在暂停模式由 RES引脚发生复位 ·正常操作时由看门狗定时器超时发生复位
但也有可能进入死循环状态。有了 CLR WDT1 和 CLR WDT2 交换使用的功能,就可以避免这种情
况的出现。当程序进入循环后,例如:
LOOP: ……
CLR ……
WDT1
;在 loop 中执行第一句清零 WDT 语句
SZ
……
HT47R20A-1 看门狗定时器(WDT)使用介绍
JMP LOOP
CLR WDT2
;在 loop 后执行第二句清零 WDT 语句
……
第一次执行 CLR WDT1 指令能够清除 WDT,若发生死循环,则循环过程中再次执行 CLR WDT1
指令都不能清除看门狗定时器,因此还是能够产生 WDT 溢出,实现系统复位,从而跳出死循环状
态。
……
wdt_ov:
……
说明
1.CLR WDT 指令和 CLR WDT1 指令的机器码是相同的,即这两条指令是等效的。 2.CLR WDT1 和 CLR WDT2 必须交互使用才能清除看门狗定时器,如果重复使用,则不能清除看
门狗定时器。如:
…… CLR WDT1
;可以清除看门狗定时器的内容
……
CLR WDT2
u
u
0
1
1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十八章看门狗定时器
概述
S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。
它可以用作一个普通的16位内部定时器来请求中断。
WDT产生一个128个PCLK周期的复位信号。
特性
—具有中断请求的正常内部定时器模式
—当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号
看门狗定时器操作
图18-1描述了WDT的功能方框图。
WDT只使用PCLK作为其时钟源。
PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。
预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。
使用下式计算WDT频率和每个定时器时钟周期的容差
t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )
WTDAT和WTCNT
一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。
调试环境的考虑
当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。
WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。
WDT控制寄存器WTCON
WTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。
WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。
如果希望将WDT用作普通定时器,使能中断并关闭看门狗。
WDT数据寄存器WTDAT
WTDAT寄存器中的值指定溢出的时间。
它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。
这种情况下,WTDAT的值将自动加载到WTCNT中。
WDT计数寄存器
WTCNT显示WDT的当前值。
注意WTDAT的值不会在初始化WDT使能时自动加载到WTCNT中,因此在使能WDT前必须手动设置WTCNT的初始值。