SONIX 微控制器中Watchdog(看门狗)计时器的振荡源,来源于晶片内部独立的低速RC振荡。看门狗计时器的溢出时间为:256ms@5V、512ms@3V,由于内部独立RC振荡频率受工作电压和环境温度影响,因此看门狗溢出时间为一般经验值,1系列母体可能不同,如1917,可以通过WTCKS,WTRATE,CLKMD这几个位来选择看门狗计时器的溢出时间。
看门狗除了在特殊场合用作计时器外,主要用来防止程式的跑飞。但如果使用方法不当,看门狗的作用便不能充分发挥。
用户可以通过Code
Option选项控制看门狗计时器。在编译选项中,Watch_Dog有3个配置选项可供选择:Always_On,Enable和Disable。各选项的选择可以参考datasheet看门狗计时器相关章节。程式中不可以打开或关闭Watchdog,清除WatchDog采用@RST_WDT,即给WDTR
赋值5A。1系列清狗采用B0BSET FWDRST指令。
复位看门狗计时器的位置:
一般来说复位看门狗计时器的最好位置是将重定设置在程式的主干道上。这样如果程式跑飞造成某个程式模组的闭环回不到程式的主干道上,看门狗计时器就会及时溢出促使晶片复位。特别要注意的是不要安置在副程式或中断处理程式中。而且复位看门狗计时器的动作最好只作一次,从而避免在某个闭环中还是一直复位,看门狗计时器也就失去了作用。
另外复位看门狗计时器也不能放置在Timer中断里,因为MCU跑到死回圈时,一样会进TIMER中断也会清看门狗计时器。
此外,用户可以在程式开始通过侦测
Pflag 系统寄存器中的 NT0 = 0、NPD = 0 来判定是否由看门狗计时器溢出复位,从而作相应的处理。