lunes, 21 de enero de 2013

Interrupciones

Una de las características más importante de los micro controladores es que tienen la posibilidad de maneja interrupciones. Se trata de un proceso en el cual, el micro controlador al recibir dicha interrupción, deja de hacer lo que realizaba, atiende el suceso y una vez terminado vuelve a su actividad primaria.
Cada fuente de interrupción está controlada por dos bits, un bit local de interrupciones (terminado en E) de permiso o prohibición de ejecución. Si esta en 0 bloqueara la solicitud de interrupción, de lo contrario, si esta en 1 permitirá la ejecución. Un bit que actúa como señalizador (terminado en F) el cual es activado (puesto a 1) se ha producido la interrupción. Además existe un bit de control global, el cual se llama GIE (INTCON <7>), el cual si esta desactivado bloquea todas las solicitudes de interrupción.
Lo anterior puede interpretarse mejor de acuerdo al siguiente diagrama a bloques:
Interrupción externa por RB0:
Para el control de la interrupción externa, es necesario dos bits más RPBU (OPTION_REG<7>), que activa o desactiva las resistencias Pull-Up internas del PORTB, en caso de que el dispositivo conectado sea de colector abierto y el más importante INTEDG (OPTION_REG<6>), si está en 1, la interrupción se generara por flanco ascendente y en será, se generara por un flanco de bajada. 
Este es un claro ejemplo del uso que se le puede dar a una interrupción externa,  en este ejemplo al dar un pulso en RB0 cambiara de estado un led que se encuentre en RB1 y para esto se configura con un flaco de subida.
Interrupción por cambio de estado RB4-RB7:
Para activar la interrupción por cambio de nivel en los pines <RB4-RB7> los bits RBIE y GIE del registro INTCON deben estar a “1”, en estas condiciones cuando se produce un cambio de nivel en cualquiera de las líneas RB7 a RB4 se activa el flag RBIF del registro INTCON.
Por cambio de estado o de puerto. En este tipo de interrupciones, lo que se hace es configurar de RB0 a RB3 como salidas y obviamente en un estado bajo, mientras que de RB4 a RB7, serán entradas y estarán en un nivel alto. Supongamos que en un teclado matricial, el cual solo es un arreglo de botones conectado en filas y columnas aplicamos esta interrupción, al momento en el que presionamos un botón –en este caso una tecla- se conecta una fila con una columna, se llega a producir un cambio de estado ya sea nivel bajo o alto, pero a fin de cuentas se obtiene una interrupción como tal.
Interrupción por desbordamiento del timer:
Para autorizar una interrupción por desbordamiento del TMR0 los bits TOIE y GIE del registro INTCON deben posicionarse a “1”. En estas condiciones cuando el temporizador TMR0 se desborda, al pasar de b’11111111’ (FFh) a b’00000000’ (00h), activa el flag TOIF del registro INTCON produciendo de esta manera una interrupción.
Otros tipos de interrupciones de los cuales constan los PIC’s, pueden ser:
ü  Por medio de un comparador.
ü  En base a datos de una EEPROM.
ü  Por TIMER1 y TIMER2.
ü  Con ayuda de un USART.







No hay comentarios:

Publicar un comentario