#include<avr/io.h>
#include<avr/interrupt.h>
#define CHANNEL 8
adc_init( uint8_t channel ) {
ADMUX = (1<<REFS0) | (1<<ADLAR) | (channel & 0x07) ; //se van a ignorar los lsb
ADCSRB = ((1<<MUX5) & channel); // ningun preescalador, se agarra el bit 3 del channel
//para configurar el canal, no es necesario hacer
//nada porque curiosamente MUX5 puede hacer directamente la bandera
ADCSRA = (1<<ADEN); //se habilita el ADC
DIDR2 = (1<<ADC8D);//un poco de ahorro energetico
}
uint8_t ADC_Read(void)
{
uint8_t result = 0;
ADCSRA |= (1 << ADSC);
while (ADCSRA & (1 << ADSC))
;
result = ADCH;
return result;
}
void main () {
DDRF = 0xFF;
adc_init( CHANNEL);
while (1) {
PORTF = ADC_Read() ;
}
}