微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 求教:--当cc2530 电量很低时的奇怪现象。

求教:--当cc2530 电量很低时的奇怪现象。

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

协调器A,电量充足。

路由器B,电池快没电了。

组网方式,mesh。

           目的是:当router 组网成功后,捕获   ZDO_STATE_CHANGE    向 协调器发送一个消息。

我的操作是:

路由器的操作:

uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
{
     if ( events & SYS_EVENT_MSG ){
            while ( MSGpkt ) {
                   switch ( MSGpkt->hdr.event ) {
                                  // Received whenever the device changes state in the network
                                 case ZDO_STATE_CHANGE:
                                         SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
                                         if ((SampleApp_NwkState == DEV_ROUTER) || (SampleApp_NwkState == DEV_END_DEVICE)){
                                                //入网成功,通知协调器
                                              AF_DataRequest( &DstAddr,&pDesc,Device_annce,17,Buf,&TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS ) ;

                                         }

............................

}

协调器操作:

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{

                switch ( pkt->clusterId ){

                         case SAMPLEAPP_POINT_TO_POINT_CLUSTERID:
                         break;

                         case Device_annce:

                              执行代码C

                 ...............................

}

奇怪现象是:

        当路由器B在快没电的情况下,和协调器A组网。网络状态变化,触发:ZDO_STATE_CHANGE。向协调器发送:Device_annce消息。此时路由器收到Device_annce消息后,会不断执行 “执行代码C”。

奇怪的是:     路由器B    拨掉电源。      协调器A,仍然不断执行代码C       !

求大牛指导指导。谢谢!

自己测试了好久,发现如下结果:

 1. 路由器B 在电量很低时,会不断的模拟重启过程。此时会发送大量的数据。

2.协调器A 收到这些数据后,会存储到队列里面,排队处理。

3.所以,当路由器B  拨掉电源后,原来存到协调器A中的数据,会不断的补传。。

新问题又来了:

协调器中,如何清除之前的队列消息呢?    -------    我试过,重启是不解决问题的,因为我预编译了:NV_RESTORE。

求指导。。。

1:当电量很低的时候,节点不断的Reset,是正常的。

2:关于你的路由器上做法,Device Announce是标准的ZDO层消息,所以没必要自己在应用层去添加AF发送函数,如果路由成功入网,会自动化Device Announce的

在void ZDApp_ProcessNetworkJoin( void )函数里面。

3:关于你的ZDO_STATE_CHANGE的这个事件不是说入网成功以后就到这里来了,只要第一次如果网,而且开启了NV功能,那么设备的类型都是保存着的,所以你只要上电就会有发数据的过程,但是其实没有执行入网的操作等。这个和Device Announce的设计违背的。、

4:关于ZigBee调试,最好用抓包来分析问题

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

网站地图

Top