Está en la página 1de 26

Interrupciones

Yerko Araneda Diego Castillo Camilo Domnguez Mauricio Muoz Arquitectura de Micro controladores Alberto Takaoka Jueves 21 de Abril de 2011

Que es un interrupcin?

Una interrupcin consiste en un mecanismo por el cual un evento externo o interno puede intervenir la ejecucin de un programa en cualquier momento. En ese instante produce automticamente un salto a una subrutina de atencin a la interrupcin (004h). Este atiende inmediatamente el evento y retorna al programa donde exactamente donde estaba en el momento de ser interrumpido. La interrupcin tiene la caracterstica de la inmadiatez, nace de la necesidad de ejecutar una subrutina en el instante preciso.

Diferencia a las subrutina


- El salto a subrutina se produce cuando quiere el programador, de forma sincrona con el programa principal - El salto a interrupcion se produce cuando se activa la linea de peticion de interrupcion, de forma asncrona al programa principal. - Puesto que el funcionamiento de la CPU es diferente en caso de subrutinas y de interrupciones, seran necesarias diferentes instrucciones para sealar el fin del subprograma (RTS Return from Subrutine RTE Return from Exception)

Lectura de una entrada por interrupciones

004h
Programa principal

X1

Proceso x (subrutina de atencin a la interrupcin)

Retfie
PC
X1

PC
004h

PC
xxxx

PC
X1

X1

X1

X1

X1

Antes de la interrupcin

Al ejecutar la interrupcin

Durante la interrupcin

Despus del retfie

Lectura de una entrada por polling


Parte del programa principal

Entrada activada?

SI Proceso X NO

Continuacin del programa principal

Polling
Un sistema de el cual funciona por medio de preguntas logrando una perdida de tiempo no siendo muy eficaz.

En cada ciclo de programa, el microcontrolador tiene que interrogar los bits de consulta. - Al perifrico se le atiende despus de realizar la consulta y no cuando solicita la intervencin de la CPU.

Ventajas y Desventajas
VENTAJAS: 1. Liberan al microprocesador de la prdida de tiempo causada por esperar a que ocurra cierto evento. 2. Permiten la ejecucin de un programa principal junto con el control simultneo de varios dispositivos externos. 3. Proporciona servicio prioritario a dispositivos crticos dentro del sistema. 4. Facilitan la deteccin de eventos en tiempo real. DESVENTAJAS: 1. Pueden ser necesarios circuitos externos adicionales para la generacin de la seal de interrupcin y la identificacin del dispositivo. 2. Dada su naturaleza asncrona, es muy dificil probar su funcionamiento, y todava ms encontrar posibles fallas. 3. Pueden requerir instrucciones adicionales adems de las estrictamente necesarias para dar servicio al dispositivo. Por ejemplo para preservar registros o identificar al dispositivo.

Tipos de Interrupciones.
En los PIC como sabemos una interrupcin consiste en un mecanismo por el cual un evento interno o externo puede interrumpir la ejecucin de un programa en cualquier momento, se produce un salto a una subrutina para atender la interrupcin.

Ejecucin

Direccin 004h Subrutina interrupcin

Tipos de Interrupciones.
externas Asincrnicas

Tipos de interrupciones Anomalas en instrucciones

internas Sincrnicas

Interrupciones Software

Tipos de Interrupciones.
En el caso del PIC16F84 encontramos 4 formas de interrupcin:
Sucesos Externos 1) Activacin de la pata 6 RB0/INT. Flags INTF

zzzzzZZZZ

Tipos de Interrupciones.
2) Cambio de estado en una de los 4 pines de ms peso del port B <RPB7:RPB4>. Flags RBIF
Para activar la interrupcin por cambio de nivel o estado en las patas RB7:RB4 los bits RBIE y GIE del registro INTCON deben estar en "1", as cuando se produce un cambio de estado en cualquier pata de las lneas RB7 a RB4 se activa el flag RBIF del registro INTCON. PIC RBIF RBIE y GIE = 1

Tipos de Interrupciones.
Sucesos Internos
3) Finalizacin de la Escritura en la EEPROM de datos Flags EEIF

Activa Flag EEIF Registro EECON1

Tipos de Interrupciones.
4) Desbordamiento del temporizador TMR0 Flags TOIF
Registro llamado TMR0, este registro es un Temporizador/Contador.

Desborde

0x00

INTCON TOIF

0xFF

Funcionamiento de una interrupciones


Salva lo que se realiza guardando en pila.

Pasa a 0 el bit GIE

El PC se carga en 004h.

Se comienza a ejecutar programa de interrupcin.

Funcionamiento de una interrupciones

Funcionamiento de una interrupcion

Registro INTCON (Interrupts Control Register)


Registro encargado del control de las interrupciones

Localizado en la direccin 0Bh del banco 0 o 8Bh del banco 1

Contiene 8 bits de los cuales 3 actan como flags y los otros como bits de permiso

Registro INTCON

GIE

Habilita todas las interrupciones , pasa a 0 y vuelve a 1 por instruccin REFTIE.

EEIE

Habilita EEI. Flag que autoriza interrupcin por escritura completada de 1 byte en EEPROM de datos del PIC. Habilitacin de la interrupcin TOI. Autoriza la interrupcin por desbordamiento del timer 0.

TOIE

INTE

Habilitacin de la interrupcin externa INT. Flag que autoriza interrupcin del pin RB0/INT.

Registro INTCON

RBIE

Habilitacin interrupcin RBI. Flag que autoriza la interrupcin pos cambio de estado en lneas RB7 a RB4 del puerto B Bandera de estado de interrupcin producida por el TMR0.

TOIF

INTF

Bandera de estado interrupcin externa INT. Por pin RB0/INT.

RBIF

Bandera de estado de interrupcin RBI. Se produjo una interrupcin en las lneas RB4 a RB7.

Tipos de Interrupciones.
Por el pin RB0/INT (interrupcin externa).
Cambio de estado en uno de los 4 pines de ms peso (RB7:RB4) del PORTB (interrupcin externa). Por desbordamiento del registro TMR0 (interrupcin interna). Al completar la escritura de la EEPROM de datos (interrupcin interna).

INTERRUPCIN EXTERNA INT


Importante para atender eventos externos en tiempo real.

Cuando en la lnea RB0/INT se hace una peticin de interrupcin, entonces, de forma automtica, el bit INTF del registro INTCON se pone a 1 y si el bit GIE=1, se pone en marcha el mecanismo de interrupcin.

. El programa de atencin a la interrupcin antes de regresar al programa principal debe borrar el flag INTF, puesto que en caso contrario al ejecutar la instruccin de retorno de interrupcin RETFIE se volver a desarrollar el mismo proceso de interrupcin.

INTERRUPCION POR CAMBIO DE ESTADO EN LOS PINES RB7:RB4


Para activar la interrupcin por cambio de nivel en los pines <RB7:RB4>, los bits RBIE y GIE del registro INTCON deben de estar a 1, bajo estas condiciones cuando se produce un cambio de nivel en cualquiera de los pines RB7:RB0 se activa el flag RBIF del registro INTCON. Este tipo de interrupciones, estn especialmente pensadas para el control de un teclado matricial de 4 x 4, es decir de 16 teclas.

INTERRUPCION POR DESBORDAMIENTO DEL TMR0


Para activar la interrupcin del TMR0, los bit T0IE y GIE del registro INTCON deben de estar a 1; bajo estas condiciones cuando el temporizador TMR0 se desborda al pasar de FFh a 00h, se activa el flag TOIF del registro INTCON.

Si no se carga de nuevo TMR0 cuando se desborda, ste sigue contando desde 00h hasta FFh. Este registro puede escribirse o leerse en cualquier momento, pero hay que tener en cuenta que al escribir sobre l, se pierden dos ciclos de reloj para la sincronizacin.

INTERRUPCIN POR FINALIZACIN DE ESCRITURA EN LA EEPROM DE DATOS


El rea de EEPROM dispone de 64 bytes donde opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentacin. La memoria EEPROM no est mapeada en la zona de memoria de datos donde se encuentran los registros SFR y GPR. Para poder leerla y escribirla durante el funcionamiento normal del microcontrolador hay que utilizar los registros especiales EEDATA, EEADR, EECON1 y EECON2 La lectura de una posicin de memoria de la EEPROM: Comprende los siguientes pasos:

a)

Escritura de la direccin que hay que leer en el registro EEADR. b) Poner a 1 el bit RD del registro EECON1. c) Lectura del dato diseccionado de esta forma en el registro EEDATA. d) El dato est disponible en EEDATA despus de colocar RD a 1, por lo que es posible leerlo. El dato ledo estar disponible el registro EEDATA en el siguiente ciclo y permanecer en l hasta que se realice una nueva lectura o escritura en la EEPROM.

Cuando la escritura de un dato en la EEPROM finaliza, se coloca en 1 el bit EEIF (EECON1). El bit de control respectivo es EEIE (INTCON).

Ejemplo
int btfss intcon, intf ; goto puertab ; goto a
btfss intcon, rbif ; goto tmr0 goto a

Explora el bit intf del registro intcon y si vale 1 salta salta a puertab inicio del servicio de interrupcin por activacin RB0
Explora el bit rbif del registro intcon y si vale 1 salta inicio del servicio de interrupcin por cambio en los pines RB7 : RB4 Explora el bit toif y si vale 1 salta inicio del servicio de interrupciones por desbordamiento de TMR0

puertab

tmr0

btfss intcon, t0if ; goto eeprom goto a

eeprom

btfss eecon1, eeif; Explora el bit eeif del registro eecon1 y si vale 1 salta goto int ; vuelve al principio, pero debe haber algn flag activado. goto a inicio el servicio de interrupcin por fin de la escritura en la EEPROM

Registro OPTION
Gobernar el comportamiento del TMR0. Tiene un bit relacionado con interrupciones externas.

Si configuramos:

INTDEG

1 = Flanco ascendente. 0 = Flanco descendente.

También podría gustarte