SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
ASDRÚBAL LÓPEZ CHAU.
DEDICATORIA
    A mi Amada Esposa Lutecia.
              A Mamá y Papá.




2
CONTENIDO
I TRODUCCIÓ ................................................................................................................ 7
 OMBRE DEL PERIFÉRICO: TIMER/COU TER 1. .................................................. 9
  DESCRIPCIÓN GENERAL. ............................................................................................. 9
  DISPONIBLE EN .............................................................................................................. 9
  APLICACIONES ............................................................................................................... 9
  REGISTROS INVOLUCRADOS ...................................................................................... 9
  MODO TEMPORIZADOR Y MODO CONTADOR. .................................................... 13
  SECUENCIA DE CONFIGURACIÓN MODO TEMPORIZADOR Y CONTADOR... 14
  I.S.R. ................................................................................................................................. 14
  MODO CAPTURA .......................................................................................................... 15
  SECUENCIA DE CONFIGURACIÓN MODO CAPTURA. ......................................... 16
  I.S.R. ................................................................................................................................. 16
  MODO COMPARADOR DE IGUALDAD. ................................................................... 17
  SECUENCIA DE CONFIGURACIÓN MODO COMPARADOR DE IGUALDAD. ... 18
  I.S.R. ................................................................................................................................. 18
     MODO GENERADOR DE SEÑALES PWM (MODULACIÓN POR ANCHO DE
  PULSO) ............................................................................................................................ 19
  SECUENCIA DE CONFIGURACIÓN MODO PWM. .................................................. 21
  I.S.R. ................................................................................................................................. 21
  IMPLANTACIÓN. ........................................................................................................... 22
  TIMER/COUNTER 1 MODO TEMPORIZADOR. ........................................................ 22
  TIMER/COUNTER 1 MODO CAPTURA. ..................................................................... 23
  TIMER/COUNTER 1 MODO GENERADOR DE SEÑALES PWM. ........................... 25
  TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD. ............................... 26
 OMBRE DEL PERIFÉRICO: TIMER/COU TER0. ................................................. 29
  FUNCIONAMIENTO GENERAL .................................................................................. 29
  DISPONIBLE EN ............................................................................................................ 29
  APLICACIONES ............................................................................................................. 29
  REGISTROS INVOLUCRADOS. ................................................................................... 29
  SECUENCIA DE CONFIGURACIÓN ........................................................................... 32
  I.S.R. ................................................................................................................................. 32
  IMPLANTACIÓN. ........................................................................................................... 33
  TIMER/COUNTER 0 MODO TEMPORIZADOR. ........................................................ 33
  NOTAS DE CONFIGURACIÓN. ................................................................................... 35
 OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL. 37
  DESCRIPCIÓN GENERAL. ........................................................................................... 37
  DISPONIBLE EN ............................................................................................................ 37
  APLICACIONES ............................................................................................................. 37
  REGISTROS INVOLUCRADOS .................................................................................... 37
  SECUENCIA DE CONFIGURACIÓN ADC. ................................................................. 39
  I.S.R. ................................................................................................................................. 40
  IMPLANTACION ............................................................................................................ 41
 OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO............................... 45
  DESCRIPCIÓN GENERAL. ........................................................................................... 45
  DISPONIBLE EN ............................................................................................................ 45


                                                                     3
APLICACIONES ............................................................................................................. 45
  REGISTROS INVOLUCRADOS .................................................................................... 45
  DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. ................... 45
     DISPOSITIVO AT90S1200. ........................................................................................ 45
     DISPOSITIVO AT90XX2333, AT90XX4433. ........................................................... 45
  SECUENCIA DE CONFIGURACIÓN COMPARADOR ANALÓGICO. .................... 47
  I.S.R. ................................................................................................................................. 48
  IMPLANTACION ............................................................................................................ 49
 OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER). ..... 52
  DESCRIPCIÓN GENERAL. .......................................................................................... 52
  DISPONIBLE EN ............................................................................................................ 52
  APLICACIONES. ............................................................................................................ 52
  REGISTROS INVOLUCRADOS. ................................................................................... 52
  FUNCIÓN ........................................................................................................................ 52
  SECUENCIA DE CONFIGURACIÓN WDT. ................................................................ 53
  IMPLANTACIÓN. ........................................................................................................... 54
 OMBRE DEL PERIFÉRICO: SPI - I TERFAZ SERIAL PERIFERICA. ............. 56
  DESCRIPCIÓN GENERAL ............................................................................................ 56
  DISPONIBLE EN ............................................................................................................ 56
  APLICACIONES ............................................................................................................. 56
  REGISTROS INVOLUCRADOS .................................................................................... 56
  FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO MAESTRO. ......... 58
  FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO ESCLAVO. .......... 59
  FASE Y POLARIDAD DE LA SEÑAL DE RELOJ. ..................................................... 59
  SECUENCIA DE CONFIGURACIÓN SPI. ................................................................... 60
  I.S.R. ................................................................................................................................. 60
  IMPLANTACION ............................................................................................................ 61
 OMBRE DEL PERIFÉRICO: UART - U IVERSAL ASY CHRO OUS
RECEIVER A D TRA SMITTER................................................................................. 64
  DESCRIPCIÓN GENERAL. ........................................................................................... 64
  DISPONIBLE EN ............................................................................................................ 64
  APLICACIONES ............................................................................................................. 64
  REGISTROS INVOLUCRADOS .................................................................................... 64
  RECEPCIÓN Y TRANSMISIÓN DE DATOS. .............................................................. 65
  SELECCIÓN DEL BAUD RATE.................................................................................... 66
  EJEMPLO NUMERICO. ................................................................................................. 67
  SECUENCIA DE CONFIGURACIÓN UART ............................................................... 68
  I.S.R. ................................................................................................................................. 69
  IMPLANTACION ............................................................................................................ 69
GLOSARIO......................................................................................................................... 73
BIBLIOGRAFÍA. ............................................................................................................... 75




                                                                     4
TABLAS
Tabla TC1-1. Registros Involucrados con el Timer/Counter1. ............................................ 11
Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1. ............... 12
Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter1. ....... 13
Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el
    Timer/Counter1. ........................................................................................................... 13
Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro
    TCNT1 .......................................................................................................................... 14
Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow. ............................... 15
Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. ................................................... 15
Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B. .................................................. 15
Tabla TC1-8 Vector de Interrupción para el evento de captura del Timer/Counter1........... 16
Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin
    OC1A. ........................................................................................................................... 17
Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin
    OC1B. ........................................................................................................................... 17
Tabla TC1-11. Número de pin correspondiente a OC1A y OC1B. ...................................... 18
Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del
    Timer/Counter1. ........................................................................................................... 19
Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o
    B). .................................................................................................................................. 20
Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. ...................... 20
Tabla TC1-15. Frecuencia de la Señal PWM, Valores máximos de TCNT1, y Resolución.
    T1 es la frecuencia a la que se incrementa TCNT1. .................................................................. 21
Tabla TC0-1. Registros involucrados con el Timer/Counter 0. ........................................... 29
Tabla TC0-2. Bits y función de los registros especiales para el Timer/Counter 0. .............. 30
TABLA TC0-3. Origen de la señal de reloj y pre escalamiento. ......................................... 31
Tabla TC0-4. Localización de pin T0 para la familia AT90X. ............................................ 31
Tabla TC0-5. Vector de interrupción para Timer/Counter 0 ................................................ 33
Tabla ADC-1A. Registros Involucrados con ADC .............................................................. 37
Tabla ADC-1B. Registros Involucrados con ADC. ............................................................. 37
Tabla ADC-1C. Registros Involucrados con ADC. ............................................................. 37
Tabla ADC-2. Bits de los registros especiales utilizados para el ADC. ............................... 38
Tabla ADC-3. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del registro
    ADMUX. ...................................................................................................................... 38
Tabla ADC-4. Localización de las entradas para el ADC en la familia AVR.
    (EMPAQUETADO DIP).............................................................................................. 39
Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la selección de la
    señal AD Clock. ............................................................................................................ 39
Tabla ADC-6. Vectores de interrupción para el ADC. ........................................................ 40
Tabla CA-1A. Registros Involucrados con el Comparador Analógico. .............................. 45
Tabla CA-1B. Registros Involucrados con el Comparador Analógico. ............................... 45
Tabla CA-1C. Registros Involucrados con el Comparador Analógico. ............................... 45
Tabla CA-2. Bits de los registros especiales utilizados para el comparador analógico. ..... 46



                                                                     5
Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación de
     interrupción del Comparador Analógico. .................................................................... 47
Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR.
     EMPAQUETADO DIP). .............................................................................................. 47
Tabla CA-5. Vectores de interrupción para el comprador analógico. .................................. 48
Tabla WDT-1A. Registros involucrados. ............................................................................. 52
Tabla WDT-1B. Registros involucrados. ............................................................................. 52
Tabla WDT-2. Origen de la señal de reloj y pre escalamiento para el perro guardián. ....... 53
Tabla SPI-1A. Registros Involucrados con SPI ................................................................... 56
Tabla SPI-1B. Registros Involucrados con SPI. ................................................................... 56
Tabla SPI-1C. Registros Involucrados con SPI. ................................................................... 56
Tabla SPI-2. Bits de los registros especiales utilizados para el SPI ..................................... 57
Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la
     señal de Clock. .............................................................................................................. 57
Tabla SPI-4. Localización de los pines MISO, MOSI, SCK y SS en la familia AVR.
     (EMPAQUETADO DIP).............................................................................................. 58
Figura SPI-1. Efecto del bit CPHA sobre la señal SCK. ...................................................... 59
Tabla SPI-5. Vectores de interrupción para el SPI. .............................................................. 61
Tabla UART-1. Registros Involucrados con UART ............................................................ 64
Tabla UART-2. Bits de los registros especiales utilizados UART. ..................................... 65
Tabla UART-3. Localización de los pines TXD y RXD en la familia AVR.
     (EMPAQUETADO DIP).............................................................................................. 66
Tabla UART-4. Valores más comunes de Baud Rate. ......................................................... 67
Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. .............................. 68
Tabla UART-6. Vectores de interrupción para UART........................................................ 69




                                                                  6
I TRODUCCIÓ

Un periférico es un circuito electrónico especial incluido en un microcontrolador, que
realiza una función o tarea específica. Los periféricos de un microcontrolador permiten
ahorro de espacio y dinero en muchas aplicaciones electrónicas.
Este libro muestra de una manera clara y concisa, la forma de configurar todos los
periféricos incluidos en los microcontroladores de la familia AVR de ATMEL(1). No se
pretende que este trabajo sea un sustituto de las hojas de especificaciones proporcionadas
por ATMEL, sino más bien, se espera que sirva como una herramienta de consulta para
aquellas personas que ya utilizan la familia AVR, y como una guía para aquellos que
comienzan a estudiar o a realizar proyectos con microcontroladores.
Cada capítulo del libro es dedicado completamente a un periférico en especifico. Se incluye
en cada uno de los capítulos las secciones siguientes:

      ♦ DESCRIPCIÓ GE ERAL. En esta sección se describe el funcionamiento
        general del periférico.

      ♦ DISPO IBLE E . Se muestran los microcontroladores en los que esta incluido
        cada periférico.

      ♦ APLICACIO ES. Son mencionadas algunas aplicaciones donde puede ser
        utilizado.

      ♦ REGISTROS I VOLUCRADOS. Se describe el efecto de cada bit de los
        registros especiales involucrados con cada periférico.

      ♦ SECUE CIA DE CO FIGURACIÓ . En esta sección de cada capitulo se
        explica paso a paso cómo configurar un periférico. Si el lector ya ha tenido
        contacto con microcontroladores, puede ir directamente a esta sección y a la sección
        IMPLANTACIÓN sin problema alguno.

      ♦ I.S.R. Se incluyen los vectores y las direcciones de interrupción, así como una
        descripción de las condiciones que hacen que se genere cada interrupción.

      ♦ IMPLA TACIÓ . Cada capítulo del libro incluye el código fuente completo para
        configurar un periférico y dejarlo funcionando correctamente. Se implantan todos
        los pasos descritos en la sección SECUE CIA DE CO FIGURACIÓ . El código
        esta escrito en lenguaje ensamblador y totalmente comentado. Si el lector programa
        en otro lenguaje diferente a ensamblador, puede tomar como referencia el código
        fuente proporcionado en esta obra.

  Los microcontroladores AVR de ATMEL que se tratan en este libro son los siguientes: AT90S1200,
(1)

AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414,
AT90xS4434, AT90xS8535, AT90xS8534.




                                                7
8
OMBRE DEL PERIFÉRICO: TIMER/COU TER 1.

DESCRIPCIÓ GE ERAL.
El Timer/Counter1 es un periférico bastante flexible, con él se puede medir intervalos de
tiempo, contar pulsos externos y generar señales PWM entre otras cosas. Los modos de
funcionamiento para este periférico son los siguientes:

MODO TEMPORIZADOR. Genera interrupciones cada vez que un contador interno de 16
bits se desborda. La señal de reloj para el registro contador interno se deriva del oscilador
principal del microcontrolador.

MODO CO TADOR. Parecido al modo temporizador, pero la señal de reloj para el registro
contador integrado es externa, proveniente del pin T1.

MODO CAPTURA. Cada vez que se produce un flanco previamente configurado, en la
termina ICP del dispositivo, el contenido del contador es almacenado a un registro especial
de solo lectura, esto puede generar a demás una interrupción.

MODO COMPARACIÓ DE IGUALDAD. El contenido del contador es comparado
continuamente con un valor almacenado en ciertos registros especiales. Cuando el contador
es igual en magnitud al valor de los registros especiales, se puede producir una interrupción
de comparación de igualdad.

MODO GE ERACIÓ DE SEÑALES PWM. Permite generar señales PWM (Modulación
por Ancho de Pulso) con resolución de 8, 9 o 10 bits.

DISPO IBLE E
AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535,
AT90C8534.

APLICACIO ES
Generación de señales PWM.
Bases de Tiempo.
Medición de frecuencia.

REGISTROS I VOLUCRADOS

Este periférico esta presente en muchos miembros de la familia AT90X, sin embargo en no
en todos los dispositivos se tienen las mismas prestaciones de este periférico. Por ejemplo,
en algunos no se puede utilizar al Timer/Counter1 como generador de PWM.

La Tabla TC1-1 muestra los registros involucrados y los bits para cada miembro que
contiene a este periférico.




                                             9
DISPOSITIVO: AT90S8515
  OMBRE
              B7      B6   B5   B4    B3   B2   B1    B0
REGISTRO
  TIMSK     TOIE1 OCIE1A OCIE1B     TICIE1
   TIFR      TOV1   OCF1A OCF1B      ICF1
 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0           PWM11 PWM10
 TCCR1B     ICNC1   ICES1           CTC1 CS12 CS11   CS10
  TC T1      Todos    Los  Bits
  OCR1A      Todos    Los  Bits
  OCR1B      Todos    Los  Bits
   ICR1      Todos    Los  Bits



DISPOSITIVO: AT90S2313
  OMBRE
               B7        B6    B5        B4    B3      B2      B1      B0
REGISTRO
  TIMSK      TOIE1   OCIE1A                   TICIE1
   TIFR       TOV1    OCF1A                    ICF1
 TCCR1A    COM1A1 COM1A0                                      PWM11   PWM10
 TCCR1B      ICNC1     ICES1                  CTC1     CS12    CS11    CS10
  TC T1       Todos     Los    Bits
  OCR1A       Todos     Los    Bits
   ICR1       Todos     Los    Bits



DISPOSITIVO: AT90XX2333, AT90XX4433
  OMBRE
               B7       B6    B5 B4            B3      B2      B1      B0
REGISTRO
  TIMSK      TOIE1   OCIE1                    TICIE1
   TIFR       TOV1    OCF1                     ICF1
 TCCR1A     COM11    COM10                                    PWM11   PWM10
 TCCR1B      ICNC1    ICES1                   CTC1     CS12    CS11    CS10
  TC T1       Todos    Los    Bits
   OCR1       Todos    Los    Bits
   ICR1       Todos    Los    Bits




                                    10
DISPOSITIVO: AT90XX4434, AT90XX8535
  OMBRE
              B7      B6       B5     B4     B3    B2     B1    B0
REGISTRO
  TIMSK                      TICIE1 OCIE1A OCIE1B TOIE1
   TIFR                       ICF1   OCF1A OCF1B TOV1
 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0                     PWM11 PWM10
 TCCR1B     ICNC1   ICES1                   CTC1 CS12 CS11     CS10
  TC T1      Todos   Los       Bits
 OCR1A       Todos   Los       Bits
 OCR1B       Todos   Los       Bits
   ICR1      Todos   Los       Bits


 DISPOSITIVO: AT90C8534
  OMBRE
              B7      B6               B5         B4       B3      B2       B1       B0
REGISTRO
  TIMSK                                                          TOIE1
   TIFR                                                          TOV1
  TCCR1                                                          CS12     CS11      CS10
  TC T1     Todos    Los              Bits

                   Tabla TC1-1. Registros Involucrados con el Timer/Counter1.

 Una explicación detallada de cada bit se encuentra en la Tabla TC1-2.
 Observe que NO TODOS los dispositivos contienen en sus registros especiales los bits que
 se muestran en la siguiente tabla.




                                             11
BIT     SIG IFICADO                             FU CIÓ
   TOIE1 Timer/Counter1         “1” Habilita interrupción de sobreflujo del
         Overflow Interrupt     Timer/Counter1. El Sobreflujo o Desborde se
         Enable                 produce cuando el registro TCNT1 pasa de $ffff
                                a $0000.
  OCE1A Timer/Counter1 Output “1” Habilita la interrupción por comparación de
         CompareA Match         igualdad ( Contenido de OCR1A igual al de
         Interrupt Enable.      TCNT1).
  OCIE1B Timer/Counter1 Output “1” Habilita la interrupción por comparación de
         CompareB Match         igualdad (Contenido de OCR1B igual al de
         Interrupt Enable.      TCNT1).
  TICIE1 Timer/Counter1 Capture “1” Habilita la interrupción de captura.
         Interrupt Enable

   TOV1      Timer/Counter1            “1” indica que el registro TCNT1 se ha
             Overflow flag             desbordado, genera interrupción si éstas están
                                       habilitadas
   OCF1A Output Compare Flag           “1” indica que los contenidos de los registros
         1A.                           TCNT1 y OCR1A son iguales. Esto puede
                                       producir una interrupción de comparación de
                                       igualdad.
   OCF1A Output Compare Flag           “1” indica que los contenidos de los registros
         1B.                           TCNT1 y OCR1B son iguales. Esto puede
                                       producir una interrupción de comparación de
                                       igualdad.
    ICF1     Input Capture Flag.       “1” indica que el contenido de TCNT1 ha sido
                                       transferido al registro ICR1. Puede producir una
                                       interrupción.

   IC C1 Input Capture1 Noise          “1” Habilita el cancelador de ruido para la
         Canceler.                     captura. Para que un flanco en el pin ICP genere
                                       la captura, se toman cuatro muestras, que deben
                                       ser todas válidas de acuerdo al bit ICES1. La
                                       frecuencia de muestreo es la del cristal.
                                       “0” La captura se genera en el primer flanco
                                       indicado por el bit ICES1.
   ICES1     Input Capture Edge        “1” Captura en flanco descendente presentado en
             Select.                   el pin ICP.
                                       “0” Captura en flanco ascendente presentado en
                                       el pin ICP.
                                       En la captura, el contenido de TCNT1 se
                                       transfiere a ICR1.

         Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1.
Continua...


                                            12
Continuación...
        BIT        SIG IFICADO                    FU CIÓ
       CTC1 Clear Timer/Counter1 on “1” reinicia TCNT1 a $0000 cuando
                Compare Match.      OCR1A se iguala con TCNT1.
                                    “0” TCNT1 continua su cuenta normal.

                Tabla TC1-2. Función de los Bits de los registros especiales para el
                                       Timer/Counter1.

REGISTROS DE 16 BITS.

Algunos registros especiales utilizados, tienen una longitud de total 16 bits, y se forman
con dos registros de 8 bits cada uno.
Para leer cualquiera de los registros mostrados en la Tabla TC1-3, debe primero leerse el
byte bajo(L) y luego el alto(H).
Para escribir a cualquiera de estos registros, debe primero escribirse el byte alto (H) y luego
el bajo (L).

                 TC T1        Registro contador de 16 bits, formado por
                              TCNT1H y TCNT1L.
                 OCR1A        Registro de 16 bits, formado por OCR1AH y
                              OCR1AL. Se compara continuamente con
                              TCNT1.
                 OCR1B        Registro de 16 bits, formado por OCR1BH y
                              OCR1BL. Se compara continuamente con
                              TCNT1.
                  ICR1        Registro de solo lectura de 16 bits, formado por
                              ICR1H y OCR1L. El contenido de TCNT1 se
                              transfiere a este archivo en un evento de
                              captura.

           Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el
                                        Timer/Counter1.


MODO TEMPORIZADOR Y MODO CO TADOR.
El registro TCNT1 del Timer/Counter1 puede contar pulsos derivados del oscilador
principal, o provenientes del exterior.
En el primer caso, cuando el registro TCNT1 se incrementa por pulsos generados por el
oscilador principal, funciona en modo temporizador. Cuando el periférico cuenta pulsos
externos, presentados en el pin T1 del microcontrolador, trabaja en modo contador. En la
Tabla TC1-5 se puede observar el número de pin T1 para cada dispositivo.
Para configurar el periférico en cualquiera de estos modos de funcionamiento, es necesario
manipular los bits CS12,CS11 y CS10, que se muestran en la Tabla TC1-4.




                                              13
CS12 CS11 CS10                       EFECTO
         0    0    0   El registro TCNT1 no cambia. Timer/Counter1 en
                       STOP
         0    0    1   TCNT1 se incrementa a la velocidad de CK.
         0    1    0   TCNT1 se incrementa a la velocidad de CK/8.
         0    1    1   TCNT1 se incrementa a la velocidad de CK/64.
         1    0    0   TCNT1 se incrementa a la velocidad de CK/256.
         1    0    1   TCNT1 se incrementa a la velocidad de CK/1024.
         1    1    0   TCNT1 se incrementa en cada flanco negativo
                       presentado en el pin T1.
         1    1    1   TCNT1 se incrementa en cada flanco positivo
                       presentado en el pin T1.

          Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el
                                      registro TCNT1


SECUE CIA DE CO FIGURACIÓ MODO TEMPORIZADOR Y CO TADOR.
  1. Deshabilitar las interrupciones globales (Recomendado).
     SREG<I>=”0”
  2. Establecer el valor del registro TCNT1.
     Lo más común es hacer TCNT1 = $0000, pero puede ser cualquier otro valor
     válido. Para esto primero escriba el byte alto y luego el byte bajo del registro
     TCNT1: Primero TCNT1H y luego TCNT1L.
  3. Si se desea utilizar la interrupción de sobre flujo (cuando el registro TCNT1 se
     desborda), habilite la interrupción utilizando el bit TOIE1 del registro TIMSK.
     TIMSK<TOIE1>=”1”. En caso de no utilizar la interrupción, ponga este bit en “0”.
  4. Limpie el bit TOV1 del registro TIFR.
  5. Establezca la fuente de la señal de reloj. Ver Tabla TC1-4.
  6. Habilite interrupciones globales.
     SREG<I>=”1”

I.S.R.
Si la interrupción está habilitada, el CPU salta a la dirección vector de interrupción de este
periférico cada vez que el registro TCNT1 tiene el valor $FFFF -65535 en decimal- e
intenta incrementar su valor (se desborda).
Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la posición de memoria donde se encuentra
realmente la ISR.
En la ISR puede (y quizá hasta deba) reiniciar el registro TCNT1 con un valor apropiado.
Observe entre mayor sea el valor de TCNT1 la interrupción siguiente se producirá en un
tiempo menor.




                                             14
DISPOSITIVO VECTOR DIRECCIO                    PI T1
               AT90S4414          7             $006         2 (PDIP)
               AT90S8515          7             $006             2
               AT90S2313          6             $005             9
               AT90S2333          6             $005            11
               AT90LS2333         6             $005            11
               AT90S4433          6             $005            11
               AT90LS4433         6             $005            11
               AT90S4434          9             $008         2 (PDIP)
               AT90LS4434         9             $008         2 (PDIP)
               AT90S8535          9             $008         2 (PDIP)
               AT90LS8535         9             $008         2 (PDIP)
               AT90C8534          4             $003             -
              Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow.

MODO CAPTURA
En este modo de operación, el contenido del registro TCNT1 es almacenado en ICR1
cuando un flanco ascendente o descendente se presenta en el pin ICP del dispositivo.
Llamaremos disparo a cualquiera de estos flancos que provocan la captura.
Para evitar disparos falsos, el dispositivo cuenta con un cancelador de ruido. Si el
cancelador se habilita, entonces al producirse un disparo se toman cuatro muestras en el
pin ICP del dispositivo antes de proceder a la captura. Las muestras son tomadas a la
frecuencia del oscilador principal y si todas ellas coinciden se efectúa la captura. Cuando
las cuatro muestras no coinciden se considera un disparo falso y la captura no se realiza.
En el caso de que el cancelador de ruido se encuentre deshabilitado la captura se realiza
inmediatamente al presentarse un disparo.
Para seleccionar el flanco de captura se utiliza el bit ICES1 del registro TCCR1B. Esto se
muestra en la Tabla TC1-6.

                        BIT      Evento de Captura Disparado
                       ICES1                   por
                         “0”   Flanco Descendente en el pin ICP
                         “1”    Flanco Ascendente en el pin ICP.
                     Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B.

El bit ICNC1 del registro TCCR1B permite habilitar o desactivar el cancelador de ruido.
Vea la Tabla TC1-7.

                           BIT        CA CELADOR DE
                         IC C1               RUIDO
                            “0”           Deshabilitado
                            “1”             Habilitado
                     Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B.




                                             15
SECUE CIA DE CO FIGURACIÓ MODO CAPTURA.
1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario)
      SREG<I> =”0”
2 Habilite o Deshabilite el cancelador de ruido.
  TCCR1B < ICNC1> =”0” Deshabilitado. TCCR1B < ICNC1> =”1” Habilitado.
3 Programe el flanco de captura.
  TCCR1B < ICES1> =”0” Descendente. TCCR1B < ICES1> =”1” Ascendente.
4 Si requiere atender la interrupción de captura (habilitarla), active el bit TICIE1 del
  registro TIMSK.
  TIMSK<TICIE1>=”1”.
  En caso de no necesitar atender la interrupción ponga este bit en cero.
  Si la interrupción es habilitada, cada vez que se produzca una captura el CPU saltará
  hacia el vector de interrupción correspondiente.
5 Establezca el valor del registro TCNT1.
6 Establezca la fuente de la señal de reloj. Ver Tabla TC1-4
7 Habilite interrupciones globales.
  SREG<I>=”1”

I.S.R.
Si las interrupciones globales y la interrupción del modo de captura están habilitadas, el
CPU saltará a la dirección vector de interrupción correspondiente cada vez que se presente
el flanco predeterminado en el pin ICP del dispositivo. El valor actual del registro TCNT1
es capturado en el registro especial de solo lectura ICR1.
Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra
realmente la ISR.

              DISPOSITIVO        VECTOR       DIRECCIO          PI ICP
                                                                 (PDIP)
               AT90S4414            4             $003             31
               AT90S8515            4             $003             31
               AT90S2313            4             $003             11
               AT90S2333            4             $003             14
               AT90LS2333           4             $003             14
               AT90S4433            4             $003             14
               AT90LS4433           4             $003             14
               AT90S4434            6             $005             20
               AT90LS4434           6             $005             20
               AT90S8535            6             $005             20
               AT90LS8535           6             $005             20
               AT90C8534             -              -               -
        Tabla TC1-8 Vector de Interrupción para el evento de captura del Timer/Counter1.

Por último, recuerde que para leer el registro ICR1 debe primero acceder al byte bajo
(ICR1L) y luego al alto (ICR1H).



                                            16
MODO COMPARADOR DE IGUALDAD.

En modo comparador de igualdad el Timer/Counter1 utiliza los registros TCCR1A,
OCR1A y TCNT1. Estos últimos dos registros son comparados continuamente. Cuando el
contenido del archivo TCNT1 es idéntico al del registro OCR1A, el pin OC1A del
microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-9, según
el valor de los bits COM1A1 y COM1A0.

                    COM1A1      COM1A0              EFECTO
                      0              0      Desconecta el periférico
                                            del pin OC1A. (Sin efecto
                                            sobre el pin).
                       0             1      Invierte el estado del pin
                                            OC1A
                       1             0      Pone en “0” el pin OC1A
                       1             1      Pone en”1” el pin OC1A
       Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre
                                         el pin OC1A.

Algunos dispositivos de la familia AVR, contienen los bits COM1B1 y COM1B0 en el
registro TCCR1A. Cuando el contenido del archivo TCNT1 es idéntico al del registro
OCR1B, el pin OC1B del microcontrolador puede realizar alguna de las acciones indicadas
en la Tabla TC1-10, según el valor de los bits COM1B1 y COM1B0.

                    COM1B1      COM1B0              EFECTO
                      0              0      Desconecta el periférico
                                            del pin OC1B. (Sin efecto
                                            sobre el pin).
                       0             1      Invierte el estado del pin
                                            OC1B
                       1             0      Pone en “0” el pin OC1B
                       1             1      Pone en”1” el pin OC1B
       Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre
                                         el pin OC1B.

En la Tabla TC1-11 se muestra el número de pin OC1A y OC1B para cada dispositivo.




                                           17
DISPOSITIVO OC1A OC1B
                            AT90S2313        15       -
                            AT90S8515        15      29
                            AT90S2333        15       -
                            AT90S4414        15      29
                            AT90S4434        19      18
                           AT90LS4434        19      18
                            AT90S8535        19      18
                           AT90LS8535        19      18
                            AT90C8534         -       -
                Tabla TC1-11. Número de pin correspondiente a OC1A y OC1B.

SECUE CIA DE CO FIGURACIÓ MODO COMPARADOR DE IGUALDAD.

1   Deshabilite Interrupciones Globales. (Recomendado pero no necesario)
        SREG<I> =”0”
2   Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a
    OCR1AL).
3   Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a
    OCR1BL).
4   Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el
    registro OCR1A, active el bit OCIE1A del registro TIMSK.
    TIMSK< OCIE1A >=”1”. En caso de no necesitar atender la interrupción ponga este bit
    en cero.
5   Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el
    registro OCR1B, active el bit OCIE1B del registro TIMSK.
    TIMSK< OCIE1B >=”1”. En caso de no necesitar atender la interrupción ponga este bit
    en cero.
6   Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7   Habilite interrupciones globales.
    SREG<I>=”1”

I.S.R.
Si las interrupciones globales y la interrupción del modo de comparación están habilitadas,
el CPU saltara a la dirección vector de interrupción correspondiente cada vez que el valor
actual del registro TCNT1 sea idéntico al valor del registro OCR1A o al de OCR1B.
Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra
realmente la ISR.




    DISPOSITIVO      VECTOR           DIRECCIÓ           VECTOR          DIRECCIÓ
                   COMPARACIÓ        COMPARACIÓ        COMPARACIÓ       COMPARACIÓ



                                            18
DE IGUALDAD     DE IGUALDAD      DE IGUALDAD      DE IGUALDAD
                    CO OCCR1A       CO OCCR1A        CO OCCR1B        CO OCCR1B
   AT90S4414           5               $004                6             $005
   AT90S8515           5               $004                6             $005
   AT90S2313           5               $004                -                -
   AT90S2333           5               $004                -                -
   AT90LS2333          5               $004                -                -
   AT90S4433           5               $004                -                -
   AT90LS4433          5               $004                -                -
   AT90S4434           7               $006                8             $007
   AT90LS4434          7               $006                8             $007
   AT90S8535           7               $006                8             $007
   AT90LS8535          7               $006                8             $007
   AT90C8534           -                 -                 -                -
     Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del
                                     Timer/Counter1.


MODO GE ERADOR DE SEÑALES PWM (MODULACIÓ                            POR A CHO DE
PULSO)

Los microcontroladores de la familia AVR contienen los circuitos necesarios para generar
señales PWM.
El archivo TCNT1, en este modo de operación se comporta como un contador cíclico
ascendente y descendente. Primero TCNT1 comienza su cuenta ascendente desde $0000
hasta llegar a un VALOR MÁXIMO, y después desciende hacia cero. Una vez en cero
comienza nuevamente el ciclo. Los 10 bits menos significativos del registro TCNT1 son
comparados continuamente con los de los 10 bits menos significativos de los registros
OCR1A y OCR1B. Cuando se igualan los 10 bits de estos registros, los pines OC1A o
OC1B realizan una de las acciones que se muestra en la Tabla TC1-13.
El valor que contenga el registro OCR1A o OCR1B determinará el ciclo útil de la señal
PWM.




                                          19
COM1x1     COM1x0                 EFECTO SOBRE EL PI OC1x
        0            0       Sin efecto
        0            1       Sin efecto
        1            0       Pasa a “0” Cuando los 10 bits menos significativos de
                             TCNT1 (en su cuenta ascendente) y los de OCR1A de
                             igualan TCNT1.
                             Pasa a “1” Cuando los 10 bits menos significativos de
                             TCNT1 (en su cuenta descendente) y los de OCR1A
                             de igualan.
         1           1       PWM invertido.
                             Pasa a “1” Cuando los 10 bits menos significativos de
                             TCNT1 (en su cuenta ascendente) y los de OCR1A de
                             igualan TCNT1.
                             Pasa a “0” Cuando los 10 bits menos significativos de
                             TCNT1 (en su cuenta descendente) y los de OCR1A
                             de igualan.
       Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede
                                           ser A o B).

La Tabla TC1-11 muestra el número de pin correspondiente para cada dispositivo de la
familia AVR.
La resolución de la señal PWM puede ser de 8, 9 o 10 bits, según se configure en los bits
PWM11 y PWM10 del registro TCCR1A. La Tabla TC1-14 muestra las posibles
combinaciones.

                    PWM11 PWM10                  EFECTO
                       0            0       PWM deshabilitado.
                       0            1       PWM de 8 bits.
                       1            0       PWM de 9 bits.
                       1            1       PWM de 10 bits.
           Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A.

El VALOR MÁXIMO al que llega el registro TCNT1 está en función de la resolución de la
señal PWM. La Tabla TC1-15 muestra los valores máximos de TCNT1, la frecuencia y la
resolución de la señal PWM




                                           20
MÁXIMO
                    FRECUE CIA
                                     VALOR RESOLUCIÓ
                    DE LA SEÑAL
                                       DE     (BITS)
                        PWM
                                      TC T1
                          f   Τ1
                                           255                  8
                          510
                          f Τ1
                                           511                  9
                         1022
                          f Τ1
                                          1023                 10
                         2046
          Tabla TC1-15. Frecuencia de la Señal PWM, Valores máximos de TCNT1, y
                   Resolución. T1 es la frecuencia a la que se incrementa TCNT1.

SECUE CIA DE CO FIGURACIÓ MODO PWM.

1   Deshabilite Interrupciones Globales. (Recomendado pero no necesario).
        SREG<I> =”0”
2   Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a
    OCR1AL). Este valor determina el ciclo útil de la señal PWM en el pin OC1A.
3   Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a
    OCR1BL). Este valor determina el ciclo útil de la señal PWM en el pin OC1B
4   Seleccione el modo normal o invertido de señal PWM. Ver Tabla TC1-13.
5   Seleccione la resolución de la señal PWM. Ver Tabla TC1-14.
6   Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7   Habilite interrupciones globales.
    SREG<I>=”1”

I.S.R.
En modo PWM el periférico Timer/Counter1 genera la interrupción de sobre flujo normal
como en el modo Temporizador.




                                          21
IMPLA TACIÓ .
La secuencia de configuración, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los
ejemplos de implantación como referencia.

TIMER/COU TER 1 MODO TEMPORIZADOR.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 del
microcontrolador para que incremente el registro TCNT1 en cada pulso de reloj. El PORTB
se incrementa en cada interrupción.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
                    ;de registros especiales
                    ;Sustitúyalo por el archivo correspondiente al
                    ;microcontrolador que utiliza.
;**********************************************
.org      $0 ;vector de inicio.
       rjmp RESET       ;redireccionado a la dirección
                      ;donde se encuentra RESET
.org $006             ;vector de TIMER/COUNTER1 Sobreflujo
       rjmp TIMER1_ISR ;redireccionado a TIMER1_ISR
;**********************************************
;Esta ISR se ejecuta cada vez que TCNT1 se desborda.
TIMER1_ISR:                ;ISR del TIMER/COUNTER1 Sobreflujo
       inc   r18           ;incrementa registro r18
       out   PORTB,r18     ;y saca el valor por el PORTB
       ldi   r17,0         ;
       out   TCNT1H,R17 ;pone valor de TCNT1 en 0.
       out   TCNT1L,R17 ;pone valor de TCNT1 en 0.
       reti                ;regresa de interrupción.
;**********************************************
RESET:              ;inicio de programa.
       ldi   r17,$ff             ;configura PORTB
       out   DDRB,r17      ; como salida
;**********************************************
ldi    r16,high(RAMEND)    ;Establece la direccion de
       out   SPH,r16               ;la Pila.
       ldi   r16,low(RAMEND)
       out   SPL,r16
;**********************************************
;PASO1
       cli                 ;SREG<I>=0.int. deshabilitadas.




                                            22
;PASO2
         ldi    r17,0        ;Inicia TCNT1 con valor 0
         out    TCNT1H,R17   ;Primero escribir en TCNT1H
         out    TCNT1L,R17   ;despues escribir en TCNT1L
;PASO3
        in      r17,TIMSK    ;Habilita interrupción
        ori     r17,(1<<TOIE1)     ;del TIMER/COUNTER1
        out     TIMSK,r17    ;TIMSK<TOIE1>=1
;PASO   4
        in      r17,TIFR     ;Limpia posible
        ori     r17,(1<<TOV1)      ;interrupción anterior
        out     TIFR,r17     ;TIFR<TOV1>=0
;PASO   5                    ;Selecciona el origen de la
        ldi     r17,1        ;señal de reloj
        out     TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de         RELOJ.
;PASO   6
        sei                  ;SREG<7>=1. int. habilitadas
loop:                        ;Espera hasta que
         nop                 ;se generen interrupciones.
         nop
         nop
rjmp     loop         ;loop infinito




TIMER/COU TER 1 MODO CAPTURA.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo de
Captura. Cuando se presenta un flanco descendente en el pin ICP del microcontrolador, se
exhibe en el PORTB, el valor de TCNT1H. TCNT1 se incrementa en cada ciclo del
oscilador principal.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
                   ;de registros especiales
                   ;Sustitúyalo por el archivo correspondiente al
                   ;microcontrolador que utiliza.
;**********************************************
.org     $0 ;vector de inicio.
      rjmp RESET       ;redireccionado a la dirección
                     ;donde se encuentra RESET
.org $003            ;vector de TIMER/COUNTER1 Captura
      rjmp ISR_CAPT ;redireccionado a TIMER1_ISR_CAPT
;**********************************************



                                            23
;Esta ISR se jecuta cada vez que se produce un disparo (Flanco Negativo)
ISR_CAPT:                 ;ISR del TIMER/COUNTER1 CAPTURA
       in    r18,ICR1L    ;Lee el valor capturado de TCNT1
       in    r18,ICR1H    ;Primero byte Bajo y luego el Byte Alto.
       out   PORTB,r18    ;Saca el valor de TCNT1H por el PORTB
       reti               ;regresa de interrupción.
;**********************************************
RESET:              ;inicio de programa.
       ldi   r17,$ff             ;configura PORTB
       out   DDRB,r17     ; como salida
;**********************************************
ldi    r16,high(RAMEND)   ;Establece la direccion de
       out   SPH,r16               ;la Pila.
       ldi   r16,low(RAMEND)
       out   SPL,r16
;**********************************************
;PASO 1
       cli                ;SREG<I>=0.int. deshabilitadas.
;PASO 2
       in    r17,TCCR1B ;Habilita
       ori   r17,(1<<ICNC1)      ;Cancelador
       out   TCCR1B,r17 ;de Ruido
;PASO 3
       in    r17,TCCR1B ;Establece Disparo
       ldi   r18,(1<<ICES1)      ;con flanco
       com   r18          ;Descendente
       and   r17,r18
       out   TCCR1B,r17 ;En el pin ICP.
;PASO 4
       in    r17,TIMSK    ;Habilita interrupción
       ori   r17,(1<<TICIE1)     ;del Captura del TIMER/COUNTER1
       out   TIMSK,r17
;PASO 5
       clr   r17
       out   TCNT1H,r17 ;Establece el valor de TCNT1
       out   TCNT1L,r17
;PASO
;PASO 6
       ldi   r17,1        ;Se incrementa TCNT1 en cada
                          ;ciclo del oscilador principal
       out   TCCR1B,r17 ;
;PASO 7
       sei                ;SREG<7>=1. int. habilitadas

loop:                    ;Espera hasta que
        nop              ;se generen interrupciones.


                                       24
nop
       nop
rjmp   loop          ;loop infinito


TIMER/COU TER 1 MODO GE ERADOR DE SEÑALES PWM.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo
Generador de señales PWM.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
                    ;de registros especiales
                    ;Sustitúyalo por el archivo correspondiente al
                    ;microcontrolador que utiliza.
;**********************************************
.org      $0 ;vector de inicio.
       rjmp RESET       ;redireccionado a la dirección
                      ;donde se encuentra RESET
;**********************************************
RESET:                     ;inicio de programa.
;**********************************************
ldi    r16,high(RAMEND)    ;Establece la direccion de
       out   SPH,r16               ;la Pila.
       ldi   r16,low(RAMEND)
       out   SPL,r16
;**********************************************
;PASO 1
       cli   ;SREG<I>=0.int. deshabilitadas.
;PASO 2
       ldi   r17,0x1             ;Establece valor de OCR1A.
       out   OCR1AH,R17 ;Entre mayor sea
       ldi   R17,0xff      ;el valor, mayor es
       out   OCR1AL,R17 ;el ciclo util. Máximo Valor 0x3FF
;PASO 3
       ldi   r17,0x02      ;Establece valor de OCR1B.
       out   OCR1BH,R17 ;Entre mayor sea
       ldi   R17,0xcc      ;el valor, mayor es
       out   OCR1BL,R17 ;el ciclo util.
;PASO 4
       in    r17,TCCR1A ;Modo PWM normal
       ori   r17,(0xA0) ;(no invertido)
       out   TCCR1A,r17
                           ;COM1x1=1 COM1x0=0.



                                            25
;PASO 5
      in      r17,TCCR1A     ;Selecciona la resolución.
      ori     r17,(0x03)     ;10 Bits.
      out     TCCR1A,r17
;PASO 6
      ldi     r17,1          ;señal de reloj
      out     TCCR1B,r17     ;Se incrementará TCNT1 en cada pulso de       RELOJ.

;PASO 7
      sei                    ;SREG<7>=1. int. habilitadas
loop:                        ;Por los pines OC1A y OC1B
      nop                    ;se generan señales PWM
      nop
      nop
rjmp loop            ;loop infinito


TIMER/COU TER 1 MODO COMPARADOR DE IGUALDAD.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo
Comparador de Igualdad.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
                   ;de registros especiales
                   ;Sustitúyalo por el archivo correspondiente al
                   ;microcontrolador que utiliza.
;**********************************************
.org     $000      ;vector de inicio.
      rjmp RESET       ;redireccionado a la dirección
                     ;donde se encuentra RESET
.org OC1Aaddr      ;($004)Redirecciona a
      rjmp CompA ;CompA.

.org   OC1Baddr     ;($005) Redirecciona a
       rjmp CompB ;CompB
;**********************************************
CompA:
       ;Escriba aquí su codigo.
       reti
;**********************************************
CompB:
       ;Escriba aquí su codigo.
       reti



                                            26
;**********************************************
RESET:                    ;inicio de programa.
;**********************************************
ldi    r16,high(RAMEND)   ;Establece la direccion de
       out   SPH,r16              ;la Pila.
       ldi   r16,low(RAMEND)
       out   SPL,r16
;**********************************************
;PASO 1
       cli   ;SREG<I>=0.int. deshabilitadas.
;PASO 2
       ldi   r17,0x00     ;Establece valor de OCR1A.
       out   OCR1AH,R17 ;
       ldi   R17,0xff     ;
       out   OCR1AL,R17 ;
;PASO 3
       ldi   r17,0x02     ;Establece valor de OCR1B.
       out   OCR1BH,R17 ;
       ldi   R17,0x00     ;
       out   OCR1BL,R17 ;
;PASO 4
       in    r17,TIMSK    ;Habilita Interrupción
       ori   r17,(1<<OCIE1A)    ;de Comparacion de Igualdad
       out   TIMSK,r17
;PASO 5
       in    r17,TIMSK    ;Habilita Interrupción
       ori   r17,(1<<OCIE1B)    ;de Comparacion de Igualdad
       out   TIMSK,r17
;PASO 6
       ldi   r17,1        ;señal de reloj
       out   TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de   RELOJ.

;PASO 7
      sei                ;SREG<7>=1. int. habilitadas

loop:                    ;Por los pines OC1A y OC1B
        nop              ;se generan señales PWM
        nop
        nop
rjmp    loop      ;loop infinito




                                      27
28
OMBRE DEL PERIFÉRICO: TIMER/COU TER0.

FU CIO AMIE TO GE ERAL
Un temporizador (Timer) es un periférico que se encarga generar un evento (interrupción)
cada vez que ha pasado cierto intervalo de tiempo. La interrupción de un temporizador se
genera cuando el circuito contador del mismo, sufre un sobre flujo, es decir, cuando se
desborda.
La velocidad a la que un temporizador genera interrupciones depende del origen de la señal
de reloj que alimente al mismo. En la familia de microcontroladores AVR, dicha señal de
reloj puede provenir del exterior o ser generada internamente. Cuando la señal es interna, la
velocidad del temporizador depende de la frecuencia del cristal colocado al
microcontrolador. Cuando es externa, dependerá de la velocidad de los pulsos que se
introduzcan por alguna terminal específica del dispositivo. Un temporizador cuya señal de
reloj es externa, se dice que está configurado en modo contador (Counter).

DISPO IBLE E
AT90S1200, T90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343,
AT90S2333, T90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515,
AT90S4434, AT90LS4434, AT90S8535, AT90LS8535, AT90C8534.

APLICACIO ES
Medición de intervalos de tiempo.
Generación de bases de Tiempo.
Tacómetro digital.
REGISTROS I VOLUCRADOS.
DISPOSITIVO: AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343,
AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414,
AT90S8515.

              OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
               DEL
            REGISTRO.
              TCCR0                          CS02 CS01 CS00
              TCNT0   MSB                               LSB
              TIMSK                               TOIE0
               TIFR                               TOV0
DISPOSITIVO: AT90XX4434, AT90XX8535, AT90C8534.

              OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
               DEL
            REGISTRO.
              TCCR0                          CS02 CS01 CS00
              TCNT0   MSB                               LSB
              TIMSK                                    TOIE0
               TIFR                                    TOV0
                   Tabla TC0-1. Registros involucrados con el Timer/Counter 0.



                                             29
El significado de cada bit y su función se puede observar en la Tabla TC0-2.

      BIT              significado            FU CIÓ
      CS02 a CS00      Clock Select0 bits 2,1 Selecciona
                       y0                     el origen y el pre escalamiento de la
                                              señal de RELOJ para el
                                              Timer/Counter0. Ver Tabla TC0-3.
      MSB a LSB                               Bit más significativo a bit menos
                                              significativo del contador del
                                              Timer/Counter0.
      TOIE0            Timer/Counter0         TOIE0=“1” Habilita interrupción del
                       Overflow Interrupt     Timer/Counter0.
                       Enable                 TOIE0=“0” Deshabilita Interrupción
                                              del Timer/Counter0.
      TOV0                                    TOV0 se pone en “1” cuando el
                                              Timer/Counter0 produce la
                                              interrupción de sobreflujo.

         Tabla TC0-2. Bits y función de los registros especiales para el Timer/Counter 0.

El Timer/Counter 0 tiene un registro especial de 8 bits llamado TCNT0, que tiene la
función de contar de manera ascendente. Por ser un registro de 8 bits, cuando llega a su
máximo valor 255 ($ff) e intenta incrementarse se desborda, y esto puede producir una
interrupción, si esta última se encuentra habilitada.
Los bits CS02, CS01 y CS00 determinan la velocidad a la que el registro TCNT0
incrementa su valor. Estos bits se encuentran localizados en el registro TCCR0. Los
posibles valores de estos bits, y el efecto que producen en la velocidad de conteo de
TCNT0, se muestran en la Tabla TC0-3.




                                            30
CS02     CS01    CS00 ORIGE
                                         Y
                                        PREESCALAMIE TO
                                        DE LA SEÑAL DE
                                        RELOJ.
                    0        0      0   DETENID, NO CUENTA.
                    0        0      1   1/fosc (más rápido)
                    0        1      0   8/osc
                    0        1      1   64/osc
                    1        0      0   256/fosc
                    1        0      1   1024/fosc (más lento)
                                        Terminal T0,
                    1        1      0   flanco descendente. (modo
                                        contador).
                                        Terminal T0,
                    1        1      1   flanco ascendente.
                                        (modo contador).

                 TABLA TC0-3. Origen de la señal de reloj y pre escalamiento.
Cuando este periférico se configura en modo contador, se le introducen pulsos por el pin
T0, localizado en cada dispositivo como se muestra en la Tabla TC0-4.

                               DISPOSITIVO PIN T0
                             AT90S1200              8
                             AT90S2313              8
                             AT90S2323              7
                             AT90LS2323             7
                             AT90S2343              7
                             AT90LS2343             7
                             AT90S2333              2
                             AT90LS2333             2
                             AT90S4433              2
                             AT90LS4433             3
                             AT90S4414              1
                             AT90S8515              1
                             AT90S4434              1
                             AT90LS4434             1
                             AT90S8535              1
                             AT90LS8535             1
                             AT90C8534              -
                  Tabla TC0-4. Localización de pin T0 para la familia AT90X.




                                          31
SECUE CIA DE CO FIGURACIÓ

1.- Ponga SREG<I>=0. (Bit 7 del registro SREG). Deshabilita interrupciones.
2.- Haga TCNT0=0. Inicie contador en $00 o en un valor que necesite.
3.- Haga TIMSK<TOIE0>=”1” Habilita interrupción del TIMER/COUNTER 0, Si
    requiere interrupciones. En caso contrario ponga ese bit en”0”.
4.- Haga TIFR<TOV0>=”1". Limpia posible interrupción falsa.
5.- Ponga SREG<I>=1. (Bit 7 del registro SREG). Habilita interrupciones.
6.- Seleccione el origen de la señal de RELOJ para el TIMER/COUNTER0. Ver Tabla
    TC0-3. Ejemplo:
     TCCR0 =0 hace que este periférico se pare, es decir, TCNT0 no cuenta y por lo tanto
     el TIMER/COUNTER0 no genera interrupciones.
     TCCR0=1 hace que el TCNT0 se incremente con cada pulso de reloj, es la forma más
     rápida en la que este periférico genera interrupciones.
     TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma
     más lenta en la que este periférico genera interrupciones (con RELOJ interno).
     TCCR0=6 hace que el TCNT0 se incremente con cada flanco negativo (cuando la
     señal pasa de “1” a “0”) aplicado en la terminal T0 del microcontrolador.

I.S.R.
El CPU salta a la dirección vector de interrupción de este periférico cada vez que el registro
TCNT0 tiene el valor $FF (255 en decimal) e intenta incrementar su valor (se desborda).
Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la posición de memoria donde se encuentra
realmente la ISR del TIMER/COUNTER0.

En la ISR puede (y quizá hasta deba) reiniciar el registro TCNT0 con un valor apropiado,
generalmente se pone en 0, aunque puede ser otro valor. Observe entre mayor sea el valor
de TCNT0 la interrupción siguiente se producirá en un tiempo menor. No es necesario que
ponga el bit 7 del archivo TIFR en “0” cada vez que se produzca una interrupción, al
atenderse la ISR el hardware lo realiza.




                                             32
DISPOSITIVO DIRECCIÓ             VECTOR
                       AT90S1200      $002                 4
                       AT90S2313      $006                 7
                       AT90S2323      $002                 3
                       AT90LS2323     $002                 3
                       AT90S2343      $002                 3
                       AT90LS2343     $002                 3
                       AT90S2333      $006                 7
                       AT90LS2333     $006                 7
                       AT90S4433      $006                 7
                       AT90LS4433     $006                 7
                       AT90S4414      $007                 8
                       AT90S8515      $007                 8

                   Tabla TC0-5. Vector de interrupción para Timer/Counter 0

IMPLA TACIÓ .
La secuencia de configuración, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los
ejemplos de implantación como referencia.

TIMER/COU TER 0 MODO TEMPORIZADOR.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER 0 del
microcontrolador para que incremente el registro TCNT0 en cada pulso de reloj. Si el
dispositivo tiene colocado un cristal de 4 MHz, las interrupciones se generarán cada 65
micro segundos aproximadamente.

;Timer/Counter0 Modo Temporizador
;*****************************************************************
.include "1200def.inc"       ;archivo que contiene los nombres de registros
                              ;especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;*****************************************************************
.org     $0 ;vector de inicio.
      rjmp RESET     ;redireccionado a la dirección donde se
                     ;encuentra RESET

.org  $002                ;vector de TIMER/COUNTER0
      rjmp TIMER0_ISR ;redireccionado a TIMER_ISR
;*****************************************************************
;Esta ISR se produce cada vez que TCNT0 se desborda.



                                            33
TIMER0_ISR:               ;ISR del TIMER/COUNTER0
       inc   r18          ;incrementa registro r18
       out   PORTB,r18    ;y saca el valor por el PORTB
       ldi   r17,0        ;
       out   TCNT0,R17    ;pone valor de TCNT0 en 0.
       reti               ;regresa de interrupción.
;************************************************************************
RESET:                    ;inicio de programa.
       ldi   r17,$ff      ;configura PORTB
       out   DDRB,r17     ; como salida
;*****************************************************************
;ldi r16,high(RAMEND) ;Descomente para dispositivos
                          ;con RAM mayor 256 Bytes
;      out   SPH,r16
;      ldi   r16,low(RAMEND)
;      out   SPL,r16
;*****************************************************************
;PASO1
cli    ;SREG<I>=0.int. deshabilitadas.
;PASO2
       ldi   r17,0        ;Inicia TCNT0 con valor 0
       out   TCNT0,R17    ;
;PASO3
       in    r17,TIMSK    ;Habilita interrupción
       ori   r17,(1<<TOIE0)      ;del TIMER/COUNTER0
       out   TIMSK,r17    ;TIMSK<TOIE0>=1
;PASO 4
       in    r17,TIFR     ;Limpia posible
       ori   r17,(1<<TOV0)       ;interrupción anterior
       out   TIFR,r17     ;TIFR<TOV0>=0
;PASO 5
       sei                ;SREG<7>=1. int. habilitadas
;PASO 6                   ;Selecciona el origen de la
       ldi   r17,1        ;señal de reloj
       out   TCCR0,r17    ;Se incrementará TCNT0 en cada pulso de RELOJ.
                          ;TCCR0=1. (Si se quiere visualizar por el PORTB ;hacer
                          ;TCCR0=5, ;LO MAS LENTO POSIBLE)
loop:                     ;Espera hasta que
       nop                ;se generen interrupciones.
       nop
       nop
rjmp loop           ;loop infinito




                                      34
OTAS DE CO FIGURACIÓ .
Para este periférico los cambios más importantes en el programa son en el paso 6, es aquí
donde se le indica al periférico el origen de la señal de RELOJ. Consulte TABLA TC0-3 y
sustituya el valor que requiera en la línea de código ldi r17,1 del paso 6.




                                           35
36
OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL.

DESCRIPCIÓ GE ERAL.
Un circuito Convertidor Analógico Digital – ADC- es integrado en algunos
microcontroladores para procesamiento de señales analógicas. El Convertidor Analógico
Digital integrado en los microcontroladores de la familia AVR es tipo aproximación
sucesiva y tienen una resolución de 10 bits. La frecuencia máxima de muestreo es 15
KSPS (15000 Muestras Por Segundo aproximadamente). Otras características son las
siguientes: ±2 LSB, 0.5 LSB INL, Tiempo de conversión 65-260 uS, Cancelador de ruido
integrado, rango de entrada Rail to Rail.

El ADC puede ser configurado en dos modos de operación:
   ♦ Modo de una Sola Conversión. Se tiene que iniciar manualmente cada
      conversión.
   ♦ Modo en Conversión Continua. Las conversiones se realizan de manera
      repetida automáticamente.

DISPO IBLE E
AT90xS4434, AT90xS8535, AT90xS2333, AT90xS4433.

APLICACIO ES
Sistemas de adquisición de señales analógicas, Sistemas de Control Digital, etc.
REGISTROS I VOLUCRADOS


           OMBRE
                         B7     B6    B5     B4     B3      B2      B1       B0
         REGISTRO
          ADMUX          -     -    -      -      - MUX2 MUX1 MUX0
                        Tabla ADC-1A. Registros Involucrados con ADC


      OMBRE
             B7     B6    B5      B4      B3      B2      B1 B0
    REGISTRO
     ADCSR ADE ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
               Tabla ADC-1B. Registros Involucrados con ADC.


        OMBRE
                B7     B6    B5       B4      B3     B2     B1   B0
      REGISTRO
        ADCH     -      -     -        -       -       -   ADC9 ADC8
        ADCL   ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
                 Tabla ADC-1C. Registros Involucrados con ADC.




                                            37
El significado de cada bit y su función se puede observar en la Tabla ADC-2.

       BIT      SIG IFICADO                             FU CIÓ
      MUX2 Analog Channel Select            Ver Tabla ADC-3.
      MUX1 Analog Channel Select            Ver Tabla ADC-3.
      MUX0 Analog Channel Select            Ver Tabla ADC-3.

      ADPS0    ADC Prescaler Select Bits.Ver Tabla ADC-4
      ADPS1    ADC Prescaler Select Bits.Ver Tabla ADC-4
      ADPS2    ADC Prescaler Select Bits.Ver Tabla ADC-4
      ADIE     ADC Interrupt Enable      “1” Habilita la interrupción de
                                         Conversión Completa.
      ADIF ADC Interrupt Flag            Se establece a “1” cuando una
                                         Conversión ha terminado.
      ADFR ADC Free Run Select           “1” Selecciona Modo en Conversión
                                         Continua.
                                         “0” Selecciona Modo de una Sola
                                         Conversión.
      ADSC ADC Start Conversion          Se debe escribir un “1” en este bit para
                                         iniciar la conversión.
      ADE   ADC Enable                   “1” Habilita al ADC.
           Tabla ADC-2. Bits de los registros especiales utilizados para el ADC.

La entrada del ADC tiene un circuito Muestreador Retenedor, que mantiene la señal
invariante una vez que ha comenzado la conversión. El número de entradas analógicas
conectadas al ADC, a través de un multiplexor analógico varía de un microcontrolador a
otro, siendo ocho el número máximo. La conversión analógica a digital se realiza sobre un
solo canal o entrada analógica seleccionado, para esto se utilizan los bits MUX2, MUX1 y
MUX0. La Tabla ADC-3 muestra las posibles combinaciones de estos bits y el canal
seleccionado. Recuerde que algunos microcontroladores no tienen disponible los ocho
canales de entrada.

                                                      CA AL
                     MUX2 MUX1          MUX0      SELECCIO ADO
                      0         0         0               0
                      0         0         1               1
                      0         1         0               2
                      0         1         1               3
                      1         0         0               4
                      1         0         1               5
                      1         1         0               6
                      1         1         1               7
        Tabla ADC-3. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del
                                      registro ADMUX.




                                            38
La Tabla ADC-4 muestra la posición de las entradas o canales analógicos para
cada miembro de la familia AVR.

                                    canal de entrada analogico
       DISPOSITIVO      0      1       2       3      4       5      6       7
                       40      39     38      37      36     35     34      33
        AT90xS4434
                     (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7)
                       40      39     38      37      36     35     34      33
        AT90xS8535
                     (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7)
                       23      24     25      26      27     28
        AT90xS2333                                                   -       -
                     (PC0) (PC1) (PC2) (PC3) (PC4) (PC5)
                       23      24     25      26      27     28
        AT90xS4433                                                   -       -
                     (PC0) (PC1) (PC2) (PC3) (PC4) (PC5)
          Tabla ADC-4. Localización de las entradas para el ADC en la familia AVR.
                                 (EMPAQUETADO DIP).

Para realizar las conversiones analógico a digital, el circuito ADC requiere de una señal se
reloj (AD Clock) que se deriva del oscilador principal, la frecuencia de la señal AD Clock
debe ser mayor a 50Hz y menor a 200KHz. Si se selecciona la frecuencia más alta,
aumentará también la velocidad de conversión, pero la precisión disminuirá, esto es, a
mayor frecuencia, menor precisión. Para establecer la frecuencia de la señal AD Clock se
utilizan los bits ADPS2, ADPS1 y ADPS0 del registro ADCSR. La Tabla ADC-5 muestra
las frecuencias posibles.

                     ADPS2 ADPS1 ADPS0                 Frecuencia
                       0     0     0                     FOSC
                                                                2
                         0        0         1            FOSC
                                                                2
                         0        1         0            FOSC
                                                                4
                         0        1         1            FOSC
                                                                8
                         1        0         0           FOSC
                                                                16
                         1        0         1           FOSC
                                                                32
                         1        1         0           FOSC
                                                                64
                         1        1         1           FOSC
                                                         128
           Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la
                               selección de la señal AD Clock.


SECUE CIA DE CO FIGURACIÓ ADC.

                                            39
1.- Deshabilite interrupciones. Recomendado pero no necesario.
2.- Configure como entrada los pines del microcontrolador que utilizará como entradas
    analógicas.
3.- Seleccione la frecuencia de la señal AD Clock. Ver Tabla ADC-5.
4.- Seleccione el modo de operación:
    Modo de una Sola Conversión ADCSR<ADFR>=”0”
    Modo de Conversión Continua ADCSR<ADFR>=”1”
5.- Si lo requiere, habilite la interrupción del ADC. Por lo general sí se habilita la
    interrupción.
    ADCSR<ADIE>=”1”
6.- Limpie posible interrupción falsa del ADC, para esto escriba un “1” en el bit ADIF del
    registro ADCSR.
7.- Seleccione el canal de entrada analógico deseado. Ver Tabla ADC-3 y Tabla ADC-4.
8.- Habilite el ADC.
9.- Habilite interrupciones globales.
10.- Inicie conversión.
    ADCSR<ADSC>=1”
    Para Modo de una Sola Conversión es necesario iniciar cada una después de que el
    ADC ha terminado.
    En Modo de Conversión Continua se ejecuta la correspondiente ISR cada vez que el
    ADC termina una conversión y automáticamente comienza la siguiente.
Para reducir el ruido que induce el CPU del microcontrolador, se puede poner en estado de
espera pasivo a este último (cancelador de ruido) para esto hay que realizar los siguientes
pasos:

   1. Configurar al ADC en Modo de una Sola Conversión y habilitar la interrupción.
   2. Entrar a modo de espera (IDLE)
   3. Al terminar una conversión el ADC, se ejecutará la ISR.

I.S.R.
La Tabla ADC-6 muestra los vectores y direcciones de interrupción del ADC. La
interrupción sucede cada vez que se termina una conversión analógico a digital. Si
programa en ensamblador necesitará redireccionar hacia donde realmente se
encuentre la ISR.

                      DISPOSITIVO       VECTOR        DIRECCIO
                      AT90xS4434       15             $00E
                      AT90xS8535       15             $00E
                      AT90xS2333       12             $00B
                      AT90xS4433       12             $00B

                      Tabla ADC-6. Vectores de interrupción para el ADC.




                                            40
IMPLA TACIO
En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en
velocidad.
El siguiente programa muestra como configurar al ADC en Modo de Conversión Continua.
;CONVERTIDOR ANALOGICO DIGITAL
;Modo Conversión Continua
;************************************************************
.include "4434def.inc" ;archivo que contiene los nombres de registros
;especiales
                    ;Sustitúyalo por el archivo correspondiente al
                    ;microcontrolador que utiliza.
;************************************************************
.org      $0 ;vector de inicio.
       rjmp RESET       ;redireccionado a la dirección donde se encuentra RESET
;************************************************************
.org      ADCCaddr ;Vector de ADC conversión terminada
       rjmp ADC_Fin        ;redireccionado.
;************************************************************
ADC_Fin:
       ;Escriba aqui su codigo
       in     r17,ADCL
       in     r18,ADCH
       out    PORTB,r17
       reti
RESET:              ;inicio de programa.
;************************************************************
ldi    r16,high(RAMEND)
       out    SPH,r16
       ldi    r16,low(RAMEND)
       out    SPL,r16
 ;************************************************************
       ldi    r17,0xff
       out    DDRB,r17     ;Puerto B como salida
;PASO1
       cli    ;SREG<I>=0.int. deshabilitadas.
;PASO2
;PASO2
       ldi    r17,0x00     ;Configura como entrada Puerto A
       out    DDRA,r17     ;Son las entradas Analógicas
;PASO3
       cbi    ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock
       sbi    ADCSR,ADPS1 ;es fosc/4
       cbi    ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4
       sbi    ADCSR,ADFR ;Modo Conversión Continua
;PASO5



                                        41
sbi    ADCSR,ADIE   ;Habilita Int ADC
;PASO6
         sbi    ADCSR,ADIF   ;Limpia Posible Interrupción Falsa
;PASO7
         cbi    ADMUX,MUX2   ;Selecciona Canal 0
         cbi    ADMUX,MUX1   ;Pin 40, PA0
         cbi    ADMUX,MUX0
;PASO8
         sbi    ADCSR,ADEN   ;Habilita ADC
;PASO9
      sei                    ;Habilita Interrupciones Globales
;PASO10
      sbi       ADCSR,ADSC   ;Inicia la primera conversión.

loop:
         nop
         nop
rjmp     loop         ;loop infinito

El siguiente programa muestra como configurar al ADC en Modo de una Sola Conversión.

;CONVERTIDOR ANALOGICO DIGITAL
;Modo una Sola Conversión
;************************************************************
.include "4434def.inc"    ;archivo que contiene los nombres de             registros
;especiales
                  ;Sustitúyalo por el archivo correspondiente al
                  ;microcontrolador que utiliza.
;************************************************************
.org      $0 ;vector de inicio.
       rjmp RESET       ;redireccionado a la dirección donde se encuentra RESET
;************************************************************.org      ADCCaddr
       ;Vector de ADC conversión terminada
       rjmp ADC_Fin        ;redireccionado.
;************************************************************
ADC_Fin:
       ;Escriba aqui su codigo
       ldi   r17,0xff
       reti
RESET:              ;inicio de programa.
;************************************************************ ldi
       r16,high(RAMEND)
       out   SPH,r16
       ldi   r16,low(RAMEND)
       out   SPL,r16



                                             42
;************************************************************
       ldi   r17,0xff
       out   DDRB,r17     ;Puerto B como salida
;PASO1
       cli   ;SREG<I>=0.int. deshabilitadas.
;PASO2
       ldi   r17,0x00     ;Configura como entrada Puerto A
       out   DDRA,r17     ;Son las entradas Analógicas
;PASO3
       cbi   ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock
       sbi   ADCSR,ADPS1 ;es fosc/4
       cbi   ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4
       cbi   ADCSR,ADFR ;Modo Conversión Continua
;PASO5
       sbi   ADCSR,ADIE ;Habilita Int ADC
;PASO6
       sbi   ADCSR,ADIF ;Limpia Posible Interrupción Falsa
;PASO7
       cbi   ADMUX,MUX2 ;Selecciona Canal 0
       cbi   ADMUX,MUX1 ;Pin 40, PA0
       cbi   ADMUX,MUX0
;PASO8
       sbi   ADCSR,ADEN ;Habilita ADC
;PASO9
       sei                ;Habilita Interrupciones Globales
;PASO10
       sbi   ADCSR,ADSC ;Inicia la primera conversión.
loop:
       nop
       nop
       sbrs r17,0         ;espera hasta terminar conversion
       rjmp loop
       in    r17,ADCL
       in    r18,ADCH
       out   PORTB,r17
       ldi   r17,0x00
       nop
rjmp loop          ;loop infinito




                                       43
44
OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO.

DESCRIPCIÓ GE ERAL.

El comparador de voltaje conecta su entrada negativa y positiva a los pines AIN1 y AIN0
del microcontrolador respectivamente. La salida del comparador analógico está conectada
directamente al bit ACO del registro ACSR.


DISPO IBLE E
AT90S8515,  AT90S1200,            AT90S2313,       90S2333,AT90LS2333,    AT90S4433,
AT90LS4433.

APLICACIO ES
Detección picos de señales analógicas.
Control de potencia por ángulo de disparo con Tiristores.
Conversión analógico a digital.

REGISTROS I VOLUCRADOS

DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535.
          OMBRE
                    B7    B6      B5    B4     B3     B2    B1     B0
       REGISTRO
          ACSR     ACD          ACO ACI ACIE ACIC ACIS1 ACIS0
           Tabla CA-1A. Registros Involucrados con el Comparador Analógico.

DISPOSITIVO AT90S1200.
          OMBRE B7         B6     B5    B4     B3     B2    B1     B0
        REGISTRO
          ACSR      ACD          ACO ACI ACIE             ACIS1 ACIS0
           Tabla CA-1B. Registros Involucrados con el Comparador Analógico.


DISPOSITIVO AT90XX2333, AT90XX4433.
         OMBRE B7         B6       B5    B4     B3     B2    B1      B0
      REGISTRO
         ACSR     ACD AINBG ACO ACI ACIE ACIC ACIS1 ACIS0
           Tabla CA-1C. Registros Involucrados con el Comparador Analógico.




                                            45
El significado de cada bit y su función se puede observar en la Tabla CA-2.

           BIT        SIG IFICADO                         FU CIÓ
           ACD     Analog Comparator       “1” Apaga al comparador analógico.
                   Disable.                “0” Enciende comparador analógico.
           ACO     Analog comparator       Conectado de manera directa a la
                   Output.                 salida del comparador analógico.
            ACI    Analog Comparator       “1” indica que se ha producido una
                   Interrupt Flag.         interrupción debida del comparador
                                           analógico . Ver bits ACIS1 y ACIS0.
           ACIE Analog Comparator          “1” Habilita interrupción del
                  Interrupt Enable.        comparador analógico.
           ACIC Analog Comparator          “1” Hace que la captura del
                  Input Capture Enable. Timer/Counter1 sea activada por el
                                           comparador analógico.
          ACIS1 Analog Comparator          Ver Tabla CA-3.
                  Interrupt Mode
                  Select.
          ACIS0 Analog Comparator          Ver Tabla CA-3.
                  Interrupt Mode
                  Select.
          AI BG Analog Comparator          “1” Habilita la referencia interna. En
                  BandGap Select           este caso un voltaje de 1.22 ±0.05V se
                                           aplica en la entrada positiva (AIN0)
                                           del comparador, sustituyendo a la
                                           señal proveniente del exterior.
                                           “0” La señal proveniente del exterior
                                           se aplica a la entrada AIN0 del
                                           comparador analógico.
            Tabla CA-2. Bits de los registros especiales utilizados para el comparador
                                            analógico.

La salida del comprador analógico – conectada al bit       ACO del registro ACR- tendrá
valor “1” siempre que la señal en el pin AIN0 sea mayor a la de AIN1. En caso contrario la
salida será “0”.
La interrupción del comparador analógico se puede producir cuando el bit ACO pasa de “0”
a “1” (flanco positivo) o cuando pasa de “1” a “0” (flanco negativo).
Los bits ACIS1 y ACIS0 configuran la interrupción del comparador analógico, como se
muestra en la Tabla CA-3.




                                             46
MOTIVO DE
                    ACIS1     ACIS0          GE ERACIÓ DE
                                              I TERRUPCIÓ
                      0            0    La salida del comparador
                                        analógico cambia de estado.
                      0            1    Reservado.
                      1            0    La salida del comparador
                                        analógico produce un flanco
                                        negativo.
                      1            1    La salida del comparador
                                        analógico produce un flanco
                                        positivo.
       Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación
                         de interrupción del Comparador Analógico.


La localización de los pines AIN0 y AIN1 de cada elemento de la familia AVR se muestra
en la Tabla CA-4.

                                         AI 0           AI 1
                     DISPOSITIVO
                                         (in +)         (in -)
                     AT90S1200            PB0            PB1
                                       (PIN 12)       (PIN 13)
                     AT90S2313            PB0            PB1
                                       (PIN 12)       (PIN 13)
                    AT90XX2333            PD6            PD7
                                       (PIN 12)       (PIN 13)
                    AT90XX4433            PD6            PD7
                                       (PIN 12)       (PIN 13)
                     AT90S8515            PB 2          PB 3
                                        (PIN 3)        (PIN 4)
                    AT90XX4414            PB 2          PB 3
                                        (PIN 3)        (PIN 4)
                    AT90XX8535            PB 2          PB 3
                                        (PIN 3)        (PIN 4)
            Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR.
                                  EMPAQUETADO DIP).


SECUE CIA DE CO FIGURACIÓ COMPARADOR A ALÓGICO.
1 Deshabilite interrupciones globales.
  SREG<I>=”0”
2 Deshabilite la interrupción del comparador analógico (Siempre que cambie la
  configuración de este periférico, lo recomendable es deshabilitar su interrupción).
  ACSR<ACIE>=”0”


                                         47
3   Configure los pines AIN1 y AIN0 como entradas.
4   Si el dispositivo soporta referencia interna, coloque un “1” o un “0” en el bit AINBG de
    acuerdo a lo indicado en la Tabla CA-2.
5   Seleccione el evento que generará la interrupción. Ver Tabla CA-3.
6   Si requiere producir un evento de captura (ver capitulo Timer/Counter1) ponga el bit
    ACIC en “1”. En caso contrario póngalo en “0”.
7   Habilite el comparado analógico
    ACSR<ACD>=”1”.
8   Si lo requiere, habilite la interrupción del comparador analógico y las interrupciones
    globales
    ACSR<ACIE>=”1”.
    SREG<I>=”1”.

I.S.R.
Cuando se produce cualquiera de las situaciones presentadas en la Tabla CA-3, y además,
las interrupciones globales han sido habilitadas, el CPU salta a la dirección mostrada en la
Tabla CA-5.

                       DISPOSITIVO        VECTOR       DIRECCIO
                        AT90S1200            5            $003
                        AT90S2313           11            $00A
                        AT90S4414           13            $00C
                        AT90S8515           13            $00C
                       AT90XX2333           14            $00D
                       AT90XX4433           14            $00D
                       AT90XX4434           17            $010

                Tabla CA-5. Vectores de interrupción para el comprador analógico.




                                             48
IMPLA TACIO
En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en
velocidad.

El programa siguiente configura al comparador analógico para que genere interrupciones en
cada flanco negativo.

;AIN0 y AIN1 se encuentran en el PORTB
;del AT90S8515. Si usa otro dispositivo
;Vea Tabla CA-4.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
                    ;Sustitúyalo por el archivo correspondiente al
                    ;microcontrolador que utiliza.
;************************************************************************
.org      $0 ;vector de inicio.
       rjmp RESET       ;redireccionado a la dirección donde se encuentra RESET
;************************************************************************
.org      ACIaddr   ;vector del Comparador Analogico
       rjmp CompAn ;redireccionado.
;************************************************************************
CompAn:
       ;Escriba aqui su codigo
       reti
RESET:              ;inicio de programa.
;************************************************************************
ldi    r16,high(RAMEND)
       out    SPH,r16
       ldi    r16,low(RAMEND)
       out    SPL,r16
 ;************************************************************************
;PASO1
       cli    ;SREG<I>=0.int. deshabilitadas.
;PASO2
       ldi    r17,0x80     ;Deshabilita int del
       out    ACSR,r17     ;Comparador Analogico. (ACIE="0")
;PASO3
       ldi    r17,0x00     ;Configura como entrada los pines
       out    DDRB,r17     ;correspondientes a AIN0 y AIN1
                           ;Esta linea cambia en otro dispositivo.
;PASO4
;//    in     r17,ACSR     ;EL AT90S8515 no tiene circuito de
;//    ori    r17,(1<<AINBG)     ;referencia interna
;//    out    ACSR,r17     ;



                                           49
;PASO5
         in    r17,ACSR    ;Se generara la interrupción en cada
         ori   r17,0x02    ;flanco descendente de la salida del
         out   ACSR,r17    ;Comparador Analogico (bit ACO)
;PASO6
;      in      r17,ACSR
;      ori     r17,(1<<ACIC)      ;Si desa habilitar el evento de captura
;      out     ACSR,r17     ;descomente esto
;PASO7
       in      r17,ACSR    ;Habilita al comparador Analogico
       andi    r17,0x7f    ;ACD="0"
       out     ACSR,r17
;PASO8
       in      r17,ACSR     ;Habilita int del Comparador
       ori     r17,(1<<ACIE)      ;Analogico
       out     ACSR,r17
       sei
loop:
       nop
       nop
       nop
rjmp loop            ;loop infinito




                                         50
51
OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ                     (WATCHDOG TIMER).

DESCRIPCIÓ GE ERAL.
Este periférico permite que el microcontrolador se reinicie automáticamente mediante un
circuito contador, que se incrementa continuamente a una frecuencia de 1MHz
aproximadamente. Para evitar que el microcontrolador se reinicie, hay que restablecer el
valor del contador antes de que este se desborde. El restablecimiento del contador se
efectúa mediante una instrucción especial (WDR).

DISPO IBLE E
AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333,
AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434,
AT90S8535, AT90LS8535

APLICACIO ES.

El WATCHDOG TIMER se utiliza generalmente en aquellas situaciones en las que se
corre el riesgo de que el microcontrolador entre en un estado de espera infinito.

REGISTROS I VOLUCRADOS.
DISPOSITIVO: AT90S1200.

   OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0          FU CIÓ
    DEL
  ARCHIVO.
   WDTCR   -    -    -    -  WDE WDP2 WDP1 WDP0 WDE = “1”
                                                 habilita
                                                 WATCHDOG
                                                 TIMER.
                                                 WDE = “0”
                                                 deshabilita
                                                 WATCHDOG
                                                 TIMER.

                            Tabla WDT-1A. Registros involucrados.

DISPOSITIVO: AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343,
AT90S2333, AT90LS2333, AT090S4433,AT90LS4433,AT90S8515, AT90S4414,
AT90S4434, AT90LS4434, AT90S8535, AT90LS8535.
           OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
            DEL
          ARCHIVO.
           WDTCR   -    -    - WDTOE WDE WDP2 WDP1 WDP0
                            Tabla WDT-1B. Registros involucrados.

El bit WDE de registro WDTCR es el responsable de habilitar o deshabilitar el periférico
Perro Guardián. Los tres bits menos significativos de este registro permiten establecer el



                                           52
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega
Periféricos ATmega

Más contenido relacionado

La actualidad más candente

Guia didactica hebrea_en_linea
Guia didactica hebrea_en_lineaGuia didactica hebrea_en_linea
Guia didactica hebrea_en_lineacamilo
 
Informe Situación de la Caza en Extremadura 2017
Informe Situación de la Caza en Extremadura 2017Informe Situación de la Caza en Extremadura 2017
Informe Situación de la Caza en Extremadura 2017Javier Alvarez Amaro
 
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicamanual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicaKartel Balder
 
Folleto ie1 cb-2020
Folleto ie1  cb-2020Folleto ie1  cb-2020
Folleto ie1 cb-2020Alumic S.A
 
Proyecto final de carrera Frío industrial e instalación fotovoltaica
Proyecto final de carrera Frío industrial e instalación fotovoltaicaProyecto final de carrera Frío industrial e instalación fotovoltaica
Proyecto final de carrera Frío industrial e instalación fotovoltaicaManuel Jose Ballesteros
 
Síndromes genéticos asociados a los cromosomas
Síndromes genéticos asociados a los cromosomasSíndromes genéticos asociados a los cromosomas
Síndromes genéticos asociados a los cromosomasLin Toalombo
 
Electricidad sistemas puesta_a_tierra
Electricidad sistemas puesta_a_tierraElectricidad sistemas puesta_a_tierra
Electricidad sistemas puesta_a_tierrafedericoblanco
 
Documents.mx manual de-calculo-y-diseno-de-cuarto-frios
Documents.mx manual de-calculo-y-diseno-de-cuarto-friosDocuments.mx manual de-calculo-y-diseno-de-cuarto-frios
Documents.mx manual de-calculo-y-diseno-de-cuarto-friosJesus Eduardo Moran Muñoz
 
293684273 manual-de-calculo-y-diseno-de-cuarto-frios
293684273 manual-de-calculo-y-diseno-de-cuarto-frios293684273 manual-de-calculo-y-diseno-de-cuarto-frios
293684273 manual-de-calculo-y-diseno-de-cuarto-friosJose Torales Delvalle
 
Tutorial de computación básica II
Tutorial de computación básica IITutorial de computación básica II
Tutorial de computación básica IIdenisse sancho
 
Energia Alternativa práctica
Energia Alternativa prácticaEnergia Alternativa práctica
Energia Alternativa prácticaalmelini
 
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...Alberto Garcia Romera
 

La actualidad más candente (18)

Guia didactica hebrea_en_linea
Guia didactica hebrea_en_lineaGuia didactica hebrea_en_linea
Guia didactica hebrea_en_linea
 
MANUAL EZ250 ESPAÑOL
MANUAL EZ250 ESPAÑOLMANUAL EZ250 ESPAÑOL
MANUAL EZ250 ESPAÑOL
 
Informe Situación de la Caza en Extremadura 2017
Informe Situación de la Caza en Extremadura 2017Informe Situación de la Caza en Extremadura 2017
Informe Situación de la Caza en Extremadura 2017
 
Riego por aspersion
Riego por aspersionRiego por aspersion
Riego por aspersion
 
M-SAS-HSEQ-24 Manual de bolsillo Charlas de 5 minutos (SASMI PERU)
M-SAS-HSEQ-24 Manual de bolsillo Charlas de 5 minutos (SASMI PERU)M-SAS-HSEQ-24 Manual de bolsillo Charlas de 5 minutos (SASMI PERU)
M-SAS-HSEQ-24 Manual de bolsillo Charlas de 5 minutos (SASMI PERU)
 
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnicamanual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
manual-de-preparacin-para-olimpiadas-nacionales-de-mecatrnica
 
Folleto ie1 cb-2020
Folleto ie1  cb-2020Folleto ie1  cb-2020
Folleto ie1 cb-2020
 
Calculo II
Calculo IICalculo II
Calculo II
 
Proyecto final de carrera Frío industrial e instalación fotovoltaica
Proyecto final de carrera Frío industrial e instalación fotovoltaicaProyecto final de carrera Frío industrial e instalación fotovoltaica
Proyecto final de carrera Frío industrial e instalación fotovoltaica
 
Síndromes genéticos asociados a los cromosomas
Síndromes genéticos asociados a los cromosomasSíndromes genéticos asociados a los cromosomas
Síndromes genéticos asociados a los cromosomas
 
Electricidad sistemas puesta_a_tierra
Electricidad sistemas puesta_a_tierraElectricidad sistemas puesta_a_tierra
Electricidad sistemas puesta_a_tierra
 
Documents.mx manual de-calculo-y-diseno-de-cuarto-frios
Documents.mx manual de-calculo-y-diseno-de-cuarto-friosDocuments.mx manual de-calculo-y-diseno-de-cuarto-frios
Documents.mx manual de-calculo-y-diseno-de-cuarto-frios
 
293684273 manual-de-calculo-y-diseno-de-cuarto-frios
293684273 manual-de-calculo-y-diseno-de-cuarto-frios293684273 manual-de-calculo-y-diseno-de-cuarto-frios
293684273 manual-de-calculo-y-diseno-de-cuarto-frios
 
Tutorial de computación básica II
Tutorial de computación básica IITutorial de computación básica II
Tutorial de computación básica II
 
Energia Alternativa práctica
Energia Alternativa prácticaEnergia Alternativa práctica
Energia Alternativa práctica
 
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...
Monografia sopt 1 -UAS “Unmanned Aircraft System” Sobre su integración en el ...
 
Catalogo
CatalogoCatalogo
Catalogo
 
Catalogo de pernos
Catalogo de pernosCatalogo de pernos
Catalogo de pernos
 

Destacado

Programación de AVR
Programación de AVRProgramación de AVR
Programación de AVRJuan Corleone
 
Practica CON AVR
Practica CON  AVRPractica CON  AVR
Practica CON AVRguest6ec450
 
Aplicaciones electronicas con microcontroladores bascom
Aplicaciones electronicas con microcontroladores bascomAplicaciones electronicas con microcontroladores bascom
Aplicaciones electronicas con microcontroladores bascomKennedy Vasconez
 
Avaya Vs Asterisk Bulos Y Leyendas
Avaya Vs Asterisk Bulos Y LeyendasAvaya Vs Asterisk Bulos Y Leyendas
Avaya Vs Asterisk Bulos Y LeyendasElio Rojano
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVRabemen
 

Destacado (8)

Programación de AVR
Programación de AVRProgramación de AVR
Programación de AVR
 
Practica CON AVR
Practica CON  AVRPractica CON  AVR
Practica CON AVR
 
Turorial avr Bascom
Turorial avr BascomTurorial avr Bascom
Turorial avr Bascom
 
Aplicaciones electronicas con microcontroladores bascom
Aplicaciones electronicas con microcontroladores bascomAplicaciones electronicas con microcontroladores bascom
Aplicaciones electronicas con microcontroladores bascom
 
GSM
GSMGSM
GSM
 
Gms
GmsGms
Gms
 
Avaya Vs Asterisk Bulos Y Leyendas
Avaya Vs Asterisk Bulos Y LeyendasAvaya Vs Asterisk Bulos Y Leyendas
Avaya Vs Asterisk Bulos Y Leyendas
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 

Similar a Periféricos ATmega

Tutorial de computación básica 2
Tutorial de computación básica 2Tutorial de computación básica 2
Tutorial de computación básica 2AndreaEspinoza92
 
18360134 manual-calderas
18360134 manual-calderas18360134 manual-calderas
18360134 manual-calderasLuis Torres
 
Resolucion epre 158 08
Resolucion epre 158  08Resolucion epre 158  08
Resolucion epre 158 08Esteban Conte
 
Manual de operación del fermentador y bioreactor de laboratorio lambda minifor
Manual de operación del fermentador y bioreactor de laboratorio lambda miniforManual de operación del fermentador y bioreactor de laboratorio lambda minifor
Manual de operación del fermentador y bioreactor de laboratorio lambda miniforGustavo Rojas
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos GM Lamo
 
61470227 mplab
61470227 mplab61470227 mplab
61470227 mplabrexmersxa7
 
Manual de instrucciones Generadores BENZA - Gasolina
Manual de instrucciones Generadores BENZA - GasolinaManual de instrucciones Generadores BENZA - Gasolina
Manual de instrucciones Generadores BENZA - GasolinaBenza
 
M. instalacion calderas condensacion natur - Servicio Tecnico Fagor
M. instalacion calderas condensacion natur  - Servicio Tecnico FagorM. instalacion calderas condensacion natur  - Servicio Tecnico Fagor
M. instalacion calderas condensacion natur - Servicio Tecnico Fagorserviciotecnicofagor
 
Instrumentacion
InstrumentacionInstrumentacion
Instrumentacionc t
 

Similar a Periféricos ATmega (20)

Tutorial de computación básica 2
Tutorial de computación básica 2Tutorial de computación básica 2
Tutorial de computación básica 2
 
357509243 manual-generadores-cummins
357509243 manual-generadores-cummins357509243 manual-generadores-cummins
357509243 manual-generadores-cummins
 
Manual utiles elevacion
Manual utiles elevacionManual utiles elevacion
Manual utiles elevacion
 
Sintonizacion PID
Sintonizacion PID Sintonizacion PID
Sintonizacion PID
 
Control digital con matlab
Control digital con matlabControl digital con matlab
Control digital con matlab
 
18360134 manual-calderas
18360134 manual-calderas18360134 manual-calderas
18360134 manual-calderas
 
Resolucion epre 158 08
Resolucion epre 158  08Resolucion epre 158  08
Resolucion epre 158 08
 
Manual de operación del fermentador y bioreactor de laboratorio lambda minifor
Manual de operación del fermentador y bioreactor de laboratorio lambda miniforManual de operación del fermentador y bioreactor de laboratorio lambda minifor
Manual de operación del fermentador y bioreactor de laboratorio lambda minifor
 
1.memoria
1.memoria1.memoria
1.memoria
 
Manual pavco
Manual pavcoManual pavco
Manual pavco
 
Pic gama-media
Pic gama-mediaPic gama-media
Pic gama-media
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
Pic
PicPic
Pic
 
MICROCONTROLADORES.
MICROCONTROLADORES.MICROCONTROLADORES.
MICROCONTROLADORES.
 
61470227 mplab
61470227 mplab61470227 mplab
61470227 mplab
 
Manual de instrucciones Generadores BENZA - Gasolina
Manual de instrucciones Generadores BENZA - GasolinaManual de instrucciones Generadores BENZA - Gasolina
Manual de instrucciones Generadores BENZA - Gasolina
 
M. instalacion calderas condensacion natur - Servicio Tecnico Fagor
M. instalacion calderas condensacion natur  - Servicio Tecnico FagorM. instalacion calderas condensacion natur  - Servicio Tecnico Fagor
M. instalacion calderas condensacion natur - Servicio Tecnico Fagor
 
Instrumentacion
InstrumentacionInstrumentacion
Instrumentacion
 
Tutorial computacion basica ii
Tutorial computacion basica iiTutorial computacion basica ii
Tutorial computacion basica ii
 
TUTORIAL COMPUTACION BASICA II
TUTORIAL COMPUTACION BASICA IITUTORIAL COMPUTACION BASICA II
TUTORIAL COMPUTACION BASICA II
 

Periféricos ATmega

  • 2. DEDICATORIA A mi Amada Esposa Lutecia. A Mamá y Papá. 2
  • 3. CONTENIDO I TRODUCCIÓ ................................................................................................................ 7 OMBRE DEL PERIFÉRICO: TIMER/COU TER 1. .................................................. 9 DESCRIPCIÓN GENERAL. ............................................................................................. 9 DISPONIBLE EN .............................................................................................................. 9 APLICACIONES ............................................................................................................... 9 REGISTROS INVOLUCRADOS ...................................................................................... 9 MODO TEMPORIZADOR Y MODO CONTADOR. .................................................... 13 SECUENCIA DE CONFIGURACIÓN MODO TEMPORIZADOR Y CONTADOR... 14 I.S.R. ................................................................................................................................. 14 MODO CAPTURA .......................................................................................................... 15 SECUENCIA DE CONFIGURACIÓN MODO CAPTURA. ......................................... 16 I.S.R. ................................................................................................................................. 16 MODO COMPARADOR DE IGUALDAD. ................................................................... 17 SECUENCIA DE CONFIGURACIÓN MODO COMPARADOR DE IGUALDAD. ... 18 I.S.R. ................................................................................................................................. 18 MODO GENERADOR DE SEÑALES PWM (MODULACIÓN POR ANCHO DE PULSO) ............................................................................................................................ 19 SECUENCIA DE CONFIGURACIÓN MODO PWM. .................................................. 21 I.S.R. ................................................................................................................................. 21 IMPLANTACIÓN. ........................................................................................................... 22 TIMER/COUNTER 1 MODO TEMPORIZADOR. ........................................................ 22 TIMER/COUNTER 1 MODO CAPTURA. ..................................................................... 23 TIMER/COUNTER 1 MODO GENERADOR DE SEÑALES PWM. ........................... 25 TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD. ............................... 26 OMBRE DEL PERIFÉRICO: TIMER/COU TER0. ................................................. 29 FUNCIONAMIENTO GENERAL .................................................................................. 29 DISPONIBLE EN ............................................................................................................ 29 APLICACIONES ............................................................................................................. 29 REGISTROS INVOLUCRADOS. ................................................................................... 29 SECUENCIA DE CONFIGURACIÓN ........................................................................... 32 I.S.R. ................................................................................................................................. 32 IMPLANTACIÓN. ........................................................................................................... 33 TIMER/COUNTER 0 MODO TEMPORIZADOR. ........................................................ 33 NOTAS DE CONFIGURACIÓN. ................................................................................... 35 OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL. 37 DESCRIPCIÓN GENERAL. ........................................................................................... 37 DISPONIBLE EN ............................................................................................................ 37 APLICACIONES ............................................................................................................. 37 REGISTROS INVOLUCRADOS .................................................................................... 37 SECUENCIA DE CONFIGURACIÓN ADC. ................................................................. 39 I.S.R. ................................................................................................................................. 40 IMPLANTACION ............................................................................................................ 41 OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO............................... 45 DESCRIPCIÓN GENERAL. ........................................................................................... 45 DISPONIBLE EN ............................................................................................................ 45 3
  • 4. APLICACIONES ............................................................................................................. 45 REGISTROS INVOLUCRADOS .................................................................................... 45 DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. ................... 45 DISPOSITIVO AT90S1200. ........................................................................................ 45 DISPOSITIVO AT90XX2333, AT90XX4433. ........................................................... 45 SECUENCIA DE CONFIGURACIÓN COMPARADOR ANALÓGICO. .................... 47 I.S.R. ................................................................................................................................. 48 IMPLANTACION ............................................................................................................ 49 OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER). ..... 52 DESCRIPCIÓN GENERAL. .......................................................................................... 52 DISPONIBLE EN ............................................................................................................ 52 APLICACIONES. ............................................................................................................ 52 REGISTROS INVOLUCRADOS. ................................................................................... 52 FUNCIÓN ........................................................................................................................ 52 SECUENCIA DE CONFIGURACIÓN WDT. ................................................................ 53 IMPLANTACIÓN. ........................................................................................................... 54 OMBRE DEL PERIFÉRICO: SPI - I TERFAZ SERIAL PERIFERICA. ............. 56 DESCRIPCIÓN GENERAL ............................................................................................ 56 DISPONIBLE EN ............................................................................................................ 56 APLICACIONES ............................................................................................................. 56 REGISTROS INVOLUCRADOS .................................................................................... 56 FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO MAESTRO. ......... 58 FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO ESCLAVO. .......... 59 FASE Y POLARIDAD DE LA SEÑAL DE RELOJ. ..................................................... 59 SECUENCIA DE CONFIGURACIÓN SPI. ................................................................... 60 I.S.R. ................................................................................................................................. 60 IMPLANTACION ............................................................................................................ 61 OMBRE DEL PERIFÉRICO: UART - U IVERSAL ASY CHRO OUS RECEIVER A D TRA SMITTER................................................................................. 64 DESCRIPCIÓN GENERAL. ........................................................................................... 64 DISPONIBLE EN ............................................................................................................ 64 APLICACIONES ............................................................................................................. 64 REGISTROS INVOLUCRADOS .................................................................................... 64 RECEPCIÓN Y TRANSMISIÓN DE DATOS. .............................................................. 65 SELECCIÓN DEL BAUD RATE.................................................................................... 66 EJEMPLO NUMERICO. ................................................................................................. 67 SECUENCIA DE CONFIGURACIÓN UART ............................................................... 68 I.S.R. ................................................................................................................................. 69 IMPLANTACION ............................................................................................................ 69 GLOSARIO......................................................................................................................... 73 BIBLIOGRAFÍA. ............................................................................................................... 75 4
  • 5. TABLAS Tabla TC1-1. Registros Involucrados con el Timer/Counter1. ............................................ 11 Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1. ............... 12 Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter1. ....... 13 Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el Timer/Counter1. ........................................................................................................... 13 Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro TCNT1 .......................................................................................................................... 14 Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow. ............................... 15 Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. ................................................... 15 Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B. .................................................. 15 Tabla TC1-8 Vector de Interrupción para el evento de captura del Timer/Counter1........... 16 Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin OC1A. ........................................................................................................................... 17 Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin OC1B. ........................................................................................................................... 17 Tabla TC1-11. Número de pin correspondiente a OC1A y OC1B. ...................................... 18 Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del Timer/Counter1. ........................................................................................................... 19 Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o B). .................................................................................................................................. 20 Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. ...................... 20 Tabla TC1-15. Frecuencia de la Señal PWM, Valores máximos de TCNT1, y Resolución. T1 es la frecuencia a la que se incrementa TCNT1. .................................................................. 21 Tabla TC0-1. Registros involucrados con el Timer/Counter 0. ........................................... 29 Tabla TC0-2. Bits y función de los registros especiales para el Timer/Counter 0. .............. 30 TABLA TC0-3. Origen de la señal de reloj y pre escalamiento. ......................................... 31 Tabla TC0-4. Localización de pin T0 para la familia AT90X. ............................................ 31 Tabla TC0-5. Vector de interrupción para Timer/Counter 0 ................................................ 33 Tabla ADC-1A. Registros Involucrados con ADC .............................................................. 37 Tabla ADC-1B. Registros Involucrados con ADC. ............................................................. 37 Tabla ADC-1C. Registros Involucrados con ADC. ............................................................. 37 Tabla ADC-2. Bits de los registros especiales utilizados para el ADC. ............................... 38 Tabla ADC-3. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del registro ADMUX. ...................................................................................................................... 38 Tabla ADC-4. Localización de las entradas para el ADC en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 39 Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la selección de la señal AD Clock. ............................................................................................................ 39 Tabla ADC-6. Vectores de interrupción para el ADC. ........................................................ 40 Tabla CA-1A. Registros Involucrados con el Comparador Analógico. .............................. 45 Tabla CA-1B. Registros Involucrados con el Comparador Analógico. ............................... 45 Tabla CA-1C. Registros Involucrados con el Comparador Analógico. ............................... 45 Tabla CA-2. Bits de los registros especiales utilizados para el comparador analógico. ..... 46 5
  • 6. Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación de interrupción del Comparador Analógico. .................................................................... 47 Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR. EMPAQUETADO DIP). .............................................................................................. 47 Tabla CA-5. Vectores de interrupción para el comprador analógico. .................................. 48 Tabla WDT-1A. Registros involucrados. ............................................................................. 52 Tabla WDT-1B. Registros involucrados. ............................................................................. 52 Tabla WDT-2. Origen de la señal de reloj y pre escalamiento para el perro guardián. ....... 53 Tabla SPI-1A. Registros Involucrados con SPI ................................................................... 56 Tabla SPI-1B. Registros Involucrados con SPI. ................................................................... 56 Tabla SPI-1C. Registros Involucrados con SPI. ................................................................... 56 Tabla SPI-2. Bits de los registros especiales utilizados para el SPI ..................................... 57 Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la señal de Clock. .............................................................................................................. 57 Tabla SPI-4. Localización de los pines MISO, MOSI, SCK y SS en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 58 Figura SPI-1. Efecto del bit CPHA sobre la señal SCK. ...................................................... 59 Tabla SPI-5. Vectores de interrupción para el SPI. .............................................................. 61 Tabla UART-1. Registros Involucrados con UART ............................................................ 64 Tabla UART-2. Bits de los registros especiales utilizados UART. ..................................... 65 Tabla UART-3. Localización de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 66 Tabla UART-4. Valores más comunes de Baud Rate. ......................................................... 67 Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. .............................. 68 Tabla UART-6. Vectores de interrupción para UART........................................................ 69 6
  • 7. I TRODUCCIÓ Un periférico es un circuito electrónico especial incluido en un microcontrolador, que realiza una función o tarea específica. Los periféricos de un microcontrolador permiten ahorro de espacio y dinero en muchas aplicaciones electrónicas. Este libro muestra de una manera clara y concisa, la forma de configurar todos los periféricos incluidos en los microcontroladores de la familia AVR de ATMEL(1). No se pretende que este trabajo sea un sustituto de las hojas de especificaciones proporcionadas por ATMEL, sino más bien, se espera que sirva como una herramienta de consulta para aquellas personas que ya utilizan la familia AVR, y como una guía para aquellos que comienzan a estudiar o a realizar proyectos con microcontroladores. Cada capítulo del libro es dedicado completamente a un periférico en especifico. Se incluye en cada uno de los capítulos las secciones siguientes: ♦ DESCRIPCIÓ GE ERAL. En esta sección se describe el funcionamiento general del periférico. ♦ DISPO IBLE E . Se muestran los microcontroladores en los que esta incluido cada periférico. ♦ APLICACIO ES. Son mencionadas algunas aplicaciones donde puede ser utilizado. ♦ REGISTROS I VOLUCRADOS. Se describe el efecto de cada bit de los registros especiales involucrados con cada periférico. ♦ SECUE CIA DE CO FIGURACIÓ . En esta sección de cada capitulo se explica paso a paso cómo configurar un periférico. Si el lector ya ha tenido contacto con microcontroladores, puede ir directamente a esta sección y a la sección IMPLANTACIÓN sin problema alguno. ♦ I.S.R. Se incluyen los vectores y las direcciones de interrupción, así como una descripción de las condiciones que hacen que se genere cada interrupción. ♦ IMPLA TACIÓ . Cada capítulo del libro incluye el código fuente completo para configurar un periférico y dejarlo funcionando correctamente. Se implantan todos los pasos descritos en la sección SECUE CIA DE CO FIGURACIÓ . El código esta escrito en lenguaje ensamblador y totalmente comentado. Si el lector programa en otro lenguaje diferente a ensamblador, puede tomar como referencia el código fuente proporcionado en esta obra. Los microcontroladores AVR de ATMEL que se tratan en este libro son los siguientes: AT90S1200, (1) AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414, AT90xS4434, AT90xS8535, AT90xS8534. 7
  • 8. 8
  • 9. OMBRE DEL PERIFÉRICO: TIMER/COU TER 1. DESCRIPCIÓ GE ERAL. El Timer/Counter1 es un periférico bastante flexible, con él se puede medir intervalos de tiempo, contar pulsos externos y generar señales PWM entre otras cosas. Los modos de funcionamiento para este periférico son los siguientes: MODO TEMPORIZADOR. Genera interrupciones cada vez que un contador interno de 16 bits se desborda. La señal de reloj para el registro contador interno se deriva del oscilador principal del microcontrolador. MODO CO TADOR. Parecido al modo temporizador, pero la señal de reloj para el registro contador integrado es externa, proveniente del pin T1. MODO CAPTURA. Cada vez que se produce un flanco previamente configurado, en la termina ICP del dispositivo, el contenido del contador es almacenado a un registro especial de solo lectura, esto puede generar a demás una interrupción. MODO COMPARACIÓ DE IGUALDAD. El contenido del contador es comparado continuamente con un valor almacenado en ciertos registros especiales. Cuando el contador es igual en magnitud al valor de los registros especiales, se puede producir una interrupción de comparación de igualdad. MODO GE ERACIÓ DE SEÑALES PWM. Permite generar señales PWM (Modulación por Ancho de Pulso) con resolución de 8, 9 o 10 bits. DISPO IBLE E AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535, AT90C8534. APLICACIO ES Generación de señales PWM. Bases de Tiempo. Medición de frecuencia. REGISTROS I VOLUCRADOS Este periférico esta presente en muchos miembros de la familia AT90X, sin embargo en no en todos los dispositivos se tienen las mismas prestaciones de este periférico. Por ejemplo, en algunos no se puede utilizar al Timer/Counter1 como generador de PWM. La Tabla TC1-1 muestra los registros involucrados y los bits para cada miembro que contiene a este periférico. 9
  • 10. DISPOSITIVO: AT90S8515 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TIMSK TOIE1 OCIE1A OCIE1B TICIE1 TIFR TOV1 OCF1A OCF1B ICF1 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10 TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10 TC T1 Todos Los Bits OCR1A Todos Los Bits OCR1B Todos Los Bits ICR1 Todos Los Bits DISPOSITIVO: AT90S2313 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TIMSK TOIE1 OCIE1A TICIE1 TIFR TOV1 OCF1A ICF1 TCCR1A COM1A1 COM1A0 PWM11 PWM10 TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10 TC T1 Todos Los Bits OCR1A Todos Los Bits ICR1 Todos Los Bits DISPOSITIVO: AT90XX2333, AT90XX4433 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TIMSK TOIE1 OCIE1 TICIE1 TIFR TOV1 OCF1 ICF1 TCCR1A COM11 COM10 PWM11 PWM10 TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10 TC T1 Todos Los Bits OCR1 Todos Los Bits ICR1 Todos Los Bits 10
  • 11. DISPOSITIVO: AT90XX4434, AT90XX8535 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TIMSK TICIE1 OCIE1A OCIE1B TOIE1 TIFR ICF1 OCF1A OCF1B TOV1 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10 TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10 TC T1 Todos Los Bits OCR1A Todos Los Bits OCR1B Todos Los Bits ICR1 Todos Los Bits DISPOSITIVO: AT90C8534 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TIMSK TOIE1 TIFR TOV1 TCCR1 CS12 CS11 CS10 TC T1 Todos Los Bits Tabla TC1-1. Registros Involucrados con el Timer/Counter1. Una explicación detallada de cada bit se encuentra en la Tabla TC1-2. Observe que NO TODOS los dispositivos contienen en sus registros especiales los bits que se muestran en la siguiente tabla. 11
  • 12. BIT SIG IFICADO FU CIÓ TOIE1 Timer/Counter1 “1” Habilita interrupción de sobreflujo del Overflow Interrupt Timer/Counter1. El Sobreflujo o Desborde se Enable produce cuando el registro TCNT1 pasa de $ffff a $0000. OCE1A Timer/Counter1 Output “1” Habilita la interrupción por comparación de CompareA Match igualdad ( Contenido de OCR1A igual al de Interrupt Enable. TCNT1). OCIE1B Timer/Counter1 Output “1” Habilita la interrupción por comparación de CompareB Match igualdad (Contenido de OCR1B igual al de Interrupt Enable. TCNT1). TICIE1 Timer/Counter1 Capture “1” Habilita la interrupción de captura. Interrupt Enable TOV1 Timer/Counter1 “1” indica que el registro TCNT1 se ha Overflow flag desbordado, genera interrupción si éstas están habilitadas OCF1A Output Compare Flag “1” indica que los contenidos de los registros 1A. TCNT1 y OCR1A son iguales. Esto puede producir una interrupción de comparación de igualdad. OCF1A Output Compare Flag “1” indica que los contenidos de los registros 1B. TCNT1 y OCR1B son iguales. Esto puede producir una interrupción de comparación de igualdad. ICF1 Input Capture Flag. “1” indica que el contenido de TCNT1 ha sido transferido al registro ICR1. Puede producir una interrupción. IC C1 Input Capture1 Noise “1” Habilita el cancelador de ruido para la Canceler. captura. Para que un flanco en el pin ICP genere la captura, se toman cuatro muestras, que deben ser todas válidas de acuerdo al bit ICES1. La frecuencia de muestreo es la del cristal. “0” La captura se genera en el primer flanco indicado por el bit ICES1. ICES1 Input Capture Edge “1” Captura en flanco descendente presentado en Select. el pin ICP. “0” Captura en flanco ascendente presentado en el pin ICP. En la captura, el contenido de TCNT1 se transfiere a ICR1. Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1. Continua... 12
  • 13. Continuación... BIT SIG IFICADO FU CIÓ CTC1 Clear Timer/Counter1 on “1” reinicia TCNT1 a $0000 cuando Compare Match. OCR1A se iguala con TCNT1. “0” TCNT1 continua su cuenta normal. Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter1. REGISTROS DE 16 BITS. Algunos registros especiales utilizados, tienen una longitud de total 16 bits, y se forman con dos registros de 8 bits cada uno. Para leer cualquiera de los registros mostrados en la Tabla TC1-3, debe primero leerse el byte bajo(L) y luego el alto(H). Para escribir a cualquiera de estos registros, debe primero escribirse el byte alto (H) y luego el bajo (L). TC T1 Registro contador de 16 bits, formado por TCNT1H y TCNT1L. OCR1A Registro de 16 bits, formado por OCR1AH y OCR1AL. Se compara continuamente con TCNT1. OCR1B Registro de 16 bits, formado por OCR1BH y OCR1BL. Se compara continuamente con TCNT1. ICR1 Registro de solo lectura de 16 bits, formado por ICR1H y OCR1L. El contenido de TCNT1 se transfiere a este archivo en un evento de captura. Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el Timer/Counter1. MODO TEMPORIZADOR Y MODO CO TADOR. El registro TCNT1 del Timer/Counter1 puede contar pulsos derivados del oscilador principal, o provenientes del exterior. En el primer caso, cuando el registro TCNT1 se incrementa por pulsos generados por el oscilador principal, funciona en modo temporizador. Cuando el periférico cuenta pulsos externos, presentados en el pin T1 del microcontrolador, trabaja en modo contador. En la Tabla TC1-5 se puede observar el número de pin T1 para cada dispositivo. Para configurar el periférico en cualquiera de estos modos de funcionamiento, es necesario manipular los bits CS12,CS11 y CS10, que se muestran en la Tabla TC1-4. 13
  • 14. CS12 CS11 CS10 EFECTO 0 0 0 El registro TCNT1 no cambia. Timer/Counter1 en STOP 0 0 1 TCNT1 se incrementa a la velocidad de CK. 0 1 0 TCNT1 se incrementa a la velocidad de CK/8. 0 1 1 TCNT1 se incrementa a la velocidad de CK/64. 1 0 0 TCNT1 se incrementa a la velocidad de CK/256. 1 0 1 TCNT1 se incrementa a la velocidad de CK/1024. 1 1 0 TCNT1 se incrementa en cada flanco negativo presentado en el pin T1. 1 1 1 TCNT1 se incrementa en cada flanco positivo presentado en el pin T1. Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro TCNT1 SECUE CIA DE CO FIGURACIÓ MODO TEMPORIZADOR Y CO TADOR. 1. Deshabilitar las interrupciones globales (Recomendado). SREG<I>=”0” 2. Establecer el valor del registro TCNT1. Lo más común es hacer TCNT1 = $0000, pero puede ser cualquier otro valor válido. Para esto primero escriba el byte alto y luego el byte bajo del registro TCNT1: Primero TCNT1H y luego TCNT1L. 3. Si se desea utilizar la interrupción de sobre flujo (cuando el registro TCNT1 se desborda), habilite la interrupción utilizando el bit TOIE1 del registro TIMSK. TIMSK<TOIE1>=”1”. En caso de no utilizar la interrupción, ponga este bit en “0”. 4. Limpie el bit TOV1 del registro TIFR. 5. Establezca la fuente de la señal de reloj. Ver Tabla TC1-4. 6. Habilite interrupciones globales. SREG<I>=”1” I.S.R. Si la interrupción está habilitada, el CPU salta a la dirección vector de interrupción de este periférico cada vez que el registro TCNT1 tiene el valor $FFFF -65535 en decimal- e intenta incrementar su valor (se desborda). Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección del vector de interrupción para re direccionar a la posición de memoria donde se encuentra realmente la ISR. En la ISR puede (y quizá hasta deba) reiniciar el registro TCNT1 con un valor apropiado. Observe entre mayor sea el valor de TCNT1 la interrupción siguiente se producirá en un tiempo menor. 14
  • 15. DISPOSITIVO VECTOR DIRECCIO PI T1 AT90S4414 7 $006 2 (PDIP) AT90S8515 7 $006 2 AT90S2313 6 $005 9 AT90S2333 6 $005 11 AT90LS2333 6 $005 11 AT90S4433 6 $005 11 AT90LS4433 6 $005 11 AT90S4434 9 $008 2 (PDIP) AT90LS4434 9 $008 2 (PDIP) AT90S8535 9 $008 2 (PDIP) AT90LS8535 9 $008 2 (PDIP) AT90C8534 4 $003 - Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow. MODO CAPTURA En este modo de operación, el contenido del registro TCNT1 es almacenado en ICR1 cuando un flanco ascendente o descendente se presenta en el pin ICP del dispositivo. Llamaremos disparo a cualquiera de estos flancos que provocan la captura. Para evitar disparos falsos, el dispositivo cuenta con un cancelador de ruido. Si el cancelador se habilita, entonces al producirse un disparo se toman cuatro muestras en el pin ICP del dispositivo antes de proceder a la captura. Las muestras son tomadas a la frecuencia del oscilador principal y si todas ellas coinciden se efectúa la captura. Cuando las cuatro muestras no coinciden se considera un disparo falso y la captura no se realiza. En el caso de que el cancelador de ruido se encuentre deshabilitado la captura se realiza inmediatamente al presentarse un disparo. Para seleccionar el flanco de captura se utiliza el bit ICES1 del registro TCCR1B. Esto se muestra en la Tabla TC1-6. BIT Evento de Captura Disparado ICES1 por “0” Flanco Descendente en el pin ICP “1” Flanco Ascendente en el pin ICP. Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. El bit ICNC1 del registro TCCR1B permite habilitar o desactivar el cancelador de ruido. Vea la Tabla TC1-7. BIT CA CELADOR DE IC C1 RUIDO “0” Deshabilitado “1” Habilitado Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B. 15
  • 16. SECUE CIA DE CO FIGURACIÓ MODO CAPTURA. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> =”0” 2 Habilite o Deshabilite el cancelador de ruido. TCCR1B < ICNC1> =”0” Deshabilitado. TCCR1B < ICNC1> =”1” Habilitado. 3 Programe el flanco de captura. TCCR1B < ICES1> =”0” Descendente. TCCR1B < ICES1> =”1” Ascendente. 4 Si requiere atender la interrupción de captura (habilitarla), active el bit TICIE1 del registro TIMSK. TIMSK<TICIE1>=”1”. En caso de no necesitar atender la interrupción ponga este bit en cero. Si la interrupción es habilitada, cada vez que se produzca una captura el CPU saltará hacia el vector de interrupción correspondiente. 5 Establezca el valor del registro TCNT1. 6 Establezca la fuente de la señal de reloj. Ver Tabla TC1-4 7 Habilite interrupciones globales. SREG<I>=”1” I.S.R. Si las interrupciones globales y la interrupción del modo de captura están habilitadas, el CPU saltará a la dirección vector de interrupción correspondiente cada vez que se presente el flanco predeterminado en el pin ICP del dispositivo. El valor actual del registro TCNT1 es capturado en el registro especial de solo lectura ICR1. Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra realmente la ISR. DISPOSITIVO VECTOR DIRECCIO PI ICP (PDIP) AT90S4414 4 $003 31 AT90S8515 4 $003 31 AT90S2313 4 $003 11 AT90S2333 4 $003 14 AT90LS2333 4 $003 14 AT90S4433 4 $003 14 AT90LS4433 4 $003 14 AT90S4434 6 $005 20 AT90LS4434 6 $005 20 AT90S8535 6 $005 20 AT90LS8535 6 $005 20 AT90C8534 - - - Tabla TC1-8 Vector de Interrupción para el evento de captura del Timer/Counter1. Por último, recuerde que para leer el registro ICR1 debe primero acceder al byte bajo (ICR1L) y luego al alto (ICR1H). 16
  • 17. MODO COMPARADOR DE IGUALDAD. En modo comparador de igualdad el Timer/Counter1 utiliza los registros TCCR1A, OCR1A y TCNT1. Estos últimos dos registros son comparados continuamente. Cuando el contenido del archivo TCNT1 es idéntico al del registro OCR1A, el pin OC1A del microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-9, según el valor de los bits COM1A1 y COM1A0. COM1A1 COM1A0 EFECTO 0 0 Desconecta el periférico del pin OC1A. (Sin efecto sobre el pin). 0 1 Invierte el estado del pin OC1A 1 0 Pone en “0” el pin OC1A 1 1 Pone en”1” el pin OC1A Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin OC1A. Algunos dispositivos de la familia AVR, contienen los bits COM1B1 y COM1B0 en el registro TCCR1A. Cuando el contenido del archivo TCNT1 es idéntico al del registro OCR1B, el pin OC1B del microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-10, según el valor de los bits COM1B1 y COM1B0. COM1B1 COM1B0 EFECTO 0 0 Desconecta el periférico del pin OC1B. (Sin efecto sobre el pin). 0 1 Invierte el estado del pin OC1B 1 0 Pone en “0” el pin OC1B 1 1 Pone en”1” el pin OC1B Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin OC1B. En la Tabla TC1-11 se muestra el número de pin OC1A y OC1B para cada dispositivo. 17
  • 18. DISPOSITIVO OC1A OC1B AT90S2313 15 - AT90S8515 15 29 AT90S2333 15 - AT90S4414 15 29 AT90S4434 19 18 AT90LS4434 19 18 AT90S8535 19 18 AT90LS8535 19 18 AT90C8534 - - Tabla TC1-11. Número de pin correspondiente a OC1A y OC1B. SECUE CIA DE CO FIGURACIÓ MODO COMPARADOR DE IGUALDAD. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> =”0” 2 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a OCR1AL). 3 Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a OCR1BL). 4 Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el registro OCR1A, active el bit OCIE1A del registro TIMSK. TIMSK< OCIE1A >=”1”. En caso de no necesitar atender la interrupción ponga este bit en cero. 5 Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el registro OCR1B, active el bit OCIE1B del registro TIMSK. TIMSK< OCIE1B >=”1”. En caso de no necesitar atender la interrupción ponga este bit en cero. 6 Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4. 7 Habilite interrupciones globales. SREG<I>=”1” I.S.R. Si las interrupciones globales y la interrupción del modo de comparación están habilitadas, el CPU saltara a la dirección vector de interrupción correspondiente cada vez que el valor actual del registro TCNT1 sea idéntico al valor del registro OCR1A o al de OCR1B. Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra realmente la ISR. DISPOSITIVO VECTOR DIRECCIÓ VECTOR DIRECCIÓ COMPARACIÓ COMPARACIÓ COMPARACIÓ COMPARACIÓ 18
  • 19. DE IGUALDAD DE IGUALDAD DE IGUALDAD DE IGUALDAD CO OCCR1A CO OCCR1A CO OCCR1B CO OCCR1B AT90S4414 5 $004 6 $005 AT90S8515 5 $004 6 $005 AT90S2313 5 $004 - - AT90S2333 5 $004 - - AT90LS2333 5 $004 - - AT90S4433 5 $004 - - AT90LS4433 5 $004 - - AT90S4434 7 $006 8 $007 AT90LS4434 7 $006 8 $007 AT90S8535 7 $006 8 $007 AT90LS8535 7 $006 8 $007 AT90C8534 - - - - Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del Timer/Counter1. MODO GE ERADOR DE SEÑALES PWM (MODULACIÓ POR A CHO DE PULSO) Los microcontroladores de la familia AVR contienen los circuitos necesarios para generar señales PWM. El archivo TCNT1, en este modo de operación se comporta como un contador cíclico ascendente y descendente. Primero TCNT1 comienza su cuenta ascendente desde $0000 hasta llegar a un VALOR MÁXIMO, y después desciende hacia cero. Una vez en cero comienza nuevamente el ciclo. Los 10 bits menos significativos del registro TCNT1 son comparados continuamente con los de los 10 bits menos significativos de los registros OCR1A y OCR1B. Cuando se igualan los 10 bits de estos registros, los pines OC1A o OC1B realizan una de las acciones que se muestra en la Tabla TC1-13. El valor que contenga el registro OCR1A o OCR1B determinará el ciclo útil de la señal PWM. 19
  • 20. COM1x1 COM1x0 EFECTO SOBRE EL PI OC1x 0 0 Sin efecto 0 1 Sin efecto 1 0 Pasa a “0” Cuando los 10 bits menos significativos de TCNT1 (en su cuenta ascendente) y los de OCR1A de igualan TCNT1. Pasa a “1” Cuando los 10 bits menos significativos de TCNT1 (en su cuenta descendente) y los de OCR1A de igualan. 1 1 PWM invertido. Pasa a “1” Cuando los 10 bits menos significativos de TCNT1 (en su cuenta ascendente) y los de OCR1A de igualan TCNT1. Pasa a “0” Cuando los 10 bits menos significativos de TCNT1 (en su cuenta descendente) y los de OCR1A de igualan. Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o B). La Tabla TC1-11 muestra el número de pin correspondiente para cada dispositivo de la familia AVR. La resolución de la señal PWM puede ser de 8, 9 o 10 bits, según se configure en los bits PWM11 y PWM10 del registro TCCR1A. La Tabla TC1-14 muestra las posibles combinaciones. PWM11 PWM10 EFECTO 0 0 PWM deshabilitado. 0 1 PWM de 8 bits. 1 0 PWM de 9 bits. 1 1 PWM de 10 bits. Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. El VALOR MÁXIMO al que llega el registro TCNT1 está en función de la resolución de la señal PWM. La Tabla TC1-15 muestra los valores máximos de TCNT1, la frecuencia y la resolución de la señal PWM 20
  • 21. MÁXIMO FRECUE CIA VALOR RESOLUCIÓ DE LA SEÑAL DE (BITS) PWM TC T1 f Τ1 255 8 510 f Τ1 511 9 1022 f Τ1 1023 10 2046 Tabla TC1-15. Frecuencia de la Señal PWM, Valores máximos de TCNT1, y Resolución. T1 es la frecuencia a la que se incrementa TCNT1. SECUE CIA DE CO FIGURACIÓ MODO PWM. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario). SREG<I> =”0” 2 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a OCR1AL). Este valor determina el ciclo útil de la señal PWM en el pin OC1A. 3 Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a OCR1BL). Este valor determina el ciclo útil de la señal PWM en el pin OC1B 4 Seleccione el modo normal o invertido de señal PWM. Ver Tabla TC1-13. 5 Seleccione la resolución de la señal PWM. Ver Tabla TC1-14. 6 Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4. 7 Habilite interrupciones globales. SREG<I>=”1” I.S.R. En modo PWM el periférico Timer/Counter1 genera la interrupción de sobre flujo normal como en el modo Temporizador. 21
  • 22. IMPLA TACIÓ . La secuencia de configuración, de los registros especiales, se muestra programada en lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los ejemplos de implantación como referencia. TIMER/COU TER 1 MODO TEMPORIZADOR. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. El siguiente programa en ensamblador configura al TIMER/COUNTER1 del microcontrolador para que incremente el registro TCNT1 en cada pulso de reloj. El PORTB se incrementa en cada interrupción. ;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección ;donde se encuentra RESET .org $006 ;vector de TIMER/COUNTER1 Sobreflujo rjmp TIMER1_ISR ;redireccionado a TIMER1_ISR ;********************************************** ;Esta ISR se ejecuta cada vez que TCNT1 se desborda. TIMER1_ISR: ;ISR del TIMER/COUNTER1 Sobreflujo inc r18 ;incrementa registro r18 out PORTB,r18 ;y saca el valor por el PORTB ldi r17,0 ; out TCNT1H,R17 ;pone valor de TCNT1 en 0. out TCNT1L,R17 ;pone valor de TCNT1 en 0. reti ;regresa de interrupción. ;********************************************** RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. 22
  • 23. ;PASO2 ldi r17,0 ;Inicia TCNT1 con valor 0 out TCNT1H,R17 ;Primero escribir en TCNT1H out TCNT1L,R17 ;despues escribir en TCNT1L ;PASO3 in r17,TIMSK ;Habilita interrupción ori r17,(1<<TOIE1) ;del TIMER/COUNTER1 out TIMSK,r17 ;TIMSK<TOIE1>=1 ;PASO 4 in r17,TIFR ;Limpia posible ori r17,(1<<TOV1) ;interrupción anterior out TIFR,r17 ;TIFR<TOV1>=0 ;PASO 5 ;Selecciona el origen de la ldi r17,1 ;señal de reloj out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ. ;PASO 6 sei ;SREG<7>=1. int. habilitadas loop: ;Espera hasta que nop ;se generen interrupciones. nop nop rjmp loop ;loop infinito TIMER/COU TER 1 MODO CAPTURA. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo de Captura. Cuando se presenta un flanco descendente en el pin ICP del microcontrolador, se exhibe en el PORTB, el valor de TCNT1H. TCNT1 se incrementa en cada ciclo del oscilador principal. ;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección ;donde se encuentra RESET .org $003 ;vector de TIMER/COUNTER1 Captura rjmp ISR_CAPT ;redireccionado a TIMER1_ISR_CAPT ;********************************************** 23
  • 24. ;Esta ISR se jecuta cada vez que se produce un disparo (Flanco Negativo) ISR_CAPT: ;ISR del TIMER/COUNTER1 CAPTURA in r18,ICR1L ;Lee el valor capturado de TCNT1 in r18,ICR1H ;Primero byte Bajo y luego el Byte Alto. out PORTB,r18 ;Saca el valor de TCNT1H por el PORTB reti ;regresa de interrupción. ;********************************************** RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 in r17,TCCR1B ;Habilita ori r17,(1<<ICNC1) ;Cancelador out TCCR1B,r17 ;de Ruido ;PASO 3 in r17,TCCR1B ;Establece Disparo ldi r18,(1<<ICES1) ;con flanco com r18 ;Descendente and r17,r18 out TCCR1B,r17 ;En el pin ICP. ;PASO 4 in r17,TIMSK ;Habilita interrupción ori r17,(1<<TICIE1) ;del Captura del TIMER/COUNTER1 out TIMSK,r17 ;PASO 5 clr r17 out TCNT1H,r17 ;Establece el valor de TCNT1 out TCNT1L,r17 ;PASO ;PASO 6 ldi r17,1 ;Se incrementa TCNT1 en cada ;ciclo del oscilador principal out TCCR1B,r17 ; ;PASO 7 sei ;SREG<7>=1. int. habilitadas loop: ;Espera hasta que nop ;se generen interrupciones. 24
  • 25. nop nop rjmp loop ;loop infinito TIMER/COU TER 1 MODO GE ERADOR DE SEÑALES PWM. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo Generador de señales PWM. ;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección ;donde se encuentra RESET ;********************************************** RESET: ;inicio de programa. ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 ldi r17,0x1 ;Establece valor de OCR1A. out OCR1AH,R17 ;Entre mayor sea ldi R17,0xff ;el valor, mayor es out OCR1AL,R17 ;el ciclo util. Máximo Valor 0x3FF ;PASO 3 ldi r17,0x02 ;Establece valor de OCR1B. out OCR1BH,R17 ;Entre mayor sea ldi R17,0xcc ;el valor, mayor es out OCR1BL,R17 ;el ciclo util. ;PASO 4 in r17,TCCR1A ;Modo PWM normal ori r17,(0xA0) ;(no invertido) out TCCR1A,r17 ;COM1x1=1 COM1x0=0. 25
  • 26. ;PASO 5 in r17,TCCR1A ;Selecciona la resolución. ori r17,(0x03) ;10 Bits. out TCCR1A,r17 ;PASO 6 ldi r17,1 ;señal de reloj out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ. ;PASO 7 sei ;SREG<7>=1. int. habilitadas loop: ;Por los pines OC1A y OC1B nop ;se generan señales PWM nop nop rjmp loop ;loop infinito TIMER/COU TER 1 MODO COMPARADOR DE IGUALDAD. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo Comparador de Igualdad. ;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $000 ;vector de inicio. rjmp RESET ;redireccionado a la dirección ;donde se encuentra RESET .org OC1Aaddr ;($004)Redirecciona a rjmp CompA ;CompA. .org OC1Baddr ;($005) Redirecciona a rjmp CompB ;CompB ;********************************************** CompA: ;Escriba aquí su codigo. reti ;********************************************** CompB: ;Escriba aquí su codigo. reti 26
  • 27. ;********************************************** RESET: ;inicio de programa. ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 ldi r17,0x00 ;Establece valor de OCR1A. out OCR1AH,R17 ; ldi R17,0xff ; out OCR1AL,R17 ; ;PASO 3 ldi r17,0x02 ;Establece valor de OCR1B. out OCR1BH,R17 ; ldi R17,0x00 ; out OCR1BL,R17 ; ;PASO 4 in r17,TIMSK ;Habilita Interrupción ori r17,(1<<OCIE1A) ;de Comparacion de Igualdad out TIMSK,r17 ;PASO 5 in r17,TIMSK ;Habilita Interrupción ori r17,(1<<OCIE1B) ;de Comparacion de Igualdad out TIMSK,r17 ;PASO 6 ldi r17,1 ;señal de reloj out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ. ;PASO 7 sei ;SREG<7>=1. int. habilitadas loop: ;Por los pines OC1A y OC1B nop ;se generan señales PWM nop nop rjmp loop ;loop infinito 27
  • 28. 28
  • 29. OMBRE DEL PERIFÉRICO: TIMER/COU TER0. FU CIO AMIE TO GE ERAL Un temporizador (Timer) es un periférico que se encarga generar un evento (interrupción) cada vez que ha pasado cierto intervalo de tiempo. La interrupción de un temporizador se genera cuando el circuito contador del mismo, sufre un sobre flujo, es decir, cuando se desborda. La velocidad a la que un temporizador genera interrupciones depende del origen de la señal de reloj que alimente al mismo. En la familia de microcontroladores AVR, dicha señal de reloj puede provenir del exterior o ser generada internamente. Cuando la señal es interna, la velocidad del temporizador depende de la frecuencia del cristal colocado al microcontrolador. Cuando es externa, dependerá de la velocidad de los pulsos que se introduzcan por alguna terminal específica del dispositivo. Un temporizador cuya señal de reloj es externa, se dice que está configurado en modo contador (Counter). DISPO IBLE E AT90S1200, T90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, T90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535, AT90C8534. APLICACIO ES Medición de intervalos de tiempo. Generación de bases de Tiempo. Tacómetro digital. REGISTROS I VOLUCRADOS. DISPOSITIVO: AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515. OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL REGISTRO. TCCR0 CS02 CS01 CS00 TCNT0 MSB LSB TIMSK TOIE0 TIFR TOV0 DISPOSITIVO: AT90XX4434, AT90XX8535, AT90C8534. OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL REGISTRO. TCCR0 CS02 CS01 CS00 TCNT0 MSB LSB TIMSK TOIE0 TIFR TOV0 Tabla TC0-1. Registros involucrados con el Timer/Counter 0. 29
  • 30. El significado de cada bit y su función se puede observar en la Tabla TC0-2. BIT significado FU CIÓ CS02 a CS00 Clock Select0 bits 2,1 Selecciona y0 el origen y el pre escalamiento de la señal de RELOJ para el Timer/Counter0. Ver Tabla TC0-3. MSB a LSB Bit más significativo a bit menos significativo del contador del Timer/Counter0. TOIE0 Timer/Counter0 TOIE0=“1” Habilita interrupción del Overflow Interrupt Timer/Counter0. Enable TOIE0=“0” Deshabilita Interrupción del Timer/Counter0. TOV0 TOV0 se pone en “1” cuando el Timer/Counter0 produce la interrupción de sobreflujo. Tabla TC0-2. Bits y función de los registros especiales para el Timer/Counter 0. El Timer/Counter 0 tiene un registro especial de 8 bits llamado TCNT0, que tiene la función de contar de manera ascendente. Por ser un registro de 8 bits, cuando llega a su máximo valor 255 ($ff) e intenta incrementarse se desborda, y esto puede producir una interrupción, si esta última se encuentra habilitada. Los bits CS02, CS01 y CS00 determinan la velocidad a la que el registro TCNT0 incrementa su valor. Estos bits se encuentran localizados en el registro TCCR0. Los posibles valores de estos bits, y el efecto que producen en la velocidad de conteo de TCNT0, se muestran en la Tabla TC0-3. 30
  • 31. CS02 CS01 CS00 ORIGE Y PREESCALAMIE TO DE LA SEÑAL DE RELOJ. 0 0 0 DETENID, NO CUENTA. 0 0 1 1/fosc (más rápido) 0 1 0 8/osc 0 1 1 64/osc 1 0 0 256/fosc 1 0 1 1024/fosc (más lento) Terminal T0, 1 1 0 flanco descendente. (modo contador). Terminal T0, 1 1 1 flanco ascendente. (modo contador). TABLA TC0-3. Origen de la señal de reloj y pre escalamiento. Cuando este periférico se configura en modo contador, se le introducen pulsos por el pin T0, localizado en cada dispositivo como se muestra en la Tabla TC0-4. DISPOSITIVO PIN T0 AT90S1200 8 AT90S2313 8 AT90S2323 7 AT90LS2323 7 AT90S2343 7 AT90LS2343 7 AT90S2333 2 AT90LS2333 2 AT90S4433 2 AT90LS4433 3 AT90S4414 1 AT90S8515 1 AT90S4434 1 AT90LS4434 1 AT90S8535 1 AT90LS8535 1 AT90C8534 - Tabla TC0-4. Localización de pin T0 para la familia AT90X. 31
  • 32. SECUE CIA DE CO FIGURACIÓ 1.- Ponga SREG<I>=0. (Bit 7 del registro SREG). Deshabilita interrupciones. 2.- Haga TCNT0=0. Inicie contador en $00 o en un valor que necesite. 3.- Haga TIMSK<TOIE0>=”1” Habilita interrupción del TIMER/COUNTER 0, Si requiere interrupciones. En caso contrario ponga ese bit en”0”. 4.- Haga TIFR<TOV0>=”1". Limpia posible interrupción falsa. 5.- Ponga SREG<I>=1. (Bit 7 del registro SREG). Habilita interrupciones. 6.- Seleccione el origen de la señal de RELOJ para el TIMER/COUNTER0. Ver Tabla TC0-3. Ejemplo: TCCR0 =0 hace que este periférico se pare, es decir, TCNT0 no cuenta y por lo tanto el TIMER/COUNTER0 no genera interrupciones. TCCR0=1 hace que el TCNT0 se incremente con cada pulso de reloj, es la forma más rápida en la que este periférico genera interrupciones. TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma más lenta en la que este periférico genera interrupciones (con RELOJ interno). TCCR0=6 hace que el TCNT0 se incremente con cada flanco negativo (cuando la señal pasa de “1” a “0”) aplicado en la terminal T0 del microcontrolador. I.S.R. El CPU salta a la dirección vector de interrupción de este periférico cada vez que el registro TCNT0 tiene el valor $FF (255 en decimal) e intenta incrementar su valor (se desborda). Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección del vector de interrupción para re direccionar a la posición de memoria donde se encuentra realmente la ISR del TIMER/COUNTER0. En la ISR puede (y quizá hasta deba) reiniciar el registro TCNT0 con un valor apropiado, generalmente se pone en 0, aunque puede ser otro valor. Observe entre mayor sea el valor de TCNT0 la interrupción siguiente se producirá en un tiempo menor. No es necesario que ponga el bit 7 del archivo TIFR en “0” cada vez que se produzca una interrupción, al atenderse la ISR el hardware lo realiza. 32
  • 33. DISPOSITIVO DIRECCIÓ VECTOR AT90S1200 $002 4 AT90S2313 $006 7 AT90S2323 $002 3 AT90LS2323 $002 3 AT90S2343 $002 3 AT90LS2343 $002 3 AT90S2333 $006 7 AT90LS2333 $006 7 AT90S4433 $006 7 AT90LS4433 $006 7 AT90S4414 $007 8 AT90S8515 $007 8 Tabla TC0-5. Vector de interrupción para Timer/Counter 0 IMPLA TACIÓ . La secuencia de configuración, de los registros especiales, se muestra programada en lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los ejemplos de implantación como referencia. TIMER/COU TER 0 MODO TEMPORIZADOR. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. El siguiente programa en ensamblador configura al TIMER/COUNTER 0 del microcontrolador para que incremente el registro TCNT0 en cada pulso de reloj. Si el dispositivo tiene colocado un cristal de 4 MHz, las interrupciones se generarán cada 65 micro segundos aproximadamente. ;Timer/Counter0 Modo Temporizador ;***************************************************************** .include "1200def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;***************************************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección donde se ;encuentra RESET .org $002 ;vector de TIMER/COUNTER0 rjmp TIMER0_ISR ;redireccionado a TIMER_ISR ;***************************************************************** ;Esta ISR se produce cada vez que TCNT0 se desborda. 33
  • 34. TIMER0_ISR: ;ISR del TIMER/COUNTER0 inc r18 ;incrementa registro r18 out PORTB,r18 ;y saca el valor por el PORTB ldi r17,0 ; out TCNT0,R17 ;pone valor de TCNT0 en 0. reti ;regresa de interrupción. ;************************************************************************ RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;***************************************************************** ;ldi r16,high(RAMEND) ;Descomente para dispositivos ;con RAM mayor 256 Bytes ; out SPH,r16 ; ldi r16,low(RAMEND) ; out SPL,r16 ;***************************************************************** ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0 ;Inicia TCNT0 con valor 0 out TCNT0,R17 ; ;PASO3 in r17,TIMSK ;Habilita interrupción ori r17,(1<<TOIE0) ;del TIMER/COUNTER0 out TIMSK,r17 ;TIMSK<TOIE0>=1 ;PASO 4 in r17,TIFR ;Limpia posible ori r17,(1<<TOV0) ;interrupción anterior out TIFR,r17 ;TIFR<TOV0>=0 ;PASO 5 sei ;SREG<7>=1. int. habilitadas ;PASO 6 ;Selecciona el origen de la ldi r17,1 ;señal de reloj out TCCR0,r17 ;Se incrementará TCNT0 en cada pulso de RELOJ. ;TCCR0=1. (Si se quiere visualizar por el PORTB ;hacer ;TCCR0=5, ;LO MAS LENTO POSIBLE) loop: ;Espera hasta que nop ;se generen interrupciones. nop nop rjmp loop ;loop infinito 34
  • 35. OTAS DE CO FIGURACIÓ . Para este periférico los cambios más importantes en el programa son en el paso 6, es aquí donde se le indica al periférico el origen de la señal de RELOJ. Consulte TABLA TC0-3 y sustituya el valor que requiera en la línea de código ldi r17,1 del paso 6. 35
  • 36. 36
  • 37. OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL. DESCRIPCIÓ GE ERAL. Un circuito Convertidor Analógico Digital – ADC- es integrado en algunos microcontroladores para procesamiento de señales analógicas. El Convertidor Analógico Digital integrado en los microcontroladores de la familia AVR es tipo aproximación sucesiva y tienen una resolución de 10 bits. La frecuencia máxima de muestreo es 15 KSPS (15000 Muestras Por Segundo aproximadamente). Otras características son las siguientes: ±2 LSB, 0.5 LSB INL, Tiempo de conversión 65-260 uS, Cancelador de ruido integrado, rango de entrada Rail to Rail. El ADC puede ser configurado en dos modos de operación: ♦ Modo de una Sola Conversión. Se tiene que iniciar manualmente cada conversión. ♦ Modo en Conversión Continua. Las conversiones se realizan de manera repetida automáticamente. DISPO IBLE E AT90xS4434, AT90xS8535, AT90xS2333, AT90xS4433. APLICACIO ES Sistemas de adquisición de señales analógicas, Sistemas de Control Digital, etc. REGISTROS I VOLUCRADOS OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ADMUX - - - - - MUX2 MUX1 MUX0 Tabla ADC-1A. Registros Involucrados con ADC OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ADCSR ADE ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 Tabla ADC-1B. Registros Involucrados con ADC. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ADCH - - - - - - ADC9 ADC8 ADCL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 Tabla ADC-1C. Registros Involucrados con ADC. 37
  • 38. El significado de cada bit y su función se puede observar en la Tabla ADC-2. BIT SIG IFICADO FU CIÓ MUX2 Analog Channel Select Ver Tabla ADC-3. MUX1 Analog Channel Select Ver Tabla ADC-3. MUX0 Analog Channel Select Ver Tabla ADC-3. ADPS0 ADC Prescaler Select Bits.Ver Tabla ADC-4 ADPS1 ADC Prescaler Select Bits.Ver Tabla ADC-4 ADPS2 ADC Prescaler Select Bits.Ver Tabla ADC-4 ADIE ADC Interrupt Enable “1” Habilita la interrupción de Conversión Completa. ADIF ADC Interrupt Flag Se establece a “1” cuando una Conversión ha terminado. ADFR ADC Free Run Select “1” Selecciona Modo en Conversión Continua. “0” Selecciona Modo de una Sola Conversión. ADSC ADC Start Conversion Se debe escribir un “1” en este bit para iniciar la conversión. ADE ADC Enable “1” Habilita al ADC. Tabla ADC-2. Bits de los registros especiales utilizados para el ADC. La entrada del ADC tiene un circuito Muestreador Retenedor, que mantiene la señal invariante una vez que ha comenzado la conversión. El número de entradas analógicas conectadas al ADC, a través de un multiplexor analógico varía de un microcontrolador a otro, siendo ocho el número máximo. La conversión analógica a digital se realiza sobre un solo canal o entrada analógica seleccionado, para esto se utilizan los bits MUX2, MUX1 y MUX0. La Tabla ADC-3 muestra las posibles combinaciones de estos bits y el canal seleccionado. Recuerde que algunos microcontroladores no tienen disponible los ocho canales de entrada. CA AL MUX2 MUX1 MUX0 SELECCIO ADO 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7 Tabla ADC-3. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del registro ADMUX. 38
  • 39. La Tabla ADC-4 muestra la posición de las entradas o canales analógicos para cada miembro de la familia AVR. canal de entrada analogico DISPOSITIVO 0 1 2 3 4 5 6 7 40 39 38 37 36 35 34 33 AT90xS4434 (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) 40 39 38 37 36 35 34 33 AT90xS8535 (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) 23 24 25 26 27 28 AT90xS2333 - - (PC0) (PC1) (PC2) (PC3) (PC4) (PC5) 23 24 25 26 27 28 AT90xS4433 - - (PC0) (PC1) (PC2) (PC3) (PC4) (PC5) Tabla ADC-4. Localización de las entradas para el ADC en la familia AVR. (EMPAQUETADO DIP). Para realizar las conversiones analógico a digital, el circuito ADC requiere de una señal se reloj (AD Clock) que se deriva del oscilador principal, la frecuencia de la señal AD Clock debe ser mayor a 50Hz y menor a 200KHz. Si se selecciona la frecuencia más alta, aumentará también la velocidad de conversión, pero la precisión disminuirá, esto es, a mayor frecuencia, menor precisión. Para establecer la frecuencia de la señal AD Clock se utilizan los bits ADPS2, ADPS1 y ADPS0 del registro ADCSR. La Tabla ADC-5 muestra las frecuencias posibles. ADPS2 ADPS1 ADPS0 Frecuencia 0 0 0 FOSC 2 0 0 1 FOSC 2 0 1 0 FOSC 4 0 1 1 FOSC 8 1 0 0 FOSC 16 1 0 1 FOSC 32 1 1 0 FOSC 64 1 1 1 FOSC 128 Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la selección de la señal AD Clock. SECUE CIA DE CO FIGURACIÓ ADC. 39
  • 40. 1.- Deshabilite interrupciones. Recomendado pero no necesario. 2.- Configure como entrada los pines del microcontrolador que utilizará como entradas analógicas. 3.- Seleccione la frecuencia de la señal AD Clock. Ver Tabla ADC-5. 4.- Seleccione el modo de operación: Modo de una Sola Conversión ADCSR<ADFR>=”0” Modo de Conversión Continua ADCSR<ADFR>=”1” 5.- Si lo requiere, habilite la interrupción del ADC. Por lo general sí se habilita la interrupción. ADCSR<ADIE>=”1” 6.- Limpie posible interrupción falsa del ADC, para esto escriba un “1” en el bit ADIF del registro ADCSR. 7.- Seleccione el canal de entrada analógico deseado. Ver Tabla ADC-3 y Tabla ADC-4. 8.- Habilite el ADC. 9.- Habilite interrupciones globales. 10.- Inicie conversión. ADCSR<ADSC>=1” Para Modo de una Sola Conversión es necesario iniciar cada una después de que el ADC ha terminado. En Modo de Conversión Continua se ejecuta la correspondiente ISR cada vez que el ADC termina una conversión y automáticamente comienza la siguiente. Para reducir el ruido que induce el CPU del microcontrolador, se puede poner en estado de espera pasivo a este último (cancelador de ruido) para esto hay que realizar los siguientes pasos: 1. Configurar al ADC en Modo de una Sola Conversión y habilitar la interrupción. 2. Entrar a modo de espera (IDLE) 3. Al terminar una conversión el ADC, se ejecutará la ISR. I.S.R. La Tabla ADC-6 muestra los vectores y direcciones de interrupción del ADC. La interrupción sucede cada vez que se termina una conversión analógico a digital. Si programa en ensamblador necesitará redireccionar hacia donde realmente se encuentre la ISR. DISPOSITIVO VECTOR DIRECCIO AT90xS4434 15 $00E AT90xS8535 15 $00E AT90xS2333 12 $00B AT90xS4433 12 $00B Tabla ADC-6. Vectores de interrupción para el ADC. 40
  • 41. IMPLA TACIO En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad. El siguiente programa muestra como configurar al ADC en Modo de Conversión Continua. ;CONVERTIDOR ANALOGICO DIGITAL ;Modo Conversión Continua ;************************************************************ .include "4434def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección donde se encuentra RESET ;************************************************************ .org ADCCaddr ;Vector de ADC conversión terminada rjmp ADC_Fin ;redireccionado. ;************************************************************ ADC_Fin: ;Escriba aqui su codigo in r17,ADCL in r18,ADCH out PORTB,r17 reti RESET: ;inicio de programa. ;************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************ ldi r17,0xff out DDRB,r17 ;Puerto B como salida ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ;PASO2 ldi r17,0x00 ;Configura como entrada Puerto A out DDRA,r17 ;Son las entradas Analógicas ;PASO3 cbi ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock sbi ADCSR,ADPS1 ;es fosc/4 cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0 ;PASO4 sbi ADCSR,ADFR ;Modo Conversión Continua ;PASO5 41
  • 42. sbi ADCSR,ADIE ;Habilita Int ADC ;PASO6 sbi ADCSR,ADIF ;Limpia Posible Interrupción Falsa ;PASO7 cbi ADMUX,MUX2 ;Selecciona Canal 0 cbi ADMUX,MUX1 ;Pin 40, PA0 cbi ADMUX,MUX0 ;PASO8 sbi ADCSR,ADEN ;Habilita ADC ;PASO9 sei ;Habilita Interrupciones Globales ;PASO10 sbi ADCSR,ADSC ;Inicia la primera conversión. loop: nop nop rjmp loop ;loop infinito El siguiente programa muestra como configurar al ADC en Modo de una Sola Conversión. ;CONVERTIDOR ANALOGICO DIGITAL ;Modo una Sola Conversión ;************************************************************ .include "4434def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección donde se encuentra RESET ;************************************************************.org ADCCaddr ;Vector de ADC conversión terminada rjmp ADC_Fin ;redireccionado. ;************************************************************ ADC_Fin: ;Escriba aqui su codigo ldi r17,0xff reti RESET: ;inicio de programa. ;************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 42
  • 43. ;************************************************************ ldi r17,0xff out DDRB,r17 ;Puerto B como salida ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0x00 ;Configura como entrada Puerto A out DDRA,r17 ;Son las entradas Analógicas ;PASO3 cbi ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock sbi ADCSR,ADPS1 ;es fosc/4 cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0 ;PASO4 cbi ADCSR,ADFR ;Modo Conversión Continua ;PASO5 sbi ADCSR,ADIE ;Habilita Int ADC ;PASO6 sbi ADCSR,ADIF ;Limpia Posible Interrupción Falsa ;PASO7 cbi ADMUX,MUX2 ;Selecciona Canal 0 cbi ADMUX,MUX1 ;Pin 40, PA0 cbi ADMUX,MUX0 ;PASO8 sbi ADCSR,ADEN ;Habilita ADC ;PASO9 sei ;Habilita Interrupciones Globales ;PASO10 sbi ADCSR,ADSC ;Inicia la primera conversión. loop: nop nop sbrs r17,0 ;espera hasta terminar conversion rjmp loop in r17,ADCL in r18,ADCH out PORTB,r17 ldi r17,0x00 nop rjmp loop ;loop infinito 43
  • 44. 44
  • 45. OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO. DESCRIPCIÓ GE ERAL. El comparador de voltaje conecta su entrada negativa y positiva a los pines AIN1 y AIN0 del microcontrolador respectivamente. La salida del comparador analógico está conectada directamente al bit ACO del registro ACSR. DISPO IBLE E AT90S8515, AT90S1200, AT90S2313, 90S2333,AT90LS2333, AT90S4433, AT90LS4433. APLICACIO ES Detección picos de señales analógicas. Control de potencia por ángulo de disparo con Tiristores. Conversión analógico a digital. REGISTROS I VOLUCRADOS DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACSR ACD ACO ACI ACIE ACIC ACIS1 ACIS0 Tabla CA-1A. Registros Involucrados con el Comparador Analógico. DISPOSITIVO AT90S1200. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACSR ACD ACO ACI ACIE ACIS1 ACIS0 Tabla CA-1B. Registros Involucrados con el Comparador Analógico. DISPOSITIVO AT90XX2333, AT90XX4433. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACSR ACD AINBG ACO ACI ACIE ACIC ACIS1 ACIS0 Tabla CA-1C. Registros Involucrados con el Comparador Analógico. 45
  • 46. El significado de cada bit y su función se puede observar en la Tabla CA-2. BIT SIG IFICADO FU CIÓ ACD Analog Comparator “1” Apaga al comparador analógico. Disable. “0” Enciende comparador analógico. ACO Analog comparator Conectado de manera directa a la Output. salida del comparador analógico. ACI Analog Comparator “1” indica que se ha producido una Interrupt Flag. interrupción debida del comparador analógico . Ver bits ACIS1 y ACIS0. ACIE Analog Comparator “1” Habilita interrupción del Interrupt Enable. comparador analógico. ACIC Analog Comparator “1” Hace que la captura del Input Capture Enable. Timer/Counter1 sea activada por el comparador analógico. ACIS1 Analog Comparator Ver Tabla CA-3. Interrupt Mode Select. ACIS0 Analog Comparator Ver Tabla CA-3. Interrupt Mode Select. AI BG Analog Comparator “1” Habilita la referencia interna. En BandGap Select este caso un voltaje de 1.22 ±0.05V se aplica en la entrada positiva (AIN0) del comparador, sustituyendo a la señal proveniente del exterior. “0” La señal proveniente del exterior se aplica a la entrada AIN0 del comparador analógico. Tabla CA-2. Bits de los registros especiales utilizados para el comparador analógico. La salida del comprador analógico – conectada al bit ACO del registro ACR- tendrá valor “1” siempre que la señal en el pin AIN0 sea mayor a la de AIN1. En caso contrario la salida será “0”. La interrupción del comparador analógico se puede producir cuando el bit ACO pasa de “0” a “1” (flanco positivo) o cuando pasa de “1” a “0” (flanco negativo). Los bits ACIS1 y ACIS0 configuran la interrupción del comparador analógico, como se muestra en la Tabla CA-3. 46
  • 47. MOTIVO DE ACIS1 ACIS0 GE ERACIÓ DE I TERRUPCIÓ 0 0 La salida del comparador analógico cambia de estado. 0 1 Reservado. 1 0 La salida del comparador analógico produce un flanco negativo. 1 1 La salida del comparador analógico produce un flanco positivo. Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación de interrupción del Comparador Analógico. La localización de los pines AIN0 y AIN1 de cada elemento de la familia AVR se muestra en la Tabla CA-4. AI 0 AI 1 DISPOSITIVO (in +) (in -) AT90S1200 PB0 PB1 (PIN 12) (PIN 13) AT90S2313 PB0 PB1 (PIN 12) (PIN 13) AT90XX2333 PD6 PD7 (PIN 12) (PIN 13) AT90XX4433 PD6 PD7 (PIN 12) (PIN 13) AT90S8515 PB 2 PB 3 (PIN 3) (PIN 4) AT90XX4414 PB 2 PB 3 (PIN 3) (PIN 4) AT90XX8535 PB 2 PB 3 (PIN 3) (PIN 4) Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR. EMPAQUETADO DIP). SECUE CIA DE CO FIGURACIÓ COMPARADOR A ALÓGICO. 1 Deshabilite interrupciones globales. SREG<I>=”0” 2 Deshabilite la interrupción del comparador analógico (Siempre que cambie la configuración de este periférico, lo recomendable es deshabilitar su interrupción). ACSR<ACIE>=”0” 47
  • 48. 3 Configure los pines AIN1 y AIN0 como entradas. 4 Si el dispositivo soporta referencia interna, coloque un “1” o un “0” en el bit AINBG de acuerdo a lo indicado en la Tabla CA-2. 5 Seleccione el evento que generará la interrupción. Ver Tabla CA-3. 6 Si requiere producir un evento de captura (ver capitulo Timer/Counter1) ponga el bit ACIC en “1”. En caso contrario póngalo en “0”. 7 Habilite el comparado analógico ACSR<ACD>=”1”. 8 Si lo requiere, habilite la interrupción del comparador analógico y las interrupciones globales ACSR<ACIE>=”1”. SREG<I>=”1”. I.S.R. Cuando se produce cualquiera de las situaciones presentadas en la Tabla CA-3, y además, las interrupciones globales han sido habilitadas, el CPU salta a la dirección mostrada en la Tabla CA-5. DISPOSITIVO VECTOR DIRECCIO AT90S1200 5 $003 AT90S2313 11 $00A AT90S4414 13 $00C AT90S8515 13 $00C AT90XX2333 14 $00D AT90XX4433 14 $00D AT90XX4434 17 $010 Tabla CA-5. Vectores de interrupción para el comprador analógico. 48
  • 49. IMPLA TACIO En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad. El programa siguiente configura al comparador analógico para que genere interrupciones en cada flanco negativo. ;AIN0 y AIN1 se encuentran en el PORTB ;del AT90S8515. Si usa otro dispositivo ;Vea Tabla CA-4. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustitúyalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la dirección donde se encuentra RESET ;************************************************************************ .org ACIaddr ;vector del Comparador Analogico rjmp CompAn ;redireccionado. ;************************************************************************ CompAn: ;Escriba aqui su codigo reti RESET: ;inicio de programa. ;************************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************************ ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0x80 ;Deshabilita int del out ACSR,r17 ;Comparador Analogico. (ACIE="0") ;PASO3 ldi r17,0x00 ;Configura como entrada los pines out DDRB,r17 ;correspondientes a AIN0 y AIN1 ;Esta linea cambia en otro dispositivo. ;PASO4 ;// in r17,ACSR ;EL AT90S8515 no tiene circuito de ;// ori r17,(1<<AINBG) ;referencia interna ;// out ACSR,r17 ; 49
  • 50. ;PASO5 in r17,ACSR ;Se generara la interrupción en cada ori r17,0x02 ;flanco descendente de la salida del out ACSR,r17 ;Comparador Analogico (bit ACO) ;PASO6 ; in r17,ACSR ; ori r17,(1<<ACIC) ;Si desa habilitar el evento de captura ; out ACSR,r17 ;descomente esto ;PASO7 in r17,ACSR ;Habilita al comparador Analogico andi r17,0x7f ;ACD="0" out ACSR,r17 ;PASO8 in r17,ACSR ;Habilita int del Comparador ori r17,(1<<ACIE) ;Analogico out ACSR,r17 sei loop: nop nop nop rjmp loop ;loop infinito 50
  • 51. 51
  • 52. OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER). DESCRIPCIÓ GE ERAL. Este periférico permite que el microcontrolador se reinicie automáticamente mediante un circuito contador, que se incrementa continuamente a una frecuencia de 1MHz aproximadamente. Para evitar que el microcontrolador se reinicie, hay que restablecer el valor del contador antes de que este se desborde. El restablecimiento del contador se efectúa mediante una instrucción especial (WDR). DISPO IBLE E AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535 APLICACIO ES. El WATCHDOG TIMER se utiliza generalmente en aquellas situaciones en las que se corre el riesgo de que el microcontrolador entre en un estado de espera infinito. REGISTROS I VOLUCRADOS. DISPOSITIVO: AT90S1200. OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 FU CIÓ DEL ARCHIVO. WDTCR - - - - WDE WDP2 WDP1 WDP0 WDE = “1” habilita WATCHDOG TIMER. WDE = “0” deshabilita WATCHDOG TIMER. Tabla WDT-1A. Registros involucrados. DISPOSITIVO: AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT090S4433,AT90LS4433,AT90S8515, AT90S4414, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535. OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL ARCHIVO. WDTCR - - - WDTOE WDE WDP2 WDP1 WDP0 Tabla WDT-1B. Registros involucrados. El bit WDE de registro WDTCR es el responsable de habilitar o deshabilitar el periférico Perro Guardián. Los tres bits menos significativos de este registro permiten establecer el 52