看门狗WatchDog 是一个很重要的资源,他能够有用的避免体系进入死循环或许程序跑飞。
作业原理:在体系运转今后也就发动了看门狗的计数器,看门狗就开端主动计数,假设到了必定的时刻还不去清看门狗,那么看门狗计数器就会溢出然后引起看门狗中止,形成体系复位。
看门狗是相似与硬件维护卡之类.维护硬盘数据的.
是单片机一个复位芯片,在单片机遇到异常情况之下主动复位!~~
看门狗电路是用来看着你的CPU的,效果是不让你的程序丢掉。
看门狗实际上是一个计数器,一般给看门狗一个大数,程序开端运转后看门狗开端倒计数。假设程序运转正常,过一段时刻CPU应宣布指令让看门狗复位,从头开端倒计数。假设看门狗减到0就以为程序没有正常作业,强制整个体系复位。
一般是为了程序进入死循环或死机!有的单片机不需外加看门狗电路(P%&&&&&%)。
看门狗守时器对微控制器供给了独立的维护体系.当体系呈现毛病时,在可选的超时周期之后,看门狗将以RESET信号作出呼应.像x25045就可选超时周期为1.4秒,600毫秒,200毫秒三种.当你的程序死机时,x25045就会使单片机复位.
硬件看门狗WatchDog
是一个自我维护装置.他时刻监督体系的运转.一旦体系运转不正常.看门狗会复位体系.实际上看门狗是一个计时器.你要让这个计时器置零前给她一个信号.让他从头计时.这样起到一个监督体系运转的效果.
一般许多MCU带有这个电路。可是你能够不运用它。这样在上电的时分制止他。假设你要运用watchdog,那么你的体系就必须每隔一段时刻给这个电路一个信号。
假设你说的是软件看门狗,那么它的意思是:你能够创立一个看门狗,创立后开端计时,假设中心不被撤销什么的,一段时刻之后–这个时刻一般都能够有你自己指定–它就会触发,并且你能够指定看门狗触发时履行一个你自己供给的看门狗函数。
那么它的运用就能够是这样的:为了承认程序会不会走到某个当地,你能够先创立一个看门狗,然后在要承认的当地调用一个撤销看门狗计时的函数,假设程序的确走到了那个当地,看门狗被撤销,那么看门狗函数就不会被履行;假设看门狗函数被履行了,阐明程序没有走到该处,标明呈现了什么过错。这便是看门狗的运用。
motorola
mpc860这个芯片有个软件看门狗,当守时届时,芯片会复位。我看到他人的代码如下:
void
test(void)
{
发动看门狗
while(true)
{
…
}
}
照程序看来,假设看门狗不能中止的话,那必定得重启了,但在这个程序中,它又怎么的中止呢?看门狗用来在必守时刻之后重启CPU,正常情况下不要它重启CPU,所以守时要“喂狗”,其实便是告诉看门狗从头开端计时。这样一来,假设一切正常,看门狗每次在重启之前被触发从头计时,所以就永久不会重启。假设程序因为搅扰等原因“跑飞”,不知道履行到什么当地去了,看门狗就没人喂了,时刻一长,它就主动重启,程序康复正常。
看门狗这东西是加强可靠性用的。
看门狗是不随主芯片时钟的中止而中止的,它是一个独立的计时单元,假设你在程序中运用并设置了看门狗寄存器,在体系加电后它就会发动,若在指定周期内没有重置看门狗寄存器(也便是我们常说的喂狗),体系将会从头发动。
这种规划为体系供给了极高的可靠性,即便体系死锁,也能够及时的主动康复体系。
现在地绝大多数mcu都有这个
看门狗的首要操作一般有三种:发动,触发和停用.发动是指设置初始参数并调用中止以使看门狗开端作业;触发是指在看门狗的记数器的数值减为零曾经对其康复初始值;停用是指调用中止中止运用看门狗.在程序中应挑选恰当的当地对其进行触发挑选时有许多考究,程序比较大时会比较难确认,但运用它的确有许多长处不能说不容易用所以就不必
简直一切的嵌入式操作体系都有看门狗使命,它的首要功用是避免体系死掉或许堕入死循环。也便是每个必定的时刻就会履行看门狗使命,以reset体系.
喂狗的方法举个比如:在os使命调度的时分趁便触发一下看门狗,这样一旦使命长时刻中止调度体系就会复位,这个功用完结起来很简单,并不需要应用程序多操什么心。
照一般的看门狗守时的运用方法一般为:
1。设置看门狗控制器;//初始化狗的唤醒时刻,使能看门狗
2。睡觉;
//等候,或作其它的事
3。唤醒后检测中止位是否是由狗中止导致的唤醒
4。延时完结,持续其它程序
看门狗在发动的时分一般都会设置超时时刻,超时时刻依照必定的频率递减,减到零就复位,所以得守时将一个计时器更新到最大,避免减小到零。超时时刻初始化时一般都是固定好的。