随着单片机技术的发展和制造工艺的日臻成熟,单片机的应用领域不断拓宽,但是,由于单片机自身的抗干扰能力较差, |
特别是在一些条件比较恶劣,噪声大的场合,常常会出现单片机因受外界干扰而导致死机的现象,造成系统不能正常工作 |
。设置“看门狗”就是防止单片机死机、提高单片机系统抗干扰性的一种重要途径。 |
下面简要介绍常用的看门狗技术及具体的实现方法,从提高看门狗工作可靠性的角度,分析常用看门狗方案的优缺点, |
以及在使用中应该注意的问题。 |
软件看门狗 |
是利用单片机片内的定时器/计数器单元作为看门狗, 在单片机程序中适当地插入“喂狗”指令,当程序运行出现异常 |
或进入死循环时,利用软件将程序计数器赋予初始值, 强制性地使程序重新开始运行。 |
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产生复位信号。单片机复位后从初始状态开始运行,从而保证系统的可靠性,起到了看门狗的作用。 |
本设计已应用于实际的工控系统中,经过测试表明效果较好,是一种理想的监控电路。 |
文章评论(0条评论)
登录后参与讨论