ATmega16 – ADC

El uso del ADC en un uC es esencial cuando existe la necesidad de digitalizar señales analógicas como por ejemplo valores de temperatura, presión, humedad, movimiento, etc.

En el caso de nuestro uC cuenta con 8 entradas ADC multiplexadas, es decir que solo trabaja una entrada a la vez, el resultado de la conversión del ADC se guarda en los registros ADCH y ADCL y de estos registros solo son usados 10-bits por lo que nuestro ADC tiene una resolución de 10-bits.

Esquema Descriptivo:

Los registros que intervienen en la configuración del ADC son los siguientes:

ADMUX: Es el registro encargado de seleccionar el pin o pines del ADC que se usarán.

ADLAR es el bit encargado de seleccionar el resultado del ADC con ajuste a la derecha o a la izquierda. Si escogemos un ajuste a la izquierda el resultado se guardará en todo el registro ADCH y en los bits 6 y 7 del registro ADCL siendo el bit 7 del registro ADCH el más significativo.

En el caso que escojamos ajuste a la derecha el resultado se guardará en los bits 0 y 1 del registro ADCH y en todo el registro ADCL siendo el bit 1 de ADCH el más significativo.

ADCSRA: Registro de estado y control del ADC.

ADEN es la habilitación del ADC, ADSC es el bit de inicio de la conversión, ADATE es el bit de habilitación de el autodisparo del ADC, ADIF es el flag de interrupción del ADC y ADIE es la habilitación de la interrupción al terminar una conversión.

El reloj del ADC trabaja entre 50 KHz y 200 KHz, por lo tanto el Xtal del uC se necesita dividir por un factor.

SFIOR: El registro encargado de seleccionar la fuente de auto-disparo, es decir con que “evento” se va ha empezar la conversión.

Ejemplo:

Descargas: