ESPE UNIVERSIDAD DE LAS FUERZAS ARMADAS EXTENSION LATACUNGA
INGENIERIA ELECTROMECÁNICA
SISTEMAS DIGITALES Y MICROCONTROLADORES MICROCONTROLADORES
Interrupciones Externas
INTEGRANTES: Luis Ola Santiago Solórzano
Latacunga, 28/01/2016
1. TEMA Manejo de Interrupciones externas
2. OBJETIVO GENERAL
Implementar la activación de accionamiento de pulsadores.
interrupciones
externas
mediante
el
3. OBJETIVOS ESPECIFICOS
Analizar los programas de interrupciones que se van a simular en proteus. Armar en la protoboard los diferentes circuitos de acuerdo al programa a usar. Realizar el flujograma de cada programa handler luz.
4. MARCO TEORICO Interrupciones externas Las interrupciones externas son activadas por los pines INT1 y INT0. Si son habilitadas, las interrupciones se activarán aun cuando los pines INT0/INT1 se configuren como salidas. Esta característica proporciona una manera de generar una interrupción por software. Las interrupciones externas pueden ser activadas por un flanco de bajada, subida o por un nivel bajo. Esto es establecido como se indica en la especificación para el registro de control MCU (MCUCR). Cuando la interrupción externa se habilita y se configura como activo por nivel, la interrupción se activará mientras el pin se mantenga a nivel bajo. Las interrupciones externas se establecen como se especificación para el registro de control MCU (MCUCR).
describe
en
la
Tiempo de respuesta de interrupción La respuesta de ejecución de interrupción para todas las interrupciones de AVR habilitadas es de cuatro ciclos de clock como mínimo. Cuatro ciclos de clock después de que el flag de interrupción se ponga a set, se ejecuta la dirección del vector de programa para la rutina de manejo de la interrupción. Durante este 4º periodo de ciclo de clock, el Contador de Programa (2 bytes) es introducido en la pila y el puntero de pila es decrementado en 2. El vector es normalmente un salto relativo a la rutina de interrupción y este salto toma dos
ciclos de clock. Si ocurre una interrupción durante la ejecución de una instrucción multi-ciclo, antes de que la interrupción sea servida, se completa esta instrucción. Un retorno de una rutina de manejo de interrupción (el mismo que una rutina de llamada a subrutina) toma cuatro ciclos de clock. Durante estos cuatro ciclos de clock, el Contador de Programa (2 bytes) se extrae de la pila, el puntero de pila es incrementado en 2 y el flag I en SREG está a set. Cuando el AVR termina una interrupción, siempre volverá al programa principal y ejecutará una instrucción más antes de que cualquier interrupción pendiente se sirva.
Aplicación de las interrupciones 1. 2. 3.
4. 5.
Cada vez que se presione un pulsador conectado a RB0 se incrementará un registro y se visualizan en el módulo LCD. Un programa que compruebe el funcionamiento de la interrupción por cambio de estado en un pin del puerto B, incrementando un registro. Un programa para un reloj digital, las temporizaciones necesarias se lograrán a través de interrupciones por desbordamiento del TMR0 cada 50ms Un programa donde a la salida del puerto B pin 3 se generará una señal cuadrada de 10 k Hz, esto mediante el desbordamiento del TMR0 Un lector entrada digna del puerto B de salida se enciende cada 500 ms y apaga cada 500ms, utilizando el desbordamiento del TMR0
Registro Option
Registro INTCON
5. MATERIALES
1 PIC 16F628. 1 Programador de PIC. Fuente de alimentación 5 v. 1 Protoboard.
2 Resistencias 330Ω.
1 Resistencia de 4.7k Ω. 2 Leds. 1 Pulsador.
6. PROCEDIMIENTO Ejercicio 1.1 1. Realizar la programación para habilitar una interrupción al instante de accionar un pulsador, de tal manera que al hacerlo se encienda el LED2 por 2 segundos, luego vuelva a encenderse el LED1 por lapsos de 0.2 segundos.
2. Armar el circuito de la figura en la protoboard.
3. Quemar el programa en el Pic e implementarlo en el circuito antes armado. Ejercicio 1.2 1. Realizar la programación para tener dos interrupciones sucesivas al instante de accionar el pulsador, de tal manera que se encienda el led 2 por 5 seg, a continuación se habilitara otra interrupción en la cual el led se encenderá en lapsos de 0.5 segundos. Luego se acciona nuevamente el pulsador y se activaran los dos leds por 5 segundos y regresara al estado nomal que es el encendido del led1 por 0.5seg
2. Armar el circuito de la figura en la protoboard
3. Quemar el programa en el PIC e implementarlo en el circuito antes armado. Ejercicio 2 1. Realizar la programación para detectar la interrupción en el flanco de bajada. 2. Armar el circuito de la figura en la protoboard
3. Quemar el programa en el PIC e implementarlo en el circuito antes armado. Ejercicio 3 1. Realizar la programación para que la interrupción sea detectada por RB4 – RB7 2. Quemar el programa en el PIC e implementarlo en el circuito antes armado.
Ejercicio 4 1. Realizar la programación para tener un contador ascendente de 0 a 9. Debe haber un pulsador de inicio-continuar, otro para detener y otro para encerar, que será realizado mediante una interrupción. 2. Armar el circuito de la figura en la protoboard
3. Quemar el programa en el PIC e implementarlo en el circuito antes armado.
7. CONCLUSIONES
Se pudo comprobar el correcto funcionamiento de los 2 programas ejemplo. Las interrupciones se ejecutan cada vez que se presiona el pulsador, en el caso de interrupciones sucesivas, se van a ejecutar dos interrupciones, una a continuación de otra, y, continuara con el programa original hasta que se accione nuevamente el pulsador.
8. RECOMENDACIONES
Al momento de montar los componentes se debe estar seguro que se siguió el diagrama correctamente, pues estos circuitos integrados son muy delicados y pueden llegar a dañarse Asegurarse que el programa a quemar en el PIC este correcto para poder implementar, y que el funcionamiento del circuito sea el correcto. Configurar el quemador de PICS de acuerdo al número de pines que posea el PIC a usar.
9. BIBLIOGRAFIA
Flores, H. (2010). Diseño Lógico: Fundamentos de Electrónica Digital. España: Ediciones de la U. Tokheim, R. (2008). electrónica Digital: Principios y aplicaciones. España: McGraw-Hill.
10. ANEXOS
Programa 2 LED1 VAR PORTB.1 LED2 VAR PORTB.2 ON INTERRUpT GOTO HandlerLuz INTCON=%10010000 OPTION_REG=%00000000 INICIO: HIGH LED1 PAUSE 200 LOW LED1 PAUSE 200 GOTO INICIO DISABLE HandlerLuz: HIGH LED2 PAUSE 2000 LOW LED2 INTCON=%10010000 OPTION_REG=%00000000 RESUME ENABLE END
Programa 3 LED1 VAR PORTB.1 LED2 VAR PORTB.2 ON INTERRUpT GOTO HandlerLuz INTCON=%10001000 INICIO: HIGH LED1 PAUSE 200 LOW LED1 PAUSE 200 GOTO INICIO DISABLE HandlerLuz: HIGH LED2 PAUSE 2000 LOW LED2
INTCON=%10001000 RESUME ENABLE END
Programa 4 OSCCON= %01100111 ANSEL=0 TRISB=0 PULSADOR2 VAR PORTB.4 ON INTERRUPT GOTO RESETEO N VAR BYTE INICIO FOR N=0 TO 9 STEP 1 PORTB=N PAUSE 500 NEXT N GOTO INICIO DISABLE RESETEO: IF PULSADOR2=0 THEN N=0 PORTB=N INTCON=%10010000 ENABLE END