TEMA 06 Interrupciones
-
Upload
ricardo-elizalde -
Category
Documents
-
view
227 -
download
0
Transcript of TEMA 06 Interrupciones
-
8/17/2019 TEMA 06 Interrupciones
1/66
Tema 6
INTERRUPCIONES
-
8/17/2019 TEMA 06 Interrupciones
2/66
Microcontroladores: Tema 6
2
Interrupciones
• Las interrupciones incrementan la eficiencia de unsistema permitiendo que un dispositivo de
Entrada-Salida “reclame” un servicio cuandorequiere atención inmediata. Los programas pueden ser escritos sin necesidad de checar
continuamente sus puertos “polling”.
Ronald L. Baldrige“Interrupts and Power, Complexity to uC-System Design”
D! "ol. ## !o $%. &ugust ', $())
-
8/17/2019 TEMA 06 Interrupciones
3/66
Microcontroladores: Tema 6
3
Interrupciones
• Una interrupción es una llamada a unasurutina iniciada por hard!are interno o
e"terno• Las e"cepciones “e"ceptions” son
interrupciones provocadas por el #$U para
indicar una condición e"traordinaria comouna división entre cero etc..
-
8/17/2019 TEMA 06 Interrupciones
4/66
Microcontroladores: Tema 6
4
Interrupciones% &enta'as sore $olling
*&I! &+ B+ *&I! &+ B+ *&I! &+ B+ *&I! &+ B+
PRCB
PRC&
& & B &
(iempo
-
8/17/2019 TEMA 06 Interrupciones
5/66
Microcontroladores: Tema 6
5
*&I! * *&I!
ISR
&
& & B &
ISR
&
ISR
B
ISR
&
(iempo
Interrupciones% &enta'as sore $olling
-
8/17/2019 TEMA 06 Interrupciones
6/66
Microcontroladores: Tema 6
6
)$orqu* interrupción+
• #oordinación de actividdades de entrada salida
• $rocesos cr,ticos en tiempo como el salvamento de
variales en una falla de energ,a etc.• orto “gracioso” del programa a'o condiciones
anómalas de operación
• eali/ar actividades per,odicas como la
actuali/ación de un (# o el muestreo de una se0alanalógica.
-
8/17/2019 TEMA 06 Interrupciones
7/66
Microcontroladores: Tema 6
7
“Enmascaramiento” de
interrupciones• El enmascaramiento o “mas1ing” permite
ignorar las interrupciones
• El estado normal despues de un reset estipicamente tener las interrupciones inactivaso deshailitadas
• E"istes generalmente una interrupciónindividual por fuente de interrupción 2 unageneral que hailita o deshailita todas lasinterrupciones.
-
8/17/2019 TEMA 06 Interrupciones
8/66
Microcontroladores: Tema 6
8
$rioridad
• Si mas de una interrupción ocurre al mismotiempo3 la prioridad permite definir cual
interrupción ser4 e'ectudada primero.• La prioridad puede dedinir tami*n si una
interrupción en servicio puede serinterrumpitda por una de menor prioridad.
• El $I#56 mane'a tres niveles%
7 8inguna3 alta 2 a'a
-
8/17/2019 TEMA 06 Interrupciones
9/66
Microcontroladores: Tema 6
9
$riori/ación de Interrupciones
• 9currencia de eventos simult4neos
"! &
"! B
PRIRID&D "! & / "! B
*&I!
ISR&
ISRB
*&I!
*&I!
ISRB
ISR&
*&I!
ISRB
-
8/17/2019 TEMA 06 Interrupciones
10/66
Microcontroladores: Tema 6
10
Servicio de la interrupción
• El #$U le da servicio a la interrupcióne'ecutando una sección de código asociado a
la interrupción.• Se le conoce como rutina de servicio de
interrupción o IS
• #omo al finali/ar la interrupción se dee deregresar al flu'o normal del programa3 sedeen de reali/ar acciones especiales.
-
8/17/2019 TEMA 06 Interrupciones
11/66
Microcontroladores: Tema 6
11
cciones al e'ecutar una interrupción
• Salvamento del contador del programa :$#;
• Salvamento de registros especiales :como el
-
8/17/2019 TEMA 06 Interrupciones
12/66
Microcontroladores: Tema 6
12
cciones al e'ecutar una interrupción
• estaurar el estado del #$U :regresando losvalores originales de los registros
importantes;• estalecer el contador de programa despues
de la >ltima instrucción e'ecutada
• #ontinuar con el flu'o del e'ecución del programa.
-
8/17/2019 TEMA 06 Interrupciones
13/66
Microcontroladores: Tema 6
13
&ector de Interrupción
• El $I#56 utili/a el esquema de vector predefinido.
• Es una dirección de la memoria de programaasignada a la interrupción :o grupo deinterrrupciones; relacionadas
• En el vector de interrupción tipicamente sealmacena una instrucción de salto o ladirección espec,fica donde reside lasuturina de servicio.
-
8/17/2019 TEMA 06 Interrupciones
14/66
Microcontroladores: Tema 6
14
&ector de Interrupción
• El $I#56 utili/a el esquema de vector predefinido.
• Es una dirección de la memoria de programaasignada a la interrupción :o grupo deinterrrupciones; relacionadas
• En el vector de interrupción tipicamente sealmacena una instrucción de salto o ladirección espec,fica donde reside lasuturina de servicio.
-
8/17/2019 TEMA 06 Interrupciones
15/66
Microcontroladores: Tema 6
15
&ector de Interrupción
-
8/17/2019 TEMA 06 Interrupciones
16/66
Microcontroladores: Tema 6
16
&ector de Interrupción
0X0000
ISR
MAIN
RESET
0X0008
EVENTO
1
2
3 4
5
-
8/17/2019 TEMA 06 Interrupciones
17/66
Microcontroladores: Tema 6
17
&ector de Interrupción
• &arias interrupciones puede compartir elmismo vector de interrupción
• Si este es el caso3 en la surutina de IS seidentifica el origen de la fuente 2 se e'ecutael proceso relacionado con esa interrupciónen particular
-
8/17/2019 TEMA 06 Interrupciones
18/66
Microcontroladores: Tema 6
18
$rogramación de una interrupción
• Escritura del IS
7 Es como cualquier otra surutina pero serecomienda sea lo m4s corta posile :prender
una andera3 incremenar un contador o transferirun dato;
• Iniciali/ar el vector de interrupción
• ?ailitación de interrupción 7 E"isten andeas para hailiar en forma
individual las interrupciones 2 una andera dehailitación general
-
8/17/2019 TEMA 06 Interrupciones
19/66
Microcontroladores: Tema 6
19
Latencia de interrupción
*&I! *&I!
ISR
&
&
(iempo
Li L0
Latencia
-
8/17/2019 TEMA 06 Interrupciones
20/66
Microcontroladores: Tema 6
20
eset
• Es una forma de interrupción que coloca al procesador en un estado conocido
inclu2endo el contador de programa• Las fuentes de reset son
7 @aual mediante se0al ESE(
7 $9 7 9tros
-
8/17/2019 TEMA 06 Interrupciones
21/66
Microcontroladores: Tema 6
21
Interrupciones
• Se cuenta con 5A registros para controlar laoperación de las interrupciones%
-
8/17/2019 TEMA 06 Interrupciones
22/66
Microcontroladores: Tema 6
22
Interrupciones
• En general las interrupciones tienenasociados A its para controlar su operación
7 Blag Cit% Indica que el evento de interrupciónocurrió
7 Enale Cit% $ermite que el control del programa“rinque” al vector de interrupción cuando la
andera est4 encendida. 7 $rorit2 Cit% $ara seleccionar si es de alta o a'a
prioridad
-
8/17/2019 TEMA 06 Interrupciones
23/66
Microcontroladores: Tema 6
23
Interrupciones SI8 prioridad
• $ara tener compatiilidad con dispositivos derango medio3 al apagar el it I$E8 :registro
#98; todas las interrupciones tendr4n lamisma prioridad 2 rincar4n al vectorlocali/ado en la dirección D"DDD6
-
8/17/2019 TEMA 06 Interrupciones
24/66
Microcontroladores: Tema 6
24
Interrupciones #98 prioridad
• Se activa encendiendo el it I$E8 :registro#98;
• Las de alta 2 a'a prioridad pueden serhailitdas 2 deshailitdas por grupo de prioridad aparte de en forma individual
• $ara alta prioridad el vector es D"DDD6• $ara a'a prioridad el vector es D"DD56
-
8/17/2019 TEMA 06 Interrupciones
25/66
Microcontroladores: Tema 6
25
9peración de interrupciones
• #uando se responde a una interrupción3autom4ticamente se deshailitan en forma
gloal el resto de las interrupciones pero puede volverse a hailitar por código.
• Las interrupciones de alta prioridad puedeninterrumpir a las de a'a priorida
• Las interrupciones de a'a prioridad no son procesadas mientras se e'ecute una de alta prioridad
-
8/17/2019 TEMA 06 Interrupciones
26/66
Microcontroladores: Tema 6
26
9peración de interrupciones
• La dirección de retorno se almacena en elstac1 :pila;
• El contador de programa :$#; es cargadocon la dirección D"DDD6 o D"DD56
• Una ve/ dentro del IS se puede determinar
el causante espec,fico de la interrupciónindagando las anderas en los registrosI8(#98" 2 $I"
-
8/17/2019 TEMA 06 Interrupciones
27/66
Microcontroladores: Tema 6
27
9peración de interrupciones
• La andera que generó la interrupción deede ser limpiada por el usuario para evitar que
la interrupción se vuelva a e'ecutar al salirdel IS
• La instrucción E(BIE :eturn BromInterrupt; re-hailita las interrupciones ;
• $ar eventos e"ternos :I8(" o $9(C; lalatencia de la interrupión ser4 de entre dos otres ciclos de instrucción
-
8/17/2019 TEMA 06 Interrupciones
28/66
Microcontroladores: Tema 6
28
Inportante
-
8/17/2019 TEMA 06 Interrupciones
29/66
Microcontroladores: Tema 6
29
Lógica de interrupción
-
8/17/2019 TEMA 06 Interrupciones
30/66
Microcontroladores: Tema 6
30
egistros
• I8(#98% #ontienen its de hailitación3 prioridad 2 anderas de interrupción
• $I% Canderas de interrupción de los perif*ricos :$I5 a $I;
• $IE% Cits de hailitación de las
interrupciones de los perif*ricos• I$%#ontienen los its de control de
prioridad :cuando activo I$E8;
-
8/17/2019 TEMA 06 Interrupciones
31/66
Microcontroladores: Tema 6
31
-
8/17/2019 TEMA 06 Interrupciones
32/66
Microcontroladores: Tema 6
32
-
8/17/2019 TEMA 06 Interrupciones
33/66
Microcontroladores: Tema 6
33
-
8/17/2019 TEMA 06 Interrupciones
34/66
Microcontroladores: Tema 6
34
-
8/17/2019 TEMA 06 Interrupciones
35/66
Microcontroladores: Tema 6
35
-
8/17/2019 TEMA 06 Interrupciones
36/66
Microcontroladores: Tema 6
36
-
8/17/2019 TEMA 06 Interrupciones
37/66
Microcontroladores: Tema 6
37
-
8/17/2019 TEMA 06 Interrupciones
38/66
Microcontroladores: Tema 6
38
-
8/17/2019 TEMA 06 Interrupciones
39/66
Microcontroladores: Tema 6
39
-
8/17/2019 TEMA 06 Interrupciones
40/66
Microcontroladores: Tema 6
40
-
8/17/2019 TEMA 06 Interrupciones
41/66
Microcontroladores: Tema 6
41
-
8/17/2019 TEMA 06 Interrupciones
42/66
Microcontroladores: Tema 6
42
-
8/17/2019 TEMA 06 Interrupciones
43/66
Microcontroladores: Tema 6
43
Interrupciones en $I#56
• (res asignadas a un puerto3 se0ales son I8(Da I8(F. Se puede configurar con flanco
positivo o negativoFALLING
EDGE
RISING
EDGE
-
8/17/2019 TEMA 06 Interrupciones
44/66
Microcontroladores: Tema 6
44
Interrupciones en $I#56
• #amio en cualquiera de las se0alesasociadas al puerto $9(CG# cuando esasse0ales han sido configuradas como entrada
• Interrupciones del tempori/ador (@D
• Interrupciones generadas por los perif*ricosinternos del microcontrolador3 la ma2or,a de
los perif*ricos tienen asociada unainterrupción.
-
8/17/2019 TEMA 06 Interrupciones
45/66
Microcontroladores: Tema 6
45
$rogramación de interrupcionesen lengua'e # :#ompilador #56;
• La declaración de la interrupción de mane'ode la interrución se reali/a por medio deHpragma
• eido a que e"isen interrupciones de alta 2 a'a prioridad se requiere hacer lassiguientes declaraciones%
El #pragma antecede a un directivo de compilador quees particular a un CPU determinado o sistemaoperativo
-
8/17/2019 TEMA 06 Interrupciones
46/66
Microcontroladores: Tema 6
46
-
8/17/2019 TEMA 06 Interrupciones
47/66
Microcontroladores: Tema 6
47
-
8/17/2019 TEMA 06 Interrupciones
48/66
Microcontroladores: Tema 6
48
goto startup
goto 1ig12priority2ISR
goto low2priority2ISR
main
D"DDD6
D"DD56
1ig12priority2ISR
low2priority2IS
R
-
8/17/2019 TEMA 06 Interrupciones
49/66
Microcontroladores: Tema 6
49
Salvamento de conte"to
• l ocurrir una interrupción el $I#56 salvaautom4ticamente
-
8/17/2019 TEMA 06 Interrupciones
50/66
Microcontroladores: Tema 6
50
$rogramación de Interrupción
compilador K#6• El compilador K#6 facilita la definición de las
rutinas de interrupción.
• Casta declarar dos funciones con la siguienteestructura para la atención de alta 2 a'a prioridad
-
8/17/2019 TEMA 06 Interrupciones
51/66
Microcontroladores: Tema 6
51
eset
-
8/17/2019 TEMA 06 Interrupciones
52/66
Microcontroladores: Tema 6
52
eset
-
8/17/2019 TEMA 06 Interrupciones
53/66
Microcontroladores: Tema 6
53
eset
-
8/17/2019 TEMA 06 Interrupciones
54/66
Microcontroladores: Tema 6
54
Supervisorios de volta'e
-
8/17/2019 TEMA 06 Interrupciones
55/66
Microcontroladores: Tema 6
55
-
8/17/2019 TEMA 06 Interrupciones
56/66
Microcontroladores: Tema 6
56
Supevisorio mi"to
Mi t l d T 4
-
8/17/2019 TEMA 06 Interrupciones
57/66
Microcontroladores: Tema 4
57
Canda (ransportadora
CONTROLADORBASADO EN PIC18
MOTOR
SENSOR
BOTON DE ARRANUE
TORRETA
CONTENEDOR
Mi t l d T 4
-
8/17/2019 TEMA 06 Interrupciones
58/66
Microcontroladores: Tema 4
58
Canda (ransportadora
• El programa de control deer4 de reali/ar losiguiente%
7 Esperar el otón de arranque 7 #ontar el n>mero de ca'as
7 Si el n>mero llega a un @KI@9 parar la
anda transportadora
• Encender una torreta
• Esperar de nuevo el otón de arranque.
Microcontroladores Tema 4
-
8/17/2019 TEMA 06 Interrupciones
59/66
Microcontroladores: Tema 4
59
Canda (ransportadora
• Se0ales en sensores 2 actuadores :lasentradas ser4n configuradas como
interrupción;.
RB0 !INT0"
BOTON
PRESIONADO#1$
#0$
RD0
#1$
#0$
MOTOR
ENCENDIDO
RB2 !INT2"
#1$
SENSOR
CA%A PRESENTE
RD1
TORRETA
ENCENDIDA
#1$
#0$ #0$
DETECTAREMOS
TRANSICI&N
POSITIVA
-
8/17/2019 TEMA 06 Interrupciones
60/66
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
61/66
Microcontroladores: Tema 6
61
E'emplo
• #onfigurar I8(D para generar interrupciónen transición positiva :terminó de pasar laca'a;
• #onfigurar I8(F para generar interrupciónen transición positiva :depresión del otón;
• suma que no e"iste ninguna otra
interrupción dada de alta en el sistema
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
62/66
Microcontroladores: Tema 6
62
#ompilador #6
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
63/66
Microcontroladores: Tema 6
63
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
64/66
Microcontroladores: Tema 6
64
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
65/66
Microcontroladores: Tema 6
65
Microcontroladores: Tema 6
-
8/17/2019 TEMA 06 Interrupciones
66/66
Microcontroladores: Tema 6