AtXMEGA32A4U + ADC

Gast #2517864
Lesenswert?

Guten Morgen,

hat hier jemand schonmal mit dem ADC der relative neuen XMEGA-A4U-Serie 
gearbeitet? Wir haben hier einen 32A4U und können die interne 
Bandgap-Spannung sowie VCC/10 korrekt messen.
Die Messung der externen Pins aber ergibt bei jeweils gleicher 
ADC-Konfiguration immer quasi den selben Wert (+-3LSB), unabhängig 
davon, welche Spannung am PIN anliegt. Erhöht man den ADC-Takt, zeigt 
sich das selbe Verhalten, nur liegt der durchschnittliche ADC-Wert 
deutlich höher.

Hat vieleicht jemand eine Idee, was da schief laufen könnte? Hatte 
jemand schon ein ähnliches Problem? Und hat schon jemand den A4U-ADC 
erfolgreich benutzt?

Vielen dank und herzliche Grüße,
Gast #2517946
Lesenswert?

>> Hat vieleicht jemand eine Idee, was da schief laufen könnte?
vielleicht das Programm.
>> Hatte jemand schon ein ähnliches Problem?
ja war das Programm.
>> Und hat schon jemand den A4U-ADC erfolgreich benutzt?
ja nachdem das Programm sauber lief.

Vielleicht irgenwas vergessen zu posten ?
Stefan
Gast #2517997
Lesenswert?

Da ihr nicht alles postet, habe ich meine Glaskugel bemüht.
Die ist sich fast sicher, dass ihr die Eingänge nicht direkt als 
Eingänge eingestellt habt.
Der XMega ist von den EIngängen her nicht wie die Atmegas. Das ist bei 
denen wesentlich komplexer und flexibler.
Die analogen EIngänge müssen meines Wissens nach auch noch als solche 
definiert und initialisiert werden.

Grüße, Jens
Gast #2518156
Lesenswert?

Hallo zusammen,

mit dem folgenden Ausschnitt konfigurieren wir den ADC:
1
uint16_t t;
2

3
PORTA_PIN0CTRL |= PORT_ISC_INPUT_DISABLE_gc;
4

5
ADCA_CTRLA = ADC_ENABLE_bm;
6

7
ADCA_REFCTRL |= ADC_REFSEL_VCC_gc;
8
ADCA_CTRLB = ADC_RESOLUTION_12BIT_gc;
9
ADCA_PRESCALER = ADC_PRESCALER_DIV128_gc;
10

11
// Configuring channel 0
12
ADCA_CH1_CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
13
ADCA_CH1_MUXCTRL = ADC_CH_MUXPOS_PIN0_gc;
14

15
ADCA_CH1_CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
16
ADCA_CH1_MUXCTRL = ADC_CH_MUXPOS_PIN0_gc;

Die Systemclock ist der halbe 32MHz DFLL, auf 48MHz USB-SOF-kalibriert.

Die Konversion starten wir wie folgt:
1
ADCA_INTFLAGS = ADC_CH0IF_bm;
2
ADCA_CH0_CTRL = ADC_CH_START_bm;
3
while(!(ADCA_INTFLAGS & ADC_CH0IF_bm));
4
t = ADCA_CH0RES;

Habt ihr noch weitere Tips, was fehlen oder warum es nicht funktionieren 
könnte ?

Danke und viele Grüße,
Gast #2518200
Lesenswert?

Hallo Flo und Jens,

vielen Dank für eure Hinweise, wir haben unseren ADC-Code mal gepostet.
Das Tutorial haben wir ebenfalls angesehen. Das Problem besteht leider 
weiterhin. Habt Ihr außer dem PORT_ISC_INPUT_DISABLE noch weitere 
Pin-Konfigurationen vorgenommen?

Danke und viele Grüße,
#2518246
Lesenswert?

Hallo,

im Prinzip ist alles iO.
aber..


ADCA_REFCTRL |= ADC_REFSEL_VCC_gc;
ADCA_CTRLB = ADC_RESOLUTION_12BIT_gc;
ADCA_PRESCALER = ADC_PRESCALER_DIV128_gc;

// Configuring channel 0
ADCA_CH1_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc;
ADCA_CH1_MUXCTRL |= ADC_CH_MUXPOS_PIN0_gc;

ADCA_CH1_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc;
ADCA_CH1_MUXCTRL = ADC_CH_MUXPOS_PIN0_gc;

ADCA_CTRLA = ADC_ENABLE_bm;




ADCA_INTFLAGS = ADC_CH0IF_bm;
ADCA_CH0_CTRL |= ADC_CH_START_bm;
while(!(ADCA_INTFLAGS & ADC_CH0IF_bm));
t = ADCA_CH0RES;



wenn ihr zB. ADCA_CH1_CTRL |=
#2518262
Lesenswert?

Hallo,

nochmals...

da ist was schief gelaufen..

Wenn ihr den Befehl verwendet ADCA_CH1_CTRL =

wird das Register wieder mit den neuen Daten überschrieben!

also: ADCA_CH1_CTRL |=

ADCA_CTRLA |= ADC_ENABLE_bm; immer am Ende eingeben.

Der ADC im neuen ATxmega32A4U unterscheidet sich in keienr Weise von 
seinen Artgenossen.


Gruß xmega
Gast #2518468
Lesenswert?

Lass mich raten der Wert liegt irgendwo zwichen 1600 und 1700.
Ist mir auch schon passiert.

>> // Configuring channel 0

Ist das wirklich Channel 0?

>> ADCA_CH1_CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc;
>> ADCA_CH1_MUXCTRL |= ADC_CH_MUXPOS_PIN0_gc;

Stefan
Gast #2519003
Lesenswert?

@travelrec
Mouser hat auch irgendwas um die 900 auf Lager aber ich muss erst mal 
die alten alle kriegen bevor ich neue bestellen darf.
Ist der DAC im unteren Bereich jetzt etwa auch sauber (das Rauschen bis 
ca 600 mV)? Der DAC war für mich einer der Hauptgründe neben dem DMA den 
XMEGA zu wählen.
BTW, die Dinger kann man doch problemlos statt der ATxmega32A4 nehmen?
Stefan
Gast #2519412
Lesenswert?

Hi Leute,

Wo sieht ihr die Features im neuen xmega adc und dac zb gegenueber stm32 
oder msp430f5? Bisher hatte ti recht gute adc implementierung aber kein 
gain stage, dafuer musste ich immer nen externen adc nehmen der um die 
4$ kosten kann.
Der xmega ist hier sehr weit fortgeschritten und die inl dnl error 
stabil ueber die ganze temp liest sich sehr gut. Irgendwelche erfahrung?
(Firma: TravelRec.) Persönliche Seite #2522694
Lesenswert?

Knut Ballhause schrieb:
> Stefan schrieb:
>> So richtig mit Referenz bis AVCC?
>
> Ja.

Also ähem, nein. 1V...AVcc-0.6V. Aber in dem Bereich ohne Probleme.

Stefan schrieb:
> Ist der DAC im unteren Bereich jetzt etwa auch sauber (das Rauschen bis
> ca 600 mV)? Der DAC war für mich einer der Hauptgründe neben dem DMA den
> XMEGA zu wählen.

DAC habe ich noch nicht getestet, kommt aber noch. In den Errata taucht 
nichts diesbezüglich auf.

Stefan schrieb:
> BTW, die Dinger kann man doch problemlos statt der ATxmega32A4 nehmen?

Ja. Nur dass die USB-Pins vom alten Design abweichen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren