Sie sind auf Seite 1von 3

.

INTERRUPCIONES EN PIC 18F4550


Universidad Politcnica De Tlaxcala Av. Universidad Politcnica No. 1 Col. San Pedro Xalcaltzinco, Tepeyanco; Tlaxcala Microcontroladores
Omar Diyarza Meza

Om.Di.Me@hotmail.com ABSTRACT: Se puede decir que para el PIC18f4550 tiene solo parte de los pines para poder hacer una interrupcin
en este documento se podr explicar brevemente lo de interrupciones no a grandes rasgos pero si expresara lo importante del tema ya antes mencionado. Interrupcin del Temporizador 3 Interrupcin del CCP2 Interrupciones Externas Los registros que intervienen para activar las interrupciones externas son: INCONT INCONT2, INCONT3, RCON, REGISTRO, INTCON GIE/GIEH: Bit de habilitacin global de las interrupciones. Su funcin depende del valor de IPEN: IPEN=0: GIE=0: Interrupciones deshabilitadas a nivel global GIE=1: Interrupciones habilitadas a nivel global , IPEN=1: TMR0IE: Bit de habilitacin de la interrupcin de desbordamiento del Temporizador 0 TMR0IE=0: Interrupcin de desbordamiento del Temporizador 0 deshabilitada TMR0IE=1: Interrupcin de desbordamiento del Temporizador 0 habilitada INT0IE: Bit de habilitacin de la interrupcin externa 0 INT0IE=0: Interrupcin externa 0 deshabilitada INT0IE=1: Interrupcin externa 0 habilitada RBIE: Bit de habilitacin de la interrupcin por cambio en el Puerto B RBIE=0: Interrupcin por cambio en el Puerto B deshabilitada RBIE=1: Interrupcin por cambio en el Puerto B habilitada EL TEMPORIZADOR 0, es configurable como contador/temporizador de 8 / 16 bits. Pre-escalar de 8 bits programable y la interrupcin se ejecuta por desbordamiento. Registro T0CON Asociado al temporizador 0 se tiene el registro T0CON. TMR0ON: Bit de puesta en marcha del Temporizador 0 T08BIT: Bit de configuracin del modo 8-bit/16-bit: T08BIT=0: Modo 16-bit T08BIT=1: Modo 8-bit TEMPORIZADOR T0 EN MODO DE 8 BITS. TEMPORIZADOR T0 EN MODO DE 16 BITS. La parte alta del TMR0 no es accesible directamente. Se accede a ella a travs de TMR0H para que funcione como buffer. Cuando se lee el valor de TMR0L, el valor de la parte alta de TMR0 pasa al TMR0H. Por tanto para leer el

INTRODUCCIN
Como parte introductoria mencionemos o definamos que es interrupcin es la suspensin de algo que se esta realizando en este caso se habla a nivel general pero para lo que vamos a utilizar interrupcin es: como un pedido de alta prioridad que un dispositivo exterior o un evento de programacin interna solicita a la CPU para ejecutar otro programa.

INTERRUCIONES:
Como se menciono en la introduccin que por interrupcin entendemos que es de alta prioridad y que el dispositivo exterior y un evento de programacin interna mandan una seal al cerebro para que esta otra ejecute otro programa. El PIC18F4550 posee 21 fuentes de interrupciones. Se distinguen dos grupos de interrupciones los cuales son los siguientes: a) Grupo general de interrupciones:

Interrupcin del Temporizador 0. Interrupcin por cambio de estado en Puertos B estos son: Puertos B.4, B.5, B.6, B.7. En este caso cualquier cambio produce la misma interrupcin. Interrupcin externa 0: Puerto B.0 Interrupcin externa 1: Puerto B.1 Interrupcin externa 2: Puerto B.2 b) Grupo de interrupciones de perifricos: Interrupcin del SPP Interrupcin del A/D Interrupcin de recepcin de la EUSART Interrupcin de transmisin de la EUSART Interrupcin del MSSP Interrupcin del CCP1 Interrupcin del Temporizador 2 Interrupcin del Temporizador 1 Interrupcin de fallo del oscilador Interrupcin del comparador Interrupcin del USB Interrupcin de escritura en FLASH/EEPROM Interrupcin de colisin del Bus (MSSP) Interrupcin de deteccin de anomalas en VDD

valor de TMR0 primero leemos TMR0L y luego leemos TMR0H. Cuando se escribe en TMR0L, el valor del registro TMR0H pasa a la parte alta de TMR0. Por tanto para escribir en TMR0 primero escribimos el valor de la parte alta en TMR0H y luego escribimos el valor de la parte baja en TMR0L. MODO TEMPORIZADOR DE 8 BITS: T08BIT (T0CON)=1/T0CS (T0CON)=0 Dos opciones: Sin pre-escalar PSA (T0CON)=0: el registro TMR0L se incrementa con cada ciclo de instruccin (FOSC/4). Con pre-escalar PSA (T0CON)=1: el contador de pre-escalar se incrementa en cada ciclo de instruccin (FOSC/4). Cuando el pre-escalar alcanza el valor programado en los bits PS2..PS0 (T0CON) produce un pulso que incrementa el registro TMR0L. Cuando se produce desbordamiento de TMR0L se pone a 1 el flag TMR0IF MODO TEMPORIZADOR DE 16 BITS: Dos opciones: Sin pre-escalar PSA (T0CON)=0: el registro TMR0 (16 bits) se incrementa con cada ciclo de instruccin (FOSC/4). Con pre-escalar PSA (T0CON)=1: el contador de pre-escalar se incrementa en cada ciclo de instruccin (FOSC/4). Cuando el pre-escalar alcanza el valor programado en los bits PS2..PS0 (T0CON) produce un pulso que incrementa el registro TMR0. Cuando se produce desbordamiento de TMR0 se pone a 1 el flag TMR0IF. Interrupcin del Temporizador 0: Flag de interrupcin: bit TMR0IF (INTCON) Bit de habilitacin: bit TMR0IE (INTCON) Prioridad: bit TMR0IP (INTCON2): 0->pr. baja/1>pr. Alta. Si se produce el desbordamiento del Temporizador 0 se pone a 1 el flag TMR0IF. Si el bit de habilitacin TMR0IE est a 1 y las interrupciones estn habilitadas a nivel global se genera una interrupcin y el uC pasa a ejecutar el cdigo situado a partir de la posicin 0008H o 0018H (segn el nivel de prioridad establecido). En modo Temporizador: El TMR0 se incrementa con cada Ciclo de Instruccin (Fos c/4) y cuando el registro se desborde provocar una interrupcin. En modo Contador: El TMR0 se incrementar con cada pulso que ingrese por el pin RA4/T0CKI, y por supuesto, cuando se desborde producir la interrupcin. T0SE es el Bit4 del Registro T0CON, en l se selecciona el flanco con el cual se incrementar el TMR0 cuando haya un pulso por RA4. Adems, el micro dispone de dos temporizadores, el TMR0 y WDT (Watchdog). El primero es el que estamos

tratando en esta seccin, el segundo es el perro guardin, lo que hace es vigilar cada cierto tiempo que el micro no se quede colgado, por ejemplo cuando se queda detenido en un bucle infinito o en una larga espera de un acontecimiento que no se produce, entonces acta reseteando al micro. El Prescalar es un pre divisor de frecuencia que se utiliza comnmente para programar tiempos largos y se puede aplicarlo al TMR0 o al WDT, esto se configura en PSA Bit3 del registro T0CON. Temporizacin con el registro TMR0L El tiempo empleado en una temporizacin se puede calcular a partir de un ciclo de instruccin (es decir 1 instruccin por cada microsegundo, al trabajar con un oscilador de 4 Mhz), tambin se necesita el valor del Divisor de Frecuencia y finalmente con el complemento del valor cargado en TMR0 (es decir 256-TMR0, si se trabaja en modo de 8 bits), la ecuacin que permite realizar el clculo es la que sigue... Tiempo = 4 * Toscilador * (256 - TMR0L) * Rango Divisor de Frecuencia De donde el 4 indica que el micro ejecuta una instruccin normal en 4 ciclos de reloj.

TEMPLATE PARA EL USO DE INTERRUPCIN RTCC MEDIANTE EL TIMER0

LA

La interrupcin RTCC se produce cada vez que el contador TIMER0 pasa de FFh a 00h. El TIMER0 hace un cmputo completo de 00h a FFh cada 512 S, sin embargo este tiempo puede ser cambiado mediante un preescaler o sea un divisor, ajustable. Los tiempos generados para cada configuracin son

2 -> 512 s al mnimo preescaler posible. 4 -> 1.0 ms 8 -> 2.0 ms 16 -> 4.0 ms 32 -> 8.1 ms 64 -> 16.3 ms 128 -> 33.3 ms 256 -> 66.6 ms al mximo preescaler posible.

El Template que propongo usa un Preescaler de 128 para producir una interrupcin RTCC cada 33.3 ms

y as cada 30 veces que se produce cambio de estado la variable Flag, o sea 33.3 x 30 = 999 ms.

GLOSARIO
WDT.-Watchdog. GIE.- interruptor global. TMR0.- Temporizador VDD.- voltaje. RBIE.- Interrupcin por cambio en el Puerto B TIMER0.- tiempo. T08BIT.- Bit de configuracin del modo 8-bit/16-bit T08BIT=0: Modo 16-bit T08BIT=1: Modo 8-bit

REFERENCIAS
Manual del PIC18F4550 datasheet de Microchip Microcontrolador PIC18F4550. Universidad Politcnica de Valencia Espaa Adaptado y preparado por: Sixto Reinoso V Web master de electromicrodigital

Das könnte Ihnen auch gefallen