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