WATCHDOG定时器简介:
WATCHDOG定时器也可以像一般的16位定时器一样用于产生周期性中断,也可以用于发出复位信号以重启时常的系统。它的结构与PWM很相似,如下图所示:
从上图我们可以发现,WATCHDOG 定时器先经过8位预分频将PCLK分频后,被再次分频得到4种频率,16分频、32分频、64分频、128分频,WATCHDOG 定时器可以通过设置 WTCON[4:3]来决定工作在哪种频率之下,WTCHT 寄存器按照其工作频率减1计数,当达到0时,可以产生中断信号,可以输出复位信号。在第一次使用WATCHDOG 定时器时,需要往WTCNT 寄存器中写入初始计数值,以后在计数值到达0时,自动从WATDAT 寄存器中装入,重新开始下一个计数值。
使用WATCHDOG定时器的“WATCHDOG 功能”时,在正常的程序中,必须不断重新设置WTCNT 寄存器,使之不为0,这样可以保证系统不被重启,这就是所谓的“喂狗”啦。当程序崩溃时不能正常“喂狗”,计数值达到0后系统将被重启,这样程序将重新运行。
有关WATCHDOG 定时器的寄存器只有3个。我们来简单介绍一下:
1、WTCON 寄存器(WATCHDOG TIMER CONTROL)
用于设置分频系数,选择工作频率,决定是否使能中断,是否启用WATDOG 功能(即是否输出复位信号),WATCHDOG 定时器的工作频率可以通过下面这个公式计算:
WATCHDOG 定时器工作频率 = PCLK / {prescaler +1 } / {divider value }
{prescaler value } = 0~255, {divider value} = 16,32,64,128。