
看门狗定时器是一个独立于CPU的计数单元,如果不采用特定的指令周期地使看门狗定时器复位,看门狗单元将会使系统复位。为了避免不必要的复位,要求用户软件周期地对看门狗定时器进行复位操作。如果不明原因使CPU中断程序,比如系统软件进人了一个死循环或者CPU的程序运行到了不确定的程序空间,从而使系统不能正常工作,则看门狗电路将产生一个复位信号使CPU复位,程序从系统软件的开始执行。通过这种方式,看门狗就可以监测软件和硬件的运行状态,提高了系统的可靠性。
F28l2/F281O DSP上的看门狗与240x器件上的基本相同,当8位的看门狗计数器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。如果不希望产生脉冲信号,则需要屏蔽计数器,或用软件周期地向看门狗复位控制寄存器写0x55+OxAA,该寄存器能够使看门狗计数器清零。图1为看门狗的功能框图。
WDINT信号使能看门狗作为IDLE/STANDBY模式唤醒的定时器。在STANDBY模式下,所有外设都将被关闭,只有看门狗起作用。WATCHDOG模块将脱离PLL时钟运行。WDINT信号反馈到LPM +H块,可以将器件从STANDBY模式唤醒。在IDI'E模式下,WDINT信号能够向CPU产生中断(该中断为WAKEINT)使CPU脱离IDLE工作模式。在HALT模式下,Pl-I-和OSC单元被关闭,因此不能实现上述功能。
图1 看门狗功能框图
在看门狗计数器(WDCNTR)溢出之前,如果采用正确的时序向WDKEY写人数据就可以使WDCNTR复位。当向WDKEY写0x55时,WDCNTR复位到使能位置;只有在向WDKEY写0xAA后才会使WDCNTR真正地复位。0x55和0xAA以外的任何数据写到WDKEY都会引起系统复位。只要向WDKEY写0x55和0xAA,无论写的顺序如何都不会导致系统复位,而只有先写Ox55再写OxAA才会使WDCNTR复位。表1列出了看门狗操作的几种情况。