Coordinator receives unexpected periodic dumps of data from end device in pin hibernate mode?


I’m running two Xbee ZigBee series-2 devices. One is running Zigbee coordinator API and the other is running Zigbee end device API. I want the pair to operate in pin hibernate mode.

The sleep settings on my end device are:
SM = 1;
SP = AF0 (28 sec);
SO = 0x04;

The sleep settings on the coordinator are:
SP = AF0;

Any time the end device is powered on it sends the coordinator a Node Identification Indicator (expected) followed by 88 frames of IO Data Sample RX Indicator (unexpected since the pin 9 is set to high when this happens). Similar dumps of ~88 frames are sent to the coordinator every ~15 minutes.Other than these unexpected dumps of data, the Xbee does respond as expected to the lowering of voltage on pin 9 by sending IO data.

If something in my configuration settings causing this?

Turn off the change detect and Sample rate functions. Also make sure that the DIO lines are NOT set for ADC or Digital Input on the End device.

Thanks for your quick reply.

Change detect function is turned off. I do have the end device set to read the analog value at DIO3 and send it every 330ms when the end device is awake (pin 9 is set to low).

Is the pin hibernate mode not ideal for such a set up?

What you are missing is that every time the module wakes, it will sample the lines first, then the timer starts and the data will be sent again as long as the module is still awake.

I see. Thanks for explaining that. So pin hibernate is not the ideal setup for doing IO Data sampling, and perhaps the only reasonable transmission to track if the xbee was woken up from sleep is the Node Identification Indicator?

I am not sure I understand what it is you are trying to do. The Node Identifier is not something that is sent via the RF port without some sort of query such as a Node Discovery, a DN to the NI value or a ND to the NI value from the remote module.

I’ll try to be more clear. I have a switch that is momentarily (~1 sec) deactivated by human contact - this switch is connected to the pin 9 of the Xbee (battery powered end device). This causes the Xbee to come out of sleep. I then want the Xbee to send me the ADC/Digital boolean value at the DIO3 pin before it goes back to sleep (<1 sec).

Going back to your first recommendation of setting IR = 0, CD=0 and DIO lines disabled, how will I know that the end device Xbee is awake and the value at the DIO3 pin is high?

Sorry this is so long. I can post it as a separate question if you prefer.

Ok now I understand what it is you are wanting to do. In this case, enabled your desired ADC and DIO lines. Then set a sample rate so that it exceeds the time you are awake. What this will do is cause the module to sample when it wakes up, then cycle back to sleep before it can sample again.

SOLVED: I had tuned off my pull up resistors by setting PR = 0

Setting my PR value to 1FFF (default) and connecting a resistor between the pin 9 and ground solved the problem. My end device works in Pin hibernate mode now. When a low signal is applied to pin 9, the end device wakes up and send me ADC/DIO3 sample at the rate I specified in SR.

Thank you!

Thank you for all your help!

Hi, may i know where you can see the packet received in coordinator side? and how to retrieve it from the API packet?