返回目录:游戏解答
单片机中的看门狗指的是一个定时器电路,有一个输入和一个输出,其中输入叫做喂狗,输出连接到另外一个部分的复位端。
看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。看门狗命令在程序的中断中拥有最高的优先级。
在由单片机构成的微型计e69da5e887aa7a64366算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果。
扩展资料
工作原理
使用时,WDT将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT 超时会强制器件复位。为避免WDT超时复位,用户必须定期用PWRSAV 或CLRWDT 指令将看门狗定时器清零。如果WDT 在休眠或空闲模式下超时,器件将唤醒并从PWRSAV 指令执行处继续执行代码。
在上述两种情况下,WDTO 位(RCON<4>)都会置1,表示该器件复位或唤醒事件是由于WDT超时引起的。如果WDT 将CPU从休眠或空闲模式唤醒,“休眠”状态位(RCON<3>)或“空闲”状态位(RCON<2>)也会置1,表示器件之前处于省电模式。
参考资料来源:百度百科-看门狗 (监控芯片)
参考资料来源:百度百科-看门狗定时器
看门狗(WDT)是一个定时器。看门狗是用来防止万一单片机程序出错造成重大损失的。防错的原理很简单,它在硬件上就是一个定时器,当它溢出的时候就会让单片机强制复位使程序重新开始执行。
正常的情况下是不能让它溢出的,所以在程序上每隔一段时间要给他置一次值(俗称喂狗),只要程序中正常给它喂他就不会溢出。
一旦程序跑飞了,有干扰或者进入死循环之类的情况时,不能正常执行程序了,那么就永远执行不到喂狗的指令了,但此时定时器是硬件控制的,仍然会走,所以溢出了,单片机就复位了。
一般安全性要求比较高的,系统跑飞了会造成重大事故的都会加一个“狗”保安全。
通常,看门狗的溢出时间越短越灵敏,跑飞之后复位的时间越短,也就越安全,但是,喂狗的操作也要更频繁。
扩展资料:
看门狗工作原理:
使用时,WDT将递增直到溢出或“超时e5a48de588b67a686964616f339”。 除非处于休眠或空闲模式,否则WDT超时将强制器件复位。 为避免WDT超时复位,用户必须使用PWRSAV或CLRWDT指令定期清除看门狗定时器。 如果WDT在休眠或空闲模式下超时。
器件将唤醒并从执行PWRSAV指令的位置继续执行代码。 在以上两种情况下,WDTO位(RCON <4>)将被置1,表明器件复位或唤醒事件是由WDT超时引起的。
如果WDT将CPU从睡眠或空闲模式唤醒,则还将置位“睡眠”状态位(RCON <3>)或“空闲”状态位(RCON <2>),表明该设备先前已上电。 保存模式。
在正常操作期间,WDT超时将产生设备复位。 当设备处于睡眠状态时,WDT超时将唤醒设备以继续正常操作(称为WDT唤醒)。 清零WDTE设置位可以永久关闭WDT。 后分频器分配完全由软件控制,也就是说,可以在程序执行期间随时更改它。
为避免不可预测的器件复位,当从Timer0预分频器分配更改为WDT后分频器分配时,必须执行以下指令序列。 即使禁止了WDT,也必须执行该指令序列。
参考资料来源:百度百科-看门狗定时器
正确百使用的前提下,看门狗在单片机程序里,处于防止程序死度循环造成程序死锁的独特地位,是十分必要的单片机程序抗干扰措施。你的《单片机教程》教材里边问没有具体讲到看门狗,也许是作者疏忽,也许是版本太老答(早期单片机没有版看门狗),也许是不在教学大纲范围内。你已经知道了,就学学怎么使用,多学一点对自己有好权处。
看门狗就是防止程序跑飞后,死机。跑来飞后,看门狗会重启程序源。
跑飞的情况一个是程序写的不好,百有BUG,还有就是外界干扰。
如果不度是做产品,自己试验的话,尽量不用问看门狗,因为如果程序跑飞,你需要答知道并且检查你的程序了。