You are on page 1of 8

Taller de Diseño

Interrupciones
PIC 16F628A

Alfonso Merino D.
Profesor: Gabriel Spano S.

Interrupciones
Conceptos Preliminares

Una interrupción es: Una señal asincrónica externa que indica la necesidad de atención.
Un evento por software que indica la necesidad de un cambio en el
contexto de ejecución.

 Las interrupciones son utilizadas en procesos multitarea, especialmente en


procesos que requieren respuestas en tiempo real.

 Una interrupción por hardware produce que el procesador salve su estado de


ejecución y comience la ejecución de un manejador de interrupciones.

 Las interrupciones por hardware se implementaron como una manera de evitar


desperdiciar el valioso tiempo de procesador en “Poling Loops” (ciclos de pregunta) a
la espera de eventos externos.

1
Interrupciones
 Normalmente se implementan en hardware como parte del circuito de control de la
memoria. La Interrupciones son “mapeadas” dentro del espacio de memoria
direccionable.

Las interrupciones son clasificadas básicamente en:

Interrupciones Enmascarables: Es una interrupción por hardware que puede ser ignorada
configurando un bit en un registro “mascara de interrupción”

Interrupciones No-Enmascarables: Es una interrupción que no posee bit de mascara y


por lo tanto nunca puede ser ignorada.

Interrupciones por software: Es una interrupción generada dentro del procesador al


ejecutar alguna instrucción. Normalmente se utilizan para “system calls” (llamas a sistema) ya
que realizan una especie de llamada a subrutina con un cambio del contexto de ejecución.

Interrupciones
Proceso de atención interrupciones en el PIC:
Ejecución secuencial del programa hasta que ocurre la interrupción
Salva contexto de ejecución, salto a vector de interrupción.
a
a

m
m

ra
ra

og
og

Pr
Pr

ci e
ci e

up d
ón
up d
ón

k
k

rr a
rr a

ac
ac

te tin
te tin

In Ru
In Ru

St
St

2
Interrupciones
Proceso de atención interrupciones en el PIC:
Salto a rutina atención de interrupción, ejecución secuencial de rutina
Termina subrutina, rescate contexto ejecución, continua programa

a
m

m
ra

ra
og

og
Pr

Pr
ci e

ci e
up d
ón

up d
ón
k

k
rr a

rr a
ac

ac
te tin

te tin
In R u

In R u
St

St

Interrupciones
Habilitación de Interrupciones

Para que una señal externa logre interrumpir al procesador, el bit que corresponde a su mascara
de interrupción debe estar habilitado, es decir debe valer “1”. Si dicho bit esta en “cero” la
interrupción será ignorada

En el PIC estos bit llevan el sufijo IE (Interrupción habilitada) y se encuentran en determinados


SFR en la memoria de datos.

Además el PIC tiene asociado a cada fuente de interrupción in bit adicional llamado bandera que
indica si una petición de interrupción ha llegado, este o no habilitada dicha fuente de interrupción.

Estos bit llevan el sufijo IF (bandera de interrupción).

3
Interrupciones
Detección de Interrupciones

Si varias fuentes de interrupción se encuentran habilitadas, es necesario detectar cual de ellas es


la que ocurrió antes de ejecutar la rutina de atención que corresponde.

La detección de la fuente de interrupción se realiza revisando los bits de las banderas de


interrupción.

El bit de bandera activado no se borra automáticamente al atender la interrupción, debe ser


limpiado por software al terminar la rutina de interrupción.

Si no se realiza esta operación, ocurrirá una nueva interrupción inmediatamente al volver al


programa.

Interrupciones
Habilitación General de Interrupciones
Además de setear el bit IE de cada fuente de interrupción es necesario habilitar la atención
general de interrupciones (GIE). Y en el caso de los periféricos también el bit de interrupción por
periféricos (PEIE)

4
•Memoria de Datos

Registros SFR relacionados a


interrupciones ubicados en memoria
de datos

Corresponden a las mascaras de


interrupción y contienen los bits “IF” e ”IE” de
todas las fuentes de interrupción.

INTCON
PIR1
PIE1

• Interrupciones
INTCON: Registro de lectura y escritura que contiene varios bits de
señalización y habilitación para el desbordamiento del TMR0, cambio sobre el
puerto RB e interrupción externa en la patilla RB0/INT.

0. RBIF: Indicador de interrupción por cambio de estado RB4-RB7


1. INTF: Indicador de interrupción externa
2. T0IF: Indicador de interrupción por desbordamiento de Timer 0
3. RBIE: Habilitación de interrupción por cambio de estado RB4-RB7
4. INTE: Habilitación de interrupción externa
5. T0IE: Habilitación de interrupción por desbordamiento de Timer 0
6. PEIE: Habilitación de interrupción de periféricos
7. GIE: Habilitación general de interrupciones

5
• Interrupciones
PIR1: El registro PIR1 contiene los bits de señalización individual de las
interrupciones de periféricos

0. TMR1IF: Indicador de interrupción por desbordamiento de Timer 1


1. TMR2IF: Indicador de interrupción por desbordamiento de Timer 2
2. CCP1IF: Indicador de interrupción del módulo de Captura/Comparación.
a) Modo Comparador: Coincidencia entre TMR1 y CCP1
b) Modo Captura: Ha ocurrido una captura de TMR1
3. No Implementado.
4. TXIF: Indicador de interrupción de fin de transmisión USART
5. RCIF: Indicador de interrupción de llegada de datos USART
6. CMIF: Indicador de interrupción por cambio de estado de alguna de las salidas de
los comparadores.
7. EEIF: Indicador de interrupción de fin de escritura eeprom interna.

• Interrupciones
PIE1: Registro que posee los bits de habilitación individual para las
interrupciones de periféricos. El bit PEIE del registro INTCON debe ser 1 para
permitir la habilitación de cualquier interrupción de periférico.

0. TMR1IE: Habilitación de interrupción por desbordamiento de Timer 1


1. TMR2IE: Habilitación de interrupción por desbordamiento de Timer 2
2. CCP1IE: Habilitación de interrupción del módulo de Captura/Comparación/PWM.
3. No Implementado.
4. TXIE: Habilitación de interrupción de fin de transmisión USART
5. RCIE: Habilitación de interrupción de llegada de datos USART
6. CMIE: Habilitación de interrupción por cambio de estado de alguna de las salidas
de los comparadores.
7. EEIE: Habilitación de interrupción de fin de escritura eeprom interna.

6
• Timer 1
El Timer 1 es un contador / temporizador de 16 bits. El conteo es realizado por dos
registros de 8 bits: (TMR1H (0Fh) y TMR1L (0Eh) ).

Este registro se incrementa continuamente a una frecuencia seleccionable


manejada por un preescalador y el reloj interno Fosc/4 (modo temporizador) o
bien, por un preescalador y una señal externa (modo contador). Los
preescaladores seleccionables son 1 2 4 8

• Timer 1
T1CON: Registro que determina el modo de operación del Timer 1

0. TMR1ON: Habilitación del Timer 1 (1 habilitado,0 desactivado )


1. TMR1CS: Selección de la fuente del clock (1 externo,0 interno)
2. T1SYNC: Sincronización con reloj externo.
3. T1OSCEN: Habilitación de oscilador
4. T1CKPS0: Selección preescalador
5. T1CKPS1: Selección peescalador

7
Timer 0
El Timer 0 es un contador / temporizador de 8 bits. El conteo es realizado por el registro
de 8 bits: (TMR0 ).
Este registro se incrementa continuamente a una frecuencia seleccionable manejada por
un preescalador y el reloj interno Fosc/4 (modo temporizador) o bien, por un preescalador
y una señal externa (modo contador). Los preescaladores seleccionables son 2 - 256

OPTION: Registro que determina el modo de operación del Timer 0

0-2. PS0-2: Selección del pre-escalador del Timer 0


3. PSA: Asignación del pre-escalador, 1 WDT; 0 Timer0
4. T0SE: Selección flanco que contara Timer0, 0 subida; 1 bajada
5. T0CS: Selección clock Timer0, 0 interno (Timer); 1 externo RA4 (Contador)
6. INTEDG: selección flanco para interrupción externa, 1 subida; 0 bajada
7. RBUP: Habilitación Pull-up Puerto B, 0 habilitadas; 1 deshabilitadas