1. 介绍
看门狗定时器模块WDT_A的作用是在软件发生死机或跑飞后控制程序重启。当超过设定的时间而没有喂狗时,就会产生复位中断。如果不需要看门狗功能,可配置为普通定时器或者关闭。
- 8个可选定时时间
- 看门狗工作模式
- 定时器模式
- 带密码保护的控制寄存器
- 可选时钟源
- 允许关闭降低功耗
- 时钟故障保护
2. 看门狗操作
看门狗定时器模块可以配置为看门狗或普通定时器。WDTCTL是一个16位密码保护的读写寄存器。任何读或写访问都必须使用word指令,并且写访问必须使用密码05Ah。任何对WDTCTL的写操作,只要高字节的值不是05Ah,就会违反密码,并触发PUC系统重置。对WDTCTL的任何读取都是在高字节读取069h。字节读取WDTCTL高或低部分的结果是低字节的值。将字节宽的数据写入WDTCTL的上部分或下部分会导致PUC。
2.1 看门狗计数器WDTCNT
WDTCNT是一个32位计数器,软件不能直接访问。通过看门狗定时器控制(WDTCTL)寄存器控制WDTCNT并选择它的时间间隔。
2.2 看门狗模式
PUC完成后,WDT_A模块自动使用SMCLK配置在看门狗模式下,初始复位间隔为32ms。用户必须在初始重置间隔到期之前设置或停止WDT_A。当配置为看门狗模式时,如果向WDTCTL写入密码错误或超过所选时间间隔,都会触发PUC。PUC将看门狗定时器重置为默认状态。
2.3 定时模式
设置WDTTMSEL位为1选择了间隔定时器模式,该模式可以提供周期性中断。在间隔定时器模式下,WDTIFG标志会在所选时间间隔的过期时间置1。在指定的定时器时间间隔过期时,不会使用间隔定时器方式生成PUC,WDTIFG使能位WDTIE保持不变。
当WDTIE位和GIE位置1时,WDTIFG标志会请求中断。当中断请求得到服务时,WDTIFG中断标志被自动重置,或者它可能被软件重置。定时器模式下的中断向量地址与看门狗模式下的中断向量地址不同。
看门狗定时器间隔应该和WDTCNTCL = 1一起在一条指令中改变,以避免意外的立即PUC或中断。看门狗计时器应该在改变时钟源之前停止,以避免可能的错误间隔。
2.4 看门狗中断
看门狗定时器在SFRs中使用两个位来进行中断控制:
- WDT中断标志,WDTIFG,位于SFRIFG1.0
- WDT中断启用,WDTIE,位于SFRIE1.0
在看门狗模式下,WDTIFG源于一个复位矢量中断 。当看门狗超时事件发生时,WDTIFG将自动清除。读取SYSRSTIV可以判断复位是否是由看门狗超时事件引起的。在定时器模式下使用看门狗定时器时,在选定的时间间隔后将WDTIFG标志置1,并请求定时器中断。WDTIFG标志在中断被服务时自动复位,或者可以用软件复位。