- UID
- 1029342
- 性别
- 男
|
引言
看门狗定时器(WDT)在出现无效的软件运行状态时用来强行复位(硬件复位)嵌入式微处理器或微控制器,失效状态可以是简单地触发寄存器的某一位,或者是射线干扰或EMI (电磁辐射)。
本文介绍了一些针对具体应用选择最佳定时器的考虑。
WDT的典型应用
防止微处理器闭锁是WDT的一个典型应用,通常,嵌入式软件有一个“主循环”程序,用其调用子程序以实现不同的任务。每次程序循环对WDT进行一次复位,如果任何原因造成程序循环操作失败,看门狗定时器则发生超时,对器件进行复位。
具有WDT功能的系统非常适合检测误码,中断(包括存储器故障,EMI对存储器或接口放电)可能导致临时性的误码。这些误码会导致处理器输入、输出数据的极性翻转,当误码没引入到程序信息中时,微处理器将会执行错误的代码。很有可能造成处理器开始执行操作数,而非操作代码。程序开始执行这种错误代码时,将造成程序运行不正常,无法提供看门狗清零信号,从而导致处理器复位。合理的系统设计能够在复位后恢复系统的正常运行。
需要注意的是,WDT不能检测瞬态故障,按照定义,只有在WDT计数器达到预定的时间间隔时才会复位处理器。正是这一原因,需要选择一个最短超时周期,以便在系统失控之前由WDT产生复位,使系统恢复正常工作。
内部和外部WDT
WDT可以内置于微处理器,例如:MAXQ2000微控制器;也可以是一个独立的IC (外部WDT),或作为支持ASIC的一部分。无论是内部WDT,还是外部WDT,各有其优缺点。内部定时器有助于节省成本,但容易受程序运行失效的影响。相对成本较高的外部WDT具有一个独立的时钟源,能够提供更高的可靠性;经过适当配置,外部WDT不会受程序失效的影响。
WDT的基本原理
WDT的核心电路是计数寄存器,时钟源连续递增计数寄存器的值,计数器发生溢出时,看门狗逻辑电路强制系统复位。为防止复位,必须周期性地将计数寄存器清零,称其为“喂狗”。外部WDT IC具有一个数字输入引脚,该引脚从低到高或从高到低的跳变将计数寄存器清零。内部WDT的“喂狗”操作则不同,例如,MAXQ2000的WDT,可以通过设置寄存器位(MOVE WDCN.0, #1)的方式复位看门狗。PIC微控制器及其它微处理器则通过专用指令(CLRWDT)复位计数寄存器。
正确的软件操作能够在要求的期限内提供数字信号跳变,确保计数寄存器不会发生溢出。但当程序进入一个无限循环或出现“死机”时,将无法清零计数寄存器。发生这种情况时,看门狗将触发一次复位。WDT周期是计数器溢出的时间,为避免复位,必须在短于超时周期的时间内清零看门狗定时器。
有些WDT在基本计数寄存器架构的基础上增添了更多功能,例如:“窗检测”WDT或“最小/最大"超时WDT,这一功能会在发生过慢或过快的看门狗定清零时产生复位。如果在计数寄存器的数值低于某个门限时出现寄存器清零信号,器件将触发复位。简单地说,是在发生看门狗清零过快时触发复位,可以避免处理器工作在晶体标称频率的谐波状态下。另外一个功能是利用逻辑输入(外部看门狗)或寄存器位(内部看门狗)禁止WDT功能。 |
|