MPLAB X & 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:

Descargas:
Aquí el enlace directo para DESCARGAR los archivos disponibles, también puedes revisar o descargar la información 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 de responder lo mas pronto posible.


Donaciones:
Si te gusta el contenido o si los recursos te son de utilidad, comparte el enlace en tus redes sociales o sitios donde creas que puede ser de interés y la otra puedes ayudarme con una donación para seguir realizando publicaciones y mejorar el contenido del sitio. También puedes hacer donaciones en especie, ya sea con componentes, tarjetas de desarrollo o herramientas. Ponte en contacto para platicar, o puedes volverte uno de nuestros sponsors.


Pido una retroalimentación avisando cada que un enlace no sirva o tenga errores al momento de abrirlo, así también si una imagen no se ve o no carga, para corregirlo en el menor tiempo posible.
Referencias:

Publicar un comentario

0 Comentarios