Programacion de Interrupciones en c

download Programacion de Interrupciones en c

of 27

Transcript of Programacion de Interrupciones en c

  • 7/23/2019 Programacion de Interrupciones en c

    1/27

    PROGRAMACIN DEINTERRUPCIONES EN C

  • 7/23/2019 Programacion de Interrupciones en c

    2/27

    INTERRUPCIONES DE LA HCS12

    En esta seccin, primeramente vamos a examdiferencia entre polling e interrupcin y luego desdiferentes interrupciones de la HCS12.

  • 7/23/2019 Programacion de Interrupciones en c

    3/27

    INTERRUPCIONES DE LA HCS12

    Interrupciones versus Polling

    Un solo microcontrolador puede servir adispositivos. Hay dos maneras de lograinterrupciones y polling. En el m!todo de interrup

    donde cual"uier dispositivo necesite servdispositivo notifica al microcontrolador mediante de una se$al de interrupcin.

  • 7/23/2019 Programacion de Interrupciones en c

    4/27

    INTERRUPCIONES DE LA HCS12

    Interrupciones versus Polling

    El programa asociado con la interrupcin se llama %&Servicio de 'nterrupcin( )siglas en ingl!s'S&* o mde interrupcin )interrupt andler*.

    En el polling, el microcontrolador continuamente monestado de un dispositivo dado cuando la condicin dse logra, desarrolla el servicio.

  • 7/23/2019 Programacion de Interrupciones en c

    5/27

    INTERRUPCIONES DE LA HCS12

    Rutina de Servicio de Interrupcin

    /ara cada interrupcin, debe de aber una rutina de seinterrupcin )'S&*, o un mane+ador de interrupcin. Cuinterrupcin es invocada, el microcontrolador corre la servicio de interrupcin. /or cada interrupcin, ay una

    fi+a en memoria "ue mantiene la direccin de inicio de lgrupo de localidades de memoria separadas para mandirecciones de los 'S&s se llama %abla de ec'nterrupcin(.

  • 7/23/2019 Programacion de Interrupciones en c

    6/27

    INTERRUPCIONES DE LA HCS12

    Interrupciones y el Registro Bandera

    Entre los bits 34 a 35 del &egistro CC&, ay dos bits "asociados con la interrupcin ' y 7. 8a bandera ' es usmascarar )ignorar* globalmente las peticiones de interrupuedan venir del pin de '&9 o de interrupciones ma

    pertenecientes a los perif!ricos. /ara permitir la peinterrupcin a trav!s del pin '&9 y perif!ricos, esta bandser borrada )':4*. Esto se logra mediante la instruccin"ue las peticiones sean ignoradas utili-amos la instruccin

  • 7/23/2019 Programacion de Interrupciones en c

    7/27

    INTERRUPCIONES DE LA HCS12

    Pasos en la ejecucin de una interrupcin

    1. Se termina de e+ecutar la instruccin actual

    2. El registro /C es empu+ado acia el Stac;

    . El registro 7 es empu+ado acia el Stac;

    ?. 8os registros 0@ son empu+ados acia el Stac;

    A. El CC& actual es empu+ado acia el Stac;5. 8a C/U busca la direccin de la rutina de servicio de interrupcin en la tabla del v

    interrupcin y coloca esta direccin en el Contador de /rograma.

    B. El bit ' del registro CC& es puesto a 1 para asegurar "ue otra interrupcin no afecmientras sirve a la peticin actual.

    . Con la nueva /C, la C/U inicia la bDs"ueda y e+ecucin de las instrucciones asointerrupcin.

    14. 8a Dltima instruccin de la 'S& debe ser &'. Se recupera lo almacenado en el St

  • 7/23/2019 Programacion de Interrupciones en c

    8/27

    INTERRUPCIONES DE LA HCS12

    Tabla de Vector de I

  • 7/23/2019 Programacion de Interrupciones en c

    9/27

    INTERRUPCIONES DE LA HCS12

    Categora de las Interrupciones

    8os siguientes son las principales categointerrupciones de la HCS12 Fascarables y Gomascarables basados en pin de ar

    Hay dos pines en la HCS12 "ue est6n asociadainterrupcin por ardIare. Estos son '&9 )interrupt 7'&9. 8a 7'&9 tambi!n se le refiere como Interrumascarable)GF'*.

  • 7/23/2019 Programacion de Interrupciones en c

    10/27

    INTERRUPCIONES DE LA HCS12

    Categora de las Interrupciones

    'nterrupcin por SoftIare )SJ'*Una 'S& puede ser llamado como resultado de la e+e

    una SJ'. Se le refiere como interrupcin por softIare

    "ue fue invocado por softIare, no por un ardIare cual"uier perif!rico.

  • 7/23/2019 Programacion de Interrupciones en c

    11/27

    INTERRUPCIONES DE LA HCS12

    Categora de las Interrupciones

    'nstrucciones de Excepcin 'nv6lida )&0/*Esta interrupcin pertenece a la categor#a de inter

    referidas como instrucciones de excepcin. 8a interrup

    excepcin son invocadas internamente por la C/U sieaya condiciones )excepciones* "ue la C/U no pueda

  • 7/23/2019 Programacion de Interrupciones en c

    12/27

    INTERRUPCIONES DE LA HCS12

    Categora de las Interrupciones

    'nterrupciones por /erif!ricosUna 'S& puede ser llamado como resultado de una

    iniciada por un dispositivo perif!rico tales como un tem

    o conversor an6logoadigital.

  • 7/23/2019 Programacion de Interrupciones en c

    13/27

    INTERRUPCIONES DE LA HCS12

    Habilitando y deshabilitando las Interrupciones

    lobal!ente

    0l reinicio, todas las interrupciones est6n desa)enmascaradas*, significando "ue ninguna

    respondida por el microcontrolador si son activadinterrupciones deben ser abilitadas por )instruccin C8'* para "ue el microcontrolador le re

  • 7/23/2019 Programacion de Interrupciones en c

    14/27

    INTERRUPCIONES DE LA HCS12

    Habilitando y deshabilitando las Interrupciones

    lobal!ente

    8a mayor#a de las interrupciones son aglobalmente )desenmascaradas* por el bit 'del

    CC&. El bit ' es el responsable de abilitaenmascarar* y desabilitar )mascarar* el '&9 y de las interrupciones de perif!ricos.

  • 7/23/2019 Programacion de Interrupciones en c

    15/27

    INTERRUPCIONES DE LA HCS12

    Habilitando y deshabilitando las Interrupciones lobal!e

    /ara abilitar la interrupcin perteneciente al bit ', tomamosiguientes pasosEl bit ' del registro CC& se debe poner a cero )4* para permitir "ue

    local de interrupcin surta efecto. Hacemos esto con la instruccin

    Si ' : 4, las interrupciones est6n desenmascaradas y ser6n respobit correspondiente en la bandera de interrupcin local est6abilitadas. Si ' : 1, ninguna interrupcin ser6 respondida, auasociado en el registro de bandera de interrupcin local est! abilit

  • 7/23/2019 Programacion de Interrupciones en c

    16/27

    PROGRAMACIN DEL TEMPORIZADOINTERRUPCIONES

    En un tema anterior discutimos cmo utiltempori-adores de la HCS12 con el m!todo de e)polling*. En esta parte utili-aremos las interrupara programar los tempori-adores de la HCS12.

  • 7/23/2019 Programacion de Interrupciones en c

    17/27

    PROGRAMACIN DEL TEMPORIZADOINTERRUPCIONES

    "sando interrupciones para volcar la bandera del te!pori#

    En tema anterior se indica "ue la bandera de desbordamtempori-ador del CG )KL* se levanta cuando el tempovuelca. En ese tema, tambi!n mostramos como monitori-arla instruccin %Iile )M )L8N2 O L8N2PKLPF0SQ**

    encuesta de KL, tenemos "ue esperar asta "ue KL se lproblema con !ste m!todo es "ue el microcontrolador est6 espera de KL, y no puede acer nada m6s. Utili-ando interresolvemos este problema y evitamos atar al microcontrolad

  • 7/23/2019 Programacion de Interrupciones en c

    18/27

    PROGRAMACIN DEL TEMPORIZADOINTERRUPCIONES

    "sando interrupciones para volcar la bandera del

    te!pori#ador

    Si la bandera de interrupcin del tempori-ador de registro SC&2 es abilitado, cada ve- "ue el temp

    se vuelca, KL se levanta, y el microcontrolinterrumpido en lo "ue est! aciendo y salta a la dRLL3E en la tabla de vector de interrupcin para 'S&.

  • 7/23/2019 Programacion de Interrupciones en c

    19/27

    PROGRAMACIN DEL TEMPORIZADOINTERRUPCIONES

  • 7/23/2019 Programacion de Interrupciones en c

    20/27

    PROGRAMACIN DE LA INTERRUPCIEXTERNA DE HARDWARE

    El HCS12 tiene dos interrupciones de hardware: IRQ y pueden utilizar como interrupciones de hardware etIRQ es una se!al de entrada a la C"# $ue puenmascarado %i&norado' y desenmascarado a tra()s dlas instrucciones C*I y SEI. Sin em+ar&o, XIRQ, $ue esuna se!al de entrada a la C"#, no puede ser enmasdesenmascarado utilizando las instrucciones C*I y SEI yraz-n se le una interrupci-n no enmascara+le %/I'.

  • 7/23/2019 Programacion de Interrupciones en c

    21/27

    PROGRAMACIN DE LA INTERRUPCIEXTERNA DE HARDWARE

    Interrupcin Externa IRQ

    El pin "EI de la HCS12 pertenece a la interrupci-n de hardwaIRQ. *a u+icaci-n 02 y 0 en ta+la de (ector de inpertenece al IRQ. El IRQ es parte del &rupo de interenmascara+les $ue se ha+ilitadas y desha+ilitadas &lo+alme+it I del re&istro CCR. 3dem4s del +it I del re&istro CCR

    de+emos ha+ilitar el IRQ de 5orma local mediante el +it IRQE dI6CR %re&istro de control I6'. El re&istro I6CR se mues7&ura. 8C-mo se acti(a9 Hay dos tipos de acti(aci-n para eacti(ado por ni(el, y %2' por anco. #tilizamos el +it IRQE dI6CR para $ue sea acti(ado por ancos o ni(el.

  • 7/23/2019 Programacion de Interrupciones en c

    22/27

    PROGRAMACIN DE LA INTERRUPCIEXTERNA DE HARDWARE

    IRQ disparado por nivel

    En el modo disparado por ni(el, el pin IRQ es normalmente alto, y suna se!al de +a;o ni(el, se dispara la interrupci-n. Enmicrocontrolador se detiene sea lo $ue est4 haciendo y salta a (ector de interrupci-n para ser(ir a la interrupci-n. Esto se interrupcin disparado por nivelo activado por nivel. *a se!al de +a

    el pin IRQ se de+e retirar antes de la e;ecuci-n de la

  • 7/23/2019 Programacion de Interrupciones en c

    23/27

    PROGRAMACIN DE LA INTERRUPCIEXTERNA DE HARDWARE

    Como se di;o antes, el +it IRQE en el re&istro I6CR detni(el o el modo de disparo por anco de la interruhardware IRQ. "or e;emplo, la instrucci-n >?SE6 11AAAAAA> o >I6CR B ACA> hace $ue IRQ ha&a lo $ueuna interrupci-n por anco, con una se!al de altoaplicado al pin IRQ interrumpir4 el controlador y lo osaltar a la posici-n 0 2 en la ta+la de (ectores ser(icio al ISR %asumiendo $ue el +it I est4 ha+ilitare&istro CCR'.

  • 7/23/2019 Programacion de Interrupciones en c

    24/27

    PROGRAMACIN DE LA INTERRUPCIEXTERNA DE HARDWARE

    XIRQ interrupcin externa XIRQ

    El pin "EA de la HCS12 pertenece a la interrupci-n de hardware etermascara+le. *as localidades de la ta+la de interrupci-n S y SD peXIRQ. El XIRQ es una interrupci-n no mascara+le y se desacti(a con reseha+ilitarlo +orrando el +it X del re&istro CCR. 3l reinicio, el +it X es 3*6F. $ue no est) disponi+le. espu)s del reinicio, cuando est4 esta+ilizado

    ha+ilitamos una sola (ez y a partir de entonces cada (ez $ue se acti(a %(a *FG' la C"# ir4 a la ta+la de (ectores para ir a +uscar la direcci-espu)s de ha+ilitar la XIRQ %X +it B A' no podemos desacti(arlo para +loy esa es la raz-n por la $ue se llama la interrupci-n no mascara+le. Concon el pin IRQ, $ue podemos utilizar el +it I para enmascarar o deseF+ser(e tam+i)n $ue a di5erencia de la IRQ, no hay necesidad delocalmente. Hay $ue destacar $ue la ha+ilitaci-n de XIRQ se hace una (tra()s del +it X del re&istro CCR. El XIRQ es disparado por ni(el solamenin&una opci-n de disparo por anco disponi+le para esta interrupci-n.

  • 7/23/2019 Programacion de Interrupciones en c

    25/27

    PRIORIDAD DE INTERRUPCIN EN HCS12

    El si&uiente tema $ue de+emos tratar es. 8Qu)si dos interrupciones se acti(an al mismo 8Cu4l de estas dos interrupciones se reprimero9 *a prioridad de Interrupci-n es el ptema de discusi-n en esta secci-n.

  • 7/23/2019 Programacion de Interrupciones en c

    26/27

    PRIORIDAD DE INTERRUPCIN EN HCS12

    Prioridad de Interrupcin en el Reset

    Cuando el HCS12 se enciende, las prioridades se asi&nan de acuerd. Esta ta+la muestra $ue el pin de reset de hardware tiene la prioalta. e la ta+la (emos tam+i)n, por e;emplo, $ue si las interruhardware eterno XIRQ y IRQ se acti(an al mismo tiempo, la XIRQ primero. S-lo despu)s $ue XIRQ ha sido atendida es ser(ida la I

    tiene la prioridad m4s +a;a. e hecho, todas las interrupciones aso+it I tienen la prioridad m4s +a;a $ue XIRQ. En realidad, el esprioridades en la ta+la no es m4s $ue una secuencia de (eri7caci-nla $ue la HCSI2 encuestas las interrupciones en el orden indicado enresponde en consecuencia.

  • 7/23/2019 Programacion de Interrupciones en c

    27/27

    PRIORIDAD DE INTERRUPCIN EN HCS12

    Ajuste de prioridad de interrupcin con el registro H

    o podemos alterar la prioridad asi&nada a las priminterrupciones mostradas en la ta+la. Eso si&ni7ca XImenos prioridad $ue el reset en todo momento. Sin podemos cam+iar la prioridad asi&nada a la IRQ y los peEsto se realiza mediante la pro&ramaci-n de un re&istroH"RIF %prioridad de interrupci-n m4s alta de ES'. muestra los +its en el re&istro H"RIF. 3l resta+lecimencendido, el re&istro H"RIF contiene (alor 02, haciendoprioridad m4s alta entre los peri5)ricos. "ara dar unprioridad a al&uno de los peri5)ricos, car&aremos el (alomostr- en la ta+la anterior en el re&istro H"RIF.