微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZIGBEE 终端节点PM3休眠唤醒后无法入网,重复不断发送beacon ruquest请求,直至电量耗尽的问题

ZIGBEE 终端节点PM3休眠唤醒后无法入网,重复不断发送beacon ruquest请求,直至电量耗尽的问题

时间:10-02 整理:3721RD 点击:

我们使用ZIBEE 2007协议栈构建的一个传感器网络,网络结构如下图所示:

C-表示协调器,R为路由结点 D-为终端节点

R与C上电自动绑定,D与R通过按键操作绑定,D定时发送数据给绑定的RR再将数据传送给C,D发送完成后进入PM3休眠,通过外部中断唤醒,在系统运行过程中,经常性发生终端节点睡眠醒来后无法加入网,一直重复发送beacon Request,使用Packet Sniffer软件抓包如下图所示:

外部中断唤醒的代码能不能贴出来?

/*********************************************************************
//中断服务程序
*********************************************************************/
#pragma vector = P1INT_VECTOR
__near_func __interrupt void P1_ISR(void)
{
HAL_DISABLE_INTERRUPTS();
UTCTime_t rtcTime;
uint8 ctr1=0;
if(P1IFG & 0x08||P1IFG & 0x10) //RTC报警输出中断
{
//读取当前rtc的时间
ctr1=ReadOneByte(CTR1);
//如果是倒计时中断
if(ctr1&INTDF)
{
osal_set_event( sapi_TaskID, MY_REBOOT_EVT);
}
else if(ctr1&INTAF)
{
//读取当前rtc的时间
//GetRtcTime(&rtcTime);
//ClearAlarmOut();
//激活RF增益放大器芯片
P1_2=1;
delay_us(50000);
//HalLedBlink ( HAL_LED_1, 2, 50, 300 );
//osal_start_timerEx( sapi_TaskID, MY_WAKEUP_EVT, 3000);
osal_start_timerEx( sapi_TaskID, MY_REBOOT_EVT, 3000);
}
ClearAlarmOut();
//osal_start_timerEx( sapi_TaskID, MY_REBOOT_EVT, 3000);
}
P1IFG = 0;
P1IF = 0;
HAL_ENABLE_INTERRUPTS();
delay_us(10);
}

原来就一直出现以上描述的问题,所以把代码改成中断唤醒后都让终端节点重启。

后来这个一直加入不了网络的终端节点,重新打开协调器C的允许绑定功能后,那个终端节点就可以正常加入网络了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top