AtXMEGA32A4U + ADC

Gast #2517864
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
>> 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
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
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
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,
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 |=
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
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
@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
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?
Gast
Hallo zusammen!

Danke an xmega... grml... das sind so Fehler, die man übersieht, wenn 
man den Code schon zu auswendig kennt ;)

Vielen Dank für eure Hilfe.
Gruß,
(Firma: TravelRec.) Persönliche Seite
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.