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:
- Queried Sampling (IS)
- Periodic Sampling (IR)
- Change Detection Sampling (IC)
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.