ejercicio 07 timers
Post on 01-Jul-2015
2.463 Views
Preview:
DESCRIPTION
TRANSCRIPT
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 1
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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.
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 2
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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Ó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,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)
; 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
M0DIFICACIÓN 1
M0DIFICACIÓN 2
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 3
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
; 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)
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
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
RUTINT0:
INC HORAS
CPI HORAS,24
BRNE RUT01
CLR HORAS
RUT01: RETI
M0DIFICACIÓN 3
M0DIFICACIÓN 4
M0DIFICACIÓN 5
M0DIFICACIÓN 5
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 4
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
; INCREMENTO DE SEGUNDOS
RUTTIM1:
INC SEGUN
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.
M0DIFICACIÓN 6
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 5
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 6
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
; 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
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 7
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
; 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;
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 8
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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.
CIRCUITO DEL DIMMER:
Señal de
110 Vac
Corriente
en la
lámpara
Señal de
6 Vac,
rectificada
Pulsos al
inicio
Pulsos de
disparo
Pulsos al
inicio
Pulsos de
disparo
Señal de
6 Vac,
rectificada
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 9
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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 Dimmer
Angulo en
grados
Tiempo en
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
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 10
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
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
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 11
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
; 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
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 12
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
primario del transformador; en el circuito real no existe, para mantener el aislamiento
entre las secciones de corriente alterna y de corriente continua.
SEÑALES CON ÁNGULO DE DISPARO DE 0º
Solo para comprobar
mediante el Simulador
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 13
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SEÑALES CON ÁNGULO DE DISPARO DE 60º
SEÑALES CON ÁNGULO DE DISPARO DE 90º
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 14
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SEÑALES CON ÁNGULO DE DISPARO DE 100º
SEÑALES CON ÁNGULO DE DISPARO DE 140º
SISTEMAS MICROPROCESADOS: Uso de interrupciones generadas por el Timer1 Página 15
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SEÑALES CON ÁNGULO DE DISPARO DE 180º
top related