看门狗复位电路主要是利用CPU在正常工作时定期对计数器进行复位,使计数器值不超过一定值; 当CPU无法正常工作时,计数器无法复位,因此其计数会超过一定值,从而产生复位脉冲,使CPU恢复到正常工作状态。 典型应用看门狗复位电路如图7所示。该复位电路的可靠性主要取决于软件设计,即定时向复位电路发送脉冲的程序放在哪里。 一般设计时,该程序放在定时器中断服务子程序中。 然而,有时这种设计仍然会导致程序失控或无法正常工作。 主要原因是:当程序“失控”发生时,定时器初始化并打开中断后,这种“失控”情况可能无法通过Watchdog复位电路来纠正。 因为定时器中断是实际产生的,所以即使程序出现异常,Watchdog也能正常复位。 为此,提出了定时器加预设的设计方法。 即初始化时将一个地址压入堆栈,并在该地址处执行中断关闭和无限循环语句。 尽可能使用子程序返回指令RET来替换所有未被程序代码占用的地址。 这样,当程序飞起来时,进入陷阱的可能性就会大大增加。 一旦进入陷阱,定时器就停止工作,中断被关闭,从而使看门狗复位电路产生复位脉冲,使CPU复位。当然,这种技术在实时性较强的控制或处理软件中使用有一定的困难。 -时间特征。
看门狗复位电路主要是利用CPU在正常工作时定期对计数器进行复位,使计数器值不超过一定值; 当CPU无法正常工作时,计数器无法复位,因此其计数会超过一定值,从而产生复位脉冲,使CPU恢复到正常工作状态。 典型应用看门狗复位电路如图7所示。该复位电路的可靠性主要取决于软件设计,即定时向复位电路发送脉冲的程序放在哪里。 一般设计时,该程序放在定时器中断服务子程序中。 然而,有时这种设计仍然会导致程序失控或无法正常工作。 主要原因是:当程序“失控”发生时,定时器初始化并打开中断后,这种“失控”情况可能无法通过Watchdog复位电路来纠正。 因为定时器中断是实际产生的,所以即使程序出现异常,Watchdog也能正常复位。 为此,提出了定时器加预设的设计方法。 即初始化时将一个地址压入堆栈,并在该地址处执行中断关闭和无限循环语句。 尽可能使用子程序返回指令RET来替换所有未被程序代码占用的地址。 这样,当程序飞起来时,进入陷阱的可能性就会大大增加。 一旦进入陷阱,定时器就停止工作,中断被关闭,从而使看门狗复位电路产生复位脉冲,使CPU复位。当然,这种技术在实时性较强的控制或处理软件中使用有一定的困难。 -时间特征。