Forum: Mikrocontroller und Digitale Elektronik AD-Wandler im xMega32A4 macht Probleme


von Andy (Gast)


Lesenswert?

Hallo,
Ich verwende auf meinem Board einen Atxmega32A4 und u.A. den AD-Wandler, 
der mir ein paar Probleme bereitet.
Und zwar zeigt dieser mir zuviel an. Wenn ich den AD-Pin auf GND lege, 
gibt er mir noch immer über 500 Counts aus.

Hier meine Initialisierung und mein Aufruf:
1
/***********************************
2
**      AD-Wandler einstellen     **
3
************************************/
4
void adcInit()
5
{
6
    ADCA.CTRLA = 0x01;      //ADC enable
7
    ADCA.CTRLB = 0x00;      //unsigned mode,8Bit, Free Running Mode
8
    ADCA.REFCTRL = 0x20;    //Externe Referenz von PORTA
9
    ADCA.PRESCALER = 0x00;  // Vorteiler auf 4
10
}
11
12
13
/*********************************
14
**  AD-Werte auslesen       **
15
**********************************/
16
uint16_t getAdValue(uint8_t adChannel)
17
{
18
    uint16_t tmp=0;
19
  
20
21
    ADCA.CH0.MUXCTRL = 0x00;
22
    ADCA.CH0.MUXCTRL = adChannel<<3;
23
24
    ADCA.CH0.CTRL = 0x81;
25
    _delay_ms(5);
26
    tmp = (uint16_t)((float)ADCA_CH0RES/4);
27
    
28
    return tmp;
29
}
Am AREF-Pin (A0) habe ich 3,3V (mit C nach GND) angeschlossen. AVCC ist 
mit 100nF an GND.
Mache ich was falsch?

Vielen Dank!! lg

von Helmut R. (heru01)


Lesenswert?

Hallo Andy,

>was mache ich falsch?
nichts.
Alle XMegas haben einen Offset des ADCs, der abgenullt werden kann/muss. 
Threads dazu:
Beitrag "ADC Spannungsdrift bei Xmega"
Beitrag "Xmega ADC verhaut sich um 25 LSB. Hilfe"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.