XBee Pro S2B - Voltage Supply Limit Exceeded modem status

I am currently using the XBee Pro S2B configured as a router running Firmware version v2370. Recently I’ve noticed a lot of Modem Status packets with a status of 0x0D - Voltage Supply Limit Exceeded. I added some packet logging to the MCU firmware that talks to the S2B and was seeing this status occurring roughly 20 to 30 seconds after initialization. In an effort to narrow down the problem I added more debugging but things progressively got worse - to the point where this is the first (and sometimes only) status I see from the S2B. Today I hooked up a DSO on the power supply lines right at the S2B and captured the voltage waveform from just before the MCU issued a hardware reset to the S2B until just after I received the 0x0D status. While I saw some glitches on the 3.3V line, I never saw it go above 3.34V or below 3.11V - well within the limits given in the spec. Then I had an idea - since the problem seemed to start within the last week (while I’ve made some significant changes to my ZigBee code) I decided to check out a copy of my code from a couple of weeks ago. I loaded it into the MCU and - surprise! - no more 0x0D status. Before I delve into a time consuming logic analyzer trace analysis of the differences in setup and timing between the two different pieces of code, has anyone seen anything like this? Can anyone think of any way that I can cause the S2B to return this status just by changes in the software that talks to it? Any insight would be greatly appreciated.

Thanks,
Dave

Could you post the code (both versions). What voltage is the MCU running on? Does the power supply have enough current available/ do you supply MCU and XBee with one or with different power supplies?

Markus

The good and bad versions of the zigbee.c file are attached. While there are major differences between the two files, they have two things in common. The first is zigbeeInit() which is called by main() during program startup and the second is zigbeeProcess() which is called when DMA has finished receiving a packet from the XBee. The rest of both files consist of support functions for the zigbeeProcess() function or functions associated with transmitting a packet.

As for the questions:

  1. Both the MCU and XBee are running on 3.3V.
  2. The power supply circuit which supplies both MCU and XBee is very similar to the power supply circuit used on the Digi demo board, including USB +5V as the input voltage.
  3. If there were not enough current available I should be able to capture a DSO trace when the voltage drops below 3.10V but I do not. About the lowest voltage threshold I’ve been able to capture a trace on is 3.11V.

Dave