Sie sind auf Seite 1von 4

Apuntes de Microprocesadores.

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<

!ig" #" $its para %abilitacin de interrupciones

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 15


Los restantes bits de 4>?5B> son banderas que reflejan la ocurrencia concreta de una interrupcin. ?B4D$ 4>?D y :;4D$ adquieren el valor uno cuando se generan las interrupciones por overflow en el ?):<$ una transicin alfa en :;< o un cambio de nivel en los bits altos del puerto ;$ respectivamente. Luego de atendida la interrupcin$ todas estas banderas deben colocarse en nivel cero por softEare. La figura F muestra la lgica combinacional que permite administrar este sistema de interrupciones. 4>?D 4>?E :;4D :;4E ?B4D ?B4E Aarias +E4E !ig" *" Sistema de Interrupciones en los PIC#+!), - #+C.# Las fuentes de interrupcin identificadas como 1Aarias2 en la representacin simplificada de la figura F$ se configuran a travs de dos registros$ el +4E6 y el +4EF. Los bits del +4E6 se especifican en la figura G y sus correspondientes Flags o banderas$ ubicados en el registro +4:6$ en la figura 7. PIE# RE/ISTER ()C' 8 bit@ %C4E :54E ?I4E ((+4E
55+64E ?):F4E ?):64E

04E

4nterrupciones

!ig" 0" $its para %abilitacin de interrupciones

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.

PIR# RE/ISTER (&C' 8 bit@ %C4D :54D ?I4D ((+4D


55+64D ?):F4D ?):64D

!ig" ," $its para %abilitacin de interrupciones

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.

Apuntes de Microprocesadores. Clase 15


;5L4E: Habilitacin de la interrupciones por causas de colisiones en el bus de intercone*in serial para los modos (+4 e 4F5. El bit ;5L4D se activa una colisin ocurre y el ;5L4E est& activado. 55+F4E: (u funcionamiento es an&logo al del 55+64E. La :utina de (ervicio de 4nterrupcin (4(:" es$ como su nombre indica$ una rutina que incluye el cdigo destinado a dar respuesta a la eventualidad causante de la interrupcin. Cos elementos deben estar presentes en toda 4(:: una puesta a cero ( reset" de los bits ?B4D$ 4>?D$ :;4D del registro 4>?5B> y un retorno con la instruccin :E?D4E (figura L". Lo primero se debe a que el bit se activa con la interrupcin pero no se desactiva autom&ticamente; y lo segundo encuentra ra'n en el #ec#o de que esta instruccin$ a diferencia de :E?3:>$ restaura el valor uno en 04E.

5onfiguracin general Aector de :eset: 0B?B 4nic Aector de 4nt: 0B?B 4(:

04E:N6 4>?E (%C4E$ ?B4E$ :;4E":N6

:esto del programa

4(:

5uerpo de la 4(:

4>?D (%C4D$ ?B4D$ :;4D":N<

: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.

Apuntes de Microprocesadores. Clase 15


2$* $infin +)0'(),+)0 ;1abilitaci5n de interrupciones mediante R20 ; l pro%rama principal no 8ace nada ;$olo espera interrupciones. ; sta es la +$R 0#A -(R0A,RA0 ;$e enciende la salida durante 10 ms Retardo -(R0A,RA0 ;$e apa%a la salida +)0'(),+)0* ;$e resetea el se>ali?ador de interrupci5n

)(,(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.

Das könnte Ihnen auch gefallen