标题:
关于MCU看门狗最通俗的介绍
[打印本页]
作者:
51hei社区
时间:
2016-1-14 02:57
标题:
关于MCU看门狗最通俗的介绍
本帖最后由 51hei社区 于 2016-1-14 03:10 编辑
看门狗
WatchDog
是一个很重要的资源,他能够有效的防止系统进入死循环或者程序跑飞。
0.png
(119.94 KB, 下载次数: 63)
下载附件
2016-1-14 03:10 上传
工作原理:在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
看门狗是类似与硬件保护卡之类
.
保护硬盘数据的
.
是单片机一个复位芯片
,
在单片机遇到异常情况之下自动复位
!~~
看门狗电路是用来看着你的
CPU
的,作用是不让你的程序丢失。
看门狗实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间
CPU
应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到
0
就认为程序没有正常工作,强制整个系统复位。
一般是为了程序进入死循环或死机!有的单片机不需外加看门狗电路(
PIC
)。
看门狗定时器对微控制器提供了独立的保护系统
.
当系统出现故障时
,
在可选的超时周期之后
,
看门狗将以
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
。延时完成,继续其它程序
看门狗在启动的时候一般都会设置超时时间,超时时间按照一定的频率递减,减到零就复位,所以得定时将一个计时器更新到最大,防止减小到零。超时时间初始化时一般都是固定好的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1