TEMA 06 Interrupciones

download TEMA 06 Interrupciones

of 66

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

  • 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