Cypress Psoc4 Watchdog配置详解
Watchdog简述
看门狗用于异常复位,防止程序跑飞。
Watchdog特性
WDT有三个特性:
- 配置了中断后系统便可产生中断
- 在活动、睡眠和深度睡眠电源模式下定期产生中断/唤醒
- 具有16位的计数器
Watchdog框图
Watchdog配置流程
Watchdog初始化有三个寄存器需要配置,分别是WDT_MATCH、SRSS_INTR和SRSS_INTR_MASK。
1 匹配寄存器WDT_MATCH
设置WDT_MATCH寄存器的IGNORE_BITS,即设置忽略多少位计数值,例如设置4,则
该寄存器需要配置两个地方,IGNORE_BITS是指需要忽略几位,WDT最高有16位,如果填4的话,WDT就是用12位2^12 = 4096,则WDT_COUNTER值就会计数到4095,然后溢出才置0。而MATCH填入0x0FFF=4095,意味着counter达到该值后就进入复位中断。
2 初始化中断寄存器SRSS_INTR
查看用户手册如下图所示,需要对该寄存器操作用于清除中断标记。
注意次数
注意:此处有说明当连续两个看门狗溢出时,才会产生看门狗复位操作。
例如我们配置了128ms的复位时间,那么实际产生复位的时间是128*2 = 256ms
由描述可知,该寄存器bit0写1即为清0。
3 中断掩码寄存器SRSS_INTR_MASK
通过配置该寄存器来使能中断。
最终中断时间确认
通过配置上述的寄存器后,我们只需要确认程序中配置的LFCLK的频率大小。该值在Psoc Creator的Project Design模块的Clock中确认。
所以最后的中断时间为
Time = 4096 / 32000 = 0.128s = 128mS
注意
Cypress的Watchdog没法在debug模式下进行调试,只能脱机(无调试器)进行。可以通过去掉喂狗动作以及延长复位时间来观察配置是否使能了(看电流是否在波动)。