0% encontró este documento útil (0 votos)
91 vistas38 páginas

C 1 Interrupciones V2

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas38 páginas

C 1 Interrupciones V2

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 38

UNIVERSIDAD NACIONAL AUTÓNOMA DE MEXICO

FACULTAD DE INGENIERÍA

Microprocesadores y Microcontroladores

Interrupciones

Dr. Saúl de la Rosa Nieves

5 de Octubre del 2019

LABORATORIO DE INSTRUMENTACIÓN ELECTRÓNICA DE SISTEMAS ESPACIALES


TEMARIO

Tema Nombre Horas

1 Introducción a los microprocesadores y microcontroladores 1


2 Arquitectura y funcionamiento de un microprocesador y de 3
un microcontrolador
3 Modos de direccionamiento y conjunto de instrucciones 6
4 Lenguaje ensamblador y programa ensamblador 4
5 Programación estructurada en lenguaje ensamblador 10
6 Puertos de entrada/salida 8
7 Programación en lenguaje C 4
8 Interrupciones y resets 4
9 Periféricos 24
TEORIA 64
Prácticas de Laboratorio 32
TOTAL 96

Microcontroladores y Microprocesadores
I. INTRODUCCIÓN

Objetivo: Aprender las diferencias entre interrupciones y reset, así


como la programación de éstos y sus aplicaciones.
Contenido:
7.1 Conceptos fundamentales de las interrupciones
7.1.1 ¿Qué es una interrupción?
7.1.2 Interrupciones enmascaradas y no enmascaradas
7.1.3 Prioridad de interrupciones
7.1.4 Servicio a las interrupciones
7.1.5 Vectores de interrupción
7.1.6 Programación de interrupciones
7.2 Resets
7.2.1 Excepciones y resets
7.2.2 Vectores de reset

Microcontroladores y Microprocesadores
CONCEPTOS GENERALES

Latencia – Tiempo que transcurre entre un estimulo y la respuesta que produce

 Tiempo que transcurre entre la entrada de una señal que solicita un servicio
y el momento en que el servicio se inicia;

En sistemas digitales la latencia incluye los retardos por hardware más los
retardos por software;

Prioridad – Determina el orden del servicio cuando dos o más solicitudes


ocurren simultáneamente;

La prioridad también determina si una solicitud de alta prioridad pude


suspender una solicitud de baja prioridad que en ese momento se este
procesando;

Microcontroladores y Microprocesadores
CONCEPTOS GENERALES

Interfaz – Dispositivo periférico que permite al microcontrolador interactuar


con un sistema externo.
Los mecanismos para sincronizar al microcontrolador con las señales de
entrada/salida de un sistema externo:

Ciclo ciego
Sondeo en espera (polling)
Interrupción

Microcontroladores y Microprocesadores
MECANISMOS PARA SINCRONIZAR CON SEÑALES EXTERNAS

Ciclo ciego – Es un método en el que el software simplemente espera una


cantidad de tiempo fija y asume que las entradas/salidas se completarán
antes de que el periodo de espera fijo se termine.

Inicio

Espera un tiempo fijo

Lee el dato

continua

Microcontroladores y Microprocesadores
MECANISMOS PARA SINCRONIZAR CON SEÑALES EXTERNAS

Sondeo en espera (polling) – Es un software cíclico que supervisa la


realización del estado de las entradas/salidas.

Inicio

Ocupado
Estatus

Listo

Lee el dato

continua

Microcontroladores y Microprocesadores
MECANISMOS PARA SINCRONIZAR CON SEÑALES EXTERNAS

Interrupción – Una entrada de hardware que causa una ejecución especial


de una rutina de servicio en software.

Inicio Disparo de Rutina de


Interrupción Interrupción

Habilitar Interrupción Almacenamiento


del estado del Lee el dato
programa principal

Programa Principal
Recuperación del Regresa a
estado del programa
programa principal principal

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

 Interrupción es la transferencia automática de la ejecución de


software en respuesta a un evento de hardware que es asíncrono con
la ejecución de software actual;

 El evento de hardware que actúa como disparador o detonador de la


interrupción se le denomina Trigger ;

 El evento de hardware puede ser una transición en un dispositivo


externo de E/S o un evento interno ( un error en bus, un error en
memoria, o un temporizador periódico);

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

Trigger CPU
“Disparo” Ejecución de programa
Evento de hardware
asíncrono a la ejecución
del programa
Transferencia de la
ejecución de software en
Evento de Hardware: respuesta al “Disparo”

a) Evento externo E/S Rutina de Servicio de


Interrupción (ISR)
b) Evento interno
- falla en el bus
- falla en memoria
- temporizador periódico

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

Trigger “Disparo” Memoria de programa


Evento de hardware asíncrono a la
ejecución del programa
Programa principal
2 registros de interrupción .
.
Interrupción 1 Habilitación
. Instrucciones
Controlador de Carga Direcciones .
Interrupción 2
Interrupciones CP
Interrupción 3 Rutina de interrupción 1
.
Selección .
.

Rutina de interrupción 2
.
.
Rutina de interrupción 3

Dirección Rutina de Interrupción 1 Dir +1

Dirección Rutina de Interrupción 2

Dirección Rutina de Interrupción 3

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

Generalmente un sistema de procesamiento de excepciones / interrupciones


contiene tres componentes:

1. Petición de Excepción/Interrupción - proveniente de fuentes de excepciones o


interrupciones.

2. Monitor y Enmascarador de Excepciones/Interrupciones – instalado en el CPU


para monitorear, habilitar o deshabilitar cualquier petición de excepción o
interrupción. Esto incluye sistemas de enmascaramiento local y global.

3. Control de Respuesta de Excepción / Interrupción - permite que el CPU


responda y maneje la excepción aceptada o petición de interrupción.

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

Máscara global
Vector de
Puerto A Interrupciones

CPU
Puerto N
Trigger
“Disparo”
Evento de hardware
asíncrono a la ejecución del
programa
A/D

Timer

Máscaras locales

Microcontroladores y Microprocesadores
HABILITACIÓN DE UNA INTERRUPCIÓN

1. Se debe habilitar la fuente de interrupción en un dispositivo – periférico

a) Cada potencial fuente de disparo de interrupción tiene su propio bit de


habilitación

2. Habilitación general de las interrupciones (Desenmascarar interrupciones)

a) En el procesador ARM Cortex-M hay un bit de habilitación todo el sistema


de interrupciones en el registro PRIMASK

 La configuración de los bits de habilitación se realiza por software;

Microcontroladores y Microprocesadores
PROCESO DE DISPARO DE INTERRUPCIÓN

REGISTRO PRIMASK
CPU controla este bit
Vectores de 0- No enmascarado
Interrupción 1- Enmascarado
Registro de control global de interrupción
Petición de interrupción
(nivel CPU) ….. I …..

F ….. …..

Registro de bandera de interrupción local


ISR El bit F se validará si la interrupción ocurre

E ….. …..
Registro de control de interrupción local
Adaptado de: Practical Microcontroller
Engineering with
ARM Technology
El bit E se puede validar por programación
Peg. 262

Microcontroladores y Microprocesadores
INTERRUPCIONES EN PROCESADORES

Para identificar exitosamente, aceptar y responder a una petición de excepción o interrupción


enviada por una dispositivo interno o externo, son necesarias las siguientes unidades de trabajo:
1. Un registro de control de excepción/interrupción, el cual esta bajo control del CPU.
a) Mediante la manipulación de ciertos bits en este registro global de control, el CPU puede
desenmascarar (habilitar) o enmascarar (deshabilitar) todas las peticiones de interrupción
enmascarables.
b) En el procesador ARMCortex-M4, el registro “Primary Interrupt Mask” (PRIMASK) es equivalente
a este registro.
2. Un registro de control local de excepción/interrupción relacionado con algunos eventos o
dispositivos asociados.
a) Ciertos bits en este registro pueden ser controlados por el programador y de esta forma
habilitar o deshabilitar la interrupción creada por el dispositivo asociado.
b) En el procesador ARM Cortex-M4, el registro “Base Priority” (BASEPRI) es equivalente a este
registro y provee la función de control de prioridad.
3. Un tabla de vectores de excepciones/interrupciones con la direcciones de las Rutinas de
Servicio de Interrupción (ISR).
a) Esta tabla de vectores es dependiente del dispositivo o dependiente de la fuente de interrupción,
lo que significa que cada fuente diferente de excepción/interrupción tiene un vector diferente y
único.
b) En el procesador ARM Cortex-M4, una tabla de vectores es provista para colectar y almacenar
las direcciones de todas las interrupciones que ocurran.
Microcontroladores y Microprocesadores
CONTROL DE INTERRUPCIONES

Fuentes de excepción-interrupción en un procesador Cortex-M

The Definitive Guide to


ARM Cortex-M3 and
Cortex-M4 Processors
Pag. 230

Microcontroladores y Microprocesadores
CONTROL DE INTERRUPCIONES

Las interrupciones en el Cortex-M están controladas por el “Nested Vectored Interrupt


Controller (NVIC)”.
Esta unidad procesa cualquier excepción o interrupción con la siguiente secuencia:
1. Una excepción o interrupción es primero creada por una fuente de
excepción/interrupción y una petición de servicio de interrupción se envía al CPU
Cortex-M4.
2. A partir del contenido del registro de enmascaramiento (PRIMASK) y el nivel de
prioridad de interrupción (BASEPRI), el CPU determinará si procesa la petición de
interrupción.
3. Si la petición de interrupción se acepta, el hardware asociado proveerá la
información relacionada con la interrupción, tal como el número de la fuente de
interrupción y la dirección en la tabla de vectores de la Rutina de Servicio de
Interrupción (ISR) asociada.
4. Antes de que el control se transfiera a la ISR, todos los registros relacionados,
incluyendo R0-R3, R12, LR, PSR, and PC, se insertarán en el stack para conservar
sus contenidos. Durante este proceso de protección, todos las otras excepciones o
interrupciones estarán enmascaradas o deshabilitadas para evitar que cualquier
dato se pierda.

Microcontroladores y Microprocesadores
CONTROL DE INTERRUPCIONES

5. El control se redirigirá a la ejecución de la ISR, cuya dirección esta almacenada en


la tabla de vectores. Durante este proceso, todas las otras interrupciones y
excepciones están desenmascaradas o habilitadas para permitir que interrupciones
o excepciones con mayor nivel de prioridad sean solicitadas y atendidas.

6. Después de que se realice la ISR y antes de que el control se pueda transferir de


regreso al programa principal,
(a) todas las otras interrupciones o excepciones se enmascaran o deshabilitan para
evitar que cualquier dato se pierda y,
(b) todos los registros protegidos en el paso 4, incluido el PC, se recuperarán
mediante su extracción del stack.

7. Entonces el control se puede dirigir al programa principal para continuar


ejecutando la aplicación normal del código en el viejo contenido de la PC. En este
momento, todas las interrupciones y excepciones son desenmascaradas o
habilitadas para permitir que cualquier interrupción o excepción sean solicitadas y
atendidas.

Microcontroladores y Microprocesadores
NVIC

 Las interrupciones en el Cortex-M están controladas por el Nested


Vectored Interrupt Controller (NVIC);

 Para activar una fuente de interrupción se requiere habilitar su fuente


en el NVIC y fijar su prioridad;

 Para habilitar la prioridad se utilizan los registros de prioridad del


NVIC;

 Cada registro contiene campos de 8 bits de prioridad para cuatro


dispositivos;

 En los microcontroladores TM4C, solo los 3 bits superiores del campo


se utilizan;

 Esto nos permite especificar el nivel de prioridad de interrupciones


desde 0 hasta 7, donde 0 es la máxima prioridad;

Microcontroladores y Microprocesadores
REGISTRO DE PRIORIDAD DE INTERRUPCIÓN

Microcontroladores y Microprocesadores
REGISTROS DE PRIORIDAD DE INTERRUPCIONES

Microcontroladores y Microprocesadores
REGISTROS DE PRIORIDAD DE INTERRUPCIONES

1. Después del reset, todas las interrupciones están deshabilitadas y tienen un


valor de nivel de prioridad igual a 0. Antes de utilizar cualquier interrupción se
necesita:
 Establecer el nivel de prioridad de la interrupción requerida (este es un paso opcional)
 Habilitar el control de generación de interrupciones en el periférico que dispara la
interrupción
 Habilitar la interrupción en el NVIC

2. En la mayoría de las aplicaciones típicas, esto es todo lo que se necesita


hacer. Cuando la interrupción se dispara, la Rutina de Servicio de
Interrupción(ISR) se ejecutará. El nombre de la ISR se puede encontrar dentro
de la tabla de vectores dentro del código “startup”, el cual es provisto por el
fabricante del microcontrolador. El nombre del ISR necesita coincidir con el
nombre utilizado en la tabla de vectores para que el enlazador pueda poner
correctamente la dirección de inicio del la ISR dentro de la tabla de vectores.

Microcontroladores y Microprocesadores
HABILITACIÓN DE INTERRUPCIONES - P.153

 Hay 5 registros de habilitación NVIC_EN0_R al NVIC_EN4_R;


 Los 32 bits en el registro NVIC_EN0_R controlan los números IRQ 0
al 31 (números de interrupción 16-47);

• Base 0xE000.E000
• Register 4: Interrupt 0-31 Set Enable (EN0), offset 0x100
• Register 5: Interrupt 32-63 Set Enable (EN1), offset 0x104
• Register 6: Interrupt 64-95 Set Enable (EN2), offset 0x108
• Register 7: Interrupt 96-113 Set Enable (EN3), offset 0x10C

Microcontroladores y Microprocesadores
TABLA DE VECTORES

1. Cuando el procesador Cortex-M acepta una petición de excepción-interrupción:

a) El procesador necesita determinar la dirección de inició del manejador de


excepción ( o ISR si la excepción es una interrupción);

b) Esta información es almacenada en la tabla de vectores en la memoria;

c) Cada excepción o interrupción tiene asociada a un vector de 32 bits que apunta a


la localidad de memoria donde se localiza su correspondiente rutina de servicio
de interrupción (ISR) que maneja la excepción;

d) Por pre configuración la tabla de vectores inicia en la dirección de memoria 0, y la


dirección de vectores esta arreglada acorde a su número de excepción
multiplicado por cuatro (ver Figura en lamina siguiente).

Microcontroladores y Microprocesadores
VECTOR TABLE AND VECTOR TABLE RELOCATION

Microcontroladores y Microprocesadores
TABLA DE VECTORES

2. La tabla de vectores esta normalmente definida en el código “startup”


proporcionado por el fabricante del microcontrolador.

3. La tabla de vectores utilizada en “startup” también contiene el valor inicial del


apuntador de stack principal (MSP). Esto es necesario porque algunas
excepciones tales como las no enmascarables (NMI) pueden ocurrir justo cuando
el procesador regrese de un reset y antes de que cualquier paso de inicialización
se ejecute.

Microcontroladores y Microprocesadores
INTERRUPCIONES EN CORTEX-M
Procesador
Cortex-M

Tiva™ TM4C1294NCPDT Microcontroller


DATA SHEET

Microcontroladores y Microprocesadores
NVIC EN PROCESADOR ARM CORTEX-M

 Los vectores están almacenados en ROM al principio de la memoria;

 Los vectores se definen en el archivo tm4c1294ncpdt_startup_ccs.c


Por ejemplo:
Localidad 0x000.0004 contiene el contador de programa inicial
→ es llamado el vector de reset
→ apunta a una función llamada “reset handler”, la cual es la primera cosa que
se ejecuta después del reset

 Desde una perspectiva de programación:


→ se puede adjuntar Rutinas de Servicio de Interrupción (ISR) a las
interrupciones mediante la escritura de las ISRs como subrutinas de
ensamblador o funciones en C sin parámetros de entrada o salida
→ y editando el archivo tm4c1294ncpdt_startup_ccs.c para especificar
aquellas funciones para su apropiada interrupción.

Microcontroladores y Microprocesadores
TABLA DE VECTORES DE INTERRUPCIÓN

Microcontroladores y Microprocesadores
TABLA DE VECTORES DE INTERRUPCIÓN - P.116
IRQ

Microcontroladores y Microprocesadores
TABLA DE VECTORES DE INTERRUPCIÓN - P.116

Microcontroladores y Microprocesadores
TABLA DE VECTORES DE INTERRUPCION

Microcontroladores y Microprocesadores
NVIC EN PROCESADOR ARM CORTEX-M

 Con ayuda de los vectores de interrupción podemos relacionar


Rutinas de Servicio de Interrupción (ISR) con interrupciones mediante
la edición del archivo tm4c1294ncpdt_startup_ccs.c, para especificar
la asociación de cada rutina con una interrupción;

En el archivo tm4c1294ncpdt_startup_ccs.c se modifican:

Y en la lista de vectores de interrupción

Microcontroladores y Microprocesadores
INTERRUPCIONES

 Una interrupción causa la siguiente secuencia de 5 eventos:


1. La instrucción actual se finaliza,
2. La ejecución del programa que se esta corriendo se suspende, se
ponen ocho registros en el stack (R0,R1,R2, R3,R12, LR, PC, y PSR
con R0 arriba). Si la unidad de punto flotante esta activa, 18 palabras
adicionales se introducen en el stack representando el estado del
punto flotante, haciendo un total de 26 palabras en el stack.
3. El LR se pone en un valor para especificar que una rutina de servicio
de interrupción (ISR) esta siendo ejecutada (bits [31:8] a 0xFFFFFF, bits
[7:1] especifican el tipo de retorno de interrupción a ejecutar, bit 0 siempre
es 1)
4. El Registro de Estado del Programa de Interrupción (IPSR) se pone
con el número de interrupción que se esta ejecutando;

5. El PC se carga con la dirección ISR (vector de dirección)

Microcontroladores y Microprocesadores
INTERRUPCIONES

I 0 I 0
RAM RAM
IPSR 0 IPSR 61
R0 viejo
R1 viejo
BASEPRI 0 BASEPRI 0 R2 viejo
R3 viejo
.
Transición .
Termina la instrucción R12 viejo
a) Guarda registros LR viejo
b) PC = 0x00000051 PC viejo
PSR viejo
c) IPSR = 61
Stack d) LR =0xFFFFFFF9
Stack

Usa MSP como


apuntador de stack

Microcontroladores y Microprocesadores
INTERRUPCIONES

 A excepción de la interrupción por SysTick, la ISR debe de limpiar la


bandera de “Trigger” que causa la interrupción (Acknowledge);

Despues de la ISR realiza el servicio requerido, esta ejecutara BX LR

Como LR contiene un valor especial (ej. 0x FFFF FFF9) esta


instrucción extrae los 8 registros del stack para controlar el programa
principal

Microcontroladores y Microprocesadores
RESUMEN INTERRUPCION

 Se deben cumplir 5 condiciones para que se ejecute una interrupción:

1. Habilitar la interrupción en el dispositivo (periférico);

2. Habilitar el NVIC;

3. Desenmascarar la interrupción global PRIMASK

4. Establecer el nivel de prioridad de la interrupción;

5. Disparar la interrupción;

Microcontroladores y Microprocesadores

También podría gustarte