55 #define ADC_VBATT_TRIM 183
58 #define ADC_BASE (0x8000D000)
76 uint16_t BAT_COMP_OVER;
77 uint16_t BAT_COMP_UNDER;
113 uint16_t TIMER1_ON:1;
114 uint16_t TIMER2_ON:1;
115 uint16_t SOFT_RESET:1;
116 uint16_t AD1_VREFHL_EN:1;
117 uint16_t AD2_VREFHL_EN:1;
119 uint16_t COMPARE_IRQ_MASK:1;
120 uint16_t SEQ1_IRQ_MASK:1;
121 uint16_t SEQ2_IRQ_MASK:1;
122 uint16_t FIFO_IRQ_MASK:1;
129 uint16_t FIFO_CONTROL;
131 uint16_t FIFO_STATUS;
132 struct ADC_FIFO_STATUS {
139 uint16_t reserved2[5];
145 uint16_t CONVERT_TIME;
146 uint16_t CLOCK_DIVIDER;
150 struct ADC_OVERRIDE {
164 static volatile struct ADC_struct *
const ADC = (
void *) (ADC_BASE);
166 #define NUM_ADC_CHAN 9
168 #define adc_enable() (ADC->CONTROLbits.ON = 1)
169 #define adc_disable() (ADC->CONTROLbits.ON = 0)
170 #define adc_select_channels(chans) (ADC->SEQ_1 = (ADC->SEQ_1 & 0xFE00) | chans)
171 void adc_setup_chan(uint8_t channel);
173 extern uint16_t adc_reading[NUM_ADC_CHAN];
175 #define adc_voltage(x) (adc_reading[x] * 1200/adc_reading[8])
177 #define adc_vbatt 4095 * 1200/adc_reading[8] + ADC_VBATT_TRIM
179 void ADC_flush(
void);
180 uint16_t ADC_READ(
void);
181 void read_scanners(
void);
183 void adc_service(
void);
void adc_init(void)
Initializes the ADC controller.