SlideShare una empresa de Scribd logo
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 1


EJERCICIOS DE CONFIGURACIÓN DEL TIMER1
 PARA UTILIZAR LAS INTERRUPCIONES QUE
                GENERA
ENUNCIADO DEL EJERCICIO 1:
Modificar al programa del reloj digital que se muestra en seis displays de cátodo
común; de manera que se reemplace al lazo de repetición que sirve para el incremento
de los segundos por interrupciones generadas cada segundo mediante el Timer1,
configurado en el Modo CTC.
Las modificaciones que sea realizan en el programa principal son:
   1. Adicionar el Vector de Interrupciones por emparejamiento del Timer1 con el
      Registro A de Comparación.
   2. Incluir en el programa principal la programación del Timer1 y habilitación de las
      interrupciones para que se generen cada segundo.
   3. Modificación en el programa principal el lazo de repetición donde se muestra el
      reloj digital en los displays, eliminando los incrementos cada segundo.
Las modificaciones que sea realizan en las rutinas de interrupción son:
   4. En rutina de la Interrupción Externa 2 incluir el cambio de estado del Timer1,
      entre detenido y corriendo.
   5. Modificar las rutinas de las Interrupciones Externa 1 y Externa 0 para que se
      encarguen solo de los incrementos de los contadores; ya que el programa
      principal se encarga de publicarlos.
   6. Incorporación de la rutina de Interrupción del Timer1 por emparejamiento con el
      Registro A de Comparación, que incrementa en un segundo al reloj digital para
      ser publicado por programa principal.

ANÁLISIS PARA CONFIGURAR AL TIMER1, A FIN DE INCREMENTAR
LOS CONTADORES CADA SEGUNDO MEDIANTE INTERRUPCIONES:

La configuración del Timer1 que conviene para esta aplicación es la de Borrar el Timer
al emparejar con el Comprador o CTC. Se debe mantener desactivada la salida del
Timer, porque no se va a generar una señal. Y se necesita establecer el valor del registro
de comparación OCR1A, con el fin de generar interrupciones cada segundo.

Para que transcurra un segundo, considerando que el Timer tiene el mismo reloj que el
microcontrolador (sin pre escalamiento) e igual a 1MHz, es necesario contar 1´000.000
de pulsos lo que no se puede hacer con 16 bits. La siguiente alternativa es que el Timer
tenga como reloj el del microcontrolador divido para 8 (con pre escalamiento de 8), lo
que significa que se deben contar 125.000 pulsos, que tampoco se puede contar con 16
bits. Como tercera opción es alimentar al Timer con el reloj del microcontrolador divido
para 64 (con pre escalamiento de 64), lo que significa que se deben contar 15.265
pulsos, que si se puede contar con 16 bits; por lo tanto, está será la configuración para el
escalamiento del reloj del Timer y el valor para el registro OCR1A.

Finalmente se debe habilitar las interrupciones por emparejamiento con el OCR1A y
reservar el respectivo vector.

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 2

CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE
INTERRUPCIÓN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS
.DEF     AUX1 = R16           ; REGISTRO AUXILIAR1
.DEF     AUX2 = R17           ; REGISTRO AUXILIAR2
.DEF     AUX3 = R18           ; REGISTRO AUXILIAR3
.DEF     HORAS = R19          ; REGISTRO PARA LAS HORAS
.DEF     MINUT = R20          ; REGISTRO PARA LAS MINUTOS
.DEF     SEGUN = R21          ; REGISTRO PARA LOS SEGUNDOS
.DEF     AUXI1 = R23          ; REGISTRO AUXILIAR 1 INTERRUPCIONES
.DEF     AUXI2 = R24          ; REGISTRO AUXILIAR 2 INTERRUPCIONES
; SEGMENTO DE CÓDIGO o MEMORIA FLASH
.CSEG
         JMP      PROGP
.ORG $02                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0
         JMP      RUTINT0
.ORG $04                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1
         JMP      RUTINT1
.ORG $06                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2
         JMP      RUTINT2
.ORG $1A                      ; RUTINA DE LA INTERRUPCIÓN DEL TIMER1
         JMP RUTTIM1
; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOSM0DIFICACIÓN 1
PROGP: LDI        AUX1,LOW(RAMEND)
         OUT      SPL,AUX1
         LDI      AUX1,HIGH(RAMEND)
         OUT      SPH,AUX1
         LDI      AUX1,0B00000100
         OUT      PORTB,AUX1        ; PULL-UP INT2 = PB2
         LDI      AUX1,0B00001100
         OUT      PORTD,AUX1        ; PULL-UP INT0/1 = PD2/3
; PROGRAMACIÓN DE LAS INTERRUPCIONES EXTERNAS
         LDI      AUX1,0B000101111
         STS      EICRA,AUX1        ; INT2 T. NEGAT. INT1/0 T. POS.
         LDI      AUX1,0B00000100
         OUT      EIMSK,AUX1        ; INT2 HABILITADA
         LDI      AUX1,0B00000111
         OUT      EIFR,AUX1         ; BORRAR LAS BANDERAS
; PROGRAMACIÓN DEL TIMER1
; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5)     M0DIFICACIÓN 2
; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4)
; DOS BITS RESERVADOS = 00
; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4)
         LDI      AUX1,0B00000000
         STS      TCCR1A,AUX1
; ICNC1=0 DESHABILITA CANCELACIÓN DE RUIDO
; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA
; BIT RESERVADO = 0
; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4)
; CS12:0=011 RELOJ IGUAL A Fosc/64
         LDI      AUX1,0B00001011 ; Fosc/64
         STS      TCCR1B,AUX1
; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS)
         LDI      AUX1,HIGH(15625)
         LDI      AUX2,LOW(15625)
         STS      OCR1AH,AUX1
         STS      OCR1AL,AUX2


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 3

; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A
         LDI      AUX1,0B00000010
         STS      TIMSK1,AUX1
; VALORES INICIALES DE HH:MM:SS
         LDI      HORAS,23
         LDI      MINUT,59
         LDI      SEGUN,49
; HABILITACIÓN GLOBAL DE INTERRUPCIONES
         SEI
; TRANSFORMACIÓN A BCD DE LOS CONTADORES
RELOJ: LDI        XL,LOW(DIGIT)                        M0DIFICACIÓN 3
         LDI      XH,HIGH(DIGIT)
         MOV      AUX2,HORAS
         RCALL    BINBCD
         MOV      AUX2,MINUT
         RCALL    BINBCD
         MOV      AUX2,SEGUN
         RCALL    BINBCD
; TRANSFORMACIÓN A 7 SEGMENTOS
         RCALL    ASEG
; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL
         RCALL    SCAN
         RJMP     RELOJ
; TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO
BINBCD: CLR       AUX1
BINBCD1:SUBI      AUX2,10
         BRCS     BINBCD2
         INC      AUX1
         RJMP     BINBCD1
BINBCD2:LDI       AUX3,10
         ADD      AUX2,AUX3
         ST       X+,AUX1
         ST       X+,AUX2
         RET
; ARRANCAR - DETENER EL RELOJ
RUTINT2:
         IN       AUXI1,EIMSK
         LDI      AUXI2,0B00000011
         EOR      AUXI1,AUXI2       ; COMPLEMENTAR LOS 2 BITS
         OUT      EIMSK,AUXI1       ; CAMBIAR HABILITACIÓN
         OUT      EIFR,AUXI2        ; BORRA INTF0 y INTF1
         LDS      AUXI1,TIMSK1                          M0DIFICACIÓN 4
         LDI      AUXI2,0B00000010
         EOR      AUXI1,AUXI2       ; COMPLEMENTAR EL 2 BIT
         STS      TIMSK1,AUXI1      ; CAMBIAR HABILITACIÓN
FINR2: RETI
; IGUALAR MINUTOS
RUTINT1:
         INC      MINUT
         CPI      MINUT,60
         BRNE     RUT11
         CLR      MINUT
RUT11: RETI
; IGUALAR HORAS                   M0DIFICACIÓN 5
RUTINT0:
         INC      HORAS
         CPI      HORAS,24
         BRNE     RUT01
         CLR      HORAS
                                   M0DIFICACIÓN 5
RUT01: RETI



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 4

; INCREMENTO DE SEGUNDOS
RUTTIM1:
         INC       SEGUN                         M0DIFICACIÓN 6
         CPI       SEGUN,60
         BRNE      FINRT1
         CLR       SEGUN
         INC       MINUT
         CPI       MINUT,60
         BRNE      FINRT1
         CLR       MINUT
         INC       HORAS
         CPI       HORAS,24
         BRNE      FINRT1
         CLR       HORAS
FINRT1: RETI
;
.INCLUDE "SUBCC.ASM"
;
.EXIT        ; FIN DEL MODULO FUENTE

COMPROBACIÓN DEL RELOJ DE 24 HORAS CON INTERRUPCIONES
PRODUCIDAS POR EL TIMER1




ENUNCIADO DEL EJERCICIO 2:
Modificar al programa anterior, correspondiente al reloj digital para convertirlo en un
Cronómetro Digital Ascendente, que muestre Minutos, Segundos y Centésimas de
Segundos. El control del cronómetro se realiza mediante tres teclas:
    La tecla CLEAR conectada a la Interrupción Externa 2 pone el cronómetro en
     cero, solo cuando está detenido.
    La tecla STOP conectada a la Interrupción Externa 0 detiene el cronómetro.
    La tecla START conectada a la Interrupción Externa 1 arranca el cronómetro.
Además de la redefinición de los Contadores para el Cronómetro y de las funciones que
realizan las Rutinas de las Interrupciones Externas, el Timer1 debe ser configurado para
producir interrupciones cada 10 milisegundos en lugar de cada segundo.


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 5

ANÁLISIS PARA CONFIGURAR AL TIMER1, A FIN DE INCREMENTAR
LOS CONTADORES CADA CENTÉSIMA DE SEGUNDO:
Para producir interrupciones cada centésima de segundo con el Timer teniendo el
mismo reloj que el microcontrolador, igual a 1MHz, es necesario contar 10.000 pulsos
que si se puede hacer con 16 bits. Esto significa que el reloj del Timer es sin
escalamiento y 10.000 es el valor que se carga en el registro de comparación OCR1A.
CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE
INTERRUPCIÓN CON LAS MODIFICACIONES PARA CONVERTIR EL
RELOJ DIGITAL EN CRONÓMETRO ASCENDENTE
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS
.DEF     AUX1 = R16           ; REGISTRO AUXILIAR1
.DEF     AUX2 = R17           ; REGISTRO AUXILIAR2
.DEF     AUX3 = R18           ; REGISTRO AUXILIAR3
.DEF     MINUT = R19          ; REGISTRO PARA LAS MINUTOS
.DEF     SEGUN = R20          ; REGISTRO PARA LAS SEGUNDOS
.DEF     CENTI = R21          ; REGISTRO PARA LAS CENTÉSIMAS DE SEGUNDO
.DEF     AUXI1 = R23          ; REGISTRO AUXILIAR 1 INTERRUPCIONES
.DEF     AUXI2 = R24          ; REGISTRO AUXILIAR 2 INTERRUPCIONES
; SEGMENTO DE CÓDIGO o MEMORIA FLASH
.CSEG
         JMP      PROGP
.ORG $02                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0
         JMP      RUTINT0
.ORG $04                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1
         JMP      RUTINT1
.ORG $06                      ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2
         JMP      RUTINT2
.ORG $1A                      ; INTERRUPCIÓN POR EMPAREJAMIENTO TIMER 1
         JMP      RUTTIM1
; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS
PROGP: LDI        AUX1,LOW(RAMEND)
         OUT      SPL,AUX1
         LDI      AUX1,HIGH(RAMEND)
         OUT      SPH,AUX1
         LDI      AUX1,0B00000100
         OUT      PORTB,AUX1        ; PULL-UP INT2 = PB2
         LDI      AUX1,0B00001100
         OUT      PORTD,AUX1        ; PULL-UP INT0/1 = PD2/3
; PROGRAMACIÓN DE LAS INTERRUPCIONES EXTERNAS
         LDI      AUX1,0B000101010
         STS      EICRA,AUX1        ; INT2/1/0 TRANSICIÓN NEGAT.
         LDI      AUX1,0B00000010
         OUT      EIMSK,AUX1        ; INT1 HABILITADA (ARRANCAR)
         LDI      AUX1,0B00000111
         OUT      EIFR,AUX1         ; BORRAR LAS BANDERAS
; PROGRAMACIÓN DEL TIMER1
; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5)
; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4)
; DOS BITS RESERVADOS = 00
; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4)
         LDI      AUX1,0B00000000
         STS      TCCR1A,AUX1
; ICNC1=0 DESHABILITA CANCELACIÓN DE RUIDO
; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 6

; BIT RESERVADO = 0
; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4)
; CS12:0=000 SIN RELOJ
         LDI      AUX1,0B00001000  ; TIMER DETENIDO
         STS      TCCR1B,AUX1
; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS)
         LDI      AUX1,HIGH(10000)
         LDI      AUX2,LOW(10000)
         STS      OCR1AH,AUX1
         STS      OCR1AL,AUX2
; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A
         LDI      AUX1,0B00000010
         STS      TIMSK1,AUX1
; VALORES INICIALES DE MM:SS:CS
         LDI      MINUT,0
         LDI      SEGUN,0
         LDI      CENTI,0
; HABILITACIÓN GLOBAL DE INTERRUPCIONES
         SEI
; TRANSFORMACIÓN A BCD DE LOS CONTADORES
CRONO: LDI        XL,LOW(DIGIT)
         LDI      XH,HIGH(DIGIT)
         MOV      AUX2,MINUT
         RCALL    BINBCD
         MOV      AUX2,SEGUN
         RCALL    BINBCD
         MOV      AUX2,CENTI
         RCALL    BINBCD
; TRANSFORMACIÓN A 7 SEGMENTOS
         RCALL    ASEG
; MOSTRAR EN EL DISPLAY EL CRONOMETRO
         RCALL    SCAN
         RJMP     CRONO
; TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO
BINBCD: CLR       AUX1
BINBCD1:SUBI      AUX2,10
         BRCS     BINBCD2
         INC      AUX1
         RJMP     BINBCD1
BINBCD2:LDI       AUX3,10
         ADD      AUX2,AUX3
         ST       X+,AUX1
         ST       X+,AUX2
         RET
; PONER CEROS EN EL CRONÓMETRO
RUTINT2:
         LDI      MINUT,0
         LDI      SEGUN,0
         LDI      CENTI,0
         RETI
; DETENER EL CRONÓMETRO
RUTINT0:
; CS12:0=000 SIN RELOJ
         LDI      AUX1,0B00001000  ; TIMER DETENIDO
         STS      TCCR1B,AUX1
         LDI      AUX1,0B00000111
         OUT      EIFR,AUX1        ; BORRAR LAS BANDERAS
         LDI      AUX1,0B00000110
         OUT      EIMSK,AUX1 ; INT2/1 HABILITADAS (ENCERAR - ARRANCAR)
         RETI



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 7

; ARRANCAR EL CRONÓMETRO
RUTINT1:
; CS12:0=001 RELOJ IGUAL A Fosc/1
         LDI       AUX1,0B00001001   ; TIMER CONTANDO
         STS       TCCR1B,AUX1
         LDI       AUX1,0B00000111
         OUT       EIFR,AUX1         ; BORRAR LAS BANDERAS
         LDI       AUX1,0B00000001
         OUT       EIMSK,AUX1        ; INT0 HABILITADA (DETENER)
         RETI
; INCREMENTO DE CENTÉSIMAS DE SEGUNDO
RUTTIM1:INC        CENTI
         CPI       CENTI,100
         BRNE      FINRT1
         CLR       CENTI
         INC       SEGUN
         CPI       SEGUN,60
         BRNE      FINRT1
         CLR       SEGUN
         INC       MINUT
         CPI       MINUT,60
         BRNE      FINRT1
         CLR       MINUT
FINRT1: RETI
;
.INCLUDE "SUBCC.ASM"
;
.EXIT        ; FIN DEL MODULO FUENTE

COMPROBACIÓN     DEL   CRONÓMETRO       ASCENDENTE                             CON
INTERRUPCIONES PRODUCIDAS POR EL TIMER1




ENUNCIADO DEL EJERCICIO 3:
Elaborar el programa de control para un DIMMER de 19 pasos, que se pueden cambiar
mediante dos teclas, una para subir y otra para bajar. El DIMMER es un dispositivo
electrónico que permite controlar la intensidad de iluminación de lámparas
incandescentes, controlando el ángulo de disparo del TRIAC que alimenta a la lámpara;


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 8

por lo tanto, este programa tiene como objetivo escoger el ángulo de disparo del TRIAC
cada 10º, entre 0º y 180º de los semiciclos de la señal de 110 Vac.

ANÁLISIS Y ALGORITMO DE LA SOLUCIÓN:
Se necesita producir pulsos al inicio de los semiciclos de la señal de 110 Vac, mediante
un circuito externo al microcontrolador (detector de cruce por cero) y el programa se
encarga de generar los pulsos de disparo con un retardo de acuerdo al ángulo escogido,
tal como se muestra a continuación para el caso de 100º como ángulo de disparo.

                                                                               Señal de
                                                                               110 Vac

                                                                              Corriente
                                                                                en la
                                                                              lámpara


                                                                                Señal de
                                                                                 6 Vac,
                                                                               rectificada


                                                                               Pulsos al
                                                                                inicio

                                                                              Pulsos de
                                                                               disparo
CIRCUITO DEL DIMMER:



                      Pulsos al
                       inicio

           Pulsos de
            disparo




                                      Señal de
                                       6 Vac,
                                     rectificada

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                               Página 9

Los pulsos al inicio de los semiciclos se obtienen mediante el colector del transistor
NPN, conectado en el terminal de entrada de la Interrupción Externa 2, que tiene
activada la resistencia interna de pull-up. El transistor trabaja en corte y saturación,
controlado por la señal que ingresa por la resistencia de la base y que corresponde a una
señal de 6 Vac rectificada en onda completa.
La rutina de la Interrupción Externa 2 se encarga de arrancar al contador del Timmer1;
el cual, mediante la interrupción por emparejamiento con el valor del registro de
comparación OCR1A, controla el retardo del pulso de disparo del TRIAC. Los valores
de comparación se obtienen desde la tabla de constantes, que han sido calculadas para
tener ángulos de disparo cada 10 grados con señales de 60 Hz, considerando que el
Timer1 tiene el mismo reloj que el microcontrolador e igual a 1MHz.

               Paso del        Angulo en            Tiempo en
               Dimmer           grados            microsegundos
                       1                 0º                           0
                       2                10º                        463
                       3                20º                        926
                       4                30º                      1389
                       5                40º                      1852
                       6                50º                      2315
                       7                60º                      2778
                       8                70º                      3241
                       9                80º                      3704
                      10                90º                      4167
                      11              100º                       4630
                      12              110º                       5093
                      13              120º                       5556
                      14              130º                       6019
                      15              140º                       6481
                      16              150º                       6944
                      17              160º                       7407
                      18              170º                       7870
                      19              180º                       8333

CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE
INTERRUPCIÓN PARA EL CONTROL DEL DIMMER
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
;
.DEF    AUX1 = R16
.DEF    AUX2 = R17
.DEF    AUX3 = R18
;
.CSEG
        JMP       PROGP

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 10

         JMP        INTE0
         JMP        INTE1
         JMP        INTE2
.ORG     $1A                ; INTERRUPCIÓN POR EMPAREJAMIENTO ATMEGA164P
         JMP        INTT1
;
PROGP:
; UBICACIÓN DEL STACK AL FINAL DE LA SRAM
        LDI       AUX1,LOW(RAMEND)
        OUT       SPL,AUX1
        LDI       AUX1,HIGH(RAMEND)
        OUT       SPH,AUX1
; CONFIGURACIÓN COMO SALIDA (PA3)
        LDI       AUX1,0B00001000
        OUT       DDRA,AUX1
; PULL-UP EN LAS ENTRADAS INT0 e INT1 (PD2 y PD3)
        LDI       AUX1,0B00001100
        OUT       PORTD,AUX1
; PULL-UP EN LA ENTRADA INT2 (PB2)
        LDI       AUX1,0B00000100
        OUT       PORTB,AUX1
; PROGRAMACION DEL TIMER1
; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5)
; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4)
; FOC1A:0=1 OBLIGA A COMPARACIÓN CON OCR1A
; FOC1B:0=0 NO OBLIGA A COMPARACIÓN CON OCR1B
; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4)
        LDI       AUX1,0B00001000
        STS       TCCR1A,AUX1
; ICNC1=0 DESHABILITA CANCELACIÓN DE
; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA
; BIT5=0 BITS RESERVADO
; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4)
; CS12:0=001 RELOJ DETENIDO
        LDI       AUX1,0B00001000
        STS       TCCR1B,AUX1
; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS)
        LDI       ZL,LOW((TBLK+9)<<1)
        LDI       ZH,HIGH((TBLK+9)<<1)
        LPM       AUX3,Z+
        LPM       AUX2,Z+
        STS       OCR1AH,AUX2
        STS       OCR1AL,AUX3
; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A
        LDI       AUX1,0B00000010
        STS       TIMSK1,AUX1
; SEÑALES PARA INTERRUPCIONES EXTERNAS
; ISC11:0=10 INTERRUPCIÓN EXTERNA 1 TRANSICIÓN NEGATIVA
; ISC01:0=10 INTERRUPCIÓN EXTERNA 0 TRANSICIÓN NEGATIVA
; ISC21:0=10 INTERRUPCIÓN EXTERNA 2 TRANSICIÓN NEGATIVA
        LDI       AUX1,0B00101010
        STS       EICRA,AUX1
; HABILITACIÓN INTERRUPCIONES EXTERNAS
; INT1=1 INTERRUPCIÓN EXTERNA 1 DESHABILITADA
; INT0=1 INTERRUPCIÓN EXTERNA 0 DESHABILITADA
; INT2=0 INTERRUPCIÓN EXTERNA 2 HABILITADA
        LDI       AUX1,0B00000111
        OUT       EIMSK,AUX1
        SEI       ; HABILITACIÓN GLOBAL DE INTERRUPCIONES
; LAZO INFINITO
LOOP:   RJMP      LOOP


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 11

; RUTINA DE INTERRUPCIÓN DEL TIMER1
INTT1: LDI        AUX1,0B00001000
        STS       TCCR1B,AUX1
        LDI       AUX1,0B00001000
        OUT       PORTA,AUX1
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        LDI       AUX1,0B00000000
        OUT       PORTA,AUX1
        RETI
; RUTINA DE LA INTERRUPCIÓN EXTERNA 2
INTE2: LDI        AUX1,0B00001001
        STS       TCCR1B,AUX1
        RETI
; RUTINA DE LA INTERRUPCIÓN EXTERNA 1
INTE1: CPI        ZL,LOW((TBLK+1)<<1)
        BREQ      END1
        DEC       ZL
        DEC       ZL
        DEC       ZL
        DEC       ZL
        LPM       AUX3,Z+
        LPM       AUX2,Z+
        STS       OCR1AH,AUX2
        STS       OCR1AL,AUX3
END1:   RETI
; RUTINA DE LA INTERRUPCIÓN EXTERNA 0
INTE0: CPI        ZL,LOW((TBLK+19)<<1)
        BREQ      END0
        LPM       AUX3,Z+
        LPM       AUX2,Z+
        STS       OCR1AH,AUX2
        STS       OCR1AL,AUX3
END0:   RETI
;
;CONSTANTES DE LOS TIEMPOS EN MICROSEGUNDOS PARA CADA 10 GRADOS
TBLK:   .DW       0,463,926,1389,1852
        .DW       2315,2778,3241,3704,4167
        .DW       4630,5093,5556,6019,6481
        .DW       6944,7407,7870,8333
.EXIT             ; FIN DEL MODULO FUENTE

COMPROBACIÓN MEDIANTE EL SIMULADOR DEL PROTEUS
Para la comprobación se utiliza el osciloscopio de cuatro canales, con el que se observa:

      CANAL A: el voltaje sobre la carga.
      CANAL B: la señal de 6 Vac rectificada.
      CANAL C: pulsos de inicio del semiciclo, para producir transiciones en la
       entrada de la Interrupción Externa 2.
      CANAL D: pulsos de disparo del TRIAC, que genera la Interrupción del Timer1
       por el emparejamiento con el valor del OCR1A.
NOTA: Únicamente para la comprobación mediante el simulador, se ha incluido la
referencia de GND en el terminal común de la carga con el generador de 110 Vac y el

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 12

primario del transformador; en el circuito real no existe, para mantener el aislamiento
entre las secciones de corriente alterna y de corriente continua.




                 Solo para comprobar
                 mediante el Simulador




                  SEÑALES CON ÁNGULO DE DISPARO DE 0º




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 13




                SEÑALES CON ÁNGULO DE DISPARO DE 60º




                SEÑALES CON ÁNGULO DE DISPARO DE 90º


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 14




                SEÑALES CON ÁNGULO DE DISPARO DE 100º




                SEÑALES CON ÁNGULO DE DISPARO DE 140º


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1
                              Página 15




                SEÑALES CON ÁNGULO DE DISPARO DE 180º




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información

Más contenido relacionado

PDF
Ejercicios 06 subrutinas con LCD
PDF
Display de cristal líquido grágico GLCD
PDF
Ejercicio 08 CAD
PDF
Ejercicios 06 subrutinas con LCD continuación
PDF
Funcionamiento del CAD
PDF
Funcionamiento del Timer 0
PDF
Ejercicios 07 interrupciones
PDF
Ejercicio 09 Serie
Ejercicios 06 subrutinas con LCD
Display de cristal líquido grágico GLCD
Ejercicio 08 CAD
Ejercicios 06 subrutinas con LCD continuación
Funcionamiento del CAD
Funcionamiento del Timer 0
Ejercicios 07 interrupciones
Ejercicio 09 Serie

La actualidad más candente (20)

PDF
Ejercicio 03 Porticos
PDF
Funcionamiento del USART
PDF
Ejercicio 07 adicionales de Interrupciones
PDF
Ejercicio 05 Subrutinas
PPTX
19 Conversor A/D
PPTX
12 Pórticos de los Atmega
PDF
Ejercicio 04 Calculos
PPTX
18 Timers
PDF
Ejercicio 01 Llenar
PDF
Ejercicio 02 Tablas
PDF
Ejercicios 04 cálculo continuación
PPTX
17 Interrupciones
PPT
Sistemas Microprocesados I
PDF
Curso de microcontroladores capitulo 06
PDF
Equipo transpondedor 2
PPT
Conexión serial
PDF
Frecuencimetro receptor hall esquema y programa pbp 28 pag
PDF
Módulo EUSART del PIC16F887
PDF
Cables
Ejercicio 03 Porticos
Funcionamiento del USART
Ejercicio 07 adicionales de Interrupciones
Ejercicio 05 Subrutinas
19 Conversor A/D
12 Pórticos de los Atmega
Ejercicio 04 Calculos
18 Timers
Ejercicio 01 Llenar
Ejercicio 02 Tablas
Ejercicios 04 cálculo continuación
17 Interrupciones
Sistemas Microprocesados I
Curso de microcontroladores capitulo 06
Equipo transpondedor 2
Conexión serial
Frecuencimetro receptor hall esquema y programa pbp 28 pag
Módulo EUSART del PIC16F887
Cables
Publicidad

Destacado (13)

PDF
Microcontroladores ASM
DOC
Practicas De Lab Micro Parte I
PPT
Diapos de pic
DOCX
Manejo de teclado 4x4 con pic 16 f84a
PDF
El PIC16F84
PDF
Microcontroladores PIC
PDF
UNIDAD IV
PDF
Guía rápida tmr0 e interrupciones
DOCX
SCR, DIAC y TRIAC
PPTX
Los tiristores y sus métodos de disparo para el blog
PDF
Guía de ejercicios resueltos tema 2
PDF
programacion con microcontrolador pic 16f84
DOCX
Tiristores, características, aplicaciones y funcionamiento.
Microcontroladores ASM
Practicas De Lab Micro Parte I
Diapos de pic
Manejo de teclado 4x4 con pic 16 f84a
El PIC16F84
Microcontroladores PIC
UNIDAD IV
Guía rápida tmr0 e interrupciones
SCR, DIAC y TRIAC
Los tiristores y sus métodos de disparo para el blog
Guía de ejercicios resueltos tema 2
programacion con microcontrolador pic 16f84
Tiristores, características, aplicaciones y funcionamiento.
Publicidad

Similar a Ejercicio 07 Timers (20)

PPT
Ccp2009170309
PDF
Módulo Timer 1 del PIC16F887
PDF
Micro2 tema 2
PDF
Micro2 tema 3
PPTX
Módulos ccp pic 16f887
PDF
Interrupciones y Temporizadores pucesi
PDF
Microprogramacion - Interrupciones y timers
PPTX
TIMERS&TEMPORIZADORES EN "C"
PPTX
Ccpx
PPT
Timers
PPTX
PWM con PIC16F877A: Modulos y Registros Involucrados
PDF
In terrupciones pic
PDF
Curso de microcontroladores capitulo 07
PPTX
Enunciación
PPTX
Enunciación
PDF
Control nivel luz
PPT
TIMERS en microcontroladores PIC de microchip
PDF
Informe N°3-Microcontroladores
PDF
Uso del tmr0
Ccp2009170309
Módulo Timer 1 del PIC16F887
Micro2 tema 2
Micro2 tema 3
Módulos ccp pic 16f887
Interrupciones y Temporizadores pucesi
Microprogramacion - Interrupciones y timers
TIMERS&TEMPORIZADORES EN "C"
Ccpx
Timers
PWM con PIC16F877A: Modulos y Registros Involucrados
In terrupciones pic
Curso de microcontroladores capitulo 07
Enunciación
Enunciación
Control nivel luz
TIMERS en microcontroladores PIC de microchip
Informe N°3-Microcontroladores
Uso del tmr0

Más de Jaime E. Velarde (10)

PPTX
20 Portico Serial
PPTX
16 Instrucciones de Subrutinas
PPTX
15 Instrucciones Aritmeticas y Logicas
PPTX
13 Instrucciones de manejo de bits
PPTX
14 Fusibles Programables
PPTX
11 Instrucciones de Salto de los Atmega
PPTX
10 Instrucciones de Transferencia
PPTX
09 Conjunto de Instrucciones de los Atmega
PPTX
08 Memoria de los Atmega164P
PPTX
07 Familia Atmega
20 Portico Serial
16 Instrucciones de Subrutinas
15 Instrucciones Aritmeticas y Logicas
13 Instrucciones de manejo de bits
14 Fusibles Programables
11 Instrucciones de Salto de los Atmega
10 Instrucciones de Transferencia
09 Conjunto de Instrucciones de los Atmega
08 Memoria de los Atmega164P
07 Familia Atmega

Último (20)

PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Escuelas Desarmando una mirada subjetiva a la educación
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Cosacos y hombres del Este en el Heer.ppt
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
ciencias-1.pdf libro cuarto basico niños
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
OK OK UNIDAD DE APRENDIZAJE 5TO Y 6TO CORRESPONDIENTE AL MES DE AGOSTO 2025.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA

Ejercicio 07 Timers

  • 1. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 1 EJERCICIOS DE CONFIGURACIÓN DEL TIMER1 PARA UTILIZAR LAS INTERRUPCIONES QUE GENERA ENUNCIADO DEL EJERCICIO 1: Modificar al programa del reloj digital que se muestra en seis displays de cátodo común; de manera que se reemplace al lazo de repetición que sirve para el incremento de los segundos por interrupciones generadas cada segundo mediante el Timer1, configurado en el Modo CTC. Las modificaciones que sea realizan en el programa principal son: 1. Adicionar el Vector de Interrupciones por emparejamiento del Timer1 con el Registro A de Comparación. 2. Incluir en el programa principal la programación del Timer1 y habilitación de las interrupciones para que se generen cada segundo. 3. Modificación en el programa principal el lazo de repetición donde se muestra el reloj digital en los displays, eliminando los incrementos cada segundo. Las modificaciones que sea realizan en las rutinas de interrupción son: 4. En rutina de la Interrupción Externa 2 incluir el cambio de estado del Timer1, entre detenido y corriendo. 5. Modificar las rutinas de las Interrupciones Externa 1 y Externa 0 para que se encarguen solo de los incrementos de los contadores; ya que el programa principal se encarga de publicarlos. 6. Incorporación de la rutina de Interrupción del Timer1 por emparejamiento con el Registro A de Comparación, que incrementa en un segundo al reloj digital para ser publicado por programa principal. ANÁLISIS PARA CONFIGURAR AL TIMER1, A FIN DE INCREMENTAR LOS CONTADORES CADA SEGUNDO MEDIANTE INTERRUPCIONES: La configuración del Timer1 que conviene para esta aplicación es la de Borrar el Timer al emparejar con el Comprador o CTC. Se debe mantener desactivada la salida del Timer, porque no se va a generar una señal. Y se necesita establecer el valor del registro de comparación OCR1A, con el fin de generar interrupciones cada segundo. Para que transcurra un segundo, considerando que el Timer tiene el mismo reloj que el microcontrolador (sin pre escalamiento) e igual a 1MHz, es necesario contar 1´000.000 de pulsos lo que no se puede hacer con 16 bits. La siguiente alternativa es que el Timer tenga como reloj el del microcontrolador divido para 8 (con pre escalamiento de 8), lo que significa que se deben contar 125.000 pulsos, que tampoco se puede contar con 16 bits. Como tercera opción es alimentar al Timer con el reloj del microcontrolador divido para 64 (con pre escalamiento de 64), lo que significa que se deben contar 15.265 pulsos, que si se puede contar con 16 bits; por lo tanto, está será la configuración para el escalamiento del reloj del Timer y el valor para el registro OCR1A. Finalmente se debe habilitar las interrupciones por emparejamiento con el OCR1A y reservar el respectivo vector. Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 2. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 2 CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN .NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS .DEF AUX1 = R16 ; REGISTRO AUXILIAR1 .DEF AUX2 = R17 ; REGISTRO AUXILIAR2 .DEF AUX3 = R18 ; REGISTRO AUXILIAR3 .DEF HORAS = R19 ; REGISTRO PARA LAS HORAS .DEF MINUT = R20 ; REGISTRO PARA LAS MINUTOS .DEF SEGUN = R21 ; REGISTRO PARA LOS SEGUNDOS .DEF AUXI1 = R23 ; REGISTRO AUXILIAR 1 INTERRUPCIONES .DEF AUXI2 = R24 ; REGISTRO AUXILIAR 2 INTERRUPCIONES ; SEGMENTO DE CÓDIGO o MEMORIA FLASH .CSEG JMP PROGP .ORG $02 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0 JMP RUTINT0 .ORG $04 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1 JMP RUTINT1 .ORG $06 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2 JMP RUTINT2 .ORG $1A ; RUTINA DE LA INTERRUPCIÓN DEL TIMER1 JMP RUTTIM1 ; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOSM0DIFICACIÓN 1 PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 LDI AUX1,0B00000100 OUT PORTB,AUX1 ; PULL-UP INT2 = PB2 LDI AUX1,0B00001100 OUT PORTD,AUX1 ; PULL-UP INT0/1 = PD2/3 ; PROGRAMACIÓN DE LAS INTERRUPCIONES EXTERNAS LDI AUX1,0B000101111 STS EICRA,AUX1 ; INT2 T. NEGAT. INT1/0 T. POS. LDI AUX1,0B00000100 OUT EIMSK,AUX1 ; INT2 HABILITADA LDI AUX1,0B00000111 OUT EIFR,AUX1 ; BORRAR LAS BANDERAS ; PROGRAMACIÓN DEL TIMER1 ; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5) M0DIFICACIÓN 2 ; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4) ; DOS BITS RESERVADOS = 00 ; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4) LDI AUX1,0B00000000 STS TCCR1A,AUX1 ; ICNC1=0 DESHABILITA CANCELACIÓN DE RUIDO ; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA ; BIT RESERVADO = 0 ; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4) ; CS12:0=011 RELOJ IGUAL A Fosc/64 LDI AUX1,0B00001011 ; Fosc/64 STS TCCR1B,AUX1 ; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS) LDI AUX1,HIGH(15625) LDI AUX2,LOW(15625) STS OCR1AH,AUX1 STS OCR1AL,AUX2 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 3. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 3 ; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A LDI AUX1,0B00000010 STS TIMSK1,AUX1 ; VALORES INICIALES DE HH:MM:SS LDI HORAS,23 LDI MINUT,59 LDI SEGUN,49 ; HABILITACIÓN GLOBAL DE INTERRUPCIONES SEI ; TRANSFORMACIÓN A BCD DE LOS CONTADORES RELOJ: LDI XL,LOW(DIGIT) M0DIFICACIÓN 3 LDI XH,HIGH(DIGIT) MOV AUX2,HORAS RCALL BINBCD MOV AUX2,MINUT RCALL BINBCD MOV AUX2,SEGUN RCALL BINBCD ; TRANSFORMACIÓN A 7 SEGMENTOS RCALL ASEG ; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL RCALL SCAN RJMP RELOJ ; TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2,10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3,10 ADD AUX2,AUX3 ST X+,AUX1 ST X+,AUX2 RET ; ARRANCAR - DETENER EL RELOJ RUTINT2: IN AUXI1,EIMSK LDI AUXI2,0B00000011 EOR AUXI1,AUXI2 ; COMPLEMENTAR LOS 2 BITS OUT EIMSK,AUXI1 ; CAMBIAR HABILITACIÓN OUT EIFR,AUXI2 ; BORRA INTF0 y INTF1 LDS AUXI1,TIMSK1 M0DIFICACIÓN 4 LDI AUXI2,0B00000010 EOR AUXI1,AUXI2 ; COMPLEMENTAR EL 2 BIT STS TIMSK1,AUXI1 ; CAMBIAR HABILITACIÓN FINR2: RETI ; IGUALAR MINUTOS RUTINT1: INC MINUT CPI MINUT,60 BRNE RUT11 CLR MINUT RUT11: RETI ; IGUALAR HORAS M0DIFICACIÓN 5 RUTINT0: INC HORAS CPI HORAS,24 BRNE RUT01 CLR HORAS M0DIFICACIÓN 5 RUT01: RETI Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 4. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 4 ; INCREMENTO DE SEGUNDOS RUTTIM1: INC SEGUN M0DIFICACIÓN 6 CPI SEGUN,60 BRNE FINRT1 CLR SEGUN INC MINUT CPI MINUT,60 BRNE FINRT1 CLR MINUT INC HORAS CPI HORAS,24 BRNE FINRT1 CLR HORAS FINRT1: RETI ; .INCLUDE "SUBCC.ASM" ; .EXIT ; FIN DEL MODULO FUENTE COMPROBACIÓN DEL RELOJ DE 24 HORAS CON INTERRUPCIONES PRODUCIDAS POR EL TIMER1 ENUNCIADO DEL EJERCICIO 2: Modificar al programa anterior, correspondiente al reloj digital para convertirlo en un Cronómetro Digital Ascendente, que muestre Minutos, Segundos y Centésimas de Segundos. El control del cronómetro se realiza mediante tres teclas:  La tecla CLEAR conectada a la Interrupción Externa 2 pone el cronómetro en cero, solo cuando está detenido.  La tecla STOP conectada a la Interrupción Externa 0 detiene el cronómetro.  La tecla START conectada a la Interrupción Externa 1 arranca el cronómetro. Además de la redefinición de los Contadores para el Cronómetro y de las funciones que realizan las Rutinas de las Interrupciones Externas, el Timer1 debe ser configurado para producir interrupciones cada 10 milisegundos en lugar de cada segundo. Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 5. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 5 ANÁLISIS PARA CONFIGURAR AL TIMER1, A FIN DE INCREMENTAR LOS CONTADORES CADA CENTÉSIMA DE SEGUNDO: Para producir interrupciones cada centésima de segundo con el Timer teniendo el mismo reloj que el microcontrolador, igual a 1MHz, es necesario contar 10.000 pulsos que si se puede hacer con 16 bits. Esto significa que el reloj del Timer es sin escalamiento y 10.000 es el valor que se carga en el registro de comparación OCR1A. CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN CON LAS MODIFICACIONES PARA CONVERTIR EL RELOJ DIGITAL EN CRONÓMETRO ASCENDENTE .NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS .DEF AUX1 = R16 ; REGISTRO AUXILIAR1 .DEF AUX2 = R17 ; REGISTRO AUXILIAR2 .DEF AUX3 = R18 ; REGISTRO AUXILIAR3 .DEF MINUT = R19 ; REGISTRO PARA LAS MINUTOS .DEF SEGUN = R20 ; REGISTRO PARA LAS SEGUNDOS .DEF CENTI = R21 ; REGISTRO PARA LAS CENTÉSIMAS DE SEGUNDO .DEF AUXI1 = R23 ; REGISTRO AUXILIAR 1 INTERRUPCIONES .DEF AUXI2 = R24 ; REGISTRO AUXILIAR 2 INTERRUPCIONES ; SEGMENTO DE CÓDIGO o MEMORIA FLASH .CSEG JMP PROGP .ORG $02 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0 JMP RUTINT0 .ORG $04 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1 JMP RUTINT1 .ORG $06 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2 JMP RUTINT2 .ORG $1A ; INTERRUPCIÓN POR EMPAREJAMIENTO TIMER 1 JMP RUTTIM1 ; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 LDI AUX1,0B00000100 OUT PORTB,AUX1 ; PULL-UP INT2 = PB2 LDI AUX1,0B00001100 OUT PORTD,AUX1 ; PULL-UP INT0/1 = PD2/3 ; PROGRAMACIÓN DE LAS INTERRUPCIONES EXTERNAS LDI AUX1,0B000101010 STS EICRA,AUX1 ; INT2/1/0 TRANSICIÓN NEGAT. LDI AUX1,0B00000010 OUT EIMSK,AUX1 ; INT1 HABILITADA (ARRANCAR) LDI AUX1,0B00000111 OUT EIFR,AUX1 ; BORRAR LAS BANDERAS ; PROGRAMACIÓN DEL TIMER1 ; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5) ; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4) ; DOS BITS RESERVADOS = 00 ; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4) LDI AUX1,0B00000000 STS TCCR1A,AUX1 ; ICNC1=0 DESHABILITA CANCELACIÓN DE RUIDO ; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 6. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 6 ; BIT RESERVADO = 0 ; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4) ; CS12:0=000 SIN RELOJ LDI AUX1,0B00001000 ; TIMER DETENIDO STS TCCR1B,AUX1 ; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS) LDI AUX1,HIGH(10000) LDI AUX2,LOW(10000) STS OCR1AH,AUX1 STS OCR1AL,AUX2 ; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A LDI AUX1,0B00000010 STS TIMSK1,AUX1 ; VALORES INICIALES DE MM:SS:CS LDI MINUT,0 LDI SEGUN,0 LDI CENTI,0 ; HABILITACIÓN GLOBAL DE INTERRUPCIONES SEI ; TRANSFORMACIÓN A BCD DE LOS CONTADORES CRONO: LDI XL,LOW(DIGIT) LDI XH,HIGH(DIGIT) MOV AUX2,MINUT RCALL BINBCD MOV AUX2,SEGUN RCALL BINBCD MOV AUX2,CENTI RCALL BINBCD ; TRANSFORMACIÓN A 7 SEGMENTOS RCALL ASEG ; MOSTRAR EN EL DISPLAY EL CRONOMETRO RCALL SCAN RJMP CRONO ; TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2,10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3,10 ADD AUX2,AUX3 ST X+,AUX1 ST X+,AUX2 RET ; PONER CEROS EN EL CRONÓMETRO RUTINT2: LDI MINUT,0 LDI SEGUN,0 LDI CENTI,0 RETI ; DETENER EL CRONÓMETRO RUTINT0: ; CS12:0=000 SIN RELOJ LDI AUX1,0B00001000 ; TIMER DETENIDO STS TCCR1B,AUX1 LDI AUX1,0B00000111 OUT EIFR,AUX1 ; BORRAR LAS BANDERAS LDI AUX1,0B00000110 OUT EIMSK,AUX1 ; INT2/1 HABILITADAS (ENCERAR - ARRANCAR) RETI Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 7. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 7 ; ARRANCAR EL CRONÓMETRO RUTINT1: ; CS12:0=001 RELOJ IGUAL A Fosc/1 LDI AUX1,0B00001001 ; TIMER CONTANDO STS TCCR1B,AUX1 LDI AUX1,0B00000111 OUT EIFR,AUX1 ; BORRAR LAS BANDERAS LDI AUX1,0B00000001 OUT EIMSK,AUX1 ; INT0 HABILITADA (DETENER) RETI ; INCREMENTO DE CENTÉSIMAS DE SEGUNDO RUTTIM1:INC CENTI CPI CENTI,100 BRNE FINRT1 CLR CENTI INC SEGUN CPI SEGUN,60 BRNE FINRT1 CLR SEGUN INC MINUT CPI MINUT,60 BRNE FINRT1 CLR MINUT FINRT1: RETI ; .INCLUDE "SUBCC.ASM" ; .EXIT ; FIN DEL MODULO FUENTE COMPROBACIÓN DEL CRONÓMETRO ASCENDENTE CON INTERRUPCIONES PRODUCIDAS POR EL TIMER1 ENUNCIADO DEL EJERCICIO 3: Elaborar el programa de control para un DIMMER de 19 pasos, que se pueden cambiar mediante dos teclas, una para subir y otra para bajar. El DIMMER es un dispositivo electrónico que permite controlar la intensidad de iluminación de lámparas incandescentes, controlando el ángulo de disparo del TRIAC que alimenta a la lámpara; Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 8. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 8 por lo tanto, este programa tiene como objetivo escoger el ángulo de disparo del TRIAC cada 10º, entre 0º y 180º de los semiciclos de la señal de 110 Vac. ANÁLISIS Y ALGORITMO DE LA SOLUCIÓN: Se necesita producir pulsos al inicio de los semiciclos de la señal de 110 Vac, mediante un circuito externo al microcontrolador (detector de cruce por cero) y el programa se encarga de generar los pulsos de disparo con un retardo de acuerdo al ángulo escogido, tal como se muestra a continuación para el caso de 100º como ángulo de disparo. Señal de 110 Vac Corriente en la lámpara Señal de 6 Vac, rectificada Pulsos al inicio Pulsos de disparo CIRCUITO DEL DIMMER: Pulsos al inicio Pulsos de disparo Señal de 6 Vac, rectificada Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 9. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 9 Los pulsos al inicio de los semiciclos se obtienen mediante el colector del transistor NPN, conectado en el terminal de entrada de la Interrupción Externa 2, que tiene activada la resistencia interna de pull-up. El transistor trabaja en corte y saturación, controlado por la señal que ingresa por la resistencia de la base y que corresponde a una señal de 6 Vac rectificada en onda completa. La rutina de la Interrupción Externa 2 se encarga de arrancar al contador del Timmer1; el cual, mediante la interrupción por emparejamiento con el valor del registro de comparación OCR1A, controla el retardo del pulso de disparo del TRIAC. Los valores de comparación se obtienen desde la tabla de constantes, que han sido calculadas para tener ángulos de disparo cada 10 grados con señales de 60 Hz, considerando que el Timer1 tiene el mismo reloj que el microcontrolador e igual a 1MHz. Paso del Angulo en Tiempo en Dimmer grados microsegundos 1 0º 0 2 10º 463 3 20º 926 4 30º 1389 5 40º 1852 6 50º 2315 7 60º 2778 8 70º 3241 9 80º 3704 10 90º 4167 11 100º 4630 12 110º 5093 13 120º 5556 14 130º 6019 15 140º 6481 16 150º 6944 17 160º 7407 18 170º 7870 19 180º 8333 CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN PARA EL CONTROL DEL DIMMER .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .DEF AUX1 = R16 .DEF AUX2 = R17 .DEF AUX3 = R18 ; .CSEG JMP PROGP Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 10. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 10 JMP INTE0 JMP INTE1 JMP INTE2 .ORG $1A ; INTERRUPCIÓN POR EMPAREJAMIENTO ATMEGA164P JMP INTT1 ; PROGP: ; UBICACIÓN DEL STACK AL FINAL DE LA SRAM LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 ; CONFIGURACIÓN COMO SALIDA (PA3) LDI AUX1,0B00001000 OUT DDRA,AUX1 ; PULL-UP EN LAS ENTRADAS INT0 e INT1 (PD2 y PD3) LDI AUX1,0B00001100 OUT PORTD,AUX1 ; PULL-UP EN LA ENTRADA INT2 (PB2) LDI AUX1,0B00000100 OUT PORTB,AUX1 ; PROGRAMACION DEL TIMER1 ; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5) ; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4) ; FOC1A:0=1 OBLIGA A COMPARACIÓN CON OCR1A ; FOC1B:0=0 NO OBLIGA A COMPARACIÓN CON OCR1B ; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4) LDI AUX1,0B00001000 STS TCCR1A,AUX1 ; ICNC1=0 DESHABILITA CANCELACIÓN DE ; ICES1=0 TRANSICIÓN NEGATIVA PARA LA ENTRADA DE CAPTURA ; BIT5=0 BITS RESERVADO ; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4) ; CS12:0=001 RELOJ DETENIDO LDI AUX1,0B00001000 STS TCCR1B,AUX1 ; VALOR A COMPARAR EN OCR1A (ESCRITURA DE 16 BITS) LDI ZL,LOW((TBLK+9)<<1) LDI ZH,HIGH((TBLK+9)<<1) LPM AUX3,Z+ LPM AUX2,Z+ STS OCR1AH,AUX2 STS OCR1AL,AUX3 ; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A LDI AUX1,0B00000010 STS TIMSK1,AUX1 ; SEÑALES PARA INTERRUPCIONES EXTERNAS ; ISC11:0=10 INTERRUPCIÓN EXTERNA 1 TRANSICIÓN NEGATIVA ; ISC01:0=10 INTERRUPCIÓN EXTERNA 0 TRANSICIÓN NEGATIVA ; ISC21:0=10 INTERRUPCIÓN EXTERNA 2 TRANSICIÓN NEGATIVA LDI AUX1,0B00101010 STS EICRA,AUX1 ; HABILITACIÓN INTERRUPCIONES EXTERNAS ; INT1=1 INTERRUPCIÓN EXTERNA 1 DESHABILITADA ; INT0=1 INTERRUPCIÓN EXTERNA 0 DESHABILITADA ; INT2=0 INTERRUPCIÓN EXTERNA 2 HABILITADA LDI AUX1,0B00000111 OUT EIMSK,AUX1 SEI ; HABILITACIÓN GLOBAL DE INTERRUPCIONES ; LAZO INFINITO LOOP: RJMP LOOP Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 11. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 11 ; RUTINA DE INTERRUPCIÓN DEL TIMER1 INTT1: LDI AUX1,0B00001000 STS TCCR1B,AUX1 LDI AUX1,0B00001000 OUT PORTA,AUX1 NOP NOP NOP NOP NOP NOP LDI AUX1,0B00000000 OUT PORTA,AUX1 RETI ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2 INTE2: LDI AUX1,0B00001001 STS TCCR1B,AUX1 RETI ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1 INTE1: CPI ZL,LOW((TBLK+1)<<1) BREQ END1 DEC ZL DEC ZL DEC ZL DEC ZL LPM AUX3,Z+ LPM AUX2,Z+ STS OCR1AH,AUX2 STS OCR1AL,AUX3 END1: RETI ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0 INTE0: CPI ZL,LOW((TBLK+19)<<1) BREQ END0 LPM AUX3,Z+ LPM AUX2,Z+ STS OCR1AH,AUX2 STS OCR1AL,AUX3 END0: RETI ; ;CONSTANTES DE LOS TIEMPOS EN MICROSEGUNDOS PARA CADA 10 GRADOS TBLK: .DW 0,463,926,1389,1852 .DW 2315,2778,3241,3704,4167 .DW 4630,5093,5556,6019,6481 .DW 6944,7407,7870,8333 .EXIT ; FIN DEL MODULO FUENTE COMPROBACIÓN MEDIANTE EL SIMULADOR DEL PROTEUS Para la comprobación se utiliza el osciloscopio de cuatro canales, con el que se observa:  CANAL A: el voltaje sobre la carga.  CANAL B: la señal de 6 Vac rectificada.  CANAL C: pulsos de inicio del semiciclo, para producir transiciones en la entrada de la Interrupción Externa 2.  CANAL D: pulsos de disparo del TRIAC, que genera la Interrupción del Timer1 por el emparejamiento con el valor del OCR1A. NOTA: Únicamente para la comprobación mediante el simulador, se ha incluido la referencia de GND en el terminal común de la carga con el generador de 110 Vac y el Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 12. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 12 primario del transformador; en el circuito real no existe, para mantener el aislamiento entre las secciones de corriente alterna y de corriente continua. Solo para comprobar mediante el Simulador SEÑALES CON ÁNGULO DE DISPARO DE 0º Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 13. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 13 SEÑALES CON ÁNGULO DE DISPARO DE 60º SEÑALES CON ÁNGULO DE DISPARO DE 90º Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 14. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 14 SEÑALES CON ÁNGULO DE DISPARO DE 100º SEÑALES CON ÁNGULO DE DISPARO DE 140º Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 15. SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 15 SEÑALES CON ÁNGULO DE DISPARO DE 180º Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información