原创 简析单片机“看门狗”的应用(zz)

2008-1-9 17:06 4635 5 5 分类: MCU/ 嵌入式

随着单片机技术的发展和制造工艺的日臻成熟,单片机的应用领域不断拓宽,但是,由于单片机自身的抗干扰能力较差,

特别是在一些条件比较恶劣,噪声大的场合,常常会出现单片机因受外界干扰而导致死机的现象,造成系统不能正常工作

。设置“看门狗”就是防止单片机死机、提高单片机系统抗干扰性的一种重要途径。

    下面简要介绍常用的看门狗技术及具体的实现方法,从提高看门狗工作可靠性的角度,分析常用看门狗方案的优缺点,

以及在使用中应该注意的问题。

    软件看门狗

    是利用单片机片内的定时器/计数器单元作为看门狗, 在单片机程序中适当地插入“喂狗”指令,当程序运行出现异常

或进入死循环时,利用软件将程序计数器赋予初始值, 强制性地使程序重新开始运行。

    1、首先在初始化程序中设置好定时器/计数器的方式控制寄存器(TMOD)和定时时间的初值,并开中断。


    2、根据定时器的定时时间,在主程序中按一定的间隔插入复位定时器的指令,即插入“喂狗”指令,两条“喂狗”指

令间的时间间隔(可由系统时钟和指令周期计算出来)应小于定时时间,否则看门狗将发生误动作。

    3、在定时器的中断服务程序中设置一条无条件转移指令,将程序计数器转移到初始化程序的PC入口。

    以 MCS-51系列单片机为例,晶振频率为12MHZ,定时器 0 工作在方式1,定时时间为20MS,则定时器 0 的初值应设为

TH0=#0B1H,TL0=#0E0H,具体程序段如下。

      ORG 0000H
      AJMP MAIN
      ORG 000BH
      LJMP TOP
MAIN: MOV SP,#60H
      MOV PSW,#00H
      MOV IE,#00H
      MOV IP,#00H
      MOV TMOD,#01H
      LCALL DOG
      ...

DOG:  MOV TH0,#01BH
      MOV TL0,#0E0H
      SETB TR0 ; 重置定时器 T0 的初值并启动, 即“喂狗”
      RET

TOP:  POP ACC
      POP ACC
      CLR A
      PUSH ACC
      PUSH ACC
      RETI

    程序说明:当程序正常运行时,定时器T0不会发生溢出;而程序运行异常时,定时器T0超时溢出,进入中断矢量地址

000BH,执行“LJMP TOP”指令,程序进入TOP中,执行完TOP程序后就将0000H送入PC,从而实现软件复位。

    软件看门狗的最大特点是无需外加硬件电路,经济性好。当然,这种方式要占用定时器。

    单片机自代看门狗

    AT89S52本身具有看门狗寄存器WDTRST(地址为0A6H的SFR),当看门狗激活后,用户必须向WDTRST依次写入01EH和

0E1H喂狗来避免WDT溢出。喂狗子程序DOG如下:

DOG: MOV 0A6H,#01EH
     MOV 0A6H,#0E1H
     RET

    由于看门狗使用的是CPU的晶振。因此在晶振停振的时候看门狗也无效。另外这种看门狗的时间是固定的,无法更改。

当晶振为12M时每16MS需喂狗一次。实际应用时发现时间太短,当程序工作量很大时“喂狗”的地方就很多。容易造成某程

序段中死循环,因此可靠性不是很高。

    硬件看门狗

    硬件看门狗是指一些集成化的专用看门狗电路,它实际上是一个特殊的定时器,当定时时间到时,发出溢出脉冲。从实

现角度上看,该方式是一种软件与片外专用电路相结合的技术,硬件电路连接好以后,在程序中适当地插入一些看门狗复位

的指令,即“喂狗”指令,保证程序正常运行时看门狗不溢出;而当程序运行异时,看门狗超时发出溢出脉冲,通过单片机

的RESET引脚使单片机复位。

    在这种方式中,看门狗能否可靠有效地工作,与硬件组成及软件的控制策略都有密切的关系。

    常用的硬件看门狗很多,如MAX813L,X5043/X5045等等。X5045是一种可编程的专用看门狗定时器,定时时间可通过软

件进行选择(200MS,600MS,1.4S),它内部包含看门狗电路、电压监控电路和4KB的E2PROM。详细请查阅有关资料。

    下面以MAX813L为例介绍硬件看门狗的使用

    MAX813L 是美国 MAXIM 公司生产的低价格单片机监控电路。它减少了在微处理器系统中采用分离元件来实现监控功能

所用的元器件数量和复杂性,并能提高系统的可靠性和准确性。它除有看门狗作用以外,还有电源电压检测和上电手动复位的

功能。

    下图为一典型应用,只要单片机的P1.7口每1.6S内操作一次CPL P1.7,即完成了一次喂狗,PFI为电压监测端。

    当单片机超过1.6S未向 MAX813L 的看门狗输入端发脉冲信号,MAX813L内部的定时器将会强制将 WDO 拉到低电平,这个

低电平通过MR产生复位信号。单片机复位后从初始状态开始运行,从而保证系统的可靠性,起到了看门狗的作用。

    本设计已应用于实际的工控系统中,经过测试表明效果较好,是一种理想的监控电路。

dog.png
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条