Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
25-3-2021 Manejo de Interrupciones. Practica 4. Alumno: Mendoza Ruiz Javier Federico. Institución: UNITEC Ecatepec. Licenciatura: Ingeniería Mecatrónica. Materia: Microcontroladores y PLCs. Profesor: Abundis Noyola Omar. Universidad Tecnológica de México. Ejercicio 1: Alarma Automóvil. Figura 1. Diagrama de flujo Alarma Automóvil. (Programa Principal) Figura 2. Diagrama de flujo Alarma Automóvil. (RSI) Código. Figura 3. Compilación en MplabX En la imagen anterior se muestra la correcta ejecución del programa. El procedimiento de este programa constaba primeramente de cambiar al banco 1 para configurar el Puerto B como entrada y la línea 0 del Puerto C como salida, ya con los puertos configurados regresamos al banco 0 para finalizar con la configuración del programa modificando el registro INTCON para habilitar las interrupciones externas por cambio de estado, y limpiar el contenido de la línea 0 del Puerto C. Después de finalizar los pasos anteriores mandamos al microcontrolador a un estado de bajo consumo para que este sea despertado cuando la interrupción sea activada, esta consiste en que al momento de activarse la interrupción externa por cambio de estado en cualquier línea de la 4 a la 7 del Puerto B se procede a activar la línea 0 del Puerto C como indicador para después volver al programa principal, y cuando se active la línea 0 del Puerto B se volverá a la subrutina de interrupción y se desactivará el RC0 para poder regresar al programa principal y esperar a que ocurra otra interrupción mientras se encuentra en un estado de bajo consumo. El funcionamiento de este programa se muestra a continuación en con las capturas de pantalla obtenidas del software MplabX. *El código completo se adjunta aparte en formato .txt Simulación. Figura 4. Simulación en MplabX. Activación del Sensor 2. (Pin RB5) Figura 5. Simulación en MplabX. Desactivación por el pin RB0. Ejercicio 2: Alarma Casa. Figura 6. Diagrama de flujo Alarma Casa (Programa Principal). Figura 7. Diagrama de flujo Alarma Casa (RSI). Código. Figura 8. Compilación en MplabX En la imagen anterior se muestra la correcta ejecución del programa. El procedimiento de este programa constaba primeramente de cambiar al banco 1 para configurar el Puerto B como entrada y el Puerto C como salida, ya con los puertos configurados regresamos al banco 0 para finalizar con la configuración del programa modificando el registro INTCON para habilitar las interrupciones externas por cambio de estado, y limpiar el contenido del Puerto C. Después de finalizar los pasos anteriores mandamos al microcontrolador a un estado de bajo consumo para que este sea despertado cuando la interrupción sea activada, esta consiste en que al momento de activarse la interrupción externa por cambio de estado en cualquier línea de la 4 a la 7 del Puerto B se procede a activar la línea 4 del Puerto C y la correspondiente línea respecto al Puerto B como indicador para después volver al programa principal, y cuando se active la línea 0 del Puerto B se volverá a la subrutina de interrupción y se desactivará el RC0 para poder regresar al programa principal y esperar a que ocurra otra interrupción mientras se encuentra en un estado de bajo consumo. El funcionamiento de este programa se muestra a continuación en con las capturas de pantalla obtenidas del software MplabX. *El código completo se adjunta aparte en formato .txt Simulación. Figura 9. Simulación en MplabX. Activacion del Sensor 1 (Pin RB4) Figura 10. Simulación en MplabX. Desactivación por el pin RB0. Cuestionario. 1. ¿Qué es una interrupción? Es una desviación del flujo de control del programa originada asíncronamente que no se halla bajo la supervisión de las instrucciones. 2. ¿Para qué sirve el vector de interrupción? Y ¿qué posición ocupa en la memoria de programa? Es un mecanismo que permite localizar las subrutinas de interrupción y esta ubicado en la dirección 4 de la memoria de programa. 3. ¿Cuántos tipos de interrupción se pueden manejar en el PIC16F873A? Con el PIC16F873A se pueden trabajar hasta 13 tipos de interrupciones. 4. ¿Cuál es el nombre del registro de propósito especial encargado de configura las interrupciones? INTCON 5. Describa ampliamente la función del bit GIE. Este bit es “el botón de encendido o apagado” con el que se habilitan o deshabilitan todas las interrupciones. Para poder trabajar con alguna de los 14 tipos de interrupción es necesario que además de activar el bit GIE se active su correspondiente bit. 6. ¿Cómo funciona la instrucción RETFIE? Esta instrucción esta compuesta por 2 acciones, la primera salir de la subrutina y regresar al programa principal y la segunda, habilitar nuevamente las interrupciones poniendo a 1 el bit GIE del registro INTCON. 7. ¿Qué pasa con los valores que están cargados en los puertos configurados como salida cuando se habilita la instrucción SLEEP? Estos valores no se ven afectados por la instrucción debido a que se encuentran almacenados en un circuito Latch y estos permanecerán ahí hasta que se modifiquen los valores. 8. Cuando está un PIC en el modo de bajo consumo de energía, ¿cuáles son las acciones que se pueden realizar para que el PIC vuelva a ejecutar las instrucciones de un programa? El microcontrolador solo saldrá de este estado cuando sea Reseteado o al ser activada una Interrupción. Conclusiones. Con la presente practica aprendí cuales son los tipos de interrupciones con los que trabaja el PIC16F873A, la configuración que se debe realizar para hacer uso de estas en el registro INTCON, además de aplicar la interrupción por cambio de estado para los ejercicios 1 y 2. En anteriores practicas ya habíamos hecho uso de la interrupción correspondiente al desbordamiento del TMR0 y TMR1. Las interrupciones por cambio de estado son muy útiles porque nos ayudan a evitar que el microcontrolador gaste recursos al estarse preguntado si un bit se encuentra activado o no, con las interrupciones solo necesitamos crear la subrutina en donde indiquemos que es lo que queremos que haga el microcontrolador cuando se active alguno de los pines correspondientes a este tipo de interrupción y mandarlo a un estado de bajo consumo para que sea despertado únicamente cuando sea necesario. Este tipo de acciones podrían no parecer útiles a simple vista en un proyecto escolar porque casi siempre en estos proyectos solo se busca demostrar lo aprendido durante un breve periodo de tiempo y después de desarma el circuito elaborado, pero esto es muy importante cuando se trabaja con muchos circuito o cuando se maneja una mayor cantidad de energía para su operación, y así al poder mandar al microcontrolador a un estado de bajo consumo nos aseguramos que solo sea activado cuando se requiere.
Compartir