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
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.