MPLAB X y C18: Interrupciones

El uso de las interrupciones al momento de programar microcontroladores es un recurso de gran utilidad, ya que una interrupción causa que el PIC responda a cierto evento inesperado ya sea externo o interno, cuando una interrupción se activa el micro detiene la ejecución del programa en curso y da un salto de programa para llegar al vector de interrupción (ISR) ejecutando el bloque de código que allí se encuentre, cuando ejecuto todo regresa al lugar de donde realizo el salto y continuar con la ejecución normal del programa.

La gama PIC18 tienen múltiples fuentes de interrupción, además de la característica de prioridad de interrupción, que permite a cada fuente de interrupción asignarle un nivel de prioridad ya sea alta o baja. Cuando ocurre un evento de alta prioridad interrumpirá cualquier interrupción de baja prioridad que pueda estar en progreso. El vector de alta prioridad está en la dirección 0x0008 y el vector de baja prioridad está en la dirección 0x0018.

En general las interrupciones manejan tres tipos de bits para su control:
  • Flag bit: Indica si un evento de interrupción ha ocurrido.
  • Enable bit: Habilita el salto al vector de interrupción cuando ocurre un evento.
  • Priority bit: Selecciona entre prioridad alta y baja.
Para el manejo de interrupciones existen 10 registros que son los siguientes:
  • RCON
  • INTCON, INTCON2, INTCON3
  • PIR1, PIR2
  • PIE1, PIE2
  • IPR1, IPR2
La característica de prioridad de interrupciones se activa seteando el bit IPEN del registro RCON. Si este no esta seteado, no existen prioridades y las interrupciones se comportan como en los dispositivos de la gama media (PIC16).
Bueno en esta publicación fue para dar a conocer sobre las interrupciones y como se utilizan en C18, solo mostraremos el código utilizado para atenderlas, no se mostrara ningún ejemplo ni nada, ya utilizaremos esto en publicaciones posteriores.

Para terminar hemos creado dos archivos donde irá todo el código relacionado con las interrupciones, esto hace más estético y fácil de entender un programa. Los archivos son el “all_interrupts.h” y el “all_interrupts.c” que se muestran a continuación:
Dejo aquí el enlace para DESCARGAR las librerias disponibles desde mi repositorio en GitHub, si no sabes como descargarlo puedes checar aquí, bueno por el momento es todo si tienes dudas, comentarios, sugerencias, inquietudes, traumas, etc. dejarlas y tratare lo mas pronto posible responderlas...
  • Actualización (18/10/2016): Se corrigió enlace de descarga.
Referencias:
MPLAB X y C18: Interrupciones MPLAB X y C18: Interrupciones Reviewed by Pedro Sánchez Ramírez on 12/12/2014 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.