Hallo,
ich versuche gerade mit dem oben genannten Controller einen Analogwert
an POARTA:0 mit dem ADCA zu wandeln. Meine Initialisierung sieht wie
folgt aus:
1 | uint8_t ADCA_Init()
|
2 | {
|
3 | ADCA.CALL = ReadCalibrationByte( offsetof(NVM_PROD_SIGNATURES_t, ADCACAL0) );
|
4 | ADCA.CALH = ReadCalibrationByte( offsetof(NVM_PROD_SIGNATURES_t, ADCACAL1) );
|
5 |
|
6 | PORTA.DIRCLR = 0xFF;
|
7 | ADCA.CTRLA = ADC_ENABLE_bm;
|
8 | ADCA.CTRLB = ADC_RESOLUTION_12BIT_gc;
|
9 | ADCA.REFCTRL = ADC_REFSEL_INT1V_gc | ADC_BANDGAP_bm;
|
10 | ADCA.PRESCALER = ADC_PRESCALER_DIV512_gc;
|
11 |
|
12 | ADCA.CH0.CTRL = ADC_CH_GAIN_1X_gc | DC_CH_INPUTMODE_SINGLEENDED_gc;
|
13 | ADCA.CH0.MUXCTRL = 0x00;
|
14 | ADCA.CH0.INTCTRL = ADC_CH_INTLVL_LO_gc;
|
15 |
|
16 | return(1);
|
17 | }
|
18 |
|
19 | ISR(ADCA_CH0_vect)
|
20 | {
|
21 | uint8_t tmp;
|
22 | tmp = ADCA.CH0.RESL;
|
23 | adc_result = (ADCA.CH0.RESH << 8) | tmp;
|
24 | }
|
Nun lege ich den PIN auf GND und trotzdem wird etwas ungleich 0 (etwa
180) angezeigt. Ich habe das Gefühl, dass der Eingang noch auf der
Temperaturreferenz hängt, denn wenn ich die zuschalte und den Controller
"beföne", funktioniert das (es ändert sich der Wert etwa um 2000 herum).
Kann mir bitte jemand sagen, was ich nicht beachtet habe.
Grüße, Alex