菜鸟提问:2440看门狗定时器
//看门够计算时间: t=1/[Pclk/(预分频值+1)/分频系数]
void WDTinit()
{
rWTCON = (255<<8)|(3<<3)|(1);//50M/256/128 配置看门狗
rWTCNT = 0x3FFF; // rWTCNT 看门狗递减数据寄存器
rWTCON |= (1<<5); //看门狗定时器使能
}
void WDTfeed()
{
rWTCNT = 0xFFFF;
}
我没看懂这个的时间是多少?程序里面没有用到t=1/[Pclk/(预分频值+1)/分频系数]这个公式,难道是
配置 rWTCON = (255<<8)|(3<<3)|(1);//50M/256/128 配置这个之后,时间自动计算?
为什么这个程序里面没有用到WTDAT呢?
麻烦大家帮我讲讲,谢谢
[解决办法]
1) 配置 rWTCON = (255<<8)|(3<<3)|(1);之后,
自动完成Pclk/256/128 的计算;
2) WTDAT的内容用于看门狗定时器下溢出后,自动重载WTCNT。
自动重载功能主要用于看门狗定时器作为普通定时器使用时。
作为看门狗使用时,需要人工重载计数器,例如人工重载:rWTCNT = 0x3FFF。
故可以不使用WTDAT。
[解决办法]
看门狗复位的间隔时间就是你说的 WTCNT *t ;
如果 rWTCNT = 0xFFFF; 则时间间隔太长了, 所以,一般应该是 rWTCNT = 0x3FFF。
不需要 rWTDAT= 0xFFFF; 理由在1楼说过了