Hallo Leute.
Ich hätte eine Fragen zum Messen von mehreren Spannungen mit einem
XMega128A1.
Der XMega hat 2 ADC. Einmal den ADC am Port A und den zweiten am Port B.
Jeder ADC hat 4 Kanäle.
Ich möchte am Port A, am Pin 1 und Pin 4 bis Pin 7, Spannungen
(insgesamt 5) messen. An Pin 0 des Port A ist die
Referenzspannungsquelle angeschlossen.
Nun habe ich im ursprünglichen Programm mit dieser Funktion
1 | uint16_t ADC_Conversion(ADC_CH_t *Channel, char Pin)
|
2 | {
|
3 | Channel->CTRL = ADC_CH_INPUTMODE_SINGLEENDED_gc;
|
4 | Channel->MUXCTRL = (Pin << 3);
|
5 | Channel->CTRL |= ADC_CH_START_bm;
|
6 | while((Channel->INTFLAGS) == 0);
|
7 | return Channel->RES;
|
8 | }
|
den ADCA mit den entsprechenden Pins abgefragt.
Ich spreche beim Funktionsaufruf immer den Kanal 0 des ADC an.
Letztlich erhalte ich für jeden Aufruf, egal welche Pins, immer das
gleiche Ergebnis. Liegt es daran, dass ich immer mit dem gleichen Kanal
arbeite, also muss ich bei jedem Aufruf einen anderen Kanal einsetzen
oder liegt der Fehler woanders? Nach meiner Auffassung sollte der im
Ergebnisregister des Kanals stehende Wert bei erneuten Aufruf der
Funktion überschrieben werden oder nicht?
Viele Grüße