第十八章看门狗定时器
概述
S3C2410的看门狗定时器用于当系统被噪声或系统错误等故障打断时返回控制器操作状态。
它可以用作一个普通的16位内部定时器来请求中断。
WDT产生一个128个PCLK周期的复位信号。
特性
—具有中断请求的正常内部定时器模式
—当定时器计数值到达0时产生一个128个PCLK周期的内部复位信号
看门狗定时器操作
图18-1描述了WDT的功能方框图。
WDT只使用PCLK作为其时钟源。
PCLK 频率经过预定标器,然后再进行分频产生相应的WDT时钟。
预定标器的值和分频因数在WDT控制寄存器WTCON中指定,有效的预定标器的值在0-(2的8次方-1)之间,分频因数可选为16、32、64、128。
使用下式计算WDT频率和每个定时器时钟周期的容差
t_watchdog = 1/( PCLK / (Prescaler value + 1) / Division_factor )
WTDAT和WTCNT
一旦WDT使能,WTDAT寄存器的值不能自动加载进WTCNT,因此必须在WDT启动前向WTCNT写入初始值。
调试环境的考虑
当S3C2410在使用嵌入式ICE调试模式时,WDT将自动关闭。
WDT可以通过CPU核心信号--DBGACK判断当前是否处于调试模式,一旦DBGACK信号被断言,WDT的复位输出将会无效,因为看门狗被中止工作。
WDT控制寄存器WTCON
WTCON寄存器允许使能/禁止WDT、选择4个不同的时钟信号源、使能/禁止中断、使能/禁止WDT输出。
WDT用于从故障后复位CPU,如果不需要复位,则应该禁止WDT。
如果希望将WDT用作普通定时器,使能中断并关闭看门狗。
WDT数据寄存器WTDAT
WTDAT寄存器中的值指定溢出的时间。
它不会在初始化WDT时自动加载到WTCNT中,但是用0x8000(初始值)将导致第一次溢出。
这种情况下,WTDAT的值将自动加载到WTCNT中。
WDT计数寄存器
WTCNT显示WDT的当前值。
注意WTDAT的值不会在初始化WDT使能时自动加载到WTCNT中,因此在使能WDT前必须手动设置WTCNT的初始值。