Hallo,
while(1)
{
sbi(ADCSRA,ADSC);
ADMUX=(ADMUX & 0b01100000);// | 0b01000000);
adc_result0 = ((ADCL) | ((ADCH)<<8));
ADMUX=(ADMUX & 0b01100001);// | 0b01000000);
adc_result1 = ((ADCL) | ((ADCH)<<8));
ADMUX=(ADMUX & 0b01100010);// | 0b01000000);
adc_result2 = ((ADCL) | ((ADCH)<<8));
printf( "%d %d %d\n", adc_result0, adc_result1, adc_result2);
}
was erwartest Du, was hier passieren soll?
Du startest EINE Messung, drehst dann an den MUX-Werten und liest
irgendwie ADCH und ADCL...
Du wartest nicht auf das Ende der Messung und startest auf einer anderen
MUX-Einstellung auch keine neue.
PS: die Reihenfolge, in der ADCH und ADCL gelesen werden müssen, steht
im Datenblatt. Man kann aber das Problem auch dem C-Compiler überlassen
und einfach ADC lesen.
Warum setzt Du wahllos diverse Flags im ADCSRA?
Du solltest Di die Bedeutung dieser mal im Datenblatt anschauen.
Gruß aus Berlin
Michael