TRADUCCIÓN CAPÍTULO 4

 

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.

 

           

 

Interrupciones

 

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.