×
嵌入式开发 > 详情

一种新的单片机“看门狗”电路软件设计方法

发布时间:2020-07-07 发布时间:
|

随着MCS-51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,该问题可能导致一些智能型仪器仪表单片机工业控制系统发生“死机”。笔者通过近几年的设计实践及不断试验,总结了一套可靠的“看门狗”硬件电路软件设计方法。由于一些专业期刊曾经刊登过许多关于“看门狗” 硬件电路构成的文章,同时也详细的关于“看门狗”电路非正常失效故障原因的分析及针对性软件设计技巧[1],本文给出了一个采用MAX706和89C52 构成的“看门狗”硬件电路,并且从新的角度说明了如何确保“看门狗”电路的正常工作,同时给出了它的软件设计方法

1 “看门狗”硬件电路简述

现以MAX706监控电路为例(见图1)来说明“看门狗”硬件电路的工作过程,我们知道,MAX706是一种性能优良的低功耗CMOS监控电路芯片,其内部电路由上电复位、可重触发“看门狗”定时器及电压比较器等组成[2]。MAX706只要在1.6秒时间内检测到WCI引脚有高低电平跳变信号,则“看门狗”定时器清零并重新开始计时;若超出1.6秒后,WCI引脚仍无高低电平跳变信号,则“看门狗”定时器溢出,WDO引脚输出低电平,进而触发MR手动复位引脚,使MAC706复位,从而使“看门狗”定时器清零并重新开始计时,WDO引脚输出高电平,MAX706的RST复位输出引脚输出大约200毫秒宽度的低电平脉冲,使单片机控制系统可靠复位,重新投入正常运行。

2 “看门狗”电路软件设计方法

以往的“看门狗”电路复位指令(即“喂狗”)一般总是插入在主程序中,而且“喂狗”指令一般是脉冲式,可以连续用两条取反指令(如CPL P1.0)。这是因为一般情况下,程序跑飞或者陷入“死循环”时,中断功能可能不受影响,CPU仍能象正常运行时一样响应和执行中断子程序。这时如果中断子程序中插有“喂狗”指令,则“看门狗”定时器始终处于正常无溢出状态,无法对已经混乱的微机系统重新启动以投入正常运转状态。

在主程序中适当插入“喂狗”指令,大多数场合的单片机系统都能够比较可靠地工作。但是有一种特殊情况,即中断响应功能已经失效,而主程序仍然能够正常运行,这时“看门狗”电路对恢复单片机系统正常工作时无能为力的。例如:当程序正在执行中断子程序时,系统突然受到强烈干扰,程序跑飞,而且PC指针刚好落在主程序的指令字节上,堆栈也不溢出,使主程序能够继续正常运行。这时“看门狗”的“喂狗”动作正常,而中断再也不法响应了。这时因为在MCS-51的中断系统中有两个不可寻址的优先级状态触发器,分别指标两级中断响应状态。当CPU响应中断时,首先置位相应的优先级状态触发器(该触发器能指出CPU正在处理的中断优先级别),这时会屏蔽掉同级别的所有中断申请,直到执行RETI指令时,才由CPU硬件清零该优先级状态触发器,从而使以后的中断请求能被正常地响应[3]。如果响应中断后而不执行RETI指令,那么同级别中断申请就不会被响应了。





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
编译器跟编辑器有什么区别