Interrupciones De Periféricos Internos; Interrupción Por Software (Swi); Latencia De Interrupción; Interrupciones Anidadas - Motorola HC05 Manual Del Usuario

Iniciación a los microcontroladores de las familias de 8 bits
Tabla de contenido

Publicidad

Interrupciones de Periféricos internos
Los microcontroladores incluyen a menudo periféricos internos que pueden generar interrupciones a la
CPU. El 'timer' en el MC68HC705J1A es un ejemplo de periférico. Las interrupciones de los periféricos
internos simplemente trabajan como las interrupciones externas, sólo que normalmente tienen vectores de
interrupción separados para cada sistema periférico interno.
Interrupción por Software (SWI)
La interrupción por software es una instrucción ejecutable. La acción de la instrucción SWI es similar a
las interrupciones por hardware. Una instrucción SWI se ejecuta sin tener en cuenta el estado de la máscara de
interrupción (bit I) en el registro de código de condición. La dirección del servicio de interrupción de la rutina, se
especifica por los contenidos de la posición de memoria $07FC y $07FD en un MC68HC705J1A.
Latencia de Interrupción
Aunque se piensa de las interrupciones causan la inmediata parada normal del proceso de la CPU para
responder a la demanda de una interrupción, esto realmente no es así. Hay un pequeño retardo entre que se
solicita una interrupción hasta que la CPU realmente puede responder. Primero, la CPU debe terminar cualquier
instrucción que esté en marcha en el momento de la petición de interrupción. (La CPU no sabría continuar el
proceso después de manejar la interrupción, si se hubiera detenido en el medio de una instrucción). Segundo, la
CPU debe hacer un registro de lo que estaba haciendo antes de que respondiera a la interrupción. La CPU hace
esto, guardando una copia de los contenidos de todos sus registros, incluso el contador de programa, en la pila
(stack). Después de que la interrupción se ha servido, la CPU recupera esta información en orden inverso y
continua con el proceso normal.
La latencia de la interrupción es el número total de ciclos de la CPU (tiempo) desde el inicio de la
demanda de interrupción hasta que la CPU empieza a ejecutar la primera instrucción de la rutina de servicio de
interrupción. Este retraso depende en si o no, la máscara de interrupción se pone a 1 cuando se solicita la
interrupción. Si el bit I se pone a 1, el retraso podría ser indefinido y podría depender en si de una instrucción de
puesta a 0 del bit I, para que la interrupción pueda ser reconocida por la CPU. En el caso normal, donde el bit I
está a 0 cuando se solicita la interrupción, la latencia consistirá en acabar la instrucción actual y guardará los
registros en la pila y cargará el vector de interrupción (dirección de la rutina de servicio de interrupción) en el
contador de programa.
La instrucción más larga (tiempo de ejecución) en el MC68HC05 es la instrucción multiplicación
(MUL) que necesita 11 ciclos. Si la CPU justo en el momento de empezar a ejecutar una instrucción MUL, se
solicita una interrupción, se produce un retraso de 11 ciclos antes de que pudiera responder la CPU. La CPU
necesita nueve ciclos para guardar una copia de sus registros en la pila y para sacar el vector de interrupción. La
latencia total en el peor de los casos, si el bit I está a 0 y justo empezar una instrucción MUL, será de 20 ciclos
(11 + 9).
El bit I se pone a 1 cuando la CPU responde a una interrupción, para que (normalmente) una nueva
interrupción no sea reconocida, hasta que la actual haya sido manejada. En un sistema que tiene más de una
fuente de interrupción, debe ser calculado el tiempo de la ejecución para la rutina de servicio de interrupción más
larga, para determinar la latencia de interrupción, en el peor de los casos, para otras fuentes de interrupción.

Interrupciones anidadas

En raros casos, una rutina de servicio de interrupción puede ser tan larga a ejecutar que la latencia, en el
peor de los casos, para otras interrupciones en el sistema sea demasiado tiempo. En semejante caso, las
instrucciones en la larga rutina de servicio de interrupción se puede poner el bit I a 0 y permitir así una nueva
interrupción para ser reconocida antes de que la primera rutina de servicio de interrupción se termine. Si se
solicita una nueva interrupción mientras la CPU ya está manejando una interrupción, este tipo de interrupción se
llama anidada. Se debe tener mucho cuidado si se permite una interrupción anidada porque la pila debe tener
bastante espacio para soportar más de una copia de los registros de la CPU. En los microcontroladores pequeños
como en el MC68HC05K1, la pila es pequeña y no se recomiendan las interrupciones anidadas.
47

Publicidad

Tabla de contenido
loading

Este manual también es adecuado para:

Hc08

Tabla de contenido