Other Parts Discussed in Thread: Z-STACK
Z-Stack Mesh 1.0.0 配置译如下:
-DPOWER_SAVING
-DRFD_RCVC_ALWAYS_ON=FALSE
//pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON;
pwrmgr_attribute.pwrmgr_device = PWRMGR_BATTERY;
按键为中断模式, EndDeviceEB(以下指设备A)能正常进入PM3模式,功耗为 0.8UA, 能通过按钮唤醒。
发现以下2个问题
1:当设备A从PM3模式下唤醒后,接收不到其它设备发给他的数据。
测试过程如下:
在设备A进入PM3后,其它设备发了一条数据给设备A后,当通过按钮唤醒设备A时,设备马上向父设备请求数据(通过Packet Sniffer看到有请求数据,但回复的是0),但父设备回复是没有数据。 设备A在唤醒时开了定时任务5秒,时间到后,设置以下参数,继续进入PM3模式
ZDApp_StopJoiningCycle();
NLME_SetPollRate( 0 );
NLME_SetQueuedPollRate( 0 );
NLME_SetResponseRate( 0 );
按键唤醒后马上设置以下参数:
ZDApp_StartJoiningCycle();
NwkPollReq(0);
NLME_SetPollRate(1000);
NLME_SetQueuedPollRate( 100 );
NLME_SetResponseRate( 100 );
如果在唤醒后,其它设备才发数据给设备A,设备A可以正常收到。
2: 当协议预编译了-DPOWER_SAVING, 通过HalLedSet( HAL_LED_5, HAL_LED_MODE_ON ); 来设置LED指示的开时,不管是在进入睡眠模式前,还是通过中断按键唤醒后,这个LED灯,并不是常亮,而是一闪一闪的, 只要注释掉 //-DPOWER_SAVING这句,也就不是不启用电源管理,指示灯正常。
如果#define HAL_LED true时,不使用HalLedSet(...)方式来控制LED,而是直接使用如P1_0 = 0(低电平驱动)时,LED灯还是一样,一闪一闪的,如果我将 HAL_BOARD._CFG.H中将LED使能关掉(#define HAL_LED false),直接使用 IO来控制,LED灯又可以正常工作,不出现所说的闪烁现象。
望得到TI技术或各位高手的解答,谢谢!