INTERUPCIONES Álvaro Patricio Velasco Velasco Vasco Vasco e-mail:
[email protected]
Ingeniería Mecatrónica, Séptimo nivel, niversidad de las !uer"as #rmadas $SP$-$%tensión &atacunga, Mar'ue" de Maen"a S() &atacunga, $cuador. !ec*a de presentación: ++ de iciemre del +/0 •
RESUMEN: El manejo de interrupciones es una de las caract caracterí eríst stica icas s más apreci apreciada adas s y útiles útiles de los microc microcont ontrol rolado adores res PIC, PIC, debido debido a que en cualqu cualquier ier instante en el cual se encuentre corriendo un programa y se produzca una interrupción, esta lo enviará a un subprograma para luego retornar a donde se quedó Es importa rtante !amiliariza izarse con el manejo de interrupciones, ya que nos evita poder manejar muc"os tipos de eventos sin estar pendientes de ello
• • • • • • • •
En el presente trabajo se describirán las instrucciones necesarias necesarias para "abilitar "abilitar las interrupci interrupciones, ones, así como una una desc descri ripc pció ión n de que que puer puerto tos s del del PIC# PIC#$% $%$& $&'( '( soportan interrupciones
#un'ue el PI4 cuenta con / 1uentes distintas de interrupción solamente tiene un vector de interrupción por por lo 'ue 'ue si se *ai *aililita tan n vari varias as inte interr rrup upci cion ones es al mome moment nto o de pres presen enta tars rse e cual cual'u 'uie iera ra de ella ellass el programa saltara a la misma rutina de interrupción 2 es responsailidad del programador crear una rutina 'ue identi1i'ue la 1uente de la interrupción.
PALABRA PALABRAS S CLAVE CLAVE:: Vecto ectore ress de inte interr rrup upci ción ón,, 1lancos positivos 2 negativos ABSTRACT: 3*e interrupt *andling is one o1 t*e most popular and use1ul 1eatures o1 PI4 microcontrollers, ecau ecause se at an2 an2 inst instan antt in 5*ic 5*ic* * 2ou 2ou are are runn runnin ing g a program program and an interrupt interrupt occurs, t*is 5ill send 2ou to a suroutine and t*en return to 5*ere 2ou remained.
2 MANEJO DE INTERRUPCIONES $%isten aplicaciones en donde un evento es mu2 impo import rtan ante te aten atende derl rlo, o, por por e8em e8empl plo o cuan cuando do alg algn n disp dispos osititiv ivo o inte intent nta a comu comuni nica cars rse e con con el PI4, PI4, en un sist sistem ema a de segu seguri rida dad d en dond donde e una una "ona "ona es m9s m9s importante 'ue las dem9s "onas o como el e8ercicio anterior en donde cada segundo envía un pulso SAB, podríamos utili"ar este pulso para indicar al PI4 'ue dee leer los nuevos datos ;segundo, minutos, *ora, etc.<.
In t*is t*is pape paperr t*e t*e nece necess ssar ar22 inst instru ruct ctio ions ns to ena enale le inte interr rrup upts ts,, and and a desc descri ript ptio ion n o1 port portss supp suppor orte ted d PI4/6!6+7# interruptions interruptions 5ill e descried. KEY WORDS: WORDS: Interrupt Interrupt vectors, positive edges and negative.
1 INTRODUCCIÓN
&as declaraciones declaraciones necesarias necesarias para mane8ar mane8ar una interrupción son las siguientes:
na interrupción es un evento 'ue *ace 'ue el microc microcont ontrol rolado adorr de8e de8e de e8ecut e8ecutar ar la tarea tarea 'ue est9 est9 reali"ando para atender dic*o acontecimiento 2 luego regrese 2 contine la tarea 'ue estaa reali"ando antes de 'ue se presentara la interrupción.
ON INTERRUPT INTERRUPT GOTO prog2 prog2C 'uiere decir en caso de darse una interrupción suspender el programa actual e ir a prog+. DISABLE; DISABLE; sirve para des*ailitar la interrupción, en caso de 'ue no deseemos 'ue atienda la inte interr rrup upci ción ón,, como como por por e8em e8empl plo o cuan cuando do 2a est9 est9 atendiendo una interrupción.
$l PI4 /6!6+7 ;2 el /6!6+7#< tiene / 1uentes de interrupción, si las interrupciones est9n *ailitadas cada ve" 'ue una de estos acontecimientos se presente el PI4 de8ar9 de e8ecutar el programa para ir a atender la inte interr rrup upci ción ón 2 al térm términ ino o de la mism misma a cont contin inua uar9 r9 e8ecut e8ecutand ando o el progra programa ma donde donde lo *aía *aía de8ado de8ado.. &as 1uentes de interrupción son: •
Interrupción por camio lógico en el puerto > ;pines =>? a =>0< Interrupción por desorde del timer ;3M=< Interrupción por desorde del timer / ;3M=/< Interrupción por comparación e%itosa en 3M=+ Interrupción del comparador Interrupción del transmisor del S#=3 Interrupción del receptor del S#=3 Interrupción del módulo 44P Interrupción del $$P=M
RESUME; e'uivale RESUME; e'uivale al =$3=) de un DS>, en donde retorna retorna a la línea del programa programa en donde ocurrió la interrupción.
Interrupción e%terna =>(I)3
1
ENABLE; 'uiere decir *ailitar nuevamente la interrupción, después de esto todas las interrupciones, son atendidas.
' EJEMPLOS Programa para manejar una interrupción en el puerto )* por medio de un pulsador+
$l registro I)34) contiene las anderas de interrupciones generadas por di1erentes eventos. 3amién contiene los its de *ailitación gloal 2 particular de las distintas 1uentes de interrupciones.
&$ V#= P=3>./ &$+ V#= P=3>.+ ) I)3$==P3 D3 verde C en caso de e%istir una interrupción ir a verde I)34) E H// C*ailita la interrupción >. P=D: Cprograma principal FIDF &$ Cencender el led ro8o P#S$ + &B &$ P#S$ + D3 P=D Cmantener en este la"o IS#>&$ Cdes*ailita las interrupciones en el *andler verde: C*andler de la interrupción FIDF &$+ P#S$ + &B &$+ I)34) E H// C*ailita la interrupción >. =$SM$ Cretorna a programa principal donde ocurrió la inte. $)#>&$ CFailita las interrupciones después del *andler $)
Figura 1. Bits del registro INTCON
B! " GIE: ;Dloal Interrupt $nale< it de *ailitación gloal de interrupciones. / E Failita las interrupciones. E In*ie todas las interrupciones. Se pone a cero cuando se reconoce una interrupción ;para evitar interrupciones anidadas< 2 a / cuando se vuelve de su rutina de servicio. B! # PEIE: ;Perip*eral Interrupt $nale< it de *ailitación de interrupciones de peri1éricos. / E Failita las interrupciones desde los peri1éricos. E In*ie las interrupciones desde los peri1éricos. ;G< $n M4 con un solo peri1érico puede ser $$I$ o #I$ B! $ T%IE: ;3imer ver1lo5 Interrupt $nale< it de *ailitación del 3imer . / E Failita la interrupción con el desordamiento del 3imer . E In*ie la interrupción con el desordamiento del 3imer .
Figura 2. Interrupción el en puerto b.0
B! & INTE: ;I)3 $%ternal Interrupt $nale< it de *ailitación de interrupción desde el pin de entrada I)3. / E Failita la interrupción. E In*ie la interrupción.
Para modi1icar el 1lanco por el cual se va a activar la interrupción, en este caso camiar a 1lanco de a8ada se dee aadir la siguiente línea después del I)34):
B! ' RBIE: ;=> Port 4*ange Interrupt $nale< it de *ailitación de interrupción con el camio de =>?:=>0 / E Failita la interrupción. E In*ie las interrupción.
OPTION_R!."#0
Siendo 'ue > no es el unico puerto 'ue puede mane8ar interrupciones, tamien podemos *ailitar el reconocimiento de interrupciones desde el puerto >0 *asta el >?, así: Solamente camiando las + líneas 'ue dicen I)34)EH// por I)34)EH//
B! 2 T%I(: ;3imer ver1lo5 Interrupt !lag< / E Interrupción producida por el desordamiento del 3imer ;dee ser puesto a cero por SB<. E $l 3imer no se *a desordado. B! 1 INT(: ;I)3 $%ternal Interrupt !lag<. / E Interrupción producida por I)3 ;dee ser puesto a cero por SB<. E I)3 no *a interrumpido la M4.
& CONCLUSIONES
B! % RBI(: ;=> Port 4*ange Interrupt !lag< / E Interrupción producida por el camio en alguno de los its =>?:=>0 ;dee ser puesto a cero por SB<. E =>?:=>0 no *an interrumpido la M4.
2
$l mane8o de las interrupciones en el PI4 es de gran a2uda 2 utilidad, deido a 'ue podemos controlar algunos procesos alternos sin 'ue estar preocupados de ellos, claro est9, una ve" 'ue tengamos nuestras líneas de programación ien estructuradas.
4ada it del comando I)34) *ailita o modi1ica el tipo de interrupción de las / 'ue puede mane8ar el PI4/6!6+7#, siendo los puertos aptos para esto el > 2 desde el >0 *asta el >?, adem9s de los timmers con los 'ue cuenta el pic.
$l tiempo de pausa entre mostrar un nmero 2 el otro en cada displa2 dee estar en el orden de los milisegundos, para no notar ningn parpadeo en el displa2.
$ RE(ERENCIAS J/K #ngulo . L =omero . J+6K. Microcontroladores PI4: diseo pr9ctico de aplicaciones. Segunda parte. $spaa. McDra5-Fill. isponile en: *ttp:((e"p/.espe.edu.ec:+N(li(espesp(docetail.actionO docIE/0/G+QpEmicrocontroladores J+ ogan, Ira*im. J+7K. Programación de microcontroladores PI4. $spaa. Marcomo. isponile en: *ttp:((e"p/.espe.edu.ec:+N(li(espesp(docetail.actionO docIE/+/+N/?QpEmicrocontroladores JGK #nónimo. J+7K. Mane8o de Interrupciones en los Microcontroladores. 4ircuitoselectronicos.or' J$n &ineaK. isponile en: *ttp:((555.circuitoselectronicos.org(+//(G(mane8o-deinterrupciones-en-los.*tml
3