如何设计看门狗定时器?

在单片机组成的微机系统中,单片机的工作经常受到外界电磁场的干扰,导致程序失控,陷入死循环。程序正常运行中断,单片机控制的系统无法继续工作,会造成整个系统停滞不前,后果不堪设想。因此,出于实时监控单片机运行状态的考虑,产生了一种专门用于监控单片机程序运行状态的芯片,俗称“看门狗”(看门狗)。

看门狗电路的应用使单片机能够在无人值守状态下连续工作。其工作原理是看门狗芯片与单片机的一个I/O引脚相连,I/O引脚受程序控制定时向看门狗的这个引脚发送高电平(或低电平)。这个程序语句分散在单片机的其他控制语句中。一旦单片机因干扰而陷入程序段,进入无限循环状态,写看门狗引脚的程序就无法执行。此时看门狗电路会在其与单片机复位引脚相连的引脚上发出复位信号,使单片机复位,即从程序存储器的初始位置开始执行程序,从而实现单片机的自动复位。

看门狗,也叫看门狗定时器,是一种定时器电路。通常,它有一个输入,称为踢狗或服务狗,一个输出到MCU的RST端。MCU正常工作时,每隔一段时间向喂狗终端输出一个信号,复位WDT。如果在规定时间内没有喂狗,(一般是程序跑偏),当WDT计时超过时,会给MCU一个复位信号,这是MCU复位,防止MCU死机。看门狗的作用是防止程序无限循环,或者程序跑偏。

工作原理:系统运行后,看门狗计数器启动,看门狗开始自动计数。如果一段时间后看门狗未被清零,看门狗计数器将溢出,导致看门狗中断,系统复位。所以在使用带看门狗的芯片时要注意看门狗。

硬件看门狗是用一个定时器来监控主程序的运行,也就是说,在主程序运行过程中,我们要在预定时间到期之前重置定时器。如果出现无限循环,或者PC指针无法返回。然后,当时间到时,微控制器将被复位。常用的WDT芯片如MAX813、5045、IMP 813等。,价格从4到10元不等。

软件看门狗技术的原理与此类似,但都是通过软件实现的。我们以51系列为例。我们知道51单片机中有两个定时器,我们可以用这两个定时器来监控主程序的运行。我们可以为T0设置一定的定时时间,在定时中断发生时给一个变量赋值,这个变量在主程序运行开始时有一个初始值。这里我们要设置的计时值小于主程序的运行时间,这样在主程序结束时判断变量的值。如果值按预期变化,则表示T0中断正常,如果没有变化,则程序复位。对于T1,我们用来监控主程序的运行。我们为T1设置了一定的定时时间,并在主程序中将其复位。如果在一定时间内无法复位,T1的定时中断会使单片机复位。这里T1的定时时间要设置得比主程序运行时间长,给主程序留有一定的余量。T1的中断是否正常将由T0定时器中断子程序监控。这样,就足以形成一个循环。T0监控T1,T1监控主程序,主程序监控T0,保证系统稳定运行。

51系列有专门的看门狗定时器,按频率统计系统频率。当定时器溢出时,将导致复位。看门狗可以设置溢出速率,也可以单独用作定时器。

凌阳61的看门狗比较简单,一个是时间单一,另一个是只需要在循环中加入清狗指令,功能就可以实际使用。

C8051Fxxx MCU还有一个使用系统时钟的21位定时器,用于检测对其控制寄存器的两次特定写操作的时间间隔。如果该时间间隔超过编程限制,将产生WDT复位。

-

看门狗使用注意:大部分51系列单片机都有看门狗,不定期清除会导致复位。这可以防止程序失控。设计人员必须知道看门狗的溢出时间,以决定何时清除看门狗。清理看门狗不能太频繁,否则会浪费资源。程序正常运行时,软件每隔一段时间(小于定时器的溢出周期)设置一次定时器,可以防止溢出中断造成的误复位。

Watchdog应用:Watchdog是恢复系统正常运行的有效监控管理器(具有锁定光驱和任意指定程序的功能,可以在家庭中使用,防止孩子无节制地玩游戏、上网、看视频),具有很好的应用价值。

系统软件“看门狗”的设计思想;

1.看门狗定时器T0的设置。在初始化块中设置T0的工作模式,开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0的输入计数频率为。fosc/12,溢出周期为(65535+65435)。

2.计算主控程序一个周期的时间消耗。考虑到系统各功能模块及其循环次数,本系统主控程序的运行时间约为16.6 ms。系统将看门狗定时器T0设置为时间30 ms(T0的初始值为65 536-30 000=35 536)。主程序的每个周期都会刷新T0的初始值。如果程序进入“无限循环”,并且T0的初始值在30 ms内没有刷新,看门狗定时器T0将溢出并申请中断。

3.设计T0溢出对应的中断服务程序。这个子程序只需要一条指令,就是在T0对应的中断向量地址(000BH)写一条“无条件转移”命令,把计算机拖回整个程序的第一行,重新初始化单片机,获得正确的执行顺序。

看门狗也对电脑有害。如果用看门狗软件加密,发送到环网(如学校机房),每次都会造成两台电脑同时中毒一天,持续传播一周。比如运行速度太慢,桌面背景变化,绘图软件要黑绿。它还会导致每台计算机上的一些文件丢失。