hcs12x 的watchdog(2011-4-18)

在测试看门狗功能,原来以为很简单的东西,结果还是要搞很久,郁闷啊!两个寄存器:COPCTLARMCOP。配置很简单,按照spec来配置就可以了。

值得注意的是,COPCTL寄存器的值要一次写入,不能分别操作其中的位,这就是我郁闷很久的原因。

COPCTL的第七位为: WCOP。若写入COPCTL_WCOP=1,则看门狗行运在窗口模式下,必须在看门狗周期的后25%时间内向ARMCOP依次写入0X550XAA。若在其他时间写入,或写入其他值,都会让看门狗溢出,使单片机复位。若写入COPCTL_WCOP=0,则看门狗运行在正常模式下。当看门狗使能后,只要在看门狗溢出周期内依次向ARMCOP写入0X550XAA,使看门狗计数复零,即可。

第六位为:RSBCKBDM模式下的COPRTI 停止位。若COPCTL_RSBCK=1,则只要进入BDM模式,就停止COPRTI(实时中断)计数。若COPCTL_RSBCK=0,则在BDM模式下允许COPRTI运行。

低三位为:CR2CR1CR0。这三位是看门狗时钟分频位。当CR[2:0]=000时,看门狗COP不可用。只要CR[2:0]不为000,看门狗就开启了。当CR[2:0]=001时,分频值为(214次方)。当CR[2:0]=010时,分频值为(216次方)。当CR[2:0]=011时,分频值为(218次方)。当CR[2:0]=100时,分频值为(220次方)。当CR[2:0]=101时,分频值为(222次方)。当CR[2:0]=110时,分频值为(223次方)。当CR[2:0]=111时,分频值为(224次方)。

看门狗的溢出频率为:COP溢出频率=OSCCLK / CR[2:0]OSCCLK为晶振频率。周期为频率的倒数。

在正常运行模式下,只要配置好COPCTL,再写好喂狗程序,看门狗COP就可以工作了。

和看门狗COP相关的寄存器还有,不过一般情况下可以不管:

CLKSEL_COPWAI: 当CLKSEL_COPWAI=1时,COP在等待模式下不可用。当CLKSEL_COPWAI=0时,COP在等待模式下可继续运行。

PLLCTL_PCE: 当PLLCTL_PCE=1时,COP在伪停止模式下可用。当PLLCTL_PCE=0时,COP要伪停止模式下不可用。

 

你可能感兴趣的:(职场,watchdog,休闲,hcs12x)