Hello I was under the impression that the xbee/xbee pro’s would handle collisions when transmitting and transmit when clear to do so. However, I had two xbee pros transmitting at the same time. One did not successfully transmit. I have the following questions:
I am using API mode.
I have the RN parameter set to 2
I am using broadcast mode to send messages.
- Should the xbee handle collisions? In other words should it wait until the network is quiet and then transmit or does it return immediately if the network is busy?
- How to use the transmit status api. Do you send it once or after every transmitted message? If you send it once, does it return the transmit status message after every message is transmitted?
- What is the normal transmit sequence when there is potential for collisions and broadcast mode?
According to the XBee ZB documentation, CSMA-CA is used to detect and avoid collisions.
Also the modules should automatically retransmit unsucessfully transmissions.
Does the ‘unsuccessfully module’ fire any packet out of it’s UART to indicate a failed transmission? This should be happen also, after several unsucessfully transmission retries.
I am not using the ZB comunications stack but the original xbee communications stack. But the documentation still talks about CSMA-CA as you mentioned.
When there are two modules talking at the same time one of the modules simply does not transmit anything on the network. I assume it is the loser based on the RN value. As far as I can tell no error message comes back across the UART. That’s why I was wondering if I had to enable it by sending a TX Status API message. And if I have to send a TX Status message do I have to send it after every message or does sending it once turn it “on”.
Both modules successfully transmit when there is no other activity on the network.
As I mentioned, I am using broadcast mode which, according to the documentation, does not wait for an ack but I would still assume it would try to retransmit should it detect a collision or that the network is busy.
To get a TX status packet back after a transmission, you must do the following within the TX Transmit packet:
- set the frameID byte to something other than 0
- Set “Disable Ack” bit in the options byte to 0.