嵌入式系统(八)看门狗
Published in:2023-12-09 | category: 嵌入式系统

1 看门狗原理

看门狗(Watch Dog Timer, WDT)是一种专门用于监测单片机程序运行状态的芯片组件。其实质是一个计数器,一般给看门狗初始一个比较大的数,

当程序开始运行后,看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。

如果看门狗一直都没有收到CPU的指令,直到减到了0,就认为程序没有正常工作,将强制整个系统复位

2 功能

看门狗是在程序跑飞的情况下,将CPU自恢复的一种方式,当软件在选定的时间间隔内不能置位看门狗定时器,看门狗就复位整个系统。

看门狗可用于电噪声、电源故障或静电放电等恶劣工作环境或高可靠性要求的环境。如果系统不需要应用看门狗,则看门狗定时器可配置成间隔定时器,在选定时间间隔内产生中断

3 看门狗工作模式

两种工作模式

第一种 定时器模式

在定时器模式下,它就相当于普通的定时器,当达到定时间隔时会产生中断(可以在 ioCC2530.h 文件中找到其中断向量为 WDT_VECTOR)

第二种 看门狗模式

而在看门狗模式下,当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信号。

4 看门狗控制寄存器

WDCTL

image-20231129173953885

看门狗定时器可以工作于两个模式:第一个 定时器模式 第二个 看门狗模式

情况一,在一般定时器模式下设置看门狗定时器,必须把WDCTL.MODE[1:0]位设置为11。且要求看门狗计数器从0开始递增。当计数器达到选定间隔值时,CPU将IRCON2.WDTIF置1。(如果IEN2.WDTIE=1且IEN0.EA=1,则定时器将产生一个中断请求)

在定时器模式下,可以通过写入1 到WDCTL.CLR[0]来清除定时器内容。当定时器被清除后,计数器的内容就置为0。写入00 或01 到WDCTL.MODE[1:0]可停止定时器,并对其清零。

情况二,在看门狗模式模式下设置看门狗定时器,必须设置WDCTL.MODE[1:0]位为10。

5 时钟系统 及其寄存器

由于看门狗本质是一个计时器,所以也要进行计时器相关的设置,比如始终的选择和频率之类的,主要通过

时钟控制命令寄存器CLKCONCMD

时钟控制状态寄存器CLKCONSTA(0x9E)

Prev:
嵌入式系统(九)电源低功耗管理
Next:
嵌入式系统(七)脉冲宽度调制