Beruflich Dokumente
Kultur Dokumente
Clase 15
INTERRUPCIONES El proceso de entrada de datos en un sistema digital regularmente se implementa a travs de dos procedimientos: polling o encuestas e interrupciones. En las encuestas el procesador escruta peridicamente y segn una secuencia preestablecida el estado de todos los perifricos que dependen del sistema; detenindose cuando es necesario a generar las respuestas o procedimientos que sean requeridos en cada caso. La situacin equivale a la de un docente que cesa en el flujo normal de una clase magistral para verificar ( alumno por alumno!" si alguien tiene alguna duda o desea #acer una acotacin. Luego reanuda su clase magistral$ pero de cuando en cuando repite el procedimiento. %lgunos de los asistentes a las clases tendr&n participaciones$ preguntas y aportes importantes$ pero la mayor parte de las veces$ slo unos pocos tendr&n algo que decir$ por lo que resulta una prdida de tiempo y esfuer'o para el docente cuestionarlos a todos individualmente. (e trata pues para el procesador$ de una forma poco eficiente de lograr la interaccin con los perifricos. )uc#o m&s eficiente es el procedimiento conocido como interrupciones. En este caso el procesador no se ocupa de los perifricos #asta tanto$ de manera e*cepcional$ alguno requiera su atencin. +ara tal evento$ un subprogrma especial tiene preparado el algoritmo o solucin particular para solventar la emergencia o requerimiento del perifrico que solicita atencin$ se satisface la circunstancia y luego se contina con la labor principal que estaba en curso previamente. (iguiendo con la analog,a de la clase magistral el docente (procesador" se mantiene en el #ilo de su discurso #asta que un alumno (perifrico" levanta la mano para #acer una pregunta o plantear una necesidad (interrumpe". El docente suspende moment&neamente su clase$ enuncia la respuesta o aclaratoria preparada (subprograma especial" y luego prosigue con su clase retomando el punto en el que la dej suspendida. Es obvio que este procedimiento es muc#o m&s eficiente pues se dirigen los esfuer'os slo donde se los requiere y si la necesidad llega a plantearse. - .qu pasa si suceden varias solicitudes de interrupcin simult&neamente/ Entonces aplica la m&*ima del sabio alem&n 0oet#e: 1Lo que importa m&s nunca debe estar a merced de lo que importa menos2. 3n criterio de jerarqui'acin debe privar al momento de decidir a cu&l dispositivo o perifrico es necesario atender primero$ luego podr& continuarse con aquellos que siguen en orden de importancia. El sistema de interrupciones de los PIC El sistema de interrupciones de los +45 de la gama media (instrucciones de 67 bits" es bastante simple. (e prevn catorce causas posibles para originarlas$ de las cuales las m&s comunes son: 8 8 8 8 3na se9al e*terna introducida a travs de :;<=4>? 5olmado (Overflow" en la cuenta del ?):< ?ransiciones en los bits :;@8:;7 5uando se culmina el proceso de conversin analgico digital
+ara toda eventualidad se tiene definido un Aector de interrupciones en la posicin cuatro (7" de la memoria de programa. 5uando ocurre una interrupcin se culmina la ejecucin de la instruccin en proceso$ se guarda en el Stack la direccin de la instruccin que queda suspendida y se carga el +5 con cuatro. El diseador debe grabar en esa localidad un GOTO a la direccin donde inicia la Rutina de Servicio de Interrupcin (ISR . Las interrupciones son atendidas si previamente se #an activado el bit 04E de 4>?5B> y el bit correspondiente al tipo de interrupcin por la cual se toma previsin. Los bits$ resaltados en la figura 6$ son: 8 8 8 8 +E4E: 4nterrupciones de mdulos 1perifricos2 (EE+:B)$ %C5$ 3(%:?$ etc." ?B4E: 4nterrupciones por desbordamiento del ?):<. 4>?E: 4nterrupciones e*ternas a travs del pin :;<. :;4E: 4nterrupciones por cambio de nivel en los bits :;@8:;7. INTCON (&$'( )$'( #&$'( #)$' 04E bit@ +E4E ?B4E 4>?E :;4E ?B4D 4>?D :;4D bit<
Wilmer Sanz F.
04E
4nterrupciones
bit<
%C4E: Habilitacin de interrupciones del 5onvertidor %nalgico=Cigital. El bit %C4D del +4:6 se activa cuando culmina una conversin y genera una interrupcin si el %C4E est& activado. :54E: Habilitacin de interrupciones por recepcin de la 3(%:?. El bit :54D del +4:6 se activa cuando el buffer de la 3(%:? est& lleno y genera una interrupcin si el :54E est& activado. ?I4E: Habilitacin de interrupciones por transmisin de la 3(%:?. El bit ?I4D del +4:6 se activa cuando el buffer de la 3(%:? est& vac,o y genera una interrupcin si el ?54E est& activado. ((+4E: Habilitacin de interrupciones por transmisin=recepcin del puerto para modos de intercone*in serial. El bit ((+4D del +4:6 se activa cuando #a ocurrido una operacin de comunicacin serial (+4 o 4F5. 55+64E$ ?):F4E$ ?):64E: Habilitacin de interrupciones por causa delo mdulo 55+6 (5aptura$ comparacin y +J)" y los ?imers F y 6. Los bits correspondientes del registro +4:6 se activan cuando #an ocurrido las condiciones culminantes en el funcionamiento del mdulo 55+6 y los ?imers 6 y F.
bit<
Las restantes causas de interrupcin se #abilitan en el registro +4EF (KCH" y se concretan con la activacin de las correspondientes banderas del registro +4:F (<CH". Ellas son: EE4E: Habilitacin de interrupciones por culminacin del proceso de escritura en la memoria de datos EE+:B). El bit EE4D del +4:F se activa cuando culmina la escritura de en la EE+:B) de datos si el EE4E est& activado.
Wilmer Sanz F.
5onfiguracin general Aector de :eset: 0B?B 4nic Aector de 4nt: 0B?B 4(:
4(:
5uerpo de la 4(:
:E?D4E
!ig" 4" Elementos b5sicos de un programa con Interrupciones - de una ISR E1emplo" 2ane1o de Interrupciones e3ternas En el siguiente ejemplo se utili'a al +456MDK@@ como un monostable que genera una ventana de 6ms cuando se introduce una se9al de disparo a travs del terminal :;<. ?al se9al genera una interrupcin que es atendida llamando 6< veces a la rutina de retardo implementada en el ejemplo anterior con el ?):<. ;***************************************************************** ;*** Monostable con salida de 1ms, basado en interrupciones *** ;***************************************************************** #include p16f877.inc ; Definiciones particulares RA0 !" 0#0 ;$alida del %enerador de pulso. &&'()*+, &'-&(** . &/D0&(** . &-/R0 &() . &1$&($'. &2(D )&() (R, 0#3 ,(0( +$R (R, 0#0 ,(0( Main Main (R, 2$* ;4ector de interrupci5n ;4ector de Reset ; n 10 inicia el pro%rama principal
0#10 $0A0"$,R-0 ;$e esco%e el banco 1 ;para confi%urar M(46/ b7111111107 ;-ro%ramaci5n del -uerto A M(4/* 0R+$A M(46/ 0#7 M(4/* AD'()1; )o 8a9 entradas anal5%icas M(46/ 0#** M(4/* 0R+$2 M(46/ 0#37 ;-ull:up;s del -uerto 2 8abilitadas 9 0imer0 prescalado por <=6. M(4/* (-0+()&R , 2'* $0A0"$,R-0 ;$e esco%e el banco 0 para operar 2$* +)0'(),,+ ;1abilitaci5n de las +nterrupciones
Wilmer Sanz F.
)(,(0( $infin (R, 0#100 M(46/ 2$* 'A66 2'* 2'* R 0*+
+$R
;*** Rutina de Retardo *** Retardo M(46/ M(4/* 'iclo 20*$$ ,(0( 2'* R 0"R) 0#@D 0MR0 +)0'(),0(+* 'iclo +)0'(),0(+*
6ctividades sugeridas7 8 (imule el programa ejemplificado en el )+L%; y utilice los est,mulos as,ncronos para implementar la entrada en el bir :+<. $ibliogra89a 8 )icroc#ip ?ec#nology 4nc. (F<<6". PIC#+!).: ;ata S%eet. EEE.micro#ip.com OEn l,neaP Qltimo acceso: <68<M8F<<K 8 5riollo$ B. (6RRK". <aboratorio de 2icroprocesadores. 3niversidad de 5arabobo
Wilmer Sanz F.