用2530作为协调器,实践中,当协调器打开看门狗,又打开组网后,有新设备加入时,协调器会不停重启。 怀疑组网时,2530没处理过来,时间较长,造成协调器重启。
目前想的解决方案时: 组网时暂时关闭看门狗? 但看了下,没有找到关闭看门狗命令
Viki Shi:
你是不是忘记喂狗了?另外建议喂狗周期设置大一点
YiKai Chen:
直接去把WDCTL的bit3:2攝製成0就關掉了
user5798117:
回复 Viki Shi:
如果是忘记喂狗。 那么,其他情况下应该也不能正确运行。
现在看,确实只有在组网时有问题。
喂狗,目前在两个地方做了:
一个是设置了 500ms 的周期;
另外一个:
osal_start_system 函数中给,每次处理事件前,都会喂狗。 不知道有没有副作用?void osal_start_system( void )
{
#ifdef USE_ICALL/* Kick off timer service in order to allocate resources upfront.* The first timeout is required to schedule next OSAL timer event* as well. */ICall_Errno errno = ICall_setTimer(1, osal_msec_timer_cback,(void *) osal_msec_timer_seq,&osal_timerid_msec_timer);if (errno != ICALL_ERRNO_SUCCESS){ICall_abort();}
#endif /* USE_ICALL */#if !defined ( ZBIT ) && !defined ( UBIT )for(;;)// Forever Loop
#endif{osal_run_system();
// hhh, 2018.11.15 watchDog
#if defined(WDT_IN_PM1)if (wdtEnabled)// hhh, 2019.3.18WD_KICK();
#endif#ifdef USE_ICALLICall_wait(ICALL_TIMEOUT_FOREVER);
#endif /* USE_ICALL */}
}
user5798117:
回复 YiKai Chen:
>> 直接去把WDCTL的bit3:2攝製成0就關掉了
设置: WDCTL = 0x00;
毫无作用。查看手册,似乎在 看门狗已经启动后,再次设置无用。
user5798117:
回复 YiKai Chen:
代码中,设置: WDCTL = 0x00;
但是并没有效果。 手册也指出, 在看门狗启动情况下,写寄存器不起作用
TI中文支持网