SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
CONVERTIDOR ANALOGICO DIGITAL
Las características del convertidor analógico digital del Atmega16 son las siguientes:
- Resolución de 10 bits: la salida tiene n=10 bits.
- 8 canales, pero solo realiza la conversión de datos provenientes de un canal en cada
momento.
- Si el voltaje de referencia es el que viene por defecto, es decir, 5 voltios, entonces:
- El tamaño del paso es de 5v/1024 = 4.88mv
- Exactitud es de +_ 2LSB, es decir, 9.76mv
- El ritmo del reloj del ADC puede ser diferente del ritmo de la CPU.
- El ADC está provisto de un prescalizador que decide el ritmo del reloj del ADC.
REGISTROS IMPORTANTES DEL ADC
Estos registros son los siguientes:
- ADCMUX
- ADCH/ADCL
- ADCCSRA
- SFIOR
ADMUX
- Permite seleccionar el canal del ADC.
- Configurar la justificación de los resultados del ADC.
- Seleccionar la referencia del ADC.
Los voltajes de referencia pueden ser:
- AREF, es el que viene por defecto. Voltaje interno apagado.
- AVCC, le colocamos un capacitor externo en el pin AREF.
- Voltaje interno de 2.56v y un capacitor externo en el pin AREF.
Normalmente se usa el modo AVCC, pero también se puede usar el modo AREF cuando la
señal analógica tiene un rango dinámico diferente.
La selección del canal del ADC también corre a cargo de este registro. Pero estos mismos bits
también permiten seleccionar la ganancia de las entradas diferenciales. Esta ganancia puede
ser de 1, 10 o 200.
Una bandera del registro ADCMUX nos permite elegir la forma en que vamos a expresar el
resultado obtenido. Las posibilidades se pueden ver en la siguiente figura:
Es importante leer en primer lugar el byte menos significativo y luego el más significativo.
ADCCSRA
Es un registro que nos permite
- habilitar la interrupción del ADC
- monitorizar las banderas del ADC
- seleccionar los bits del prescalizador
- configurar el modo de operación del ADC
Es de precisar que el ADC presenta dos modos de operación:
- manual: habilitamos el bit ADSC para iniciar la conversión.
- auto-disparo: un evento previamente configurado inicia la conversión del
convertidor.
En caso de usar el prescalizador, es de precisar que lo que se hace es dividir el reloj de la
CPU y usarla como el reloj del ADC.
SFIOR
Lo más relevante de este registro es que nos permite elegir el evento que provocara el inicio
de la conversión del ADC en el modo auto-disparo. Cabe decir que es una gran variedad de
eventos, algunos de los cuales son:
- comparador analógico.
- Interrupciones externas
- Eventos de los timers (desbordamiento, interrupciones).
PASOS PARA USAR EL ADC
Paso 1: configurar el ADC usando los registros ADCMUX, ADCCSRA y SFIOR.
- Se selecciona el canal
- Se selecciona el voltaje de referencia
- Se configura la justificación del resultado de la conversión.
- Habilitar o deshabilitar el auto-disparo del ADC
- Habilitar o deshabilitar la interrupción del ADC.
- Selección del prescalizador.
Paso 2: Iniciar la operación del ADC.
- Ponemos en alto la bandera ADSC del registro ADCCSRA.
Paso 3: Extraer el resultado
- Esperamos hasta que la bandera ADSC se pone a 0.
- Después leemos primero el byte ADCL y después ADCH.
EJEMPLO: escribir un programa que sea capaz de realizar la conversión de una señal
sinusoidal y mostrar el resultado en unos LEDs.
Paso 1: configuro el ADC.
- Canal: ADC0
- Tensión de referencia: AVCC =5V
- Justificación derecha o izquierda del resultado: izquierda, tomamos los 8 bits más
significativos, es decir, ADCH.
- Habilitar o deshabilitar el auto-disparo del ADC: deshabilitado.
- Habilitar o deshabilitar la interrupción del ADC: deshabilitado.
- Prescalizador: 2 (conversión más rápida).
El programa completo es el siguiente:
#include<avr/io.h>
int main (void){
unsigned char result;
DDRB = 0xFF; // set port B for output
// Configure the ADC module of the ATmega16
ADMUX = 0b01100000; // REFS1:0 = 01 -> AVCC as reference,
// ADLAR = 1 -> Left adjust
// MUX4:0 = 00000 -> ADC0 as input
ADCSRA = 0b10000001; // ADEN = 1: enable ADC,
// ADSC = 0: don't start conversion yet
// ADATE = 0: disable auto trigger,
// ADIE = 0: disable ADC interrupt
// ASPS2:0 = 001: prescaler = 2
while(1){ // main loop
// Start conversion by setting flag ADSC
ADCSRA |= (1 << ADSC);
// Wait until conversion is completed
while (ADCSRA & (1 << ADSC)){;}
// Read the top 8 bits, output to PORTB
result = ADCH;
PORTB = ~result;
}
return 0;
}
USANDO LA INTERRUPCION DEL ADC
Este enfoque es muy diferente del anterior. En el caso anterior hemos usado el polling para
saber cuándo realizar la lectura del ADC. Para lo cual, hemos estado controlando el estado
de una bandera, concretamente la bandera ADSC del registro ADCCCSRA.
En este caso, el ADC lanza una interrupción cuando se completa la conversión de los datos.
Para usar esta interrupción debemos habilitarla previamente en el registro ADCCSRA,
concretamente a través de la bandera ADIE.
Dentro del ISR es donde escribimos el código que nos permite leer el resultado de la
conversión del ADC, leyendo en primer lugar el ADCL y después el ADCH.
Ese modo es muchas veces combinado con el auto-disparo visto antes.
El mismo problema anterior pero con interrupciones es el siguiente:
#include<avr/io.h>
#include<avr/interrupt.h>
volatile unsigned char result;
ISR(ADC_vect){
result = ADCH; // Read the top 8 bits, and store in variable result
}
int main (void){
DDRB = 0xFF; // set port B for output
// Configure the ADC module of the ATmega16
ADMUX = 0b01100000; // REFS1:0 = 01 -> AVCC as reference,
// ADLAR = 1 -> Left adjust
// MUX4:0 = 00000 -> ADC0 as input
ADCSRA = 0b10001111; // ADEN = 1: enable ADC,
// ADSC = 0: don't start conversion yet
// ADATE = 0: diable auto trigger,
// ADIE = 1: enable ADC interrupt
// ASPS2:0 = 002: prescaler = 2
sei(); // enable interrupt system globally
while(1){ // main loop
ADCSRA |= (1 << ADSC); // start a conversion
PORTB = ~result; // display on port B
}
return 0;
}

Mais conteúdo relacionado

Mais procurados

Criterio de estabilidad de Routh
Criterio de estabilidad de RouthCriterio de estabilidad de Routh
Criterio de estabilidad de Routh
Luis Jimenez Rivera
 
Modelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fetModelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fet
Armando Bautista
 
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
SANTIAGO PABLO ALBERTO
 
Respuesta en frecuencia circuitos amplificadores
Respuesta en frecuencia circuitos amplificadoresRespuesta en frecuencia circuitos amplificadores
Respuesta en frecuencia circuitos amplificadores
xporretax
 

Mais procurados (20)

Criterio de estabilidad de Routh
Criterio de estabilidad de RouthCriterio de estabilidad de Routh
Criterio de estabilidad de Routh
 
multivibradores Monoestable y astable
multivibradores Monoestable y astablemultivibradores Monoestable y astable
multivibradores Monoestable y astable
 
MODULACION DE AMPLITUD DE DOBLE BANDA LATERAL Y PORTADORA DE MAXIMA POTENCIA
MODULACION DE AMPLITUD DE DOBLE BANDA LATERAL Y PORTADORA DE MAXIMA POTENCIAMODULACION DE AMPLITUD DE DOBLE BANDA LATERAL Y PORTADORA DE MAXIMA POTENCIA
MODULACION DE AMPLITUD DE DOBLE BANDA LATERAL Y PORTADORA DE MAXIMA POTENCIA
 
3.PCM Digitalizacion de señal analogica
3.PCM Digitalizacion de señal analogica3.PCM Digitalizacion de señal analogica
3.PCM Digitalizacion de señal analogica
 
Norma ieee 802.3
Norma ieee 802.3Norma ieee 802.3
Norma ieee 802.3
 
VoIP
VoIPVoIP
VoIP
 
Final1 tomasi
Final1 tomasiFinal1 tomasi
Final1 tomasi
 
Test ee443
Test ee443Test ee443
Test ee443
 
Modelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fetModelos equivalentes de pequeña señal de los transistores fet
Modelos equivalentes de pequeña señal de los transistores fet
 
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
Tenemos 3 tipos de convertidor DC a DC no aislados: configuraciones Buck, Boo...
 
Modulacion-digital
 Modulacion-digital Modulacion-digital
Modulacion-digital
 
Deber3
Deber3Deber3
Deber3
 
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
 
Antena helicoidal 2.4 Ghz Diseño
Antena helicoidal 2.4 Ghz DiseñoAntena helicoidal 2.4 Ghz Diseño
Antena helicoidal 2.4 Ghz Diseño
 
Amplificación transistor
Amplificación transistorAmplificación transistor
Amplificación transistor
 
Ee443 osciladores 2018 i (2)
Ee443 osciladores  2018 i (2)Ee443 osciladores  2018 i (2)
Ee443 osciladores 2018 i (2)
 
Respuesta en frecuencia circuitos amplificadores
Respuesta en frecuencia circuitos amplificadoresRespuesta en frecuencia circuitos amplificadores
Respuesta en frecuencia circuitos amplificadores
 
Demodulador am (completo)
Demodulador am (completo)Demodulador am (completo)
Demodulador am (completo)
 
Osciladores Rc
Osciladores RcOsciladores Rc
Osciladores Rc
 
Conexión darlington transistor
Conexión darlington transistorConexión darlington transistor
Conexión darlington transistor
 

Semelhante a Convertidor analogico digital de los microcontroladores AVR

474472707-ADC-PIC-pptx porocesadores.pptx
474472707-ADC-PIC-pptx porocesadores.pptx474472707-ADC-PIC-pptx porocesadores.pptx
474472707-ADC-PIC-pptx porocesadores.pptx
Cesar Gil Arrieta
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
Victor Asanza
 

Semelhante a Convertidor analogico digital de los microcontroladores AVR (20)

Curso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCsCurso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCs
 
Adc 4
Adc 4Adc 4
Adc 4
 
Conversor ADC
Conversor ADCConversor ADC
Conversor ADC
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Adc fpga
Adc fpgaAdc fpga
Adc fpga
 
474472707-ADC-PIC-pptx porocesadores.pptx
474472707-ADC-PIC-pptx porocesadores.pptx474472707-ADC-PIC-pptx porocesadores.pptx
474472707-ADC-PIC-pptx porocesadores.pptx
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 
Tacometro digital
Tacometro digitalTacometro digital
Tacometro digital
 
Compilador CCS.ppt
Compilador CCS.pptCompilador CCS.ppt
Compilador CCS.ppt
 
Laboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docxLaboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docx
 
Pic 16 F877XA A/D
Pic 16 F877XA A/DPic 16 F877XA A/D
Pic 16 F877XA A/D
 
Uso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorUso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontrolador
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0
 
Grabacion de microcontroladores_pic
Grabacion de microcontroladores_picGrabacion de microcontroladores_pic
Grabacion de microcontroladores_pic
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docxLaboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
 

Último

707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
ErnestoCano12
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
FRANCISCOJUSTOSIERRA
 

Último (20)

Diagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicadaDiagramas de Tiempo.pptpara electronica aplicada
Diagramas de Tiempo.pptpara electronica aplicada
 
subestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicassubestaciones electricas , elementos y caracteristicas
subestaciones electricas , elementos y caracteristicas
 
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPODIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
DIFERENCIA DE COMPRESION Y TENSION EN UN CUERPO
 
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
 
herrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptxherrramientas de resistividad para registro de pozos.pptx
herrramientas de resistividad para registro de pozos.pptx
 
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptxREGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayo
 
DIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.pptDIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.ppt
 
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdfPRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
 
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptxMETRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
 
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdfDiseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
Diseno de Estructuras de Acero - 5ta Ed - McCormac.pdf
 
Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdf
 
Cuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdfCuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdf
 
50870516-hidroponia. descargado en novppt
50870516-hidroponia. descargado en novppt50870516-hidroponia. descargado en novppt
50870516-hidroponia. descargado en novppt
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 20.5 PREFERIDO.wbk.wbk SEG...
 
UNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptxUNIDAD III Esquemas de comunicacion pptx
UNIDAD III Esquemas de comunicacion pptx
 
Responsabilidad de padres con sus hijos (1).pptx
Responsabilidad de padres con sus hijos (1).pptxResponsabilidad de padres con sus hijos (1).pptx
Responsabilidad de padres con sus hijos (1).pptx
 
subestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energiasubestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energia
 
Sesión de Clase A dde sistemas de riego y otras obras
Sesión de Clase A dde sistemas de riego y otras obrasSesión de Clase A dde sistemas de riego y otras obras
Sesión de Clase A dde sistemas de riego y otras obras
 
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docxESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
 

Convertidor analogico digital de los microcontroladores AVR

  • 1. CONVERTIDOR ANALOGICO DIGITAL Las características del convertidor analógico digital del Atmega16 son las siguientes: - Resolución de 10 bits: la salida tiene n=10 bits. - 8 canales, pero solo realiza la conversión de datos provenientes de un canal en cada momento. - Si el voltaje de referencia es el que viene por defecto, es decir, 5 voltios, entonces: - El tamaño del paso es de 5v/1024 = 4.88mv - Exactitud es de +_ 2LSB, es decir, 9.76mv - El ritmo del reloj del ADC puede ser diferente del ritmo de la CPU. - El ADC está provisto de un prescalizador que decide el ritmo del reloj del ADC. REGISTROS IMPORTANTES DEL ADC Estos registros son los siguientes: - ADCMUX - ADCH/ADCL - ADCCSRA - SFIOR ADMUX - Permite seleccionar el canal del ADC. - Configurar la justificación de los resultados del ADC. - Seleccionar la referencia del ADC. Los voltajes de referencia pueden ser: - AREF, es el que viene por defecto. Voltaje interno apagado. - AVCC, le colocamos un capacitor externo en el pin AREF. - Voltaje interno de 2.56v y un capacitor externo en el pin AREF. Normalmente se usa el modo AVCC, pero también se puede usar el modo AREF cuando la señal analógica tiene un rango dinámico diferente. La selección del canal del ADC también corre a cargo de este registro. Pero estos mismos bits también permiten seleccionar la ganancia de las entradas diferenciales. Esta ganancia puede ser de 1, 10 o 200. Una bandera del registro ADCMUX nos permite elegir la forma en que vamos a expresar el resultado obtenido. Las posibilidades se pueden ver en la siguiente figura:
  • 2. Es importante leer en primer lugar el byte menos significativo y luego el más significativo. ADCCSRA Es un registro que nos permite - habilitar la interrupción del ADC - monitorizar las banderas del ADC - seleccionar los bits del prescalizador - configurar el modo de operación del ADC Es de precisar que el ADC presenta dos modos de operación: - manual: habilitamos el bit ADSC para iniciar la conversión. - auto-disparo: un evento previamente configurado inicia la conversión del convertidor. En caso de usar el prescalizador, es de precisar que lo que se hace es dividir el reloj de la CPU y usarla como el reloj del ADC. SFIOR Lo más relevante de este registro es que nos permite elegir el evento que provocara el inicio de la conversión del ADC en el modo auto-disparo. Cabe decir que es una gran variedad de eventos, algunos de los cuales son: - comparador analógico. - Interrupciones externas - Eventos de los timers (desbordamiento, interrupciones). PASOS PARA USAR EL ADC Paso 1: configurar el ADC usando los registros ADCMUX, ADCCSRA y SFIOR. - Se selecciona el canal - Se selecciona el voltaje de referencia - Se configura la justificación del resultado de la conversión. - Habilitar o deshabilitar el auto-disparo del ADC - Habilitar o deshabilitar la interrupción del ADC.
  • 3. - Selección del prescalizador. Paso 2: Iniciar la operación del ADC. - Ponemos en alto la bandera ADSC del registro ADCCSRA. Paso 3: Extraer el resultado - Esperamos hasta que la bandera ADSC se pone a 0. - Después leemos primero el byte ADCL y después ADCH. EJEMPLO: escribir un programa que sea capaz de realizar la conversión de una señal sinusoidal y mostrar el resultado en unos LEDs. Paso 1: configuro el ADC. - Canal: ADC0 - Tensión de referencia: AVCC =5V - Justificación derecha o izquierda del resultado: izquierda, tomamos los 8 bits más significativos, es decir, ADCH. - Habilitar o deshabilitar el auto-disparo del ADC: deshabilitado. - Habilitar o deshabilitar la interrupción del ADC: deshabilitado. - Prescalizador: 2 (conversión más rápida). El programa completo es el siguiente: #include<avr/io.h> int main (void){ unsigned char result; DDRB = 0xFF; // set port B for output // Configure the ADC module of the ATmega16 ADMUX = 0b01100000; // REFS1:0 = 01 -> AVCC as reference, // ADLAR = 1 -> Left adjust // MUX4:0 = 00000 -> ADC0 as input ADCSRA = 0b10000001; // ADEN = 1: enable ADC, // ADSC = 0: don't start conversion yet // ADATE = 0: disable auto trigger, // ADIE = 0: disable ADC interrupt // ASPS2:0 = 001: prescaler = 2 while(1){ // main loop // Start conversion by setting flag ADSC ADCSRA |= (1 << ADSC); // Wait until conversion is completed while (ADCSRA & (1 << ADSC)){;} // Read the top 8 bits, output to PORTB result = ADCH; PORTB = ~result; } return 0; }
  • 4. USANDO LA INTERRUPCION DEL ADC Este enfoque es muy diferente del anterior. En el caso anterior hemos usado el polling para saber cuándo realizar la lectura del ADC. Para lo cual, hemos estado controlando el estado de una bandera, concretamente la bandera ADSC del registro ADCCCSRA. En este caso, el ADC lanza una interrupción cuando se completa la conversión de los datos. Para usar esta interrupción debemos habilitarla previamente en el registro ADCCSRA, concretamente a través de la bandera ADIE. Dentro del ISR es donde escribimos el código que nos permite leer el resultado de la conversión del ADC, leyendo en primer lugar el ADCL y después el ADCH. Ese modo es muchas veces combinado con el auto-disparo visto antes. El mismo problema anterior pero con interrupciones es el siguiente: #include<avr/io.h> #include<avr/interrupt.h> volatile unsigned char result; ISR(ADC_vect){ result = ADCH; // Read the top 8 bits, and store in variable result } int main (void){ DDRB = 0xFF; // set port B for output // Configure the ADC module of the ATmega16 ADMUX = 0b01100000; // REFS1:0 = 01 -> AVCC as reference, // ADLAR = 1 -> Left adjust // MUX4:0 = 00000 -> ADC0 as input ADCSRA = 0b10001111; // ADEN = 1: enable ADC, // ADSC = 0: don't start conversion yet // ADATE = 0: diable auto trigger, // ADIE = 1: enable ADC interrupt // ASPS2:0 = 002: prescaler = 2 sei(); // enable interrupt system globally while(1){ // main loop ADCSRA |= (1 << ADSC); // start a conversion PORTB = ~result; // display on port B } return 0; }