嵌入式操作系统
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
使用时,WDT将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT 超时会强制器件复位。为避免WDT超时复位,用户必须定期用PWRSAV 或CLRWDT 指令将看门狗定时器清零。如果WDT 在休眠或空闲模式下超时,器件将唤醒并从PWRSAV 指令执行处继续执行代码。在上述两种情况下,WDTO 位(RCON《4》)都会置1,表示该器件复位或唤醒事件是由于WDT超时引起的。如果WDT 将CPU从休眠或空闲模式唤醒,“休眠”状态位(RCON《3》)或“空闲”状态位(RCON《2》)也会置1,表示器件之前处于省电模式。
在正常操作期间,一次WDT超时溢出将产生一次器件复位。当器件处于休眠状态时,一次WDT超时溢出将唤醒器件,使其继续正常操作(即称作WDT 唤醒)。对WDTE 设置位清零可以永久性地关闭WDT。
后分频器分配完全是由软件控制,即它可在程序执行期间随时更改。
为避免发生不可预测的器件复位,当从Timer0 预分频器的分配改为WDT 后分频器的分配时,必须执行下列指令序列。即使WDT 被禁止,也要执行这个指令序列。
看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒,看门狗定时器对微控制器提供了独立的保护系统,当系统出现故障时,在可选的超时周期之后,看门狗将以RESET信号作出响应,像x25045就可选超时周期为1.4秒、600毫秒、200毫秒三种。当你的程序死机时,x25045就会使单片机复位。
大多数看门狗定时器IC产生一个单一的,有限的输出脉冲持续时间当看门狗超时。这适用于触发复位或中断微处理器,但有些应用需要输出(故障指示灯)的锁存器。
考虑到安全性问题,汽车电子系统需要监控电路监测故障容限或安全性。看门狗定时器可理想满足这类需求,通过对微控制器正常工作条件下产生的周期脉冲进行检测,侦测电路或IC的失效状态,一旦发生故障可立即切换到备份/冗余系统。
简单来说,看门狗定时器是一种若在特定时间范围内未从处理器接收到周期性脉冲讯号,就会发出重设输出讯号的装置。其中一种应用这种装置的方法,是透过来自处理器的数字讯号输出(GPIO)回馈给外部看门狗定时器的看门狗输入(WDI)。TPS3851便是具有整合看门狗定时器的监控器,能够监控微控制器的电源轨,并透过外部方式监控从微控制器(MCU)发出的数字脉冲,如下图所示。
TPS3851所提供的看门狗监控
处理器周期性地向看门狗定时器发送一个脉冲,以表示系统软件的正常运作。若看门狗定时器在规定的时间范围(称为看门狗超时)内未接收到此脉冲,看门狗定时器将发出重设输出讯号。该重设输出讯号可以用于通知系统处理器出现了停机或冻结的情况,或重设处理器本身。下图为为在看门狗超时期间内接收的脉冲,以及在超过看门狗超时之后所接收的脉冲。
标准看门狗定时器的运作
看门狗定时器提供一种警报系统的机制,或重设一个软件历经冻结或停机的处理器。尽管没有人会刻意设计会冻结的软件,但优秀的系统设计人员还是会为故障做准备——因为未雨绸缪总是好的。若缺少这种监控,处理器可能会无限期地冻结,并导致更多的系统故障。像是TPS3851具有可调整超时间间隔的外部看门狗定时器,能够在几毫秒内辨识这些软件冻结,并适当地重设系统或处理器。因为要手动重设这些系统是不实际、甚至几乎是不可能的,因此这项功能在嵌入式或远程系统中更有其必要性。
原则上,看门狗定时器的功能不会过于复杂;然而,其在维持系统可靠性的重要性也不容小觑,尤其是在系统发生错误、人为的系统重设是困难甚至是不能实现的情况下。
全部0条评论
快来发表一下你的评论吧 !