Introducción
Las
interrupciones y el reset son responsables de eventos excepcionales durante la
ejecución del programa. Si el reset se reinicializa el MCU regresa a sus
condiciones iniciales. Una interrupción posiciona el contador del programa en
un servicio de rutina.
Resets |
Efectos |
Un reset regresa inmediatamente el MCU a sus condiciones
iniciales ya conocidas y empieza la ejecución del programa desde una
localidad de memoria definida por el
usuario. |
El reset : ¢
Inmediatamente para las instrucciones de las operaciones
que estén siendo ejecutadas. ¢
Inicializa obviamente los bits de control y de estado. ¢
Carga el contador de programa con el vector de reset
definido por el usuario localizado en la dirección $FFFE y $FFFF. Selecciona CGMXCLK dividido por cuatro como el bus de
reloj. |
Reset externo |
Reset interno |
Un cero lógico aplicado
al pin RST por un tiempo tIRL genera un reset externo. |
Casos: ¢ Por el encendido (POR) ¢ La computadora operando apropiadamente (COP) ¢ Por falta de voltaje ¢ Por un código ilegal ¢ Por una dirección ilegal Todos los resets
internos causan un cero en el pin de RST durante 32 ciclos del CGMXCLK para
permitir también el reset externo. El MCU esta ligado al reset por un ciclo
adicional del 32 CGMXCLK después de abandonar al pin RST. |
EL reset de inicio Este es un reset interno causado por una
transición positiva en el pin de VDD. El VDD en el POR debe de ir completamente a 0 volts
para resetear el MCU. Esta es la diferencia entre el reset y el POR. El POR no
es un detector de tierra, bajos voltajes o interrupciones. El POR:
1.
Mantiene el reloj del
CPU y los módulos inactivos por un retraso del tiempo en la estabilización del
reloj del ciclo del 4096 CGMXCLK
2.
Lleva a cero el pin RST
durante la estabilización del oscilador.
3.
Abandona el pin de RST
después de la estabilización del oscilador del 32 CGMXCLK
4.
Abandona el CPU para
empezar la secuencia del vector de reset 64 CGMXCLK después de la
estabilización del oscilador.
5.
Introduce el POR y LP
al registro de estado y limpia todos los demás bits en el registro.
Reset por un
código ilegal |
Reset por una
dirección ilegal |
SIM (reset por
registro de estado) |
Reset por medio de
bajo voltaje |
EL reset del COP |
Este es causado por una código de alguna operación que no
se encuentre en el set de instrucciones. Un código ilegal coloca en el ILOP
en el registro de estado. Si el
bit de habilitación es activado, en el registro se coloca un cero lógico,
esta instrucción causa un reset de código ilegal. |
Este es causado por un codigo de operación direccionado
hacia una dirección no valida. Este tambien coloca el ILAD bit en el registro
de estado. Un dato cargado de una dirección no valida no genera un
reset. |
Este registro solo lee el contenido de las banderas para
mostrar el estado del reset. Todos los bits de las banderas se limpian
automáticamente según la lectura del registro. El servicio del reset puede
leer el estado de registro SIM, para
limpiar el registro después del reset encendido y determinar cualquier reset subsiguiente. El registro es inicializado con un encendido con el bit POR y
todos los demás bits limpios. Durante un POR o cualquier reset interno, el
pin de RST se pone en cero. Después que el pin es abandonado, será ejemplificado
después de un ciclo del 32 CGMXCLK, si el pin no está sobre el VIH
al mismo tiempo, quizá sea agregado el SRSR en éste pin o cualquiera de los
otros bits. Nota: Sólo una lectura del reset SIM limpia todas las
banderas del reset. Después de múltiples resets de diferentes fuentes sin
tener que leer el registro, muchas banderas permanecen. |
Este es causado por una caída de voltaje en la
alimentación hacia el voltaje LVItripf. El
reset LVI: Mantiene el reloj del CPU y los
módulos inactivos durante la estabilización del oscilador del 4096 CGMXCLK,
después del que el voltaje se eleva. Coloca un bajo en el pin RST
mientras el VDD esta por debajo de LVItrif Deja que el CPU comience con la
secuencia del vector después de estabilizarse el oscilador. Coloca el bit de LVI en el registro de estado. |
Este es causado por una sobresaturación en el contador del
COP. Este reset asigna el bit del COP al modulo de registro del sistema y
resetea los estados del registro. Para limpiar el contador del COP y prevenir este reset, se
escribe cualquier valor al registro de control del COP localizado en $FFFF. |
Que es?
|
Efectos |
Una interrupción temporalmente cambia de ejecución del
programa para responder a un evento particular. Una interrupción no detiene
la operación de la instrucción que esté siendo ejecutada, pero comienza
cuando la instrucción actual es completada. |
Una interrupción: 1.
Salva el registro del CPU en memoria. Al final de la
interrupción, la instrucción del RTI recupera los registros del CPU del
espacio de memoria y así poder seguir
con el proceso normal. 2.
Coloca las máscaras de las interrupciones (I bit) para
prevenir interrupciones adicionales. Una vez que la interrupción es cargada,
ninguna otra interrupción puede tomar precedencia sin importar su prioridad. 3.
Carga el contador del programa con el vector de la
dirección definida por el usuario . |
Después de cada instrucción, el CPU checa todas las
instrucciones pendientes si el bit I no está colocado. Si una o más
interrupciones están pendientes cuando una instrucción es completada la
interrupción por mayor prioridad es realizada primero. En el ejemplo que se
muestra en la figura 4-5, si una interrupción está pendiente por encima del
servicio de rutinas la interrupción pendiente es realizada antes de que la
instrucción LDA sea ejecutada.
El comando LDA es precargado por las
instrucciones INT1 y el INT2 RTI . Como sea, en el caso de un INT1 RTI precargado, esto es una
operación redundante. Nota: Para mantener la compatibilidad con la
familia de M6805, el registro H no es cargado en el espacio de memoria durante
la entrada de una interrupción .Si la rutina de servicio de interrupción
modifica el registro H o usa las direcciones indexadas, salva el registro H y
luego recupera su prioridad en la rutina existente.
Instrucción SWI |
Interrupción de ruptura |
Pin IRQ |
CGM |
TIM1 |
TIM2 |
La interrupción por software (SWI) causa una interrupción
no enmascarada. Nota: Una
interrupción por software coloca al PC dentro del espacio de memoria. Ésta
interrupción no coloca un PC=1, como la interrupción por hardware lo hace. |
El módulo de ruptura causa que el CPU sea ejecutado en una
instrucción del SWI en el punto de
ruptura el software programable. |
Un 0 lógico en el
pin de IRQ1 carga una petición de interrupción externa. |
El CGM puede generar una petición de interrupción del CPU
cada vez que el PLL introduce o deja
un estado cerrado. Cuando el bit LOCK
cambia de estado, la bandera del PLL se activa. El bit de la habilitación del
PLL habilita la bandera del PLL con la petición de interrupción del CPU. LOCK
está en el registro de control del ancho de banda del PLL. El PLLF esta en el
registro de control del PLL. |
Consecuencias
de las interrupciones TIM1 en el CPU El TIM1
sobresatura la bandera. El bit del TOF es activado cuando el valor del
contador TIM1 está alrededor de $0000 después es marcado el valor en el
contador TIM1 del módulo de registro El canal
de banderas del TIM1 (CH1F-CH0F). El bit CHxF es activado cuando una
interrumpcion es capturada o una salida es comparada con el canal x , la
interrupción del canal x habilita el bit, CHxIE habilitando el canal x TIM1
con la petición de interrupción del CPU. CHxF y CHxIE están dentro de TIM1
canal x y en el registro de control. |
Casos de la interrupción TIM2 El TIM2 sobresatura la bandera.
El bit del TOF es activado cuando el valor del contador TIM2 está alrededor
de $0000 después es marcado el valor en el contador TIM2 del módulo de
registro El canal de banderas del TIM2
(CH1F-CH0F). El bit CHxF es activado cuando una interrumpcion es capturada o
una salida es comparada con el canal x , la interrupción del canal x habilita
el bit, CHxIE habilitando el canal x TIM2 con la petición de interrupción del
CPU. CHxF y CHxIE están dentro de TIM2 canal x y en el registro de control. |