文章目录
- 1 看门狗原理
- 2 功能
- 3 看门狗工作模式
- 4 看门狗控制寄存器
- 5 时钟系统 及其寄存器
1 看门狗原理
看门狗(Watch Dog Timer, WDT)是一种专门用于监测单片机程序运行状态的芯片组件。其实质是一个计数器,一般给看门狗初始一个比较大的数,
当程序开始运行后,看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。
如果看门狗一直都没有收到CPU的指令,直到减到了0,就认为程序没有正常工作,将强制整个系统复位
2 功能
看门狗是在程序跑飞的情况下,将CPU自恢复的一种方式,当软件在选定的时间间隔内不能置位看门狗定时器,看门狗就复位整个系统。
看门狗可用于电噪声、电源故障或静电放电等恶劣工作环境或高可靠性要求的环境。如果系统不需要应用看门狗,则看门狗定时器可配置成间隔定时器,在选定时间间隔内产生中断
3 看门狗工作模式
两种工作模式
第一种 定时器模式
在定时器模式下,它就相当于普通的定时器,当达到定时间隔时会产生中断(可以在 ioCC2530.h 文件中找到其中断向量为 WDT_VECTOR)
第二种 看门狗模式
而在看门狗模式下,当达到定时间隔时,不会产生中断,取而代之的是向系统发送一个复位信号。
4 看门狗控制寄存器
WDCTL
看门狗定时器可以工作于两个模式:第一个 定时器模式 第二个 看门狗模式
情况一,在一般定时器模式下设置看门狗定时器,必须把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)