Code:
uint16_t ReadChannel(uint8_t channel) 
{
	uint8_t i;
	uint16_t result = 0;
	
	ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1);		ADMUX = channel;				
	ADMUX |= (1<<REFS1) | (1<<REFS0);		ADCSRA |= (1<<ADSC);		while(ADCSRA & (1<<ADSC));
	result = ADCW;			result = 0; 									
	for(i=0; i<3; i++)
	{
		ADCSRA |= (1<<ADSC);				
		while(ADCSRA & (1<<ADSC));				
		result += ADCW;
	}
	ADCSRA &= ~(1<<ADEN);				
	result /= 3;				
	return result;
}