Gast
#2191151
Hallo,
ich habe hier einen atmega8 und möchte ADC0 bis ADC4 benutzen.
ADC0 bis ADC3 liefern mir bereits gute und brauchbare Werte, aber wenn
ich an ADC4 Ad-Wandeln will, passiert irgendwie nichts...
TWEN hab ich auf 0 gesetzt, daher sollte SDA vom TWI nicht mehr
aktiviert sein...
TWCR &= ~(1<<TWEN);
ADC initialisieren:
ADCSRA |= (1<<ADEN); // ADC enable
ADCSRA = 0x86; // ADC enabled; no Free Running; no Interrupt;
Clock-Prescaler: 64
ADMUX = 0xE0; // Referenz: AVcc; Left Adjusted; Channel 0
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC)) {}
result = ADCH;
wenn ich jetzt z.B. so etwas mache...
ADMUX = (ADMUX & 0xE0) | (0x03 & 0x1F); // channel 3 (ADC4)
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC)) {}
result = ADCH; // hier steht richtiger Wert drin
ADMUX = (ADMUX & 0xE0) | (0x04 & 0x1F); // channel 4 (ADC4)
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC)) {}
result = ADCH; // hier steht immer der Wert von channel 3 drin...
...wird irgendwie bei channel 4 nicht gewandelt.
Weiß jemand wo mein Fehler liegt? Was ist da falsch?
ADMUX hab ich schon geprüft nachdem ich den entsprechenden Wert ins
Register geschrieben hab... das passt auch!
Wäre über jeden sinnvollen Vorschlag dankbar!
Gruß vogael


