In meiner init():

Code:
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
Und diese Funktion wird in main() zyklisch aufgerufen:

Code:
void read_inputs(void) {
	ADMUX=(1<<MUX0);				// Kanal 1 auswaehlen
	ADCSRA|=(1<<ADSC);				// Messung starten
	while(!(ADCSRA & (1<<ADIF)));	// Warten bis ADSC==0
	ADCSRA|=(1<<ADIF);				// ADIF auf Null setzen !?!
	w=ADCL+ADCH*256;				// Ergebnis auslesen
	
	ADMUX=(1<<MUX2)|(1<<MUX0);		// Kanal 5 auswaehlen
	ADCSRA|=(1<<ADSC);				// Messung starten
	while(!(ADCSRA & (1<<ADIF)));	// Warten bis ADSC==0
	ADCSRA|=(1<<ADIF);				// ADIF auf Null setzen !?!
	x=ADCL+ADCH*256;				// Ergebnis auslesen
}
Der ATmega16 laeuft mit 8MHz. Das mit dem ADIF auf Null setzen, indem man ne Eins reinschreibt, steht so im Datenblatt...

Nils