单片机看门狗

时间:2024-11-08 08:33:25编辑:揭秘君

什么是看门狗它的原理 看门狗它的原理是什么

1、看门狗是一种电子器件,单片机中也含有该功能件。它的主要作用就是一个定时器,如果程序出现跑飞,在一定的时间内没有对看门狗复位(不能运行到有看门狗复位的语句),看门狗就会使系统复位。从而避免死循环的发生。

2、看门狗分硬件看门狗和软件看门狗。

3、硬件看门狗,是利用一个定时器电路,定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。

4、软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。


硬件看门狗工作原理

  你们知道什么是硬件看门狗吗?跟着我一起学习什么是硬件看门狗吧。

  硬件看门狗介绍

  看门狗,又叫watchdog timer,主要用来监控、管理CPU的运行状态,并对处于异常状态中的CPU进行复位操作,使其能重新工作。

  看门狗可分为硬件看门狗和软件看门狗两种。

  硬件看门狗的主体是一个定时电路,并由被监控CPU提供周期性“喂狗”信号,对定时器清零(俗称“清狗”)。CPU正常工作时,由于能定时“清狗”,看门狗内的定时器不会溢出。当CPU出现故障,则不能继续提供“清狗”信号,使得看门狗内定时器不断累加而溢出,从而触发一个复位信号对CPU进行复位,使CPU重新工作。

  软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。

  看门狗本身不是用来解决系统出现的问题,在调试过程中发现的故障应该要查改设计本身的错误。加入看门狗目的是对一些程序潜在错误和恶劣环境干扰等因素导致系统死机而在无人干预情况下自动恢复系统正常工作状态。看门狗也不能完全避免故障造成的损失,毕竟从发现故障到系统复位恢复正常这段时间内是不能正常工作的。同时一些系统也需要复位前保护现场数据,重启后恢复现场数据,这可能也需要一笔软硬件的开销。

  1).MR#:Manual-Reset,手动复位输入信号,低电平有效,当此管脚的输入电平低于0.6V时,会触发Reset#管脚输出一个复位信号,此管脚内部有 70uA 上拉电流。如要不使用此管脚,需要将此管脚接到VCC或者悬空,不可接地;

  2).VCC:芯片工作电压,接5V或3.3V;

  3).GND:芯片参考地,直接与单板GND相连;

  4).PFI:Power-Fail Comparator Input,电压监控输入管脚,当此管脚的输入电压低于1.25V时,FPO#及Reset#会输出低电平信号;

  5).PFO#:Power-Fail Output,电压监控输出管脚,当PFI的输入电平低于1.25V时,输出低电平,不使用此管脚时可将其悬空;

  6).WDI:Watchdog Input,清狗信号输入,WDI遇到一个上升沿/下降沿,内部看门狗定时器都将清0。WDI的输入信号超过1.6S不发生跳变时,看门狗内部定时器将会溢出并触发WDO#输出低电平;

  7).WDO#:Watchdog Output,看门狗输出,WDI超过1.6S不发生跳变时,WDO#将输出低电平,另外,VCC低于1.25V时也会触发WDO#输出低电平;

  8).RESET#:复位信号输出,低电平有效,低电平宽度为200ms,Reset#信号只会被VCC或MR#触发,WDO#有效时不会触发Reset#,除非将WDO#接到RESET#上。

  虽然MAX706与ADM706芯片在封装上相互兼容,但两者还是存在一些差异,具体如下:

  1).MAX706R是商业级器件,工作温度范围为:0-70 oC,而ADM706R是工业级器件,工作温度范围为:-40-85 oC,所以大家在选型的时候,一定要产品的工作环境是否对温度有要求;

  2).MAX706R的最小复位脉冲宽度为140ms,ADM706R的最小脉冲宽度为160ms;

  3).ADM706R的WDI管脚若悬空处于高阻状态时会禁止芯片工作,所以设计时,需要将WDI管脚通过4.7K电阻上拉到VCC。而MAX706不能被禁止,一上电就开始工作,所以WDI不需要上拉;

  4).ADM706R的PFO#信号不但会被PFI信号触发,同时也会被MR#信号触发,当MR#出现负电平时,会触发PFO#输出10KHz方波并保持,但MAX706的PFO#仅仅和输入PFI有关,不会受MR#管脚电平的影响;

  5).当MR#出现低电平时,对于MAX706芯片,WDO#将先于RESET#跳变,而ADM706却相反,WDO#后于RESET#跳变。

  为了使硬件看门狗更可靠,使用起来更灵活,当今主流的设计方式都是看门狗芯片配合逻辑器件(CPLD)来使用。

  此时,看门狗有三种清狗方式:

  1).正常工作时,CPU输出WDI信号清狗;

  2).CPU关闭看门狗(不输出WDI信号),由CPLD输出WDI清狗信号,此方法不推荐使用,容易出问题,有的设计规范中是严禁CPU关闭看门狗的;

  3).CPU挂死后,CPLD主动输出WDI清狗信号一段时间,如果CPU仍未恢复正常,则不再继续清狗,等待看门狗芯片内部定时器溢出后输出复位信号对CPU进行复位。

  在CPU上电启动期间内,是不能输出WDI信号去清狗的,而外部硬件看门狗是一上电就开始工作的,CPU的启动时间一般在一两分钟,而看门狗的定时器只有1.6s,超过这个时间不清狗就会输出复位信号对CPU进行复位,如果这样的话,CPU就会每隔1.6s重启一次,不能正常工作,如何规避这种问题的?

  在实际设计中是这样做的,如下图所示,在CPU上电启动的这段时间内,利用系统时钟信号CLK清狗,等CPU启动完成后,SWITCH自动将清狗信号切换成WDI。定时器和切换开关(SWITCH)是用逻辑模拟的,定时器的溢出时间可设(一般比CPU启动时间稍长一点点),等CPU启动完成后,定时器也随之溢出,并产生溢出信号,SWITCH接收到此溢出信号后,立即采取动作,将清狗信号从系统时钟切换到WDI。


单片机中的看门狗是什么东西,有什么作用

看门狗(WDT)是一个定时器。看门狗是用来防止万一单片机程序出错造成重大损失的。防错的原理很简单,它在硬件上就是一个定时器,当它溢出的时候就会让单片机强制复位使程序重新开始执行。正常的情况下是不能让它溢出的,所以在程序上每隔一段时间要给他置一次值(俗称喂狗),只要程序中正常给它喂他就不会溢出。一旦程序跑飞了,有干扰或者进入死循环之类的情况时,不能正常执行程序了,那么就永远执行不到喂狗的指令了,但此时定时器是硬件控制的,仍然会走,所以溢出了,单片机就复位了。一般安全性要求比较高的,系统跑飞了会造成重大事故的都会加一个“狗”保安全。通常,看门狗的溢出时间越短越灵敏,跑飞之后复位的时间越短,也就越安全,但是,喂狗的操作也要更频繁。扩展资料:看门狗工作原理:使用时,WDT将递增直到溢出或“超时”。 除非处于休眠或空闲模式,否则WDT超时将强制器件复位。 为避免WDT超时复位,用户必须使用PWRSAV或CLRWDT指令定期清除看门狗定时器。 如果WDT在休眠或空闲模式下超时。器件将唤醒并从执行PWRSAV指令的位置继续执行代码。 在以上两种情况下,WDTO位(RCON )将被置1,表明器件复位或唤醒事件是由WDT超时引起的。 如果WDT将CPU从睡眠或空闲模式唤醒,则还将置位“睡眠”状态位(RCON )或“空闲”状态位(RCON ),表明该设备先前已上电。 保存模式。在正常操作期间,WDT超时将产生设备复位。 当设备处于睡眠状态时,WDT超时将唤醒设备以继续正常操作(称为WDT唤醒)。 清零WDTE设置位可以永久关闭WDT。 后分频器分配完全由软件控制,也就是说,可以在程序执行期间随时更改它。为避免不可预测的器件复位,当从Timer0预分频器分配更改为WDT后分频器分配时,必须执行以下指令序列。 即使禁止了WDT,也必须执行该指令序列。参考资料来源:百度百科-看门狗定时器

上一篇:愿望胡彦斌

下一篇:没有了