工作原理如下:“看门狗”技术就是使用一个“看门狗”定时器来对系统时钟不断计数,监视程序的运行。当看门狗定时器启动运行后,为防止看门狗定时器的不必要溢出而引起单片机的非正常的复位,应定期地把看门狗定时器清0,以保证看门狗定时器不溢出。当由于干扰,使单片机程序“跑飞”或陷入“死循环”时,单片机也就不能正常运行程序来定时地把看门狗定时器清0,当看门狗定时器计满溢出时,将在AT89S52的RST引脚上输出一个正脉冲(宽度为98个时钟周期),使单片机复位,在系统的复位入口0000H处重新开始执行主程序,从而使程序摆脱“跑飞”或“死循环”状态,让单片机归复于正常的工作状态。
原因很多啊1)程序没有结尾或不是循环的程序。
2)nmi管脚没有上拉。
3)在看门狗动作的时候程序会经常跑飞。
4)程序编制不当也会引起程序跑飞。
5)硬件系统有问题。
从本质上而言看门狗就是一定时器,定时器一启动就一直运行除非硬件复位或软件关闭,定时到一定时间自动的益出使系统复位,如65536US益出,则对单片机复位,系统重新运行,所以我们编程时一定要小于65MS时重置定时器的初值(喂狗),喂狗也不能太频繁,这样降低了CPU的工作效率,一般时间留20-30%的余量。看门狗也没办法使程序不跑飞,只是程序跑飞后能重新启动不至于死机而已。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)