I/O sampling

The XBee/XBee-PRO Zigbee RF Modules have the ability to monitor and sample analog and digital I/O lines. I/O samples can be read locally or transmitted to a remote device to provide an indication of the current I/O line states. You must enable API mode on the receiving device to send I/O samples out the serial port. If you do not enable this mode, the device discards the remote I/O samples.

There are three ways to obtain I/O samples, either locally or remotely:

I/O sample data is formatted as shown in the following table:

Bytes Name Description

1

Sample Sets

Number of sample sets in the packet (always set to 1).

2

Digital Channel Mask

Indicates which digital I/O lines have sampling enabled. Each bit corresponds to one digital I/O line on the device.

bit 0 = AD0/DIO0

bit 1 = AD1/DIO1

bit 2 = AD2/DIO2

bit 3 = AD3/DIO3

bit 4 = DIO4

bit 5 = ASSOC/DIO5

bit 6 = RTS/DIO6

bit 7 = CTS/DIO7

bit 8 = SLP_RQ/DIO8

bit 9 = ON_SLP/DIO9

bit 10 = RSSI/DIO10

bit 11 = PWM/DIO11

bit 12 = CD/DIO12

bit 13 = DOUT/DIO13

bit 14 = DIN/DIO14

For example, a digital channel mask of 0x002F means DIO0,1,2,3, and 5 are enabled as digital I/O.

1

Analog Channel Mask

Indicates which lines have analog inputs enabled for sampling. Each bit in the analog channel mask corresponds to one analog input channel.

bit 0 = AD0/DIO0

bit 1 = AD1/DIO1

bit 2 = AD2/DIO2

bit 3 = AD3/DIO3

bit 7 = Supply Voltage

Variable

Sampled Data Set

A sample set consisting of 1 sample for each enabled ADC and/or DIO channel, which has voltage inputs of 1143.75 and 342.1875 mV.

If any digital I/O lines are enabled, the first two bytes of the data set indicate the state of all enabled digital I/O. Only digital channels that are enabled in the Digital Channel Mask bytes have any meaning in the sample set. If no digital I/O are enabled on the device, these 2 bytes will be omitted.

Following the digital I/O data (if any), each enabled analog channel returns 2 bytes. The data starts with AD0 and continues sequentially for each enabled analog input channel up to AD3, and the supply voltage (if enabled) at the end.

The sampled data set includes 2 bytes of digital I/O data only if one or more I/O lines on the device are configured as digital I/O. If no pins are configured as digital I/O, these 2 bytes are omitted. Pins are configured as digital I/O by setting them to a value of 3, 4, or 5.

The digital I/O data is only relevant if the same bit is enabled in the digital I/O mask.

Analog samples are returned as 10-bit values. The device scales the analog reading such that 0x0000 represents 0 V, and 0x3FF = 1.2 V (The analog inputs on the device cannot read more than 1.2 V.). The device returns analog samples in order starting with AIN0 and finishing with AIN3, and the supply voltage. Only enabled analog input channels return data.

To convert the A/D reading to mV, do the following:

AD(mV) = (A/D reading * 1200mV) / 1023

The reading in the sample frame represents voltage inputs of 1143.75 and 342.1875 mV for AD0 and AD1 respectively.