Gast
#3800650
Hallo Leute, ich verwende einen XMEGA32a4u von Atmel. Hier möchte ich 8 Eingänge digitalisieren. Bei 1 Kanal hat dies auch funktioniert. Jedoch leider nicht bei den anderen Kanälen. Ich habe eine Funktion geschrieben. Diese startet die Digitalisierung bei 4 Kanälen. // Start the AD conversion on channel 0, 1 ,2 ,3 ADCA.CTRLA |= 0x3C; //Kanal 0 --> digitalisiert PA0 //Kanal 0 --> digitalisiert PA1 //Kanal 0 --> digitalisiert PA2 //Kanal 0 --> digitalisiert PA3 Ich überpprüfe nachdem ich die Digitailiserung gestartet habe ob die Interruptflags gesetzt sind. // Wait for the AD conversion to complete while ((ADCA.INTFLAGS & 0x0F) == 0); Wenn dies der Fall ist dann lösche ich die Flags und lese anschließend die Daten aus den Result Registern aus. // Clear the interrupt flag ADCA.INTFLAGS = 0x0F; // Read Data new_adc_sample[0] = ADCA.CH0.RESH; new_adc_sample[1] = ADCA.CH0.RESL; new_adc_sample[2] = ADCA.CH1.RESL; new_adc_sample[3] = ADCA.CH1.RESL; new_adc_sample[4] = ADCA.CH2.RESH; new_adc_sample[5] = ADCA.CH2.RESL; new_adc_sample[6] = ADCA.CH3.RESL; new_adc_sample[7] = ADCA.CH3.RESL; Kanal 1 liefert das richtige Ergebnis, nur die anderen Kanäle funktionieren nicht. Ich habe die 4 Kanäle wie folgt konfiguriert: ADCA.CH0.MUXCTRL = ADC_CH_MUXPOS_PIN0_gc; // 0x00; ADCA.CH1.MUXCTRL = ADC_CH_MUXPOS_PIN1_gc; // 0x10 ADCA.CH2.MUXCTRL = ADC_CH_MUXPOS_PIN2_gc; // 0x20 ADCA.CH3.MUXCTRL = ADC_CH_MUXPOS_PIN3_gc; // 0x30