Paso 10: Configuración del ADC
void initADC(void)
{
//---------------------------------------------------------------------
Configuración ADMUX
//---------------------------------------------------------------------
Estos bits seleccione la referencia de tensión para el ADC. Si estos bits
se cambian durante una conversión, el cambio no entrará en vigor
hasta que se complete esta conversión (ADIF en ADCSRA está configurado). El
Opciones de referencia de tensión interna no pueden utilizarse si un externo
tensión de referencia se aplica al pin AREF.
Referencia REFS1 REFS0 voltaje
0 0 AREF, Vref interna apagada
0 1 AVCC con condensador externo al pin AREF
1 reservado 0
1 1 referencia de tensión interna 1.1V con externo
condensador al pin AREF
CBI(ADMUX,REFS1);
SBI(ADMUX,REFS0);
La broca ADLAR afecta la presentación de los resultados de conversión ADC
en el registro de datos del ADC. Escribir a ADLAR izquierda ajustar la
resultado. De lo contrario, el resultado se ajusta bien. Cambiar el ADLAR
poco va a afectar el registro de datos ADC inmediatamente, independientemente de cualquier
conversiones de curso.
SBI(ADMUX,ADLAR);
El valor de estos bits selecciona qué entradas analógicas están conectados a
el ADC. Si estos pedacitos se cambian durante una conversión, el cambio
no pasará en efecto hasta que esta conversión es completa (ADIF en
ADCSRA está establecida).
ADMUX | = (ADCPIN & 0x07);
//---------------------------------------------------------------------
Configuración ADCSRA
//---------------------------------------------------------------------
Escribe este bit permite un ADC. Escribiendo a cero, el
ADC está apagada. Apagar al ADC al mismo tiempo una conversión es en
progreso, terminará esta conversión.
CBI(ADCSRA,Aden);
En el modo de conversión individual, escribir este bit a uno para empezar cada uno
conversión. En el modo de marcha libre, escribir este bit a uno para iniciar la
primera conversión. La primera conversión después de que se ha escrito la ADSC
después de que el ADC se ha activado, o si ADSC está escrito en el mismo
tiempo como el ADC está habilitado, tendrá 25 ciclos de reloj del ADC en vez de
normal 13. Esta primera conversión realiza la inicialización de la
ADC. ADSC leerá como una como una conversión está en curso.
Cuando la conversión haya finalizado, vuelve a cero. Cero de la escritura
este bit no tiene ningún efecto.
CBI(ADCSRA,ADSC);
Cuando este bit está a uno, Auto activación de la ADC es
habilitado. La ADC iniciará una conversión en un borde positivo de la
señal de disparo seleccionado. La fuente del disparador se selecciona mediante el establecimiento de
los bits ADC disparador seleccione, articulados en ADCSRB.
SBI(ADCSRA,ADATE);
Cuando este bit se escribe uno y el-bit en SREG es establecido, el
Se activa interrupción completa del conversión ADC.
SBI(ADCSRA,Adie);
Estos bits determinan el factor de división entre el reloj del sistema
frecuencia y al reloj de entrada para el ADC.
ADPS2 Factor de división ADPS1 ADPS0
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128
SBI(ADCSRA,ADPS2);
SBI(ADCSRA,ADPS1);
SBI(ADCSRA,ADPS0);
//---------------------------------------------------------------------
Configuración de ADCSRB
//---------------------------------------------------------------------
Cuando este bit se escribe lógica uno y el ADC está desconectado
(ADEN en ADCSRA es cero), el ADC multiplexor selecciona la negativa
entrada para el comparador analógico. Cuando este bit se escribe lógica cero,
AIN1 se aplica a la entrada negativa del comparador analógico.
CBI(ADCSRB,ACME);
Si uno, el valor de estos bits se escribe ADATE en ADCSRA
selecciona la fuente que activará una conversión ADC. Si es de ADATE
autorizado, la configuración de ADTS2:0 no tendrá efecto. Una voluntad de conversión
ser desencadenada por el borde de levantamiento de la bandera de interrupción seleccionado. Nota
que la conmutación de un desencadenador de la fuente se borra a un gatillo
fuente que se encuentra, va a generar una ventaja positiva en el gatillo
señal. Si es ADEN en ADCSRA, con esto iniciará una conversión.
Cambiar al modo de funcionamiento libre (ADTS[2:0]=0) no causa un
acontecimiento del disparador, incluso si se encuentra la bandera de interrupción del ADC.
Fuente ADTS2 ADTS1 ADTS0 gatillo
0 0 0 modo de marcha libre
0 0 1 comparador analógico
0 1 petición de interrupción externa 0 0
0 1 1 timer/Counter0 comparar partido A
1 0 0 desbordamiento de timer/Counter0
1 0 1 temporizador/Counter1 comparar partido B
1 1 0 desbordamiento de contador de tiempo/Counter1
1 1 1 contador de tiempo/Counter1 capturar evento
CBI(ADCSRB,ADTS2);
CBI(ADCSRB,ADTS1);
CBI(ADCSRB,ADTS0);
//---------------------------------------------------------------------
Configuración de DIDR0
//---------------------------------------------------------------------
Cuando este bit se escribe lógica uno, el digital entrada de buffer de la
correspondiente pin de ADC está deshabilitado. El correspondiente registro PIN
poco siempre leerá como cero cuando este bit está establecido. Cuando un análogo
señal se aplica a la ADC5... pin 0 y la entrada digital de este
PIN no es necesario, este bit se debe escribir lógica para reducir
consumo de energía en el búfer de entrada digital.
Pines del ADC ADC7 y ADC6 dispone de buffers de entrada digitales,
y por lo tanto no requieren desactivar la entrada Digital bits.
SBI(DIDR0,ADC5D);
SBI(DIDR0,ADC4D);
SBI(DIDR0,ADC3D);
SBI(DIDR0,ADC2D);
SBI(DIDR0,ADC1D);
SBI(DIDR0,ADC0D);
}