8051F410看门狗的使用方法
一、 看门狗概念
- 看门狗产生复位的条件:
通过 PCA 的模块 5 可以实现可编程看门狗定时器( WDT)功能。如果两次对 WDT 更新寄存器( PCA0CPH5)的写操作相隔的时间超过规定的极限, WDT 将产生一次复位。 - 使能/禁止WDT的软件实现方法:
可以根据需要用软件配置(操作寄存器)来使能/禁止 WDT。
当 PCA0MD 寄存器中的 WDTE 位被置 1 时,模块 5 被作为看门狗定时器( WDT)使用。WDTE = 1: PCA 模块 5 被用作看门狗定时器。 - 防止复位的方法:
如果在 WDT 被使能时 PCA0CPH5 和 PCA0H 发生匹配,则系统将被复位。为了防止 WDT 复位,需要通过写 PCA0CPH5 来更新 WDT(写入值可以是任意值)。
二、 看门狗定操作注意点
a) 在系统复位后看门狗被使能。也就是一上电,系统默认是打开看门狗的。解析:这里要特别注意,一般项目中,全局变量一多的话,会导致启动文件初始化过程延长,结果就是程序重复重启,进入不了main函数,主程序执行不了,解决办法就是在启动文件里加入关闭看门狗的汇编语句。
b) 在看门狗被使能时,对某些 PCA 寄存器的写操作受到限制。
解析:这样的话,就需要在设置PCA 寄存器之前,先禁止看门狗功能,在设置完成以后,再使能看门狗功能。
比如:
PCA0MD &= ~0x40;
PCA0L = 0x00;
PCA0H = 0x00;
PCA0CPL5 = 0xFF;
PCA0MD |= 0x40;
c) 在 WDT被使能的情况下,软件可以通过向 CCF5 标志( PCA0CN.2)写 1 来强制产生 WDT 复位。(做BootLoader的时候,可以使用此功能。)
d) 当 WDT 被使能时,模块 5 被强制进入软件定时器方式。写 CR 位并不改变 PCA 计数器的状态;计数器将一直保持运行状态,直到 WDT 被禁止。如果 WDT 被使能,但用户软件没有使能 PCA 计数器,则读 PCA 运行控制( CR)位时将返回 0。(CR=0,禁止 PCA 计数器/定时器。)
三、 看门狗定时器,定时时间的计算方法。
a) 看门狗定时器的概念:
答:看门狗定时器时间一到,如果此刻没有喂狗动作的话,那系统就会复位,所以此定时器定时的值,是防止系统复位,两次喂狗之间的时间间隔。
b) 如何确定看门狗定时器的值。
- 先看看C8051F410手册,相关定时器的值,有哪些概念。手册中说,
在WDT 被使能时,如果PCA0CPH5 和 PCA0H 发生匹配,则系统将被
复位。因为PCA0H是计数器的高字节,PCA0CPH5是捕获模块的高字节。那可以这样理解,PCA0H是从0开始递增计数(一次+1),PCA0H的值一直增加到和PCA0CPH5的值一样的时候,就是定时器定时时间到了。
那下一步,如果我们要设置看门狗定时时长,就需要知道PCA0CPH5 和 PCA0H 的值。
PCA0