Interrupciones del microcontrolador PIC16F877A PDF

Title Interrupciones del microcontrolador PIC16F877A
Author julio espino
Course Microcontroladores
Institution Instituto Tecnológico de Toluca
Pages 27
File Size 1.4 MB
File Type PDF
Total Downloads 19
Total Views 130

Summary

Tipos de interrupciones del microcontrolador ...


Description

S.E.P.

S.E.S.T.N.M.

INSTITUTO TECNOLÓGICO DE TOLUCA

Materia: Microcontroladores

Alumno: Espino Cid Julio César

Maestro: Dr. Sergio Diaz Zagal

Interrupciones del PIC 16F877A.

Unidad 3

Semestre: Agosto-Diciembre 2020

Tec.N.M.

Interrupciones del microcontrolador PIC16F877A Interrupción Una interrupción, como el nombre lo sugiere, es un evento que hace que el microcontrolador deje de realizar lo que está haciendo y pase a ejecutar otra tarea. Al finalizar retorna a su actividad inicial. Las

interrupciones

PIC

ocurren

por

sucesos externos como la generación de una interrupción por flanco PIC, una interrupción externa PIC cambiando el nivel en un PIN del microcontrolador o eventos

internos

desbordamiento terminación

del

tales de

un

conversor

como

el

contador, análogo

a

digital, entre otras. El comportamiento del microcontrolador ante la interrupción es similar al procedimiento que se sigue al llamar una función desde el programa principal. En ambos casos se detiene la ejecución del programa en curso, se guarda la dirección a donde debe retornar cuando termine de ejecutar la interrupción, atiende o ejecuta el programa correspondiente a la interrupción y luego continúa ejecutando el programa principal, desde donde lo dejo cuando fue interrumpido. Hay dos tipos de interrupciones posibles, una es mediante una acción externa (es decir por la activación de uno de sus pines), y la otra es interna (por ejemplo, cuando ocurre el desbordamiento de uno de sus registros). Al aceptarse una interrupción se salva el valor del PC contador de programa en la pila y se carga aquel con el valor 0004h, que es el vector de interrupción.

Interrupciones del PIC16F877A El microcontrolador PIC16F877A tiene la particularidad de manejar 13 fuentes de interrupciones los de 28 pines y 14 los de 40 pines. 1. Activación de la patita de interrupción RB0/INT. 2. Desbordamiento del timer 0 (TMR0). 3. Cambio de estado de estado lógico en el puerto B (pines RB7 a RB4). 4. Finalización de la escritura de un byte en la EEPROM. 5. Desbordamiento del timer 1 (TMR1). 6. Desbordamiento del timer 2 (TMR2). 7. Captura o comparación en el módulo CCP1. 8. Captura o comparación en el módulo CCP2. 9. Transferencia en la puerta serie Síncrona. 10.Colisión de bus en la puerta serie Síncrona. 11. Fin de la transmisión en el USART. 12.Fin de la recepción en el USART. 13.Fin de la conversión en el convertidor A/D.

 Interrupción externa PIC RB0/INT En esta interrupción es necesario activar algunos bits de registros internos del PIC, teniendo en cuenta que se tienen 2 bancos (banco 0 el banco 1). Del banco 0 se ocupará el registro INTCON y del banco 1 el registro OPTION.

El registro OPTION cuenta con 8 bits, de los cuales sólo se requiere activar el bit INTEDG.

Lo que significa:  INTEDG: flanco activo interrupción externa. 

1 - la interrupción se producirá en el flanco ascendente.



0 - la interrupción se producirá en el flanco descendente.

Ahora bien, los bits que se requieren activar en el registro INTCON son los bits GIE, INTE y INTF

Donde:  GIE: (Habilita las interrupciones globalmente). Este bit permite que cualquier interrupción sea posible. Para poder usar cualquier interrupción hay que habilitarla global e individualmente.  INTE: Permiso de interrupción por activación de la patilla RB0/INT 

1 - permite la interrupción



0 - prohíbe la interrupción

 INTF: bit de señalización (solo lectura) de interrupción externa RB0/INT.

 Interrupción por cambio lógico en el puerto B (RB7 - RB4) Un cambio de estado en cualquiera de los pines de RB7 a RB4 genera una interrupción y hace que la bandera RBIF del registro INTCON tome un valor de 1. Esta interrupción puede habilitarse/deshabilitarse con el bit RBIE del registro INTCON.

Para esta interrupción solo se necesita el registro INTCON ya que en este se encuentran los tres bits que serán activados, los cuales son el bit GIE, el RBIE y el RBIF.

Donde:  GIE: Permiso global de interrupción. 

1 – Permite todas las interrupciones cuyos bits particulares de permiso lo permitan.



0 – Prohíbe todas las interrupciones

 RBI: Permiso de interrupción por cambio de estado en RB7:RB4 

1 – Permite la interrupción



0 –Prohíbe está interrupción

 RBIF: Señalización ó flag por cambio de estado de las patillas RB7:RB4. 

1 – indica que la interrupción se ha producido.



0 – indica que no se ha activado.

 Interrupción por desbordamiento del timer 0 (TMR0) El módulo del temporizador Timer0 es un temporizador/contador de 8 bits con las siguientes características: 

Temporizador/contador de 8 bits.



Pre-escalador de 8 bits (lo comparte con el temporizador perro guardián).



Fuente de reloj interna o externa programable.



Generación de interrupción por desbordamiento.



Selección del flanco de reloj externo programable.

Cuando los pulsos se reciben de una fuente externa a través del PIN RA4/TOCKI se le llama contador. A continuación, se muestran los pines utilizados en un PIC16F84, aunque podría ser otro cualquiera ya que este temporizador viene incorporado en todos los PIC.

 RA4/TOCKI: cuando el temporizador trabaje como contador, los pulsos externos los recibirá a través de esta patilla.  OSC1/CLKIN y OSC2/CLKOUT: son para conectar el oscilador que nos determinará a la frecuencia que va a trabajar nuestro PIC, los dos tipos de osciladores más usados son el XT (cristal de cuarzo) y el RC (resistencia y condensador). Los registros que serán ocupados para esta interrupción serán TMR0 y INTCON del banco 0 y OPTION del banco 1.

El registro TMR0 es un registro del que podemos leer el valor del contador en tiempo real, pero también podemos escribir en él y alterar el valor de conteo. En el registro OPTION, los bits TOCS, TOSE, PSA, PS2, PS1 y PS0 son los que están implicados en la configuración del TIMER0.

 PS0, PS1 y PS2: Configuración del preescaler. El preescaler es un divisor de pulsos que está a la entrada del Timer-contador. El prescaler divide el número de pulsos que le entran al timer-contador o al Wachtdog. El factor de división es el siguiente (según los valores de PS2, PS1 y PS0 respectivamente.

 PSA: Bit de asignación de prescaler. Si está a "1" el prescaler se asigna a WDT (Wachtdog), si está a "0" se asigna al TMR0.  TOSE: Bit de selección del tipo de flanco para el TMR0. A "1" se incrementa TMR0 por flanco descendente de RA4, a "0" se incrementa TMR0 por flanco ascendente de RA4.

 TOCS: Selecciona la entrada de reloj de TMR0. A "1" la entrada de reloj de TMR0 es por flanco de la patilla RA4, a "0" la entrada de reloj de TMR0 es por ciclo de reloj interno. Cuando se produce una interrupción por desbordamiento de TMR0, el programa abandona temporalmente lo que estaba haciendo para dirigirse a la subrutina de interrupción. Al igual que en la interrupción anterior, se necesita el registro INTCON y sus bits asignados para crear la interrupción.

Donde:  TOIF: solo se puede leer su valor, es un Flag o bandera que se pone a “1” cuando se produce un desbordamiento del TMR0, (este o no este configurado para producir una interrupción). Cuando se trabaja en Ensamblador, este bit hay que ponerlo a "0" por programa, mientras que con CCS no es necesario.  TOIE (Habilita la interrupción por desbordamiento de TMR0). Si este bit está a "1" la interrupción por desbordamiento de TMR0 es posible.  GIE (Habilita las interrupciones globalmente). Este bit permite que cualquier

interrupción

sea

posible.

Para

poder

usar

cualquier

interrupción hay que habilitarla global e individualmente. Para saber el momento en se genera la interrupción a causa del desbordamiento de TMR0 se puede utilizar la siguiente formula:

 Interrupción por desbordamiento del timer 1 (TMR1) El timer 1 puede funcionar de 3 modos diferentes:

1. TEMPORIZADOR: Este modo se determina escribiendo un “0” lógico en el bit TMR1CS del registro T1CON. 2. CONTADOR ASÍNCRONO: Este modo se determina escribiendo un “1” lógico en los bits TMR1CS y T1SYNC del registro T1CON. 3. CONTADOR SÍNCRONO: Este modo se determina escribiendo un “1” lógico en el bit TMR1CS y un “0” lógico en el bit T1SYNC, ambos en el registro T1CON. Cuando se pasa desde FFFFh a 0000h se produce un desbordamiento en TMR1,

generando

una

interrupción.

En

esta

situación

se

pone

automáticamente a 1 el flag TMR1F, que es el bit 0 del registro especifico PIR1, que está ubicado en la dirección 0Ch de la RAM. El permiso o prohibición de la producción de interrupción del TMR1, está controlada por el bit TMR1IE, que ocupa la posición de menos peso del registro especifico PIE1 (8Ch).

Los pasos que se deben llevar acabo para configurar el TMR1 son los siguientes: 1. Deshabilitar la Interrupción GLOBAL (para evitar Interrupciones falsas).

2. Configurar la Fuente de reloj para el TIMER1 a través del bit 3. Configurar el Prescaler a través de los bits T1CKPS1:T1CKPS0. 4. Seleccionar el modo Síncrono o Asíncrono (solo en modo Contador). 5. Poner en Marcha el TIMER1 escribiendo en el bit TMR1ON. 6. Escribir en los registros TMR1H:TMR1L para configurar el Tiempo de Interrupción. 7. Habilitar la Interrupción por Desbordamiento escribiendo el bit TMR1IE. 8. Habilitar la Interrupción GLOBAL (GIE y PEIE).

 Interrupción por desbordamiento del timer 2 (TMR2) El timer 2 es un temporizador ascendente de 8 bits, que se puede leer y escribir, y que también puede realizar funciones especiales para la Puerta Serie Síncrona (SSP) y con los módulos de captura y comparación. Está ubicado en la dirección 11h del mapa de los registros específicos. Para controlar el funcionamiento del TMR2 se usa el registro T2CON, que ocupa la dirección 12h del mapa de los registros específicos. La distribución y asignación de los bits del registro T2CON es la siguiente:

Así mismo, el timer 2 tiene la capacidad de producir una petición de interrupción colocando un 1 en el bit TMR2IE de habilitación, que reside en el registro PIE1 (8Ch). Dicho registro tiene la siguiente asignación de bits:



Captura o comparación en el módulo CCP1

Cuando CCP1 está en modo captura y se pone a 1 el bit CCP1IE (bit 2) del registro PIE1, se producirá una interrupción. Las interrupciones no deseadas pueden producirse al cambiar el valor del pre-escalador. Para evitarlo, el módulo CCP1 debe estar apagado temporalmente antes de cambiar el valor del pre-escalador.

Donde:  CCP1IE - CCP1 Interrupt Enable bit (bit de habilitación de la interrupción del módulo 1 de Comparación/Captura/PWM - CCP1) permite generar una petición de interrupción en el módulo CCP1 utilizado para procesamiento de la señal PWM. 

1 - Habilita la interrupción CCP1.



0 - Deshabilita la interrupción CCP1.

Para evitar que se genere la interrupción, se deben poner a 0 tanto el bit que habilita la interrupción CCP1IE, como el bit de bandera CCP1IF (bit 2) ubicada en el registro PIR1.

Donde:  CCP1IF - CCP1 Interrupt Flag bit (bit de bandera de la interrupción del módulo 1 de Comparación/Captura/PWM (CCP1). 

1 - Se ha cumplido la condición de la interrupción del CCP1 (CCP1 es una unidad para captar, comparar y generar una señal PWM).



0 - No se ha cumplido la condición de la interrupción del CCP1.

 Captura o comparación en el módulo CCP2 Al igual que el módulo CCP1, este módulo funciona de manera similar puesto en modo normal. La única diferencia que existe entre los 2 módulos es el funcionamiento en modo de comparación del módulo CCP2. Para generar una interrupción en el módulo CCP2, se deberá colocar un 1 el bit CCP2IE (bit 0) del registro PIE2.

Donde:

 CCP2IE - CCP2 Interrupt Enable bit (bit de habilitación de la interrupción del módulo 2 de Comparación/Captura/PWM (CCP2) 

1 - Habilita la interrupción del CCP2.



0 - Deshabilita la interrupción del CCP2.

Para evitar la interrupción, se debe colocar un 0 tanto en el bit que habilita la interrupción CCP2IE, como el bit de bandera CCP2IF (bit 0) ubicada en el registro PIR2.

Donde:  CCP2IF - CCP2 Interrupt Flag bit (bit de la interrupción del módulo 2 de Comparación/Captura/PWM - CCP2) 

1 - Se ha cumplido la condición de la interrupción del CCP2 (CCP2 es una unidad para captar, comparar y generar una señal PWM).



0 - No se ha cumplido la condición de la interrupción del CCP2.

 Finalización de la escritura de un byte en la EEPROM Para generar una interrupción de escritura en la memoria EEPROM, se debe poner en 1 el bit EEIE (bit 4) del registro PIE2.

Donde:

 EEIE - EEPROM Write Operation Interrupt Enable bit (bit de habilitación de la interrupción de escritura en la memoria EEPROM) 

1 - Habilita la interrupción de escritura en la memoria EEPROM.



0 - Deshabilita la interrupción de escritura en la memoria EEPROM.

Así mismo, el bit de la bandera de interrupción de la operación de escritura en la memoria EEPROM EEIF (bit 4), está ubicado en el registro PIR2.

Donde:  EEIF - EE Write Operation Interrupt Flag bit (bit de bandera de la interrupción de la operación de escritura en la memoria EEPROM) 

1 - La operación de escritura en la memoria EEPROM se ha completado. El bit debe ponerse a cero por software.



0 - La operación de escritura en la memoria EEPROM no se ha completado o todavía no se ha iniciado.

 Transferencia en la puerta serie Síncrona Para generar una interrupción por transferencia en el puerto de serie síncrono, se debe colocar a 1 el bit SSPIE (bit 3) ubicado en el registro PIE1.

Donde:  SSPIE - Master Synchronous Serial Port (MSSP) Interrupt Enable bit (bit de habilitación de la interrupción del puerto serie síncrono maestro (MSSP) habilita generar una petición de interrupción después de cada transmisión de datos por el módulo de comunicación serie síncrona (modo SPI o I2C). 

1 - Habilita la interrupción del MSSP.



0 - Deshabilita la interrupción del MSSP.

Así mismo, el bit de la bandera de interrupción de puerto serie síncrono SSIF (bit 3), está ubicado en el registro PIR1.

Donde:  SSPIF - Master Synchronous Serial Port (MSSP) Interrupt Flag bit (bit de bandera de la interrupción de puerto serie síncrono maestro) 

1 - Se ha cumplido la condición de ocurrir una interrupción del MSSP al transmitir/ recibir los datos. Difieren dependiendo del modo de operación del MSSP (SPI o I2C). El bit debe ponerse a cero por software antes de volver de la rutina de servicio de interrupciones)



0 - No se ha cumplido ninguna condición de ocurrir una interrupción del MSSP.

 Colisión de bus en la puerta serie Síncrona Para generar una interrupción por colisión de bus, se debe colocar a 1 el bit BCLIE (bit 3), ubicado en el registro PIE2.

Donde:  BCLIE - Bus Collision Interrupt Enable bit (bit de habilitación de la interrupción de colisión de bus) 

1 - Habilita la interrupción de colisión de bus.



0 - Deshabilita la interrupción de colisión de bus.

Así mismo, el bit de la bandera de interrupción por colisión de bus BCLIF (bit 3), está ubicado en el registro PIR2.

Donde:  BCLIF - Bus Collision Interrupt Flag bit (bit de bandera de la interrupción de colisión de bus en el MSSP) 

1 - Se ha producido una colisión de bus en el MSSP al ser configurado para el modo maestro I2C. El bit debe ponerse a cero por software.



0 - No se ha producido colisión de bus en el MSSP.

 Fin de la transmisión en el USART Para generar una interrupción de transmisión USART, se debe colocar en 1 el bit TXIE (bit 4) del registro PIE1.

Donde:  TXIE - EUSART Transmit Interrupt Enable bit (bit de habilitación de interrupciones de transmisión del EUSART). 

1 - Habilita la interrupción de transmisión del EUSART.



0 - Deshabilita la interrupción de transmisión del EUSART.

Así mismo, el bit de la bandera de interrupción por transmisión del USART TXIF (bit 4), está ubicado en el registro PIR1.

Donde:  TXIF - EUSART Transmit Interrupt Flag bit (bit de la interrupción de transmisión del EUSART) 

1 - El búfer de transmisión del EUSART está vacío. El bit se pone a cero al escribir un dato en el registro TXREG.



0 - El búfer de transmisión del EUSART está lleno.

 Fin de la recepción en el USART

Para generar una interrupción de recepción del USART se debe colocar a 1 el bit RCIE (bit 5) ubicado en el registro PIE1.

Donde:  RCIE - EUSART Receive Interrupt Enable bit (bit de habilitación de interrupciones de recepción del EUSART). 

1 - Habilita la interrupción de recepción del EUSART.



0 - Deshabilita la interrupción de recepción del EUSART.

Así mismo, el bit de la bandera de interrupción por recepción del USART RCIF (bit 5), está ubicado en el registro PIR1.

Donde:  RCIF - EUSART Receive Interrupt Flag bit (bit de bandera de la interrupción de recepción del EUSART) 

1 - El búfer de recepción del EUSART está lleno. El bit se pone a cero al leer el registro RCREG.



0 - El búfer de recepción del EUSART no está lleno.

 Fin de la conversión en el convertidor A/D Para generar interrupciones en el convertidor A/D, se debe colocar en 1 el bit ADIE (bit 6) del registro PIE1.

Donde:  ADIE - A/D Converter Interrupt Enable bit (bit de habilitación de interrupciones del convertidor A/D). 

1 - Habilita la interrupción ADC.



0 - Deshabilita la interrupción ADC.

Así mismo, el bit de la bandera de interrupción del convertidor ADIF (bit 6), está ubicado en el registro PIR1.

Donde:  ADIF - A/D Converter Interrupt Flag bit (bit de bandera de la interrupción del convertidor A/D) 

1 - Se ha completado una conversión A/D (el bit debe volverse a 0 por software)





0 - No se ha completado una conversión A/D o no ha empezado

Ejemplos  Interrupción externa PIC RB0/INT

;---------------Encabezado------------LIST P=16F84

#include

;-------Configuración de puertos------ORG 0x00 GOTO

inicio

ORG 0x04 GOTO

ISR

ORG 0X05 inicio BSF MOVLW MOVWF

STATUS,RP0 0x01 TRISB

BCF OPTION_REG,6

; configurando puertos ; carga w con 0000 0001 ; RB0/INT es entrada

; seleccionamos flanco descendente

BCF STATUS,RP0 ;-------Habilitación de interrupciones-------

BSF INTCON,GIE ; habilitamos todas las interrupciones BSF INTCON,INTE ; que sean interrupciones externas CLRF PORTB ; limpio el puerto B sueño SLEEP GOTO

...


Similar Free PDFs