Also normalerweise wird es schon über ADIF gemacht:

Code:
while(!(ADCSRA & (1<<ADIF)));
Aber im Datenblatt steht:

ADSC will read as one as long as a conversion is in progress. When the conversion is
complete, it returns to zero. Writing zero to this bit has no effect.
Das es nicht läuft könnte aber auch daran liegen, dass es kein Register "ADCSR" beim Mega16 gibt
Versuchs mal mit ADCSRA!