Las Interrupciones En los PIC

Anuncio
Tema 14
Las
Interrupciones
C. F. G.S. D.P.E. Módulo de Proyectos
1
Las Interrupciones En los PIC
Los PIC de la familia 16F8X poseen 4 fuentes de
interrupción:
• Interrupción externa a través del pin RB0/INT
• Interrupción por overflow del timer TMR0
• Interrupción por cambio de estado en alguno de
los pines RB7a RB4 del PORTB
• Interrupción por finalización de escritura en la
memoria de datos EEPROM.
C. F. G.S. D.P.E. Módulo de Proyectos
2
Las Interrupciones En los PIC
Cuando se produce cualquiera de los sucesos
anteriormente mencionados, se produce una
petición de interrupción, y si está habilitada
(permitida), se desencadenan los siguientes
sucesos:
1. Se guarda el valor del PC actual en la pila.
2. Se pone a cero el bit GIE (Global Interrupt Enable),
prohibiéndose cualquier otra interrupción.
3. Se carga el PC con el valor 0004h, que es la
posición del vector de interrupción del PIC,
comenzándose a ejecutar el programa de atención
a la interrupción que se encuentra a partir de dicha
dirección.
3
Las Interrupciones En los PIC
Cada causa de interrupción está controlada por 2 bits.
Uno de ellos hace de señalizador, bandera o flag,
que indica si la interrupción se ha producido, o no,
mientras que el otro funciona bit de habilitación
(permiso) o prohibición de dicha interrupción.
Existe un tercer bit que puede bloquear (prohibir) todas
las interrupciones, este bit es GIE.
La lógica de control de interrupciones es la siguiente:
C. F. G.S. D.P.E. Módulo de Proyectos
4
Las Interrupciones En los PIC
• Lógica de gobierno de las interrupciones
C. F. G.S. D.P.E. Módulo de Proyectos
5
El Registro De Interrupciones
INTCON
Los bits de control de las interrupciones excepto el bit
EEIF se encuentran en el registro INTCON
(dirección 0Bh del banco 0 y 8Bh del banco 1 y de
memoria RAM).
Bit 0 RBIF: Flag de estado del puerto B
1:Cuando cambia de estado cualquier línea del
puerto B (RB4 :RB7).
0: Ninguna línea ha cambiado
Se pone a cero por software
Las Interrupciones En los PIC
Bit 3 RBIE: Habilitación de la interrupción del
puerto B
1:Interrupción permitida 0:Interrupción prohibida.
Bit 1 INTF: Flag de estado de la interrupción
externa INT, Se pone a cero por software
1: La entrada de la Interrupción se ha activado
0: No hay interrupción externa
Bit 4 INTE: Habilitación de la interrupción externa
1:Interrupción permitida 0:Interrupción prohibida
C. F. G.S. D.P.E. Módulo de Proyectos
7
Las Interrupciones En los PIC
Bit 2 TOIF: Flag de desbordamiento del TMR0
1: El timer 0 se ha desbordado
0: El timer 0 no se ha desbordado
Se borra por software
Bit 5 TOIE: Habilitación de la interrupción del TMR0
1:Interrupción permitida 0:Interrupción prohibida
Bit 6 EEIE: Habilitación de la interrupción de la
memoria EEPROM
1:Interrupción permitida 0:Interrupción prohibida
C. F. G.S. D.P.E. Módulo de Proyectos
8
Las Interrupciones En los PIC
Bit 7 GIE: Habilitación global de interrupciones
1: Todas las Interrupciónes permitidas
0:Todas las Interrupción prohibidas
Evidentemente aunque GIE se encuentre a 1 , para
que una interrupción se pueda producir, deberá
poseer su habilitación específica también a 1.
Este bit se pone a 0 automáticamente cada vez
que se reconoce una interrupción, para que evitar
que se produzca una nueva. Es decir no se
permite
el
anidamiento
automático
de
interrupciones.
C. F. G.S. D.P.E. Módulo de Proyectos
9
Las Interrupciones En los PIC
Al
retornar de una interrupción mediante la
instrucción RETFIE, el bit GIE ,se vuelve a activar
posicionándose a 1 (permitiendo interrupciones).
Para el resto de los FLAG no se ha previsto
mecanismo de puesta a cero, por lo que deben
ser situados por software.
Si esta acción no es llevada a cabo no se podría
salir de la interrupción.
C. F. G.S. D.P.E. Módulo de Proyectos
10
Las Interrupciones En los PIC
El flag EEIF, es el bit 4 del registro EECON1
(dirección 88h) y cuyo interpretación es:
1: La operación de escritura en EEPROM se ha
completado con éxito.
0:La operación no se ha completado
Este bit se debe poner a 0 por software.
C. F. G.S. D.P.E. Módulo de Proyectos
11
Las Interrupciones En los PIC
El microcontrolador solo dispone de un vector de
interrupciones en la dirección 0004h. Por lo tanto
debe ser la propia rutina de atención a las
interrupciones la que detecte cual de las posibles
causas ha sido la que ha provocado dicha
interrupción, derivando a la rutina específica.
Al atenderse una interrupción, el único registro que
se salva en la pila es el PC, y de idéntica manera
a como ocurría en las subrutinas, deberá ser el
programador el que debe salvar en la pila
aquellos registros de interés, y devolverlos
posteriormente a su ubicación.
C. F. G.S. D.P.E. Módulo de Proyectos
12
Las Interrupciones En los PIC
Resumiendo, el proceso normal cuando trabajemos
con interrupciones debe ser:
1. Si se activa un FLAG de interrupción y además
GIE y el permiso particular de dicha interrupción
se encuentran a 1, se procederá a atender dicha
interrupción.
CON LO CUAL
2. Automáticamente GIE pasa a valer 0 evitando
que se puedan generar nuevas interrupciones.
3. El valor del PC es guardado en la pila
C. F. G.S. D.P.E. Módulo de Proyectos
13
Las Interrupciones En los PIC
4
El PC se carga con el valor 0004h, que es el
vector de interrupciones.
5
El programador debe comenzar escribiendo en
la posición 0004h de memoria de programa un
salto a la rutina de atención a la interrupciones.
6
Dentro de la rutina de atención a las
interrupciones, lo primero que hay que hacer es
salvaguardar los registros que no deseamos que
se modifiquen.
7
En esta rutina se debe comprobar la causa que
generó la interrupción, testando los flag.
C. F. G.S. D.P.E. Módulo de Proyectos
14
Las Interrupciones En los PIC
8. Una vez detectada la causa de interrupción
se deberá bifurcar a la rutina específica de
tratamiento de esa interrupción.
9. Las últimas acciones de la rutina específica
serán:
A/ Devolver a los registros sus valores originales
B/ Poner a cero el Flag que provocó la
interrupción.
C. F. G.S. D.P.E. Módulo de Proyectos
15
Las Interrupciones En los PIC
10. La última instrucción que se ejecutará es
RETFIE, que hará que se cargue el PC con
la dirección que se salvó en la pila
(automáticamente),
además
GIE
se
posiciona a 1 también automáticamente para
permitir nuevas interrupciones.
C. F. G.S. D.P.E. Módulo de Proyectos
16
Las Interrupciones En los PIC
En las siguientes transparencias se da un
ejemplo de cómo determinar cual ha sido
la causa de una interrupción, que es lo
primero que deberemos hacer, tras haber
salvado los registros que no queremos
que se corrompan.
Es importante que se de cuenta que la
prioridad de las interrupciones se
establece por el orden en que aparecen
en dicho programa.
C. F. G.S. D.P.E. Módulo de Proyectos
17
Las Interrupciones En los PIC
C. F. G.S. D.P.E. Módulo de Proyectos
18
Las Interrupciones En los PIC
Descargar