184972370-el-modulo-adc-de-los-avr-pdf.pdf

27
UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERヘA ELノCTRICA Y ELECTRモNICA MICROCONTROLADORE –ATMEGA8 1 UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRモNICA CURSO: MICROCONTROLADORES MODULO ADC ATMEGA8 - LENGUAJE C PROFESOR: MSc ING. ASTOCONDOR VILLAR JACOB CALLAO, ........... DEL ..............

Upload: artspl

Post on 24-Nov-2015

14 views

Category:

Documents


0 download

TRANSCRIPT

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 1

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERIA ELECTRICA Y ELECTRNICA

    CURSO: MICROCONTROLADORES

    MODULO ADC

    ATMEGA8 - LENGUAJE C

    PROFESOR: MSc ING. ASTOCONDOR VILLAR JACOB

    CALLAO, ........... DEL ..............

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 2

    EL MDULO ADC DE LOS AVRLos AVR de la serie megaAVR tienen un ADC de aproximaciones sucesivas de 10 bits. Es unosolo pero est multiplexado para dar cabida hasta a 8 entradas analgicas. Se convierte solo unaentrada o la diferencia de dos entradas analgicas a la vez.Concretamente, los AVR de la serie ATmegaXX4 cuentan con 8 canales de conversin, todosubicados en su puerto A. Por otro lado los AVR de la serie ATmegaXX8 destinan todo supuerto C como canales de entrada del ADC.El detalle con los ATmegaXX8 es que su puerto C solo tiene 6 pines si vienen en empaque DIPpero tiene 8 pines en los empaques TQFP y QFN/MLF. De modo que estos megaAVR puedentener 6 u 8 canales de conversin dependiendo de su empaque.

    Operacin del Mdulo ADCEn las aplicaciones ordinarias solo los registros ADCSRA y ADMUX son los que se manipulanactivamente. Los registros ADCH y ADCL son de solo lectura y como no tienen formato, bastacon recordar sus nombres.

    ADCSRA. Es el principal registro de control y estado del ADC. Manipulando los bitsde este registro iniciamos la conversin, establecemos la velocidad de conversin oelegimos el formato del resultado de la conversin. Veremos los detalles en adelante.

    ADCSRB. Es el segundo registro de control y estado del ADC. Sus pocos bitsfuncionales configuran el modo de conversiones automticas y como ese modo esraramente usado, el registro ADCSRB tampoco est muy avistado en los programas.Los viejos AVR no lo tienen.

    ADCH y ADCL. Son los registros que almacenan el resultado de la conversin. Unoguarda 8 bits y el otro los dos bits restantes. La forma como se distribuyen se debeespecificar con el bit ADLAR del registro ADMUX.

    Para cuestiones de programacin estos registros se fusionan para formar un nicoregistro de 16 bits normalmente llamado ADC o ADCW.

    ADMUX. Es el registro que selecciona el canal de conversin y establece los voltajesde referencia.

    DIDR0. Es tambin un nuevo registro no disponible en los viejos AVR. Su funcin esdesconectar los pines seleccionados como canales latentes del conversor para as evitarque se desgaste corriente en parte del circuito del ADC.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 2

    EL MDULO ADC DE LOS AVRLos AVR de la serie megaAVR tienen un ADC de aproximaciones sucesivas de 10 bits. Es unosolo pero est multiplexado para dar cabida hasta a 8 entradas analgicas. Se convierte solo unaentrada o la diferencia de dos entradas analgicas a la vez.Concretamente, los AVR de la serie ATmegaXX4 cuentan con 8 canales de conversin, todosubicados en su puerto A. Por otro lado los AVR de la serie ATmegaXX8 destinan todo supuerto C como canales de entrada del ADC.El detalle con los ATmegaXX8 es que su puerto C solo tiene 6 pines si vienen en empaque DIPpero tiene 8 pines en los empaques TQFP y QFN/MLF. De modo que estos megaAVR puedentener 6 u 8 canales de conversin dependiendo de su empaque.

    Operacin del Mdulo ADCEn las aplicaciones ordinarias solo los registros ADCSRA y ADMUX son los que se manipulanactivamente. Los registros ADCH y ADCL son de solo lectura y como no tienen formato, bastacon recordar sus nombres.

    ADCSRA. Es el principal registro de control y estado del ADC. Manipulando los bitsde este registro iniciamos la conversin, establecemos la velocidad de conversin oelegimos el formato del resultado de la conversin. Veremos los detalles en adelante.

    ADCSRB. Es el segundo registro de control y estado del ADC. Sus pocos bitsfuncionales configuran el modo de conversiones automticas y como ese modo esraramente usado, el registro ADCSRB tampoco est muy avistado en los programas.Los viejos AVR no lo tienen.

    ADCH y ADCL. Son los registros que almacenan el resultado de la conversin. Unoguarda 8 bits y el otro los dos bits restantes. La forma como se distribuyen se debeespecificar con el bit ADLAR del registro ADMUX.

    Para cuestiones de programacin estos registros se fusionan para formar un nicoregistro de 16 bits normalmente llamado ADC o ADCW.

    ADMUX. Es el registro que selecciona el canal de conversin y establece los voltajesde referencia.

    DIDR0. Es tambin un nuevo registro no disponible en los viejos AVR. Su funcin esdesconectar los pines seleccionados como canales latentes del conversor para as evitarque se desgaste corriente en parte del circuito del ADC.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 2

    EL MDULO ADC DE LOS AVRLos AVR de la serie megaAVR tienen un ADC de aproximaciones sucesivas de 10 bits. Es unosolo pero est multiplexado para dar cabida hasta a 8 entradas analgicas. Se convierte solo unaentrada o la diferencia de dos entradas analgicas a la vez.Concretamente, los AVR de la serie ATmegaXX4 cuentan con 8 canales de conversin, todosubicados en su puerto A. Por otro lado los AVR de la serie ATmegaXX8 destinan todo supuerto C como canales de entrada del ADC.El detalle con los ATmegaXX8 es que su puerto C solo tiene 6 pines si vienen en empaque DIPpero tiene 8 pines en los empaques TQFP y QFN/MLF. De modo que estos megaAVR puedentener 6 u 8 canales de conversin dependiendo de su empaque.

    Operacin del Mdulo ADCEn las aplicaciones ordinarias solo los registros ADCSRA y ADMUX son los que se manipulanactivamente. Los registros ADCH y ADCL son de solo lectura y como no tienen formato, bastacon recordar sus nombres.

    ADCSRA. Es el principal registro de control y estado del ADC. Manipulando los bitsde este registro iniciamos la conversin, establecemos la velocidad de conversin oelegimos el formato del resultado de la conversin. Veremos los detalles en adelante.

    ADCSRB. Es el segundo registro de control y estado del ADC. Sus pocos bitsfuncionales configuran el modo de conversiones automticas y como ese modo esraramente usado, el registro ADCSRB tampoco est muy avistado en los programas.Los viejos AVR no lo tienen.

    ADCH y ADCL. Son los registros que almacenan el resultado de la conversin. Unoguarda 8 bits y el otro los dos bits restantes. La forma como se distribuyen se debeespecificar con el bit ADLAR del registro ADMUX.

    Para cuestiones de programacin estos registros se fusionan para formar un nicoregistro de 16 bits normalmente llamado ADC o ADCW.

    ADMUX. Es el registro que selecciona el canal de conversin y establece los voltajesde referencia.

    DIDR0. Es tambin un nuevo registro no disponible en los viejos AVR. Su funcin esdesconectar los pines seleccionados como canales latentes del conversor para as evitarque se desgaste corriente en parte del circuito del ADC.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 3

    Registro ADCSRAADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

    Registro ADCSRB----- ACME --- --- --- ADTS2 ADTS1 ADTS0

    Registro ADMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Registro DIDR0ADC7D ADC6D ADC5D ADC4D ADC3D ADC2D ADC1D ADC0D

    Registro ADCH

    Registro ADCL

    El ADC de los megaAVR es bastante fcil de controlar si se le emplea en su modo habitual deconversiones normales de entrada nica. Tras configurar este modo, se escoge un canal a la vezy se setea el bit ADSC para iniciar la conversin. Despus esperamos a que este mismo bit selimpie automticamente por hardware como seal de que la conversin termin, y cuando lohaga podremos leer el resultado. Eso sera todo.El proceso descrito se puede desglosar en los siguientes pasos. Los pasos 2 al 5 (que estnrelacionados con el registro ADMUX) no necesariamente tienen que ir en ese orden de hecho sepueden juntar todos en un solo paso. Esto es porque el registro ADMUX trabaja con un bufferde respaldo del cual es actualizado continuamente para asegurar un buen trabajo del ADC. Estoes, cuando escribimos en ADMUX en realidad escribimos en su buffer, el cual se copiacontinuamente al registro ADMUX hasta que se inicia la conversin. En ese momento elcopiado continuo se detiene y se reanudar cuando termine la conversin. De ese modo seevitan los resultados 'frankenstenianos' de lo que sera un mal uso del registro ADMUX.

    1. Seleccionar el reloj del conversor ADC, con los bits ADPS2:ADPS0.2. Seleccionar los voltajes de referencia del conversor, usando los bits REFS1 y REFS0.3. Establecer la justificacin del resultado con el bit ADLAR.4. Seleccionar el canal o los canales de entrada del ADC, con los bits MUX4:MUX0.5. Encender el mdulo ADC, seteando el bit ADEN.6. Iniciar la conversin, seteando el bit ADSC.7. Esperar a que termine la conversin. Cuando esto pase el flag ADIF se pondr a uno y

    si la conversin es normal y el bit ADSC se limpiar automticamente.8. Leer el resultado de la conversin del par de registros ADCH: ADCL.

    Para bien o para mal, la flexibilidad del ADC complica an ms su control, pues tambinexisten el modo de conversiones diferenciales y el modo de conversiones auto-disparadas, elcual se puede aplicar para cada caso, es decir, el ADC puede desdoblar su operacin hasta encuatro modos.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 4

    Seales para iniciar conversiones normales y auto-disparadas. Conversiones normales de entrada nica, donde el ADC convierte el valor de un canal,

    cada vez que se setee el bit ADSC. Conversiones normales de entradas diferenciales, donde el ADC convierte la diferencia

    de dos canales. La conversin se inicia seteando el bit ADSC. Conversiones auto-disparadas de entrada nica, donde el ADC convierte un canal

    cuando se produzca alguno de los eventos seleccionados por los bits ADTS2, ADTS1 yADTS0, que puede ser, por ejemplo, el desbordamiento de un Timer o simplemente laactivacin del flag ADIF. Este ltimo caso es peculiar y se conoce como modo deconversiones de corrida libre, porque el ADC realiza conversiones una tras otra sincesar. Aqu la primera conversin se inicia seteando el bit ADSC.

    Conversiones auto-disparadas de entradas diferenciales. Es una combinacin de los dosmodos anteriores.

    No hay una forma explcita de establecer cada uno de estos cuatro modos de operacin delADC. Si la conversin ser de entrada nica o diferencial ser resultado de configurar elmultiplexor del ADC con los bits MUX4...MUX0. Por defecto las conversiones sern normales.Si queremos que se disparen automticamente habr que configurarlas con los bits ADTS2,ADTS1 y ADTS0 del registro ADCSRB, siempre que el bit ADATE de ADCSRA valga uno.

    Tabla ADTS2ADTS2 ADTS1 ADTS0 Fuente de disparo0 0 0 Modo de Corrida Libre0 0 1 Comparador Analgico0 1 0 Interrupcin Externa INT00 1 1 Coincidencia del Timer/Counter01 0 0 Desbordamiento del Timer/Counter01 0 1 Coincidencia B del Timer/Counter11 1 0 Desbordamiento del Timer/Counter11 1 1 Evento de Captura del Timer/Counter1

    SELECCIN DEL CANAL DE CONVERSINLas 8 entradas analgicas del ADC son los pines del puerto A de los AVR que tienen 4 puertoso ms. En los AVR de 3 puertos son los pines del puerto C; estos AVR tienen 6 entradasanalgicas si vienen en empaque PDIP u 8 si vienen en empaque TQFP, QFP o MLF. Las dosentradas adicionales son pines independientes, que no forman parte de ningn puerto.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 4

    Seales para iniciar conversiones normales y auto-disparadas. Conversiones normales de entrada nica, donde el ADC convierte el valor de un canal,

    cada vez que se setee el bit ADSC. Conversiones normales de entradas diferenciales, donde el ADC convierte la diferencia

    de dos canales. La conversin se inicia seteando el bit ADSC. Conversiones auto-disparadas de entrada nica, donde el ADC convierte un canal

    cuando se produzca alguno de los eventos seleccionados por los bits ADTS2, ADTS1 yADTS0, que puede ser, por ejemplo, el desbordamiento de un Timer o simplemente laactivacin del flag ADIF. Este ltimo caso es peculiar y se conoce como modo deconversiones de corrida libre, porque el ADC realiza conversiones una tras otra sincesar. Aqu la primera conversin se inicia seteando el bit ADSC.

    Conversiones auto-disparadas de entradas diferenciales. Es una combinacin de los dosmodos anteriores.

    No hay una forma explcita de establecer cada uno de estos cuatro modos de operacin delADC. Si la conversin ser de entrada nica o diferencial ser resultado de configurar elmultiplexor del ADC con los bits MUX4...MUX0. Por defecto las conversiones sern normales.Si queremos que se disparen automticamente habr que configurarlas con los bits ADTS2,ADTS1 y ADTS0 del registro ADCSRB, siempre que el bit ADATE de ADCSRA valga uno.

    Tabla ADTS2ADTS2 ADTS1 ADTS0 Fuente de disparo0 0 0 Modo de Corrida Libre0 0 1 Comparador Analgico0 1 0 Interrupcin Externa INT00 1 1 Coincidencia del Timer/Counter01 0 0 Desbordamiento del Timer/Counter01 0 1 Coincidencia B del Timer/Counter11 1 0 Desbordamiento del Timer/Counter11 1 1 Evento de Captura del Timer/Counter1

    SELECCIN DEL CANAL DE CONVERSINLas 8 entradas analgicas del ADC son los pines del puerto A de los AVR que tienen 4 puertoso ms. En los AVR de 3 puertos son los pines del puerto C; estos AVR tienen 6 entradasanalgicas si vienen en empaque PDIP u 8 si vienen en empaque TQFP, QFP o MLF. Las dosentradas adicionales son pines independientes, que no forman parte de ningn puerto.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 4

    Seales para iniciar conversiones normales y auto-disparadas. Conversiones normales de entrada nica, donde el ADC convierte el valor de un canal,

    cada vez que se setee el bit ADSC. Conversiones normales de entradas diferenciales, donde el ADC convierte la diferencia

    de dos canales. La conversin se inicia seteando el bit ADSC. Conversiones auto-disparadas de entrada nica, donde el ADC convierte un canal

    cuando se produzca alguno de los eventos seleccionados por los bits ADTS2, ADTS1 yADTS0, que puede ser, por ejemplo, el desbordamiento de un Timer o simplemente laactivacin del flag ADIF. Este ltimo caso es peculiar y se conoce como modo deconversiones de corrida libre, porque el ADC realiza conversiones una tras otra sincesar. Aqu la primera conversin se inicia seteando el bit ADSC.

    Conversiones auto-disparadas de entradas diferenciales. Es una combinacin de los dosmodos anteriores.

    No hay una forma explcita de establecer cada uno de estos cuatro modos de operacin delADC. Si la conversin ser de entrada nica o diferencial ser resultado de configurar elmultiplexor del ADC con los bits MUX4...MUX0. Por defecto las conversiones sern normales.Si queremos que se disparen automticamente habr que configurarlas con los bits ADTS2,ADTS1 y ADTS0 del registro ADCSRB, siempre que el bit ADATE de ADCSRA valga uno.

    Tabla ADTS2ADTS2 ADTS1 ADTS0 Fuente de disparo0 0 0 Modo de Corrida Libre0 0 1 Comparador Analgico0 1 0 Interrupcin Externa INT00 1 1 Coincidencia del Timer/Counter01 0 0 Desbordamiento del Timer/Counter01 0 1 Coincidencia B del Timer/Counter11 1 0 Desbordamiento del Timer/Counter11 1 1 Evento de Captura del Timer/Counter1

    SELECCIN DEL CANAL DE CONVERSINLas 8 entradas analgicas del ADC son los pines del puerto A de los AVR que tienen 4 puertoso ms. En los AVR de 3 puertos son los pines del puerto C; estos AVR tienen 6 entradasanalgicas si vienen en empaque PDIP u 8 si vienen en empaque TQFP, QFP o MLF. Las dosentradas adicionales son pines independientes, que no forman parte de ningn puerto.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 5

    El ADC solo puede tomar una o dos entradas analgicas por conversin, as que cada vez que sedesee obtener un valor analgico externo se debe seleccionar previamente dicha entradaanalgica mediante los bits MUX4, MUX3, MUX2, MUX1 y MUX0 del registro ADMUX.

    Registro ADMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    La siguiente tabla muestra todas las opciones posibles que se pueden obtener. Parececomplicado de descifrar pero enseguida lo explicaremos.

    Cananles del ADC del microcontrolador AVRMUX4:MUX0 Entrada nica Entrada Diferencial Positiva Entrada Diferencial Negativa Ganancia00000 ADC0

    N/A

    00001 ADC100010 ADC200011 ADC300100 ADC400101 ADC500110 ADC600111 ADC701000

    N/A

    ADC0 ADC0 10x01001 ADC1 ADC0 10x01010 ADC0 ADC0 200x01011 ADC1 ADC0 200x01100 ADC2 ADC2 10x01101 ADC3 ADC2 10x01110 ADC2 ADC2 200x01111 ADC3 ADC2 200x10000 ADC0 ADC1 1x10001 ADC1 ADC1 1x10010 ADC2 ADC1 1x10011 ADC3 ADC1 1x10100 ADC4 ADC1 1x10101 ADC5 ADC1 1x10110 ADC6 ADC1 1x10111 ADC7 ADC1 1x11000 ADC0 ADC2 1x11001 ADC1 ADC2 1x11010 ADC2 ADC2 1x11011 ADC3 ADC2 1x11100 ADC4 ADC2 1x11101 ADC5 ADC2 1x11110 1.1V ( )11111 0 V (GND)

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 6

    Observemos en primer lugar que la tabla se puede separar en tres secciones.La primera parte corresponde al denominado modo de conversin simple o de entrada nica,la segunda parte es del modo de conversin diferencial y en la tercera parte no se eligeningn canal analgico sino que se convierte el valor de la tensin o GND.El modo de conversin de entrada nica es el que se emplea en la gran mayora de lasaplicaciones. Aqu los bits del multiplexor MUX4 y MUX3 valen 0 y el ADC solo puedeconvertir una de las 8 entradas analgicas a la vez. El diagrama funcional del ADC en este casose representa as.

    Diagrama bsico del ADC para conversiones de entrada nica.Debemos tener en cuenta que este modo es compatible en todos los mdulos ADC de losmegaAVR que lo tienen. Sobra decir que no tendrn ningn efecto las configuraciones deMUX4:MUX0 que eligen los canales ADC6 y ADC7 en los AVR que no tienen estos pines. Dehecho los megaAVR de 3 puertos no tienen el bit MUX4 y es recomendable dejarlo siempre en 0.En el modo de conversin diferencial las entradas analgicas se agrupan de a dos. Cada parse constituye por una Entrada Diferencial Positiva y una Entrada Diferencial Negativa. Todaslas combinaciones posibles estn establecidas por los bits MUX4:MUX0, de acuerdo con latabla de arriba. Se puede observar all y en la figura mostrada abajo que en este modo intervieneadems un amplificador de ganancia que puede multiplicar la diferencia entre las entradas porun factor de 1x, 10x o 200x antes de ser convertido a su valor analgico. El inconveniente delamplificador es que reduce la resolucin del ADC a 8 bits si se usa la ganancia de 1x o 10x yhasta a 6 bits con la ganancia de 200x. Este modo de operacin del ADC solo est disponible enlos megaAVR de 4 puertos o ms.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 6

    Observemos en primer lugar que la tabla se puede separar en tres secciones.La primera parte corresponde al denominado modo de conversin simple o de entrada nica,la segunda parte es del modo de conversin diferencial y en la tercera parte no se eligeningn canal analgico sino que se convierte el valor de la tensin o GND.El modo de conversin de entrada nica es el que se emplea en la gran mayora de lasaplicaciones. Aqu los bits del multiplexor MUX4 y MUX3 valen 0 y el ADC solo puedeconvertir una de las 8 entradas analgicas a la vez. El diagrama funcional del ADC en este casose representa as.

    Diagrama bsico del ADC para conversiones de entrada nica.Debemos tener en cuenta que este modo es compatible en todos los mdulos ADC de losmegaAVR que lo tienen. Sobra decir que no tendrn ningn efecto las configuraciones deMUX4:MUX0 que eligen los canales ADC6 y ADC7 en los AVR que no tienen estos pines. Dehecho los megaAVR de 3 puertos no tienen el bit MUX4 y es recomendable dejarlo siempre en 0.En el modo de conversin diferencial las entradas analgicas se agrupan de a dos. Cada parse constituye por una Entrada Diferencial Positiva y una Entrada Diferencial Negativa. Todaslas combinaciones posibles estn establecidas por los bits MUX4:MUX0, de acuerdo con latabla de arriba. Se puede observar all y en la figura mostrada abajo que en este modo intervieneadems un amplificador de ganancia que puede multiplicar la diferencia entre las entradas porun factor de 1x, 10x o 200x antes de ser convertido a su valor analgico. El inconveniente delamplificador es que reduce la resolucin del ADC a 8 bits si se usa la ganancia de 1x o 10x yhasta a 6 bits con la ganancia de 200x. Este modo de operacin del ADC solo est disponible enlos megaAVR de 4 puertos o ms.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 6

    Observemos en primer lugar que la tabla se puede separar en tres secciones.La primera parte corresponde al denominado modo de conversin simple o de entrada nica,la segunda parte es del modo de conversin diferencial y en la tercera parte no se eligeningn canal analgico sino que se convierte el valor de la tensin o GND.El modo de conversin de entrada nica es el que se emplea en la gran mayora de lasaplicaciones. Aqu los bits del multiplexor MUX4 y MUX3 valen 0 y el ADC solo puedeconvertir una de las 8 entradas analgicas a la vez. El diagrama funcional del ADC en este casose representa as.

    Diagrama bsico del ADC para conversiones de entrada nica.Debemos tener en cuenta que este modo es compatible en todos los mdulos ADC de losmegaAVR que lo tienen. Sobra decir que no tendrn ningn efecto las configuraciones deMUX4:MUX0 que eligen los canales ADC6 y ADC7 en los AVR que no tienen estos pines. Dehecho los megaAVR de 3 puertos no tienen el bit MUX4 y es recomendable dejarlo siempre en 0.En el modo de conversin diferencial las entradas analgicas se agrupan de a dos. Cada parse constituye por una Entrada Diferencial Positiva y una Entrada Diferencial Negativa. Todaslas combinaciones posibles estn establecidas por los bits MUX4:MUX0, de acuerdo con latabla de arriba. Se puede observar all y en la figura mostrada abajo que en este modo intervieneadems un amplificador de ganancia que puede multiplicar la diferencia entre las entradas porun factor de 1x, 10x o 200x antes de ser convertido a su valor analgico. El inconveniente delamplificador es que reduce la resolucin del ADC a 8 bits si se usa la ganancia de 1x o 10x yhasta a 6 bits con la ganancia de 200x. Este modo de operacin del ADC solo est disponible enlos megaAVR de 4 puertos o ms.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 7

    Diagrama bsico del ADC para conversiones de entradas diferenciales.Finalmente, hay dos combinaciones de los bits MUX4:MUX0 que hacen que el valor analgicoa convertir sea la seal de tierra GND o una tensin de referencia denominada que varasegn el microcontrolador. En los megaAVR de las series 4xx y 8xx que son los enfocados conprioridad en cursomicros.com esta tensin vale 1.1V. Si vamos a trabajar con esta caractersticautilizando otros modelos de AVR, deberemos revisar su datasheet.

    Conversin de las tensiones de referencia GND y .LOS VOLTAJES DE REFERENCIASon los valores analgicos lmites entre los que deber estar comprendida la tensin analgica aconvertir. El nivel superior se representa por Vref+ y el inferior por Vref-.Como seguramente lo habrs notado en los diagramas anteriores, el valor de Vref- es igual alnegativo de Vref+ cuando el ADC realiza conversiones diferenciales y es igual a 0V en losdems casos. En cualquier modo de operacin Vref+ se puede configurar por los bits REFS1 yREFS0, del registro ADMUX y podemos escoger una de estas tres opciones:

    El valor del pin AVCC El valor del pin AREF Un Voltaje de Referencia Interno (de 1.1V o 2.56 V) que provee el megaAVR.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 7

    Diagrama bsico del ADC para conversiones de entradas diferenciales.Finalmente, hay dos combinaciones de los bits MUX4:MUX0 que hacen que el valor analgicoa convertir sea la seal de tierra GND o una tensin de referencia denominada que varasegn el microcontrolador. En los megaAVR de las series 4xx y 8xx que son los enfocados conprioridad en cursomicros.com esta tensin vale 1.1V. Si vamos a trabajar con esta caractersticautilizando otros modelos de AVR, deberemos revisar su datasheet.

    Conversin de las tensiones de referencia GND y .LOS VOLTAJES DE REFERENCIASon los valores analgicos lmites entre los que deber estar comprendida la tensin analgica aconvertir. El nivel superior se representa por Vref+ y el inferior por Vref-.Como seguramente lo habrs notado en los diagramas anteriores, el valor de Vref- es igual alnegativo de Vref+ cuando el ADC realiza conversiones diferenciales y es igual a 0V en losdems casos. En cualquier modo de operacin Vref+ se puede configurar por los bits REFS1 yREFS0, del registro ADMUX y podemos escoger una de estas tres opciones:

    El valor del pin AVCC El valor del pin AREF Un Voltaje de Referencia Interno (de 1.1V o 2.56 V) que provee el megaAVR.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 7

    Diagrama bsico del ADC para conversiones de entradas diferenciales.Finalmente, hay dos combinaciones de los bits MUX4:MUX0 que hacen que el valor analgicoa convertir sea la seal de tierra GND o una tensin de referencia denominada que varasegn el microcontrolador. En los megaAVR de las series 4xx y 8xx que son los enfocados conprioridad en cursomicros.com esta tensin vale 1.1V. Si vamos a trabajar con esta caractersticautilizando otros modelos de AVR, deberemos revisar su datasheet.

    Conversin de las tensiones de referencia GND y .LOS VOLTAJES DE REFERENCIASon los valores analgicos lmites entre los que deber estar comprendida la tensin analgica aconvertir. El nivel superior se representa por Vref+ y el inferior por Vref-.Como seguramente lo habrs notado en los diagramas anteriores, el valor de Vref- es igual alnegativo de Vref+ cuando el ADC realiza conversiones diferenciales y es igual a 0V en losdems casos. En cualquier modo de operacin Vref+ se puede configurar por los bits REFS1 yREFS0, del registro ADMUX y podemos escoger una de estas tres opciones:

    El valor del pin AVCC El valor del pin AREF Un Voltaje de Referencia Interno (de 1.1V o 2.56 V) que provee el megaAVR.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 8

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AVCC, ese pin lodebemos conectar a Vcc mediante un filtro pasa-bajas. Puesto que el pin AREF quedainternamente conectado a AVCC, es ms que recomendable colocarle un capacitor para filtrar elruido. Abajo se muestra un boceto del circuito descrito. Recordemos que el pin AVCC es enprincipio la alimentacin del puerto que lleva los canales del ADC, as como la alimentacin delmismo mdulo ADC. Sin embargo, incluso de no usar el ADC, el pin AVCC se debe conectar aVcc, con filtro o sin l.

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AREF, podemosconectar a ese pin cualquier fuente de voltaje, siempre que no supere el valor de la alimentacinVcc y en caso de que trabajemos con canales diferenciales no debe ser menor de 2 V. De estoltimo se deduce que no se podra elegir el Voltaje de Referencia Interno de 1.1V, descritoluego.Es muy poco frecuente programar el ADC para que opere de este modo, pero si lo vamos ahacer, debemos fijarnos bien en la configuracin de los bits REF1 y REF0. Si aplicamos unafuente de tensin en el pin AREF y los bits REF1 y REF0 seleccionan una referencia diferente,entonces se producir un corto-circuito interno entre el pin AREF y la referencia seleccionada(AVCC, por ejemplo).

    Los bits REFS1:REFS0 tambin pueden elegir como Vref+ alguno de los Voltajes deReferencia Internos que provee el AVR, pero aqu se debe tener en cuenta que sus valorespueden variar entre las diferentes series de AVR, incluso si son de familias cercanas. Tambinen este caso la referencia se ver reflejada por el pin AREF, de modo que deberamos conectarall un capacitor de estabilizacin.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 8

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AVCC, ese pin lodebemos conectar a Vcc mediante un filtro pasa-bajas. Puesto que el pin AREF quedainternamente conectado a AVCC, es ms que recomendable colocarle un capacitor para filtrar elruido. Abajo se muestra un boceto del circuito descrito. Recordemos que el pin AVCC es enprincipio la alimentacin del puerto que lleva los canales del ADC, as como la alimentacin delmismo mdulo ADC. Sin embargo, incluso de no usar el ADC, el pin AVCC se debe conectar aVcc, con filtro o sin l.

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AREF, podemosconectar a ese pin cualquier fuente de voltaje, siempre que no supere el valor de la alimentacinVcc y en caso de que trabajemos con canales diferenciales no debe ser menor de 2 V. De estoltimo se deduce que no se podra elegir el Voltaje de Referencia Interno de 1.1V, descritoluego.Es muy poco frecuente programar el ADC para que opere de este modo, pero si lo vamos ahacer, debemos fijarnos bien en la configuracin de los bits REF1 y REF0. Si aplicamos unafuente de tensin en el pin AREF y los bits REF1 y REF0 seleccionan una referencia diferente,entonces se producir un corto-circuito interno entre el pin AREF y la referencia seleccionada(AVCC, por ejemplo).

    Los bits REFS1:REFS0 tambin pueden elegir como Vref+ alguno de los Voltajes deReferencia Internos que provee el AVR, pero aqu se debe tener en cuenta que sus valorespueden variar entre las diferentes series de AVR, incluso si son de familias cercanas. Tambinen este caso la referencia se ver reflejada por el pin AREF, de modo que deberamos conectarall un capacitor de estabilizacin.

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 8

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AVCC, ese pin lodebemos conectar a Vcc mediante un filtro pasa-bajas. Puesto que el pin AREF quedainternamente conectado a AVCC, es ms que recomendable colocarle un capacitor para filtrar elruido. Abajo se muestra un boceto del circuito descrito. Recordemos que el pin AVCC es enprincipio la alimentacin del puerto que lleva los canales del ADC, as como la alimentacin delmismo mdulo ADC. Sin embargo, incluso de no usar el ADC, el pin AVCC se debe conectar aVcc, con filtro o sin l.

    Si los bits REFS1:REFS0 eligen como voltaje de referencia Vref+ al pin AREF, podemosconectar a ese pin cualquier fuente de voltaje, siempre que no supere el valor de la alimentacinVcc y en caso de que trabajemos con canales diferenciales no debe ser menor de 2 V. De estoltimo se deduce que no se podra elegir el Voltaje de Referencia Interno de 1.1V, descritoluego.Es muy poco frecuente programar el ADC para que opere de este modo, pero si lo vamos ahacer, debemos fijarnos bien en la configuracin de los bits REF1 y REF0. Si aplicamos unafuente de tensin en el pin AREF y los bits REF1 y REF0 seleccionan una referencia diferente,entonces se producir un corto-circuito interno entre el pin AREF y la referencia seleccionada(AVCC, por ejemplo).

    Los bits REFS1:REFS0 tambin pueden elegir como Vref+ alguno de los Voltajes deReferencia Internos que provee el AVR, pero aqu se debe tener en cuenta que sus valorespueden variar entre las diferentes series de AVR, incluso si son de familias cercanas. Tambinen este caso la referencia se ver reflejada por el pin AREF, de modo que deberamos conectarall un capacitor de estabilizacin.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 9

    Las siguientes tablas muestran la configuracin de los bits REFS1:REFS0 correspondiente a losAVR de las series ATmegaXX4 y ATmegaXX8. Podemos observar que la clara divergencia seencuentra en la eleccin de los Voltajes de Referencia Internos. Si vamos a utilizar estasreferencias en otros AVR ser recomendable revisar su datasheet respectivo.

    Tabla REFS1REFS1 REFS0 Voltaje de Referencia Vref+ para los ATmegaXX40 0 Pin AREF0 1 Pin AVCC con capacitor externo en el pin AREF1 0 Voltaje de Referencia Interno de 1.1V con capacitor externo en el pin AREF1 1 Voltaje de Referencia Interno de 2.56V con capacitor externo en el pin AREF

    Tabla REFS1REFS1 REFS0 Voltaje de Referencia Vref+ para los ATmegaXX80 0 Pin AREF0 1 Pin AVCC con capacitor externo en el pin AREF1 0 Reservado1 1 Voltaje de Referencia Interno de 1.1V con capacitor externo en el pin AREF

    Suponiendo que trabajamos con conversiones de entrada nica, esto es, Vref- conectado a tierra,GND = 0V, como se ve en la siguiente figura, entonces una entrada analgica igual a 0V oinferior se convertir en 0x000 y las tensiones analgicas iguales a Vref+ o superiores seconvertirn en el valor digital 0x3FF. Recordando la teora estudiada al inicio de este captulo,cualquier otro valor analgico Vin comprendido entre estos lmites estar sujeto a la frmula.

    Voltajes de Referencia del ADC para conversiones de entrada nica.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 10

    Por otro lado, si nuestro ADC realiza conversiones diferenciales, entonces la mximadiferencia positiva o negativa que se podr convertir correctamente ser (+/- Vref+)/ganancia,siendo esta ganancia igual a 1, 10 200. En este caso el resultado ser un nmero entero consigno, es decir, positivo o negativo, formateado en complemento a dos. De acuerdo con esto, lamxima diferencia negativa corresponder al valor digital 0x200 = -512 y la mxima diferenciapositiva se convertir en 0x1FF = +511. Cualquier otra diferencia analgica interpolada sedeber interpretar con la siguiente frmula.

    Donde Vpos en la entrada diferencial positiva y Vneg es la entrada diferencial negativa.

    Voltajes de Referencia del ADC para conversiones de entradas diferenciales.La primera conversin despus de cambiar los voltajes de referencia es imprecisa y serecomienda descartarla.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 11

    RESULTADO DE LA CONVERSINEl resultado de la conversin es una cantidad binaria de 10 bits que se deposita entre losregistros ADCH y ADCL, segn la justificacin mostrada en la siguiente figura y de acuerdocon el bit ADLAR (ADC Left Adjust Result) del registro ADMUX.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Justificacin del resultado entre los registros ADCH y ADCLObviamente debemos esperar a que termine una conversin antes de leer un dato vlido de estosregistros. Para esto podemos comprobar la activacin del flag ADIF (del registro ADCSRA) ola puesta a cero del bit ADSC (tambin de ADCSRA), si es que el ADC opera en modo normal.Los dos registros del resultado son de solo lectura y el acceso a ellos no involucra una operacinatmica. Sin embargo, debemos saber que despus de leer el registro ADCL queda bloqueada laactualizacin de los otros registros del ADC hasta que leamos el registro ADCH. De este modose asegura que los datos presentes en estos registros corresponden a una misma conversin. Deaqu se desprende que al terminar una conversin debemos empezar por leer ADCL y luegoADCH, o simplemente podemos tomar el valor de ADCH y as permitir que se puedan depositaren ellos los valores de nuevas conversiones.Cuando se establece la justificacion derecha los registros ADCH y ADCL conforman el registrode 16 bits llamado simplemente ADC y puede ser as reconocido por los compiladores C puestoque ocupan posiciones contiguas en el espacio de los registros de E/S

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 11

    RESULTADO DE LA CONVERSINEl resultado de la conversin es una cantidad binaria de 10 bits que se deposita entre losregistros ADCH y ADCL, segn la justificacin mostrada en la siguiente figura y de acuerdocon el bit ADLAR (ADC Left Adjust Result) del registro ADMUX.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Justificacin del resultado entre los registros ADCH y ADCLObviamente debemos esperar a que termine una conversin antes de leer un dato vlido de estosregistros. Para esto podemos comprobar la activacin del flag ADIF (del registro ADCSRA) ola puesta a cero del bit ADSC (tambin de ADCSRA), si es que el ADC opera en modo normal.Los dos registros del resultado son de solo lectura y el acceso a ellos no involucra una operacinatmica. Sin embargo, debemos saber que despus de leer el registro ADCL queda bloqueada laactualizacin de los otros registros del ADC hasta que leamos el registro ADCH. De este modose asegura que los datos presentes en estos registros corresponden a una misma conversin. Deaqu se desprende que al terminar una conversin debemos empezar por leer ADCL y luegoADCH, o simplemente podemos tomar el valor de ADCH y as permitir que se puedan depositaren ellos los valores de nuevas conversiones.Cuando se establece la justificacion derecha los registros ADCH y ADCL conforman el registrode 16 bits llamado simplemente ADC y puede ser as reconocido por los compiladores C puestoque ocupan posiciones contiguas en el espacio de los registros de E/S

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 11

    RESULTADO DE LA CONVERSINEl resultado de la conversin es una cantidad binaria de 10 bits que se deposita entre losregistros ADCH y ADCL, segn la justificacin mostrada en la siguiente figura y de acuerdocon el bit ADLAR (ADC Left Adjust Result) del registro ADMUX.

    Registro DMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Justificacin del resultado entre los registros ADCH y ADCLObviamente debemos esperar a que termine una conversin antes de leer un dato vlido de estosregistros. Para esto podemos comprobar la activacin del flag ADIF (del registro ADCSRA) ola puesta a cero del bit ADSC (tambin de ADCSRA), si es que el ADC opera en modo normal.Los dos registros del resultado son de solo lectura y el acceso a ellos no involucra una operacinatmica. Sin embargo, debemos saber que despus de leer el registro ADCL queda bloqueada laactualizacin de los otros registros del ADC hasta que leamos el registro ADCH. De este modose asegura que los datos presentes en estos registros corresponden a una misma conversin. Deaqu se desprende que al terminar una conversin debemos empezar por leer ADCL y luegoADCH, o simplemente podemos tomar el valor de ADCH y as permitir que se puedan depositaren ellos los valores de nuevas conversiones.Cuando se establece la justificacion derecha los registros ADCH y ADCL conforman el registrode 16 bits llamado simplemente ADC y puede ser as reconocido por los compiladores C puestoque ocupan posiciones contiguas en el espacio de los registros de E/S

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 12

    RELOJ DEL ADC Y TIEMPO DE CONVERSINComo todo circuito sncrono, el conversor ADC necesita de una seal de reloj para dirigir lospasos de su algoritmo de aproximaciones sucesivas, se que describimos al principio. Este relojderiva del oscilador del sistema F_CPU. La frecuencia del reloj del ADC depender de laresolucion del resultado que se desee obtener. Por ejemplo, si se va a trabajar con los 10 bits deresolucion, entonces se requerir de un reloj cuya frecuencia est entre 50kHz y 200kHz. Si serequiere de una resolucion menor de 10 bits, el reloj del ADC puede superar los 200kHz.El reloj del ADC es una ramificacion del reloj del sistema, F_CPU. De all proviene y antes deaplicarse al ADC pasa por un prescaler programable que permite disminuir su valor. Losfactores de divisin se establecen por los bits ADPS2, ADPS1 y ADPS0, del registro ADCSRA,de acuerdo con la tabla mostrada ms abajo.

    Diagrama de la fuente del reloj del ADC.

    Tabla ADPS2ADPS2 ADPS1 ADPS0 Factor de Divisin0 0 0 20 0 1 20 1 0 40 1 1 81 0 0 161 0 1 321 1 0 641 1 1 128

    A modo de ejemplo analicemos los valores de ADPS1, ADPS1 y ADPS0 que podramos usarsuponiendo que trabajamos con nuestro acostumbrado XTAL (F_CPU) de 8MHz.Si ADPS2:ADPS0 = 111b, el reloj del ADC tendr una frecuencia de 8MHz/128 = 62.5kHz,valor suficiente para conseguir resultados fiables de 10 bits, tan fiables como los generados a125kHz con el factor de prescaler de 64.Sin embargo, si escogemos el factor de 32, con ADPS2:ADPS0 = 101b, el ADC operar a8MHz/32 = 250kHz, que es una frecuencia superior a los 200kHz que garantizan una buenaconversin, de modo que deberemos evitarla, a menos tal vez que solo nos interesen los 8 bits

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 12

    RELOJ DEL ADC Y TIEMPO DE CONVERSINComo todo circuito sncrono, el conversor ADC necesita de una seal de reloj para dirigir lospasos de su algoritmo de aproximaciones sucesivas, se que describimos al principio. Este relojderiva del oscilador del sistema F_CPU. La frecuencia del reloj del ADC depender de laresolucion del resultado que se desee obtener. Por ejemplo, si se va a trabajar con los 10 bits deresolucion, entonces se requerir de un reloj cuya frecuencia est entre 50kHz y 200kHz. Si serequiere de una resolucion menor de 10 bits, el reloj del ADC puede superar los 200kHz.El reloj del ADC es una ramificacion del reloj del sistema, F_CPU. De all proviene y antes deaplicarse al ADC pasa por un prescaler programable que permite disminuir su valor. Losfactores de divisin se establecen por los bits ADPS2, ADPS1 y ADPS0, del registro ADCSRA,de acuerdo con la tabla mostrada ms abajo.

    Diagrama de la fuente del reloj del ADC.

    Tabla ADPS2ADPS2 ADPS1 ADPS0 Factor de Divisin0 0 0 20 0 1 20 1 0 40 1 1 81 0 0 161 0 1 321 1 0 641 1 1 128

    A modo de ejemplo analicemos los valores de ADPS1, ADPS1 y ADPS0 que podramos usarsuponiendo que trabajamos con nuestro acostumbrado XTAL (F_CPU) de 8MHz.Si ADPS2:ADPS0 = 111b, el reloj del ADC tendr una frecuencia de 8MHz/128 = 62.5kHz,valor suficiente para conseguir resultados fiables de 10 bits, tan fiables como los generados a125kHz con el factor de prescaler de 64.Sin embargo, si escogemos el factor de 32, con ADPS2:ADPS0 = 101b, el ADC operar a8MHz/32 = 250kHz, que es una frecuencia superior a los 200kHz que garantizan una buenaconversin, de modo que deberemos evitarla, a menos tal vez que solo nos interesen los 8 bits

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 12

    RELOJ DEL ADC Y TIEMPO DE CONVERSINComo todo circuito sncrono, el conversor ADC necesita de una seal de reloj para dirigir lospasos de su algoritmo de aproximaciones sucesivas, se que describimos al principio. Este relojderiva del oscilador del sistema F_CPU. La frecuencia del reloj del ADC depender de laresolucion del resultado que se desee obtener. Por ejemplo, si se va a trabajar con los 10 bits deresolucion, entonces se requerir de un reloj cuya frecuencia est entre 50kHz y 200kHz. Si serequiere de una resolucion menor de 10 bits, el reloj del ADC puede superar los 200kHz.El reloj del ADC es una ramificacion del reloj del sistema, F_CPU. De all proviene y antes deaplicarse al ADC pasa por un prescaler programable que permite disminuir su valor. Losfactores de divisin se establecen por los bits ADPS2, ADPS1 y ADPS0, del registro ADCSRA,de acuerdo con la tabla mostrada ms abajo.

    Diagrama de la fuente del reloj del ADC.

    Tabla ADPS2ADPS2 ADPS1 ADPS0 Factor de Divisin0 0 0 20 0 1 20 1 0 40 1 1 81 0 0 161 0 1 321 1 0 641 1 1 128

    A modo de ejemplo analicemos los valores de ADPS1, ADPS1 y ADPS0 que podramos usarsuponiendo que trabajamos con nuestro acostumbrado XTAL (F_CPU) de 8MHz.Si ADPS2:ADPS0 = 111b, el reloj del ADC tendr una frecuencia de 8MHz/128 = 62.5kHz,valor suficiente para conseguir resultados fiables de 10 bits, tan fiables como los generados a125kHz con el factor de prescaler de 64.Sin embargo, si escogemos el factor de 32, con ADPS2:ADPS0 = 101b, el ADC operar a8MHz/32 = 250kHz, que es una frecuencia superior a los 200kHz que garantizan una buenaconversin, de modo que deberemos evitarla, a menos tal vez que solo nos interesen los 8 bits

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 13

    ms significativos del resultado. En este ejemplo, los factores de prescaler inferiores 32conllevarn una operacin del ADC deficiente e inaceptable.De nuestras lecciones iniciales del conversor de aproximaciones sucesivas, sabemos que porcada bit del resultado digital el ADC demora un ciclo del reloj. Esto es, si el conversor generadatos de 10 bits se requerirn de 10 ciclos de reloj por conversin. Eso es del todo cierto solo enel cmputo mismo de la conversin o en un ADC ideal; en un ADC real hay factores deestablecimiento que alargan ligeramente el tiempo de conversin.En los megaAVR el tiempo de conversin depende del tipo de conversin que se realiza. Lasiguiente tabla muestra las cuatro posibilidades.

    Tabla Tipo de ConversinTipo de Conversin Muestreo y retencin (Ciclos desdeel inicio de la conversin)

    Tiempo de Conversin(Ciclos)

    Primera conversin 14.5 25Conversiones Normales, de entradanica 1.5 13Conversiones Normales, de entradadiferencial 1.5/2.5 13/14Conversiones auto-disparadas 2 13.5

    La primera conversin en cualquier modo es la que se ejecuta despus de habilitar el ADC,seteando el bit ADEN; siempre demora ms debido a que se debe inicializar el circuitoanalgico del ADC.Los ciclos de muestreo y retencin se cuentan a partir del momento en que se inicia laconversin, o sea, despus de setear el bit ADSC, del registro ADCSRA. Para comprender estodebemos saber que el ADC no capta la seal a convertir directamente del pin ADCx, sino queprimero espera que dicho nivel de tensin se deposite en el capacitor de muestreo y retencin

    , para luego iniciar la conversin desde all. El tiempo que demora este capacitor encargarse se denomina periodo de muestreo y retencin o a veces tiempo de adquisicin. stevara principalmente de acuerdo con la impedancia Rs del circuito externo al canal del ADC. ElADC del AVR est optimizado para acoplarse a impedancias de 10K o inferior.

    Circuito de entrada del ADC de los megaAVR.Junto con su resolucin el tiempo de conversin es el parmetro ms importante de un ADC.Para fines prcticos esto se calcula como la suma del tiempo de conversin en s (el queacabamos de describir) ms el tiempo de adquisicin. Por ejemplo, segn la tabla de arriba, lasconversiones normales de entrada nica, que son las ms usadas, demoran 13+1.5 = 14.5 ciclos.Si el ADC trabajara a su mxima frecuencia recomendada de 200kHz, cada ciclo durara

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 13

    ms significativos del resultado. En este ejemplo, los factores de prescaler inferiores 32conllevarn una operacin del ADC deficiente e inaceptable.De nuestras lecciones iniciales del conversor de aproximaciones sucesivas, sabemos que porcada bit del resultado digital el ADC demora un ciclo del reloj. Esto es, si el conversor generadatos de 10 bits se requerirn de 10 ciclos de reloj por conversin. Eso es del todo cierto solo enel cmputo mismo de la conversin o en un ADC ideal; en un ADC real hay factores deestablecimiento que alargan ligeramente el tiempo de conversin.En los megaAVR el tiempo de conversin depende del tipo de conversin que se realiza. Lasiguiente tabla muestra las cuatro posibilidades.

    Tabla Tipo de ConversinTipo de Conversin Muestreo y retencin (Ciclos desdeel inicio de la conversin)

    Tiempo de Conversin(Ciclos)

    Primera conversin 14.5 25Conversiones Normales, de entradanica 1.5 13Conversiones Normales, de entradadiferencial 1.5/2.5 13/14Conversiones auto-disparadas 2 13.5

    La primera conversin en cualquier modo es la que se ejecuta despus de habilitar el ADC,seteando el bit ADEN; siempre demora ms debido a que se debe inicializar el circuitoanalgico del ADC.Los ciclos de muestreo y retencin se cuentan a partir del momento en que se inicia laconversin, o sea, despus de setear el bit ADSC, del registro ADCSRA. Para comprender estodebemos saber que el ADC no capta la seal a convertir directamente del pin ADCx, sino queprimero espera que dicho nivel de tensin se deposite en el capacitor de muestreo y retencin

    , para luego iniciar la conversin desde all. El tiempo que demora este capacitor encargarse se denomina periodo de muestreo y retencin o a veces tiempo de adquisicin. stevara principalmente de acuerdo con la impedancia Rs del circuito externo al canal del ADC. ElADC del AVR est optimizado para acoplarse a impedancias de 10K o inferior.

    Circuito de entrada del ADC de los megaAVR.Junto con su resolucin el tiempo de conversin es el parmetro ms importante de un ADC.Para fines prcticos esto se calcula como la suma del tiempo de conversin en s (el queacabamos de describir) ms el tiempo de adquisicin. Por ejemplo, segn la tabla de arriba, lasconversiones normales de entrada nica, que son las ms usadas, demoran 13+1.5 = 14.5 ciclos.Si el ADC trabajara a su mxima frecuencia recomendada de 200kHz, cada ciclo durara

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 13

    ms significativos del resultado. En este ejemplo, los factores de prescaler inferiores 32conllevarn una operacin del ADC deficiente e inaceptable.De nuestras lecciones iniciales del conversor de aproximaciones sucesivas, sabemos que porcada bit del resultado digital el ADC demora un ciclo del reloj. Esto es, si el conversor generadatos de 10 bits se requerirn de 10 ciclos de reloj por conversin. Eso es del todo cierto solo enel cmputo mismo de la conversin o en un ADC ideal; en un ADC real hay factores deestablecimiento que alargan ligeramente el tiempo de conversin.En los megaAVR el tiempo de conversin depende del tipo de conversin que se realiza. Lasiguiente tabla muestra las cuatro posibilidades.

    Tabla Tipo de ConversinTipo de Conversin Muestreo y retencin (Ciclos desdeel inicio de la conversin)

    Tiempo de Conversin(Ciclos)

    Primera conversin 14.5 25Conversiones Normales, de entradanica 1.5 13Conversiones Normales, de entradadiferencial 1.5/2.5 13/14Conversiones auto-disparadas 2 13.5

    La primera conversin en cualquier modo es la que se ejecuta despus de habilitar el ADC,seteando el bit ADEN; siempre demora ms debido a que se debe inicializar el circuitoanalgico del ADC.Los ciclos de muestreo y retencin se cuentan a partir del momento en que se inicia laconversin, o sea, despus de setear el bit ADSC, del registro ADCSRA. Para comprender estodebemos saber que el ADC no capta la seal a convertir directamente del pin ADCx, sino queprimero espera que dicho nivel de tensin se deposite en el capacitor de muestreo y retencin

    , para luego iniciar la conversin desde all. El tiempo que demora este capacitor encargarse se denomina periodo de muestreo y retencin o a veces tiempo de adquisicin. stevara principalmente de acuerdo con la impedancia Rs del circuito externo al canal del ADC. ElADC del AVR est optimizado para acoplarse a impedancias de 10K o inferior.

    Circuito de entrada del ADC de los megaAVR.Junto con su resolucin el tiempo de conversin es el parmetro ms importante de un ADC.Para fines prcticos esto se calcula como la suma del tiempo de conversin en s (el queacabamos de describir) ms el tiempo de adquisicin. Por ejemplo, segn la tabla de arriba, lasconversiones normales de entrada nica, que son las ms usadas, demoran 13+1.5 = 14.5 ciclos.Si el ADC trabajara a su mxima frecuencia recomendada de 200kHz, cada ciclo durara

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 14

    1/200kHz = 5us. De aqu concluimos que cada una de estas conversiones en realidad toma14.5*5 = 72.5us y que en un segundo se pueden realizar hasta 1/72.5u = 13793 conversiones =>14 kSPS. Por si acaso, la unidad kSPS significa kilo Samples Per Second. El datasheet dice quellega a 15 kSPS pero ya ves que segn nuestros clculos no sale as. Como sea, es un conversorbastante lento para mi gusto

    INTERRUPCIN DEL ADC Y MODO SLEEPRecordemos que el modo Sleep es un estado en que se detienen las diversas ramificaciones deloscilador del sistema y dependiendo de las ramificaciones que se congelen se pueden conocervarios modos Sleep. Pues bien, son dos los modos Sleep que nos competen en esta ocasin.Idle mode. Es el estado de sueo menos profundo que existe en los AVR. Aqu solo se congelanlos relojes del CPU y de la memoria FLASH, permitiendo que los dems perifricos como elUSART, TWI, SPI, los Timers, y, por supuesto, el ADC, continen trabajando normalmente.ADC Noise Reduction Mode, o modo de reduccin de ruido del ADC. Es el segundo estado desueo y, por su nombre, fue diseado para que el ADC opere sin interferencias, o sea, aunquenormalmente se piensa en el modo Sleep como una forma de ahorrar energa, el principal objetode usar el ADC en este estado es tomar la seal analgica sin presencia del ruido deconmutacin inherente de los otros componentes del microcontrolador. Aparte del CPU en esteestado se congelan todos los perifricos relacionados con las transferencias de datos (USART,SPI, etc.) quedando como despertadores solo las interrupciones asncronas, aparte del ADC, porsupuesto.El evento que puede disparar la interrupcin del ADC es la conclusin de una conversin. Enese instante, al mismo tiempo que se limpia el bit ADSC, se activar al flag ADIF. El bit ADIFse limpia por hardware al ejecutarse la funcin de interrupcin ISR y si no se va a utilizar dichafuncin tambin se puede limpiar por software escribiendo un uno.La interrupcin del ADC se habilita seteando el bit ADIE, obviamente aparte de I de SREG.

    Registro ADCSRAADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

    Para realizar conversiones en modo ADC Noise Reduction se deben seguir los siguientes pasos. El ADC debe estar habilitado, debe estar configurado para conversiones normales, no

    debe tener una conversin en curso y debe tener habilitada la interrupcin del ADC. Entrar en modo ADC Noise Reduction o Idle mode. El ADC iniciar la conversin

    apenas se detenga el CPU. Al terminar la conversin, la interrupcin del ADC despertar el CPU y se ejecutar la

    rutina de interrupcin respectiva.Debemos observar que el ADC no se apagar automticamente al entrar en otros modos Sleepque no sean Idle o ADC Noise Reduction. Se recomienda por tanto apagarlo manualmenteescribiendo cero en el bit ADEN para evitar desperdicio de energa. Si el ADC est habilitadoen dichos modos Sleep y se desea realizar conversiones diferenciales, se recomienda apagar yluego encender el ADC despus de salir del modo Sleep para asegurar que se obtenganresultados vlidos

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 15

    REGISTROS DEL MDULO ADCADCSRA: ADC Control and Status Register A

    Registro ADCSRAADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

    Registro de MicrocontroladorADEN ADC Enable

    Escribiendo uno en este bit se habilita el ADC. Escribiendo un cero el ADC se apaga. Si se apaga elADC cuando hay una conversin en progreso, se interrumpir y terminar dicha conversin.

    ADSC

    ADC Start ConversionEn modo de conversin normal escribir uno en este bit iniciar una conversin. En modo deconversiones auto-disparadas, escribir uno en este bit iniciar la primera conversin. La primeraconversin despus de escribir en ADSC tras iniciar el ADC o si ADSC fue escrito al mismo tiempo quese habilit el ADC, tomar 25 ciclos de reloj del ADC en lugar de los 13 ciclos habituales. La primeraconversin conlleva la inicializacin del ADC.

    ADSC se leer como uno mientras la conversin est en progreso. Al terminar la conversin este bitretornar a cero. Escribir cero en este bit no tiene efecto.

    ADATE ADC Auto Trigger EnableCuando se escribe uno en este bit se habilitan las conversiones automticas del ADC. El ADC iniciaruna conversin en el flanco positivo de la seal de disparo seleccionada. La fuente de disparo seselecciona por los bits ADTS en el registro ADCSRB.

    ADIF

    ADC Interrupt FlagEste bit se setea cuando termina una conversin y se actualizan los registros los registros de datos. Lainterrupcin de Conversin de ADC Completada se ejecuta cuando valgan uno los bits ADIE e I deSREG.

    El flag ADIF se limpiar automticamente por hardware cuando se ejecute la correspondiente rutina deinterrupcin ISR. Alternativamente, ADIF se limpia escribindole un uno. Observa que ejecutar unainstruccin de Lectura-Modificacin-Escritura en ADCSRA puede deshabilitar una interrupcinpendiente. Esto tambin se aplica cuando se usan las instrucciones SBI y CBI.

    ADIE ADC Interrupt EnableCuando se escribe uno en este bit y el bit I de SREG vale uno se activa la interrupcin de Conversin deADC Completada.

    ADPS2:0

    ADC Prescaler Select BitsEstos bits determinan el factor de divisin entre la frecuencia del XTAL y el reloj de entrada del ADC.

    Tabla ADPS2ADPS2 ADPS1 ADPS0 Factor de Divisin0 0 0 20 0 1 20 1 0 40 1 1 81 0 0 161 0 1 321 1 0 641 1 1 128

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 16

    ADCSRB: ADC CONTROL AND STATUS REGISTER BRegistro ADCSRB

    --- ACME --- --- --- ADTS2 ADTS1 ADTS0Registro de Microcontrolador

    ACMEAnalog Comparator Multiplexer EnableAl escribir uno en este bit estando el ADC apagado (ADEN en ADCSRA es cero), elmultiplexor del ADC selecciona la entrada negativa del Comparador Analgico.Cuando se escribe cero en este bit, la entrada negativa del Comparador Analgicoser AIN1.

    ADTS2:0

    ADC Auto Trigger SourceSi el bit ADATE de ADCSRA vale uno, la configuracin de los bits ADTS2:0selecciona la fuente de las conversiones auto-disparadas del ADC.Si ADATE vale cero, la configuracin de ADTS2:0 no tendr efecto. La conversinse inicia en el flanco de subida de la seal seleccionada. Observa que cambiar de unafuente de disparo que vale cero a una fuente que vale uno generar un flanco desubida en la seal de disparo, y si el bit ADEN de ADCSRA vale uno, esto iniciaruna conversin. El cambio al Modo de Corrida Libre (ADTS2:0 = 000) no originarun evento de disparo, incluso si est activado el flag de interrupcin del ADC.

    Tabla ADTS2ADTS2 ADTS1 ADTS0 Fuente de disparo0 0 0 Modo de Corrida Libre0 0 1 Comparador Analgico0 1 0 Interrupcin Externa INT00 1 1 Coincidencia del Timer/Counter01 0 0 Desbordamiento del Timer/Counter01 0 1 Coincidencia B del Timer/Counter11 1 0 Desbordamiento del Timer/Counter11 1 1 Evento de Captura del Timer/Counter1

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 17

    ADMUX: ADC MULTIPLEXER SELECTION REGISTER

    Registro ADMUXREFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    Registro de Microcontrolador

    REFS1:0

    Reference Selection BitsEstos bits seleccionan los voltajes de referencia del ADC, como se muestra en lasiguiente tabla. Si estos se cambian durante una conversin, el cambio no tendrefecto hasta que termine la conversin (hasta que se ponga a uno el flag ADIF enADCSRA). Si se usa un voltaje de referencia aplicado al pin AREF, no se podrnusar las opciones de voltaje de referencia internos.Nota: Si se seleccionan canales diferenciales, solo se podr usar 2.56V comoVoltaje de Referencia Interno.

    Tabla REFS1REFS1 REFS0 Voltaje de Referencia Vref+ Seleccionado (ATmega 4xx)0 0 Pin AREF, Vref Interno desconectado0 1 Pin AVCC con capacitor externo en el pin AREF1 0 Voltaje de Referencia Interno de 1.1Vcon capacitor externo en el pin AREF1 1 Voltaje de Referencia Interno de 2.56Vcon capacitor externo en el pin AREF

    ADLARADC Left Adjust ResultEl bit ADLAR afecta la representacin del resultado de la conversin en losregistros de datos del ADC. Al escribir uno en ADLAR el resultado se justificar ala izquierda, de otro modo, el resultado se justifica a la derecha. El cambio del bitADLAR afectar inmediatamente los registros de datos del ADC, sin importar sihay conversiones en curso.

    MUX4:0

    Analog Channel and Gain Selection BitsEl valor de estos bits selecciona la combinacin de las entradas analgicas que seconectan al ADC. Estos bits tambin seleccionan la ganancia de los canalesdiferenciales. Para ms informacin ver la seccin Seleccin del Canal deConversin. Si se cambian estos bits durante una conversin, el cambio no tendrefecto hasta que se complete la conversin en curso (hasta que el bit ADIF deADCSRA se ponga a uno).

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 18

    ADCH Y ADCL: ADC DATA REGISTER

    Registro ADCH

    Registro ADCL

    Registro de MicrocontroladorADC Conversion ResultCuando termine una conversin del ADC el resultado ser almacenado en estos dos registros.Si se usan canales diferenciales, el resultado se presentar en formato de complemento a dos.Al leer ADCL los registros de datos del ADC no se actualizan hasta que se lea ADCH. Comoconsecuencia, si el resultado se justifica a la izquierda y si no se requiere de ms de 8 bits deprecisin, bastar con leer ADCH. De otro modo, ADCL se deber ser el primer registro enleer.El bit ADLAR del ADMUX y los bits MUXn de ADMUX afectan el modo en que se lee elresultado de estos registros. Si ADLAR vale uno, el resultado se justifica a la izquierda. SiADLAR vale cero (valor por defecto), el resultado se justifica a la derecha.

    DIDR0: Digital Input Disable Register 0

    Registro DIDR0ADC7D ADC6D ADC5D ADC4D ADC3D ADC2D ADC1D ADC0D

    Registro de Microcontrolador

    Bit 7:0ADC7D..ADC0D: ADC7:0 Digital Input DisableCuando se escribe uno en este bit, se deshabilita el buffer de entrada digitalcorrespondiente al pin ADCx. Si este bit vale uno, el correspondiente bit del registroPIN se leer siempre como cero. Cuando se aplica una seal analgica al pin ADC7.0 yno se necesita la entrada digital de este pin, este bit se debera setear para reducir elconsumo de energa en el buffer de entrada digital

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 19

    PRACTICA 1MODULO ADCCONVERSION DE SEAL ANALOGICA A DIGITAL CON

    EL ATMEGA8

    FUNDAMENTO TEORICOEl Conversor Analgico a Digital del ATMEGA8 tiene una resolucin deconversin de 10bits de hasta 15kSPS, 6 canales Analgicos, Ajuste aderecha i izquierda del resultado de la conversin, Voltajes de referencia, 2modos de conversin: simple y continuo, Interrupcin en el momento de laconversin completada, cancelacin de ruido activando modo Sleep, yalgunos m que se pueden ver en la hoja de datos.

    El mtodo de conversin que usa el micro es de aproximaciones sucesivas.

    Los registros involucrados con el Conversor A/D son: ADMUX ADC Multiplexer Selection Register ADMUX ADCSRA ADC Control and Status Register A ADCL and ADCH The ADC Data Register

    ADMUX ADC Multiplexer Selection Register ADMUX

    Este registro es muy importante ya que en el se realizan la mayora de lasconfiguraciones para el ADC:

    Bit 7:6 REFS1:0: Reference Selection Bits:Se utilizan para seleccionar el tipode voltaje de referncia que se usar, si interno, externo o deshabilitado, segn latabla:

    Bit 5 ADLAR: ADC Left Adjust Result: Configurado con 1, ajustar el resultadode la conversin en los registros ADCH y ADCL a la Izquierda, caso contrario con un0 lo har a la derecha, esto lo veremos ms adelante con unas imgenes.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 20

    Bits 3:0 MUX3:0: Analog Channel Selection Bits: Estos bits seleccionarn elcanal analgico que se usar en la presente conversin, de acuerdo a la siguientetabla:

    ADCSRA ADC Control and Status Register A

    En este registro se hacen las dems configuraciones y tambin se tiene los bits decontrol de inicio/fin de conversin.Bit 7 ADEN: ADC Enable: Es la habilitacin del ADC para su uso (1), casocontrario el ADC estar apagado (0)Bit 6 ADSC: ADC Start Conversion: Colocando un 1 en este bit se inicia laconversin analgica, ya sea en modo normal o en modo contnuo, salvo que en elcontnuo no har falta volverlo a colocar a 1 cuando se necesite otra conversin, loque si se debe hacer en modo normal, ya que el conversor en este modo coloca acero por hardware a este bit cuando la conversin AD se ha terminadoBit 5 ADFR: ADC Free Running Select: Con 1 se habilita el modo contnuo(free running), y el ADC muestrear y actualizar los registros de datos de laconversin contnuamente, colocando un 0 el modo contnuo se detiene.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 21

    Bit 4 ADIF: ADC Interrupt Flag: Este bit se coloca a 1 cuando la conversin ADes completada y los registros de datos de la conversin son actualizados. Seejecutar la rutina de interrupcin si esta implementada y se tiene configurada lasmscaras correspondientes para esta interrupcin y el bit de Interrupcionesglobales, y se pondr a 0 por hardware al terminar la rutina de interrupcin.

    Bit 3 ADIE: ADC Interrupt Enable: Es la mscara de habilitacin para lainterrupcin por Conversin AD completada, se la habilita colocando un 1.

    Bits 2:0 ADPS2:0: ADC Prescaler Select Bits: Estos bits determinan el divisorentre la frecuencia del Osilador principal y la entrada de reloj del ADC, es segn latabla:

    ADCL and ADCH The ADC Data RegisterPor ltimo los registros de datos donde se almacena el resultado de 10bits de laconversin AD, que son de dos formas segn la justificacin configurada en ADLAR

    ADLAR=0ADLAR=1

    Cuando la conversin AD ha sido completada, el resultado puede ser encontrado enstos 2 registros, en el formato que ADLAR indique, primero se debe leer ADCL yposteriormente ADCH. Si no ms de 8 bits de resolucin son necesarios se puedeusar ADLAR=1 y leer directamente ADCH.

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 22

    PRACTICA1 -ADCEn este ejemplo veremos cmo funciona el ADC de 10bits de resolucin del micro,usaremos un potencimetro conectado en el canal 0 el cual nos dar los diferentesvalores de tensin analgica entre 0 y 5V. Visualizaremos el dato convertido en 10LEDs conectados en el puertoD y los restantes 2 en los bits menossignificativos del puerto B.

    PROGRAMA;Programa: Conversor A/D de 10bits;Notas:Este programa realiza una conversin de una tensin analgica a valores;digitales de 10bits;;Registros: r16 para configuraciones de los puertos, del ADC, y para lectura de la;conversin. r17 y r18 para retardos.;

    MODULO ADC1O BITS

    VISUALIZACION50%

    RV2

    1kCANAL 0

    PC0ATMEGA8

    PB0/ICP114PB1/OC1A15PB2/SS/OC1B16PB3/MOSI/OC217PB4/MISO18PB5/SCK19PB6/TOSC1/XTAL19PB7/TOSC2/XTAL210

    PC6/RESET 1

    PD0/RXD 2PD1/TXD 3PD2/INT0 4PD3/INT1 5

    PD4/T0/XCK 6PD5/T1 11

    PD6/AIN0 12PD7/AIN1 13

    PC0/ADC0 23PC1/ADC1 24PC2/ADC2 25PC3/ADC3 26

    PC4/ADC4/SDA 27PC5/ADC5/SCL 28

    AREF21AVCC20

    U1

    ATMEGA8

    85%

    RV11k

    D1LED-YELLOW

    D2LED-YELLOW

    .

    .D4.

    D5-

    D6LED-YELLOW

    D7LED-YELLOW

    D8LED-YELLOW

    D9LED-YELLOW

    D10LED-YELLOW

    CONVERSION DE SELAN ANALOGICA A DIGITAL

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 23

    ;Conexiones: ADC0/C0 -> Potenciometro a Vcc y Gnd; D0-D7 -> Led's;B0 y B1 -> Led's;--------------------------------------------------------------------------------;DIRECTIVAS EN ENSAMBLADOR.include "m8def.inc" ;ATmega8;reset-vector address $0000.org $0000

    rjmp main ;ve al main;PROGRAMA PRINCIPALmain:

    ldi r16,$04 ;Configuracion de...out sph,r16ldi r16,$5Fout spl,r16 ;...la pila: Stack: $045F=RAMENDclr r16 ;r16

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 24

    brne YY1; -----------------------------; delaying 9 cycles:

    ldi R17, $03ZZ1: dec R17

    brne ZZ1; -----------------------------; delaying 1 cycle:

    nopret

    ; =============================; delay loop generator; 800 cycles:; -----------------------------; delaying 798 cycles:delay200u:

    ldi R17, $02YY2: ldi R18, $84XX2: dec R18

    brne XX2dec R17brne YY2

    ; -----------------------------; delaying 2 cycles:

    nopnopret

    ; =============================

    CIRCUITO DE SIMULACION CON PROTEUS

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 24

    brne YY1; -----------------------------; delaying 9 cycles:

    ldi R17, $03ZZ1: dec R17

    brne ZZ1; -----------------------------; delaying 1 cycle:

    nopret

    ; =============================; delay loop generator; 800 cycles:; -----------------------------; delaying 798 cycles:delay200u:

    ldi R17, $02YY2: ldi R18, $84XX2: dec R18

    brne XX2dec R17brne YY2

    ; -----------------------------; delaying 2 cycles:

    nopnopret

    ; =============================

    CIRCUITO DE SIMULACION CON PROTEUS

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 24

    brne YY1; -----------------------------; delaying 9 cycles:

    ldi R17, $03ZZ1: dec R17

    brne ZZ1; -----------------------------; delaying 1 cycle:

    nopret

    ; =============================; delay loop generator; 800 cycles:; -----------------------------; delaying 798 cycles:delay200u:

    ldi R17, $02YY2: ldi R18, $84XX2: dec R18

    brne XX2dec R17brne YY2

    ; -----------------------------; delaying 2 cycles:

    nopnopret

    ; =============================

    CIRCUITO DE SIMULACION CON PROTEUS

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 25

    PRACTICA2PROGRAMACION DEL ADC ATMEGA8 CON LENGUAJE C

    DESCRIPCINCon este programa podremos visualizar a travs de los LEDs, el valor en binariotomado del ADC conectado a un potencimetro. El ADC se trabajara a manera deconversin simple y se tomaran solo 8 de los 10 bits, de los cuales se ajustaran paraque la salida vaya de 0 a 63, que ser representada por los LEDs conectados almicrocontrolador.DIAGRAMA ESQUEMTICO

    MATERIALES 1 Potencimetro 6 LEDs 7 Resistencias de 220 Ohms 1 Microcontrolador ATmega8 Programador USBasp V3.0

    INTRODUCCINEL ADCEl ADC convierte seales continuas a nmeros discretos. El ADC es un dispositivo electrnicoque pasa un nivel de voltaje de entrada a un valor digital proporcional a la magnitud de laentrada, la salida digital puede estar descrita por diferentes codificaciones.En este caso, el ADC a utilizar es el del microcontrolador ATega8 el cual es un ADC de 10 bits,de los cuales solo usaremos 8. Las caractersticas principales del ADC del ATmega8 son:

    Resolucin de 10 bits 2 bits de precisin 13 a 260 us de tiempo de conversin

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 25

    PRACTICA2PROGRAMACION DEL ADC ATMEGA8 CON LENGUAJE C

    DESCRIPCINCon este programa podremos visualizar a travs de los LEDs, el valor en binariotomado del ADC conectado a un potencimetro. El ADC se trabajara a manera deconversin simple y se tomaran solo 8 de los 10 bits, de los cuales se ajustaran paraque la salida vaya de 0 a 63, que ser representada por los LEDs conectados almicrocontrolador.DIAGRAMA ESQUEMTICO

    MATERIALES 1 Potencimetro 6 LEDs 7 Resistencias de 220 Ohms 1 Microcontrolador ATmega8 Programador USBasp V3.0

    INTRODUCCINEL ADCEl ADC convierte seales continuas a nmeros discretos. El ADC es un dispositivo electrnicoque pasa un nivel de voltaje de entrada a un valor digital proporcional a la magnitud de laentrada, la salida digital puede estar descrita por diferentes codificaciones.En este caso, el ADC a utilizar es el del microcontrolador ATega8 el cual es un ADC de 10 bits,de los cuales solo usaremos 8. Las caractersticas principales del ADC del ATmega8 son:

    Resolucin de 10 bits 2 bits de precisin 13 a 260 us de tiempo de conversin

    UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 25

    PRACTICA2PROGRAMACION DEL ADC ATMEGA8 CON LENGUAJE C

    DESCRIPCINCon este programa podremos visualizar a travs de los LEDs, el valor en binariotomado del ADC conectado a un potencimetro. El ADC se trabajara a manera deconversin simple y se tomaran solo 8 de los 10 bits, de los cuales se ajustaran paraque la salida vaya de 0 a 63, que ser representada por los LEDs conectados almicrocontrolador.DIAGRAMA ESQUEMTICO

    MATERIALES 1 Potencimetro 6 LEDs 7 Resistencias de 220 Ohms 1 Microcontrolador ATmega8 Programador USBasp V3.0

    INTRODUCCINEL ADCEl ADC convierte seales continuas a nmeros discretos. El ADC es un dispositivo electrnicoque pasa un nivel de voltaje de entrada a un valor digital proporcional a la magnitud de laentrada, la salida digital puede estar descrita por diferentes codificaciones.En este caso, el ADC a utilizar es el del microcontrolador ATega8 el cual es un ADC de 10 bits,de los cuales solo usaremos 8. Las caractersticas principales del ADC del ATmega8 son:

    Resolucin de 10 bits 2 bits de precisin 13 a 260 us de tiempo de conversin

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 26

    6 Canales de entrada multiplexados Rango de voltaje de entrada de 0-Vcc Selector de voltaje de referencia de 2.56v Tipos de conversin continuo o simple Interrupcin de conversin Ahorro de energa

    PROGRAMA EN C#include#includeint main (void){int ADC_val;DDRD = 0xFF;ADCSRA = 0xC0; //Configurar el registro ADCSRAADMUX = 0x22; //Configurar el registro ADMUXwhile(1) {ADCSRA|=_BV(ADSC); //Activar el bit ADSC del registroADCSRA inicio de conversinADC_val=(ADCH*63)/255; //Ajustar la recta para que vaya de 0 a63PORTD = ADC_val;}}EXPLICACION DEL PROGRAMAADCSRA = 0xC0;

    Para el registro ADCSRA se asigno 0xC0 o 0b11000000, hexadecimal o binariorespectivamente. El bit 7 ADEN habilita el uso del ADC, y el bit 6 ADSC al escribirle un unoinicia la conversin.ADMUX = 0x22;

    Se activan los bits 5 y 2 por lo que el registro nos queda como 0b00100010 (lo que es igual enhexadecimal a 0x22), al activar el bit 1 le indicamos al ADC que tome la entrada del pin delADC2

  • UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA

    MICROCONTROLADORE ATMEGA8 27

    con el bit 5 (ADLAR) del registro ADMUX configuramos la manera en la que nos deposita elvalor en los dos registros, para este caso se configuro de la siguiente manera, en la que comose puede ver se ignoraron los dos bits ms significativos.

    ADCSRA|=_BV(ADSC);Al estar trabajando el ADC en este modo es necesario indicarle cada cuando tiene que realizarla conversin, con esta instruccin solo entra al bit ADSC del registro y lo habilita, no semodifica cualquier otro valor del registro ADCSRA.ADC_val=(ADCH*63)/255;Ya que el valor del ADCH es de 8 bits (como se ve en la imagen al ajustar el ADLAR), se tieneque ajustar la salida a que sea de 6 bits, ya que se estn usando solo 6 LEDs, esto se haceajustando la recta, multiplicando por el mximo de nuestra salida ideal y dividindolo por elmximo de la salida obtenida

    CURSO: MICROCONTROLADORESPROFESOR: MSc ING. ASTOCONDOR VILLAR JACOB