Upload
karito
View
225
Download
0
Embed Size (px)
Citation preview
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.