在工业使用现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声,这些干扰作用于数字元器件时,极易容易使其产生误动作,引起单片机发生“程序飞跑”或陷入死循环事故,使仪器“死机”。
为了检测程序状态,采用程序监视技术,即看门狗技术,使得程序可以脱离死循环状态。
在正常操作期间,一次看门狗定时器(WDT)定时时间到,将产生一次器件复位,如果通过编写程序使WDT定时时间稍大于程序执行一个周期所用的时间,并且在程序执行过程中有对WDT清零的指令,使计数器重新计数,则程序正常运行时,就会在WDT定时时间到之前对WDT清零,不会产生WDT的溢出。如果由于干扰信号使程序跑飞,则不会在WDT定时时间到之前执行WDT清零指令,WDT就会产生溢出,从而产生系统复位,单片机需要重新开始运行程序,这样程序就可以又回到正常的工作状态。
看门狗定时器也可做为内部定时器使用。
WDT定时器:
(1)WDTCNT :16位增计数器;
(2)WDTCTL:控制寄存器
WDTPW(15-8)--------看门狗定时器访问口令:读取时总为 69H,写时应该为5AH;
WDTHOLD(7)---------看门狗暂停位:0时,正常工作;1时暂停;
WDTNMIES(6)--------NMI边沿选择位:WDTNMI为1时选择NMI中断沿,0时,上升沿触发NMI中断;1时,下降沿触发NMI中断;
WDTNMI(5)----------RST/NMI引脚功能选择位:0时,为复位RST引脚;1时,为NMI中断输入引脚;
WDTTMSEL(4)--------工作模式选择位:0时,看门狗模式;1时,定时器模式;
WDTCNTCL(3)--------计数器清零控制位:0时,无作用;1时,计数器WDTCNT清零;
WDTSSEL(2)---------计数器时钟源选择位:0时,SMCLK;1时,ACLK;
WDTISx(1、0)-------定时间隔选择位:
0时,时间间隔=32768/看门狗时钟源频率
1时,时间间隔=8192/看门狗时钟源频率
2时,时间间隔=512/看门狗时钟源频率
3时,时间间隔=64/看门狗时钟源频率(单位:秒)