PIC18F2550 - Interrupciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Microcontroladores

Las interrupciones del PIC18F2550


El PIC18F2550 tiene múltiples fuentes de interrupción y un sistema de prioridad de interrupciones que
permite asignar a cada interrupción la condición de alta o baja prioridad.
El vector de interrupción de alta prioridad está ubicado en 0x000008 y el vector de interrupción de baja
prioridad está ubicado en 0x000018. Los eventos de interrupción de alta prioridad pueden interrumpir
cualquier interrupción de baja prioridad que pudiera estar ejecutándose en un determinado momento.
Hay diez registros asociados al control de interrupciones: RCON, INTCON, INTCON2, INTCON3, PIR1, PIR2,
PIE1, PIE2, IPR1, IPR2.
Cada fuente de interrupción está asociado a 3 bits para controlar su funcionamiento:
- Flag de interrupción, que indica que ha ocurrido un evento de interrupción.
- Bit de habilitación que permite que el flujo del programa sea redirigido a la dirección del vector de
interrupción cuando el flag de interrupción se pone a 1.
- Bit de prioridad para seleccionar prioridad alta o baja.
Prioridad de interrupciones
La prioridad de interrupciones se habilita poniendo a 1 el bit IPEN (RCON<7>). Cuando el sistema de prioridad
de interrupciones está habilitado, hay dos bits que habilitan las interrupciones globalmente:
- Bit GIEH (INTCON<7>): Habilita las interrupciones de alta prioridad, es decir, aquellas que tienen su bit de
prioridad puesto a 1.
Bit GIEL (INTCON<6>): Habilita las interrupciones de baja prioridad, es decir, aquellas que tienen su bit de
prioridad puesto a 0.
Cuando el flag de interrupciones, el bit de habilitación y el bit de habilitación global de interrupciones están
puestos a 1, la interrupción desviará el flujo a las direcciones 0x000008 y 0x000018, dependiendo del estado
del bit de prioridad. Las interrupciones se pueden deshabilitar individualmente poniendo a 0 sus bits de
habilitación.
Si el bit IPEN está puesto a 0 (estado por defecto), el sistema de prioridad de interrupciones está
deshabilitado y las interrupciones funcionan igual que en la gama media, lo que se denomina “modo de
compatibilidad”. En el modo de compatibilidad, los bits de prioridad de cada interrupción NO tienen efecto.
Además, INTCON<6> se convierte en el bit PEIE que se encarga de habilitar/deshabilitar las interrupciones
por periféricos e INTCON<7> se convierte en el bit GIE que permite habilitar/deshabilitar todas las fuentes
de interrupción. En el modo de compatibilidad todas las interrupciones se dirigen a la dirección 0x000008.
Como responde el PIC18F2550 ante la ocurrencia de una interrupción
Cuando el microcontrolador atiende una interrupción, el bit de habilitación global de interrupciones se pone
a 0 para deshabilitar nuevas interrupciones. Si el bit IPEN está puesto a 0, es el bit GIE. Si, por el contrario, el
bit IPEN está puesto a 1 y el sistema de prioridad de interrupciones está activado, serán los bits GIEH o GIEL.
Las fuentes de interrupciones de alta prioridad pueden interrumpir una interrupción de baja prioridad. Las
interrupciones de baja prioridad NO se procesan mientras está en curso una interrupción de alta prioridad.
La dirección de retorno se almacena en la pila (stack) y el contador de programa (PC) se carga con la dirección
del vector de interrupción (0x000008 o 0x000018). Una vez dentro de la rutina de servicio de la interrupción
(ISR), la fuente de interrupción se puede determinar sondeando los flags de interrupción. Estos flags deben
ponerse a 0 en software (programa) antes de reactivar las interrupciones para evitar interrupciones
recursivas.
Al retornar de la interrupción, el bit GIE (o los bits GIEH o GIEL si se usa el sistema de prioridad de
interrupciones) se pone a 1 rehabilitando las interrupciones.

Docente: Ing. Juan L. Merlo G.


Microcontroladores

En el caso de interrupciones externas, como las interrupciones por pines INT o la interrupción por cambio en
las entradas de PORTB, la latencia de la interrupción es de 3 a 4 ciclos de instrucción. La latencia exacta es la
misma para instrucciones de uno o dos ciclos.
Los flags de interrupción de cada fuente se ponen a 1 al producirse el evento de interrupción asociado sin
importar el estado de su bit de habilitación o del bit GIE.
Interrupciones USB
A diferencia de otros periféricos, el módulo USB puede generar una gran variedad de interrupciones para
varios eventos que incluyen varios tipos de eventos de estado, de comunicación normal y de error.
Para gestionar estos eventos, el módulo USB está dotado de su propia lógica de interrupciones que funciona
de manera similar a la lógica de interrupciones del microcontrolador, con cada fuente de interrupción
teniendo su propio flag y bit de habilitación. Todos los eventos son concentrados en una sola interrupción a
nivel de dispositivo: USBIF (PIR2<5>). A diferencia de la lógica de interrupciones de nivel de dispositivo, a los
eventos individuales de interrupción USB no se les puede asignar su propia prioridad. Esto se determina en
el concentrador de interrupciones a nivel de dispositivo para todos los eventos USB mediante el bit USBIP.

Registros INTCON
Contienen bits de habilitación, de prioridad y flags de interrupción.
Registro INTCON:

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registro INTCON2

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registro INTCON3

Registros PIR
Contienen flags individuales para las interrupciones por periféricos. Debido al número de fuentes de
interrupción hay dos registros de solicitud de interrupciones por periféricos (Peripheral Interrupt Requests).
Registro PIR1

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registro PIR2

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registros PIE
Contienen bits individuales de habilitación para las interrupciones por periféricos. Debido al número de
fuentes de interrupción hay dos registros de habilitación de interrupciones por periféricos (Peripheral
Interrupt Enable).
Registro PIE1

Registro PIE2

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registros IPR
Contienen bits individuales de prioridad para las interrupciones por periféricos. La utilización de los bits de
prioridad requiere que el bit de habilitación de prioridad de interrupciones IPEN esté puesto a 1. No hay bit
de prioridad asociado con INT0 porque siempre es una fuente de interrupción de alta prioridad.
Registro IPR1

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Registro IPR2

Registro RCON
Contiene los flags que se utilizan para determinar la causa de un reset o de un retorno del estado de
suspensión o del modo de bajo consumo (sleep). También contiene el bit IPEN que habilita el sistema de
prioridad de interrupciones.

Docente: Ing. Juan L. Merlo G.


Microcontroladores

Docente: Ing. Juan L. Merlo G.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy