Вы находитесь на странице: 1из 4

Interrupción externa RB0/INT :

En cuanto a los pines del PIC la señal externa para producir la interrupción en el PIC
será a través de de la patilla 6 y se podrá determinar por software que flanco de la
señal producirá la interrupción, el de subida (cuando la señal pasa de un nivel 0 a 1) ó
el de bajada (cuando pasa de 1 a 0).

Interrupción por cambio lógico en el puerto B (pines RB7 a RB4):


El estado lógico en alguna de las 4 líneas de más peso de la puerta B (RB7-RB4) del
PIC. Para ello dichas líneas tienen que estar previamente configuradas como entradas.
Este recurso hardware es muy utilizado para el control de teclados.

Interrupción por desborde del timer 0 (TMR0) :


Es un modulo que sirve como contador o como temporizador de 8 bit's.
Funcionando como temporizador el TMR0 es un registro donde yo puedo almacenar un valor y
este se va incrementando de 1 en 1 con los ciclos de instruccion, es decir, con cada ciclo se
incrementa en 1 el TMR0, cuando la cuenta llega a 255 y pasa a 0 (cero) se porduce una
interrupcion por desborde del TMR0, recordemos que en un registro de 8 Bit's el valor mas alto
que se puede almacenar es 255 y que si lo incrementamos estando en 255 pasa a cero, y es a
esto a lo que se le denomina desborde.
Interrupción por desborde del timer 1 (TMR1):
El Timer1 es un temporizador/contador ascendente parecido al TMR0, pero con algunas
peculiaridades que lo hacen muy interesante a la hora de incluir temporizaciones en
nuestros programas.
La primera de ellas, es que se trata de un contador de 16 bits cuyo valor se almacena
en dos registros de 8 bits el TMR1H y el TMR1L, ambos registros se pueden leer y
escribir su valor durante la ejecución del programa.

Cuando el Timer1 está habilitado, el valor de esos registros se incrementan desde


0000h a FFFFh y una vez que llega a su máximo valor empieza otra vez desde 0
avisándonos de ello por medio de la bandera TMR1F .
Si está activa la interrupción por desbordamiento del Timer 1 al desbordarse el
contador, el programa entra en la función de tratamiento a la interrupción por
desbordamiento del Timer1.

Interrupción por TMR2 :


El Timer 2 es un temporizador de 8 bits que tiene la particularidad de tener un preescalador y
un post-escalador. Además este módulo cuenta con un registro de periodo PR2 que marca el
valor máximo que puede alcanzar la cuenta del registro TMR2. A diferencia de los otros
temporizadores, el temporizador Timer 2 no incrementa su cuenta hasta llegar a 0xFF y después
al desborde sino que incrementa su cuenta desde 0x00 con cada ciclo de instrucción hasta que
el valor del registro TMR2 coincide con el del registro PR2 y después, en el siguiente ciclo reinicia
la cuenta desde 0x00.
Interrupción del comparador:
Según la hoja de datos este PIC tiene 2 comparadores, con el registro CMCON se
multiplexar los pines de los comparadores (en el datasheet hay una tabla).
Tiene la posibilidad de usar referencia de voltaje externo o interno (usando el
módulo de voltaje de referencia).
> La señal análoga presente en VIN- es comparada con la señal aplicada a VIN+ y
la salida del comparador es una señal digital, cuando el voltaje en VIN+ es menor
que el voltaje en VIN- la salida está a nivel bajo (0) y cuando VIN+ es mayor que
VIN-, la salida esta a nivel alto (1); (la señal de salida tiene algo de incertidumbre
debido a los desplazamientos de voltaje en las entradas y el tiempo de respuesta).

> La salidas de la señal se guarda en los bit C1OUT y C2OUT del registro CMCON,
así mismo los valores en esos bit se pueden invertir poniendo a 1 los bit C1INV y
C2INV.

> Es posible provocar una interrupción cuando la salida de uno de los


comparadores cambia, para eso se debe de activar el bit CMIE del registro PIE1
(también interrupción global), echo así cuando la salida del comparador cambie, el
bit CMIF del registro PIR1 se pone a 1 y ocurre la interrupción

Interrupción del transmisor del USART


El módulo Transmisor/Receptor Universal Síncrono/Asíncrono mejorado (Enhanced
Universal Synchronous Asynchronous Receiver Transmitter – EUSART) es un
periférico de comunicación serie de entrada/salida. Asimismo es conocido como
Interfaz de comunicación serie (Serial Communications Interface – SCI). Contiene
todos los generadores de señales de reloj, registros de desplazamiento y búfers de
datos necesarios para realizar transmisión de datos serie de entrada/salida,
independientemente de la ejecución de programa del dispositivo. Como indica su
nombre, aparte de utilizar el reloj para la sincronización, este módulo puede establecer
la conexión asíncrona, lo que lo hace único para algunas aplicaciones. Por ejemplo, en
caso de que sea difícil o imposible proporcionar canales especiales para transmisión y
recepción de datos y señales de reloj (por ejemplo, mando a distancia de radio o
infrarrojas), el módulo EUSART es definitivamente la mejor opción posible.

Interrupción del receptor del USART:


Interrupción del módulo CCP :
El módulo CCP (Captura/Comparación/PWM) es un periférico que le permite
medir y controlar diferentes eventos.
El modo de captura proporciona el acceso al estado actual de un registro que
cambia su valor constantemente. En este caso, es el registro del temporizador
Timer1.
El modo de comparación compara constantemente valores de dos registros.
Uno de ellos es el registro del temporizador Timer1. Este circuito también le
permite al usuario activar un evento externo después de que haya expirado una
cantidad de tiempo predeterminada.
PWM (Pulse Width Modulation – modulación por ancho de pulsos) puede
generar señales de frecuencia y de ciclo de trabajo variados por uno o más
pines de salida.
El microcontrolador PIC16F887 dispone de dos módulos CCP – CCP1 y CCP2.

Ambos son idénticos en modo normal de funcionamiento, mientras que las


características del PWM mejorado están disponibles sólo en el modo CCP1.
Ésta es la razón por la que en este capítulo se describe detalladamente el
funcionamiento del módulo CCP1. Con respecto al CCP2, se presentarán sólo
las características que lo distinguen del CCP1.

Interrupción del EEPROM:


Es muy habitual el uso de dispositivos I2C externos tales como las memorias EEPROM.
Sin embargo, la mayoría de las rutinas I2C son secuenciales, y mantienen al micro a la
espera de finalizar la comunicación sin hacer otra cosa.

Con esta rutina el tratamiento se realiza por interrupción, con lo que nuestro micro podrá
estar atendiendo otras tareas y sólo saltar a la interrupción cuando “toque”.

La comunicación I2C permite gestionar muchos dispositivos en el mismo bus, a


vecocidades que alcanzan 400kbps, lo cual es muy versátil en nuestros diseños.

La mayoría de los compiladores tienen instrucciones que facilitan la escritura y lectura


en el bus I2C, aunque la gestión de la respuesta del periférico suele hacerse por esperas
hasta que determinado flag cambia de sentido.

El planteamiento que hago a continuación gestiona dicha comunicación tanto en lectura


como en escritura mediante una interrupción y una máquina de estados.

En el ejemplo utilizamos una memoria EEPROM 24LC256 y un dsPIC30F6014, aunque


es fácilmente extrapolable a otros sistemas.

BIT's L ó E Reset Descripción

Bit 7: GIE 1 = Todas las Interrupciones activadas


Habilitación L/E 0 0 = Todas las Interrupciones
General. desactivadas
Bit 6: EEIE 1 = Activada
L/E 0
Int. de Periféricos 0 = Desactivada
Bit 5: T0IE 1 = Activada
L/E 0
Int. del TMR0 0 = Desactivada
Bit 4: INTE 1 = Activada
L/E 0
Int. Externa 0 = Desactivada
Bit 3: RBIE 1 = Activada
L/E 0
Int. por PORTB 0 = Desactivada
Bit 2: T0IF
1 = TMR0 desbordado.
Bandera del L/E 0
0 = No se ha desbordado
TMR0.
Bit 1: INTF 1 = Ocurrió una interrupción externa
Bandera - L/E 0 0 = No ha ocurrido interrupción
RB0/INT externa
Bit 0: RBIF
1 = Al menos un pin cambio de estado
Bandera - L/E x
0 = Ningún pin ha cambiado de
RB4:RB7

Вам также может понравиться