2 * Copyright © 2012 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
24 * One set of samples read from the A/D converter or telemetry
32 #define ao_adc_ring_next(n) (((n) + 1) & (AO_ADC_RING - 1))
33 #define ao_adc_ring_prev(n) (((n) - 1) & (AO_ADC_RING - 1))
37 * A/D data is stored in a ring, with the next sample to be written
40 extern volatile __xdata struct ao_adc ao_adc_ring[AO_ADC_RING];
41 extern volatile __data uint8_t ao_adc_head;
43 extern volatile __xdata uint16_t ao_accel_ref[AO_ADC_RING];
46 /* Trigger a conversion sequence (called from the timer interrupt) */
50 /* Suspend the current task until another A/D sample is converted */
54 /* Get a copy of the last complete A/D sample set */
56 ao_adc_get(__xdata struct ao_adc *packet);
58 /* Initialize the A/D converter */
62 #endif /* _AO_ADC_H_ */