Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


INTERRUPCIONES EN EL PIC, Apuntes de Microcontroladores

INTERRUPCIONES EN EL PIC18F4550

Tipo: Apuntes

2020/2021

Subido el 10/07/2021

waldir-salcedo-castillo
waldir-salcedo-castillo 🇵🇪

5

(1)

5 documentos

1 / 29

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
INTERRUPCIONES Microcontroladores
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Vista previa parcial del texto

¡Descarga INTERRUPCIONES EN EL PIC y más Apuntes en PDF de Microcontroladores solo en Docsity!

INTERRUPCIONES

Microcontroladores

INTRODUCCIÓN

o Una solicitud de interrupción (comúnmente conocida solo como interrupción) es un evento

externo o interno que cuando es atendida hace que el microcontrolador interrumpa la

ejecución del programa actual y ejecuta otro programa.

o En general cuando el programa que atiende la solicitud de interrupción termina, el

microcontrolador continua ejecutando las instrucciones del programa que estaba siendo

ejecutada antes de que ocurriera la interrupción.

o Las interrupciones son eventos asíncronos al programa que es ejecutado por el MCU.

o En un microcontrolador hay varias fuentes de interrupción, una internas y otras externas.

o Las interrupciones internas tienen su origen en los módulos de E/S del MCU; la memoria o

la CPU, temporizadores, etc.

o Las interrupciones externas se originan en un periférico y llegan al microcontrolador por

alguno de sus terminales.

o Los MCU’s tienen recursos para recibir y procesar las solicitudes de interrupción.

INTRODUCCIÓN

o Cada dispositivo que es fuente de una posible interrupción tiene asociados dos bits (Gama

media y baja) y tres bits (Arquitectura PIC 18), estos pueden estar en el mismo registros o

en distintos registros.

1. El primer bit tiene una función informativa: Es un indicador que es activado (puesto a ‘1’) por el dispositivo

que solicita la interrupción.

o Este Bit se puede consultar por el programa con el fin de atender al dispositivo. o Los bits con esta función tiene la terminación IF (Interrupt Flag).

2. El segundo bit tiene una función de control: Se usa para permitir o impedir el paso de la solicitud de

interrupción hacia la CPU, lo que equivale a habilitar o deshabilitar la interrupción, también son

denominados como mascaras.

o Este bit de control se puede manejar dentro del programa. o Los Bits que tienen esta función llevan la terminación IE (Interrupt Enable).

3. El tercer bit (exclusivo de la Familia PIC 18), se utiliza para indicar la prioridad de la interrupción.

o Este bit permite indicar la prioridad de la fuente de interrupción, se manejan dos niveles alto (Dirección 0008h) y bajo (Dirección 00018h). o Los Bits que tienen esta función llevan la terminación IP (Interrupt Priority).

INTRODUCCIÓN

o Los MCU también tiene un bit

global de control de

interrupciones.

o Este habilita o deshabilita cualquier solicitud de interrupción que llega a la CPU. o En el caso de los MCU’s PIC es el bit GIE (Global Interrupt Enable). o Este bit solo puede controlar las interrupciones enmascarables, a las que no son enmascarables ocurren aun cuando este bit esta deshabilitado.

o Cuando ocurre una interrupción lo

normal es deshabilitar el GIE hasta que

se termine el programa de la

interrupción y después se vuelva a

habilitar, esto se realiza dentro del

programa.

FUENTES DE INTERRUPCIÓN EN EL PIC 18F4520.

o En el caso del 18F4520 existen una gran variedad de fuentes de interrupción de tipo externo e interno.

o Fuentes de interrupción Internas (Enmascarables).

o Por desbordamiento de Temporizador. o TIMER 0, 1 y 3. o Por comparación del valor del temporizador. o TIMER 2. o Conversor Analógico – Digital. o Memoria EEPROM. o Detector de Voltaje Alto/Bajo (HLVD). o Fallo en el oscilador.

o Fuentes de interrupción Internas (No Enmascarables).

o Watchdog Timer. o Power On Reset. o Power Down Reset. o Brown Out Reset.

FUENTES DE INTERRUPCIÓN EN EL PIC 18F4520.

o En el caso del 18F4520 existen una gran variedad de fuentes de interrupción de tipo externo e interno.

o Fuentes de interrupción Externas (Enmascarables).

o Interrupciones externas en terminales (PORTB 0, 1 y 2). o Cambios en niveles lógicos de terminales (PORTB 4, 5, 6 y 7) o Escritura/Lectura del puerto paralelo (Modo Esclavo). o Recepción en la USART. o Transmisión en la USART. o Transmisión/Recepción del puerto serial síncrono (Modo Maestro). o Captura o Comparación de los módulos CCP (1 y 2).

o Fuentes de interrupción Externas (No Enmascarables).

o Botón de RESET.

EL PROCESO DE UNA INTERRUPCIÓN

1. Programar el MCU para reaccionar a las interrupciones.

o El MCU debe estar programado para habilitar las fuentes de interrupción a ocurrir.

o Se configura el Global Interrupt Enable (GIE) [Se habilitan en general todas las fuentes de interrupción] y

en muchos casos el Peripheral Interrupt Enable (PEIE) [Se habilitan las interrupciones proveniente de

periféricos].

o Estos dos bits se encuentran en el registro INTCON.

2. Habilitar las interrupciones desde las fuentes seleccionadas.

o Cada periférico en el MCU tiene un bit individual de habilitación.

o Un bit de habilitación individual para cada periférico debe ser activado adicionalmente al GIE y el PEIE

antes del que el periférico puede generar una interrupción.

o Los bits individuales de habilitación se encuentran en los registros INTCON, INTCON2, PIE1 y PIE2.

3. Solicitud de Interrupción de un Periférico.

o Cuando un periférico alcanza un estado donde se programa la intervención es necesario que el

periférico ponga a ‘1’ la bandera de solicitud de interrupción (Interrupt Request Flag [xxIF]).

EL PROCESO DE UNA INTERRUPCIÓN

3. Confirmación de Solicitud de Interrupción de un Periférico.

o Estas banderas de interrupción son puestas a ‘1’ a pesar de el estado de GIE, PEIE y los bits de

habilitación individuales.

o Las banderas de interrupción están localizadas en los registros INTCON, INTCON2, PIR1 y PIR2.

o La mayoría de las banderas de solicitud de interrupción son “latcheadas” en estado alto cuando son

puestas a ‘1’ y deben ser borradas por la rutina de servicio de interrupción creada por el usuario.

4. La interrupción ocurre.

o Cuando la bandera de solicitud de interrupción es puesta a ‘1’ y la interrupción esta habilitada de forma

correcta, el proceso de interrupción inicia.

  1. Interrupciones globales son deshabilitadas mediante la puesta a ‘0’ del bit GIE.
  2. El contexto (Registro W, STATUS, BSR, PCLATH, etc.) del programa actual es guardado en registros sombra.
  3. El valor del contador de programa (PC) es guardado en la pila de regreso (Return Stack).
  4. El control de programa es transferido a la dirección vector de interrupción. o En caso de no activar niveles de prioridad la dirección del vector de interrupción es 0008h. o Si se encuentran activos los niveles de prioridad la dirección del vector 0008h para las de alto nivel y 0018h para las de bajo nivel.

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros para el control de interrupciones: o GIE/GIEH – Habilitación global de interrupciones / Habilitación global de interrupciones de alta prioridad. o PEIE/GIEL – Habilitación de interrupción de periféricos / Habilitación global de interrupciones de baja prioridad. o TMR0IE – Habitación de interrupción por desborde del TIMER (Temporizador) 0. o INT0IE – Habilitación de interrupción externa 0. o RBIE – Habilitación de la interrupción por cambios en el Puerto B. o TMRIF – Bandera de interrupción por desborde del TIMER 0 (Debe ser limpiada mediante software). o INT0IF – Bandera de interrupción externa 0 (Debe ser limpiada mediante software). o RBIF – Bandera de interrupción cambios en el Puerto B (Debe ser limpiada mediante software).

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros para el control de interrupciones: o RBPU – Habilitación de Pull-Up en el Puerto B. o INTEDG0 – Selección de flanco de la interrupción externa 0. o INTEDG1 – Selección de flanco de la interrupción externa 1. o INTEDG2 – Selección de flanco de la interrupción externa 2. o TMR0IP – Nivel de prioridad de la interrupción por desborde del TIMER 0. o RBIP - Nivel de prioridad de la interrupción por cambios en el Puerto B.

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros para la habilitación de interrupciones por periféricos: o PSPIE – Habilitación de interrupción por escritura/lectura de puerto paralelo esclavo. o ADIE – Habilitación de interrupción por el convertidor analógico – digital (ADC). o RCIE – Habilitación de interrupción por recepción en USART. o TXIE – Habilitación de interrupción por transmisión en USART. o SSPIE – Habilitación de interrupción por el puerto serial síncrono maestro (MSSP). o CCP1IE – Habilitación de interrupción por el modulo CCP1. o TMR2IE – Habilitación de interrupción por comparación del TIMER 2 con el registro PR2. o TMR1IE – Habilitación de interrupción por desbordamiento del TIMER 1.

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros para la habilitación de interrupciones por periféricos: o OSCFIE – Habilitación de interrupción por falla en el oscilador. o CMIE – Habilitación de interrupción por el comparador. o EEIE – Habitación de interrupción por operación de escritura de datos en memoria EEPROM/Flash. o BCLIE – Habilitación de interrupción por colisión en BUS del MSSP. o HLVDIE – Habilitación de interrupción por detección de voltaje alto/bajo. o TMR3IE – Habilitación de interrupción por desbordamiento del TIMER 3. o CCP2IE – Habilitación de interrupción por el modulo CCP2.

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros de solicitud de interrupciones: o OSCIF – Bandera de interrupción por falla en el oscilador (Debe ser limpiada mediante software). o CMIF – Bandera de interrupción por el comparador (Debe ser limpiada mediante software). o EEIF – Bandera de interrupción por operación de escritura de datos en memoria EEPROM/Flash (Debe ser limpiada mediante software). o BCLIF – Bandera de interrupción por colisión en BUS del MSSP (Debe ser limpiada mediante software). o HLVDIF – Bandera de interrupción por detección de voltaje alto/bajo (Debe ser limpiada mediante software). o TMR3IF – Bandera de interrupción por desbordamiento del TIMER 3 (Debe ser limpiada mediante software). o CCP2IF – Bandera de interrupción por el modulo CCP2 (Debe ser limpiada mediante software).

REGISTROS USADOS EN EL PROCESO DE INTERRUPCIÓN o Registros de nivel de prioridad de interrupciones: