Hallo,
ich habe hier einen ATXMega32D4 @32MHz, der ADC liefert nur den Wert
~548, unabhängig davon, welche Spannung an Pin A4 anliegt. Dieser Wert
ändert sich mit gewähltem Prescaler.
sieht jemand in folgendem Code einen grundsätzlichen Fehler?
Danke!
1 | PORTA_DIRCLR = (1<<PIN4);
|
2 | PORTA_PIN4CTRL = 0;
|
3 |
|
4 | ADCA.CTRLA = ADC_ENABLE_bm;
|
5 | ADCA.CTRLB = 0;
|
6 | ADCA.REFCTRL = (0b001<<ADC_REFSEL_gp); // VCC/1.6
|
7 | ADCA.EVCTRL = 0;
|
8 | ADCA.PRESCALER = ADC_PRESCALER_DIV64_gc;
|
9 | ADCA.CAL = 0x0444;
|
10 |
|
11 | ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN4_gc;
|
12 | ADCA.CH0.INTCTRL = 0;
|
13 | ADCA.CH0.INTFLAGS = ADC_CH0IF_bm;
|
14 | ADCA.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
|
15 |
|
16 | ADCA.CTRLA = (ADC_ENABLE_bm | ADC_CH0START_bm); // start
|
17 |
|
18 | while ((ADCA.INTFLAGS & ADC_CH0IF_bm) != ADC_CH0IF_bm) {
|
19 | _delay_us(2);
|
20 | }
|
21 |
|
22 | int res = ADCA.CH0RES;
|