硬件看门狗
硬件看门狗是利用了一个守时器,来监控主程序的运转,也就是说在主程序的运转过程中,咱们要在守时时刻到之前对守时器进行复位假如呈现死循环,或者说PC指针不能回来。那么守时时刻到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等。
软件看门狗
软件看门狗技能的原理和这差不多,只不过是用软件的办法完成,咱们还是以51系列来讲,咱们知道在51单片机中有两个守时器,咱们就可以用这两个守时器来对主程序的运转进行监控。咱们可以对T0设定必定的守时时刻,当发生守时中止的时分对一个变量进行赋值,而这个变量在主程序运转的开端已经有了一个初值,在这里咱们要设定的守时值要小于主程序的运转时刻,这样在主程序的尾部对变量的值进行判别,假如值发生了预期的改变,就阐明T0中止正常,假如没有发生改变则使程序复位。
关于T1咱们用来监控主程序的运转,咱们给T1设定必定的守时时刻,在主程序中对其进行复位,假如不能在必定的时刻里对其进行复位,T1 的守时中止就会使单片机复位。在这里T1的守时时刻要设的大于主程序的运转时刻,给主程序留有必定的的余量。而T1的中止正常与否咱们再由T0守时中止子程序来监督。这样就够成了一个循环,T0监督T1,T1监督主程序,主程序又来监督T0,然后确保体系的安稳运转。
体系软件”看门狗”的规划思路:
1.看门狗守时器T0的设置。在初始化程序块中设置T0的工作方式,并敞开中止和计数功用。体系Fosc=12 MHz,T0为16位计数器,最大计数值为(2的16次方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2.核算主控程序循环一次的耗时。考虑体系各功用模块及其循环次数,本体系主控制程序的运转时刻约为16.6 ms。体系设置”看门狗”守时器T0守时30 ms(T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将改写T0的初值。如程序进入”死循环”而T0的初值在30 ms内未被改写,这时”看门狗”守时器T0将溢出并请求中止。
3.规划T0溢出所对应的中止服务程序。此子程序只须一条指令,即在T0对应的中止向量地址(000BH)写入”无条件搬运”指令,把核算机拖回整个程序的榜首行,对单片机从头进行初始化并取得正确的履行次序。
责任编辑;zl