ADC XMega256 CTRL Register

Gast #3116360
Lesenswert?
• ▲
▼
Hallo,

habe ein problemchen den ADC am Xmega zu konfigurieren. Ich möchte 
Inputmode Diff, Diff with gain funktioniert. Was muss ich da noch 
ändern? oder worauf ist zu achten?


void init_adc_A_frun(char gain)  {
ADCA.CTRLA = 0x01;       //0000 0001
ADCA.CTRLB = 0x18;       //0001 1000
ADCA.REFCTRL = 0x10;     //0001 0000
ADCA.PRESCALER =0x03;    //ADC_PRESCALER_DIV32_gc;  //
ADCA.CH0.CTRL = 0x02;    // hier ist das Problem, mit 0x03 für Diffw 
gain02 geht es;)
ADCA.EVCTRL = 0x40;
ADCA.CH0.MUXCTRL = 0x00;
ADCA.CH1.MUXCTRL = 0x00;  //0000 0000


}

Danke
#3116461
Lesenswert?
• ▲
▼
Hallo,

Schau dir doch das mal an:
Wichtig: AVR1300: Using the XMEGA ADC

Bei der Einstellung "Diff mit oder ohne Gain" sind die MUX Positive 
Input and MUX Negative Input (MUXPOS and MUXNEG) zu berücksichtigen.

// ADC channel 0 positive input: ADC4 pin
// ADC channel 0 negative input: ADC0 pin


ADCA.CH0.CTRL |= ADC_CH_GAIN_1X_gc | ADC_CH_INPUTMODE_DIFF_gc;

ADCA.CH0.MUXCTRL |= ADC_CH_MUXPOS_PIN4_gc | ADC_CH_MUXNEG_PIN0_gc;

So viel ich mich erinnere, sind die negativen Pin's ADC0-ADC3
Könnte aber auch der Hinweis bei Diff-Gain gewesen sein!

Sonst tausche halt die Port's

Gruß G.G.
(Firma: matzetronics) #3116497
Lesenswert?
• ▲
▼
henk schrieb:
> void init_adc_A_frun(char gain)  {
> ADCA.CTRLA = 0x01;       //0000 0001
> ADCA.CTRLB = 0x18;       //0001 1000
> ADCA.REFCTRL = 0x10;     //0001 0000
> ADCA.PRESCALER =0x03;    //ADC_PRESCALER_DIV32_gc;  //
> ADCA.CH0.CTRL = 0x02;    // hier ist das Problem, mit 0x03 für Diffw
> gain02 geht es;)
> ADCA.EVCTRL = 0x40;
> ADCA.CH0.MUXCTRL = 0x00;
> ADCA.CH1.MUXCTRL = 0x00;  //0000 0000
>
>
> }

Wer soll den das verstehen? Mach es doch bitte in Klarschrift, z.B. so:
1
#define ADC  ADCA
2
static void ADCInit(void)
3
{
4
  ADC.CTRLA = 0x01;
5
  ADC.CTRLB = ADC_RESOLUTION_12BIT_gc | (ADC_MODE << 4) ;  // 12 bit right adjusted
6
  ADC.PRESCALER = ADC_PRESCALER_DIV256_gc;
7
  ADC.REFCTRL = ADC_REFSEL_VCC_gc;
8
  ADC.EVCTRL = ADC_SWEEP_012_gc ;
9
  // speed input
10
  ADC.CH0.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
11
  ADC.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN0_gc;
12
//
13
  ADC.CH1.CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
14
  ADC.CH1.MUXCTRL = ADC_CH_MUXPOS_PIN1_gc;
15
// diff. channel
16
// gain32 for weak KMZ magnetic field sensor
17
  ADC.CH2.CTRL = ADC_CH_INPUTMODE_DIFFWGAIN_gc | ADC_CH_GAIN_32X_gc;
18
  ADC.CH2.MUXCTRL = ADC_CH_MUXPOS_PIN4_gc | ADC_CH_MUXNEG_PIN5_gc;
Das ist wesentlich einfacher zu warten und auch mal zu ändern. Nicht 
umsonst gibts doch die ganzen defines. Kanal 2 ist hier einer mit 
Verstärkung und Diferenzeingängen.
Gast #3120211
Lesenswert?
• ▲
▼
Hallo,

Ja Matthias du hast schon recht. Werde es mir merken und bei Zeiten 
umbauen.

@G.G.   Vielen lieben Dank. Hab die Pins mit

ADCA.CH0.MUXCTRL = 0x20;

getauscht und es läuft.

Eigentlich hatte ich gehofft, das Spikes auf dem digitalisieren Signal 
verschwinden. Die Verbesserung scheint zwar da zu sein aber noch immer 
ein paar spikes.
Gast #3125571
Lesenswert?
• ▲
▼
Hallo,

muss mich hier noch mal zu Wort melden. Im Netz habe ich folgendes thema 
gefunden.

http://www.google.de/imgres?q=datasheet+atxmega+a1+u+errata&um=1&safe=active&sa=N&hl=de&biw=1280&bih=841&tbm=isch&tbnid=fgFBr21ewZuSaM:&imgrefurl=http://www.avrfreaks.net/index.php%3Fname%3DPNphpBB2%26file%3Dviewtopic%26t%3D95536&docid=nuHUbeS-3kZxdM&imgur

Das Fehlerbild kommt meinem zeimlich nahe. Da bis jetzt alles nichts 
genutzt hat werde ich versuchen einen ATXmega128a1u-ua zu besorgen. hat 
damit schon jemand Erfahrungen. süezielle mit dem ADC? Die Errata 
scheinen ja deutlich reduziert zu sein.
Gast #3125575
Lesenswert?
• ▲
▼
Hallo und nochmal auf deutsch,

muss mich hier noch mal zu Wort melden. Im Netz habe ich folgendes Thema 
gefunden.

Titel - 
http://www.google.de/imgres?q=datasheet+atxmega+a1+u+errata&um=1&safe=active&sa=N&hl=de&biw=1280&bih=841&tbm=isch&tbnid=fgFBr21ewZuSaM:&imgrefurl=http://www.avrfreaks.net/index.php%3Fname%3DPNphpBB2%26file%3Dviewtopic%26t%3D95536&docid=nuHUbeS-3kZxdM&imgur

Das Fehlerbild kommt meinem ziemlich nahe. Da bis jetzt alles nichts
genutzt hat, werde ich versuchen einen ATXmega128a1u-ua zu besorgen. Hat
damit schon jemand Erfahrungen. Speziell mit dem ADC? Die Errata
scheinen ja deutlich reduziert zu sein.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.