ICS (Configuración Reloj Interno) - MC9S08QE128

De Wikitronica
Revisión del 19:38 16 nov 2012 de Jesus Grimón (Discusión | contribuciones) (FLL Enganged Internal (FEI))

Saltar a: navegación, buscar

Jesus Grimón 08-11372

A continuación se presenta una descripcion del Módulo de Clock Interno del MC9S08QE128

ICS (Configuración Reloj Interno) - MC9S08QE128

¿Qué es el ICS? El módulo de reloj interno concocido como ICS por sus siglas en inglés (Internal Clock Source) es una fuente de reloj que usa el microcontrolador MC9S08QE128 de la familia HS08 el cual provee al sistema MCU (Microcontroller Unit) de una frecuencia de operación interna.

¿Para que se utiliza? La gran ventaja de este modulo es que permite regular la frecuencia del clock con el que trabaja el MCU. Esto es posible gracias a un circuito que contiene el modulo ICS llamado Frecuency-Locked Loop (FLL por su siglas en ingles) el cual permite generar frecuencias estables a partir de la reconversión frecuencial de una fuente de clock referencial, bien sea interna o externa al Microcontrolador.


Características del Módulo

El modulo ICS presenta las siguientes características:

  1. Un circuito de lazo de frecuencia de enganche o FLL (Frecuency-Locked loop) el cual es programable via software para generar frecuencias.
  2. El FLL puede ser controlado por una referencia de clock interna o externa.
  3. En caso de usar clock externo el modulo proporciona un divisor de frecuencia que controla el rango del oscilador.
  4. Al usar el clock interno como referencia se dispone de 9 bits programables para controlar el rango de frecuencia controlando el período del clock (TRIM).
  5. Clock interno o externo puede ser seleccionado como fuente para el MCU.
  6. El modulo provee bits de control para un oscilador de baja potencia usado como clock externo de referencia. Estos bits son: HGO, RANGE, EREFS, ERCLKEN, EREFSTEN ( serán explicados mas adelante).
  7. Después de un reset el modo de operación es automáticamente configurado para trabajar como FLL Enganged Internal (ver sección de modos de operación).
  8. El modulo tiene tres tipos de DCO (digitally controlled oscillators), es decir, control digital de oscilador, los cuales ofrecen diferentes rangos de frecuencia agrupadas en tres rangos (Baja,Media y Alta frecuencia).
  9. Es posible maximizar la frecuencia de salida para una referencia de clock externa.
  10. El clock para Background Debugged Controller (BDC) es suministrado como una constante dividida por 2 de la salida del oscilador controlado digitalmente en el circuito FLL del módulo (DCO ouput)en el modo bajo rango de frecuencia DCOL(ver figura 1).
  11. Cualquier clock utilizado como fuente del módulo puede ser dividido mediante un selector de 2 bits que permite divisores de frecuencia de potencias de 1, 2,4 y 8.

Alcance del Módulo ICS

¿Qué hago con el ICS? El conocimiento y manejo del módulo ICS es de vital importancia puesto que representa una fuente de clock controlable vital para el funcionamiento del MCU y de muchos módulos del microprocesador. en la figura 2 se aprecia que el ICS proporciona el clock del bus común a los módulos y ademas posee salidas especificas cuya frecuencia son totalmente programables.

Entre los módulos que requieren de ICS se encuentran

  1. Contador de Tiempo Real RTC
  2. Conversor Analógico Digital ADC
  3. Interfaz de Comunicación SerialSCI
  4. Interfaz de Seria Periferico SPI
  5. Circuito Inter-Integrado IIC
  6. Temporizador de operacion del computador COP
  7. Debug Backgraound DBM
  8. Background Debug Controller BDC
  9. Modulador de Ancho de Pulso TPM

Registros del Módulo ICS

Los registros que permiten configurar y monitorear todas las funciones del módulo ICS son:

(ICSC1) ICS CONTROL REGISTER 1

el registro 1 de control del módulo ICS está compuesto de 8 bits y es un registro de escritura y lectura como se muestra a continuación:


CLKS RDIV IREFS IRCLKEN IREFSTEN

Donde cada campo representa:

1.CLKS(Clock Source Select): está compuesto por dos bits (7:6) cuya combinación codifica la selección del clock que controla el bus de frecuencia, es decir el clock de salida para el MCU . La frecuencia de este bus depende del valor en BDIV bits (será explicado mas adelante)

00	Selecciona como clock la salida del circuito FLL 
01	Selecciona el clock interno como referencia
10     Selecciona el clock externo como referencia
11     Reservado, no se utiliza.

2.RDIV (Reference Divider): está formado por 3 bits ( 5:3) cuya codificación binaria, y en conjunto con los bits de RANGE(ver más adelante), seleccionan el divisor de frecuencia cuando el clock externo es usado como referencia. La frecuencia resultante debería estar en el rango de 31.25Khz-39.0625Khz. A continuación se muestra la combinación que debe tener RDIV y RANGE para seleccionar el factor divisor de frecuencia:

"Tabla 1. Factor divisor de Frecuencia"
RDIV RANGE=0 RANGE=1
0 1 32
1 2 64
2 4 128
3 8 256
4 16 512
5 32 1024
6 64 Reservado
7 128 Reservado

3.IREFS (Internal Reference Select): está compuesto por un bits y selecciona el clock de referencia para el circuito FLL

0 1
Clock Externo seleccionado como referencia para el FLL Clock Interno seleccionado como referencia para el FLL


4.IRCLKEN(Internal Reference Clock Enable) :está compuesto por 1 bits y se encarga de habilitar el clock interno para ser usado como ICSIRCLK (ver diagrama de bloques Figura XX). Es decir, el clock interno es tomado como salida del módulo ICS sin hacerle ninguna modificación

0 1
ICSIRCLK desactivado ICSIRCLK activado

5.IREFSTEN(Internal Reference Stop Enable): este bit controla si el clock de referencia interna permanece habilitado, o no, una vez que el módulo entre en el modo de Stop

0 1
El clock interno es deshabilitado en el modo de stop. El clock de referencia interno permanece habilitado una vez entrado al modo de stop si el bits de IRCLKEN está en uno lógico antes de entrar en dicho módulo.


Nota: los bits de este registro después de un reset están en 0 salvo el bit IREFS que esta en 1.

ICS Control Register 2 (ICSC2)

El registro 2 de control del módulo ICS contiene 8 bits programables de escritura-lectura. El bit mas significativo a la izquierda y el menos significativos a la derecha como sigue:

BDIV (bits 7:6) RANGE (5) HGO (4) LP (3) EREFS(2) ERCLKEN(1) EREFSTEN (0)

1.BDIV(Bus Frecuency Divider): Selecciona la cantidad con la cual se dividirá la frecuencia del clock escogido por los bits de CLK para alimentar el bus de frecuencia del microcotrolador. La codificación de los bits es como sigue:

00 01 10 11
divide la frecuencia del clock escogido como salida por 1. divide la frecuencia del clock por 2 (modo escogido después de un reset.) divide la frecuencia del clock por 4. divide la frecuencia del clock por 8.

2.RANGE (Frecuency Range Select): selecciona el rango de frecuencia para el oscilador externo. Se configura en conjunto con el bit RDIV (ver tabla 1).

0 1
Selecciona el modo de Baja frecuencia para el oscilador externo. Selecciona el modo de Alta frecuencia para el oscilador externo.

3.HGO (High Gain Oscillator Select): selecciona el modo de operación del oscilador externo.

0 1
Configura el oscilador externo para trabajar en modo de baja potencia. Configura el oscilador externo para trabajar en modo de alta ganancia.

4.LP (Low Power Select): este bit determina si el circuito FLL queda desactivado cuando se trabaja en el modo de operación tipo FLL bypass.

0 1
FLL se mantiene activo en el modo de operación FLL bypass. FLL es desactivado en el modo de operación FLL bypass a menos que el BMD esta activo.


5.EREFS (External Reference Select): este bit selecciona el tipo de fuente para la referencia de clock externa.

0 1
Clock Externo requerido como fuente. Oscilador requerido como fuente

6.ERCLKEN (External Reference enable): se encarga de habilitar el clock externo para ser usado como ICSERCLK (ver diagrama de bloques Figura 1). Es decir, el clock externo es tomado como salida del módulo ICS sin hacerle ninguna modificación.

0 1
ICSERCLK desactivado ICSERCLK activado

7.ERFSTEN (External Reference Stop Enable): este bit controla si el clock de referencia externa permanece habilitado, o no, una vez que el módulo entre en el modo de Stop.

0 1
El clock interno es deshabilitado en el modo de stop. El clock de referencia externo permanece habilitado una vez entrado al modo de stop si el bits de ERCLKEN está en uno lógico antes de entrar en dicho modo de operación.

Nota: los bits de este registro después de un reset están en 0 salvo el bit 6 del BDIV que esta en 1.

ICS Trim Register (ICSTRM)

Este registro de 8 bits de escritura-lectura se encarga de controlar la frecuencia del Clock de referencia interna modificando el período del clock, el tipo de cambio se hace de modo binario, es decir, los bits en 1 a 0 y viceversa. Un incremento en el valor binario de este registro , incrementa el período del clock. Un decremento en el valor binario disminuye el período. Exite otro bits usado para el ajuste mas pequeño del Trim el cual se encuentra en el modulo de Status y controlo Register (ICSSC).

TRIM (bits 7:0)

ICS Status and Control Register(ICSSC)

Este es un registro que posee 8 bits donde se encuentran bits de estatus (sólo lectura) y bits de control (escritura-lectura). La distribución de bits es tal que bit más significativo se encuentra a la izquierda y el menos significativo a la derecha como sigue:

DRST(lectrua) / DRS(escritura) (bits 7:6) DMX (5) IREFST(4) CLKST (3:2) OSCINIT(1) FTRIM(0)

1.DRST (DCO Range Status): este campo es de solo lectura e indica que tipo de rango de frecuencia es arrojado por el ciercuito FLL, es decir, el DCOOUT (ver figura 1).Este campo no se actualiza inmediatamente después de una escritura en DRS(en breve será explicado) debido a la sincronización interna entre clocks, por lo que debemos esperar como mínimo un ciclo de reloj para solicitar la lectura del DRST.

DRS( DCO Range Select): el selector del rango de frecuencia del DCO es programable con dos bits de la siguiente manera:

00 01 10 11
Baja frecuencia (Low Range) Frecuencias Medias (Mide Range) Alta frecuencia (High Range) Reservado

¡ATENCION! La escritura de 112 en DRS es ignorada y DRST permanece en la configuración actual. Este espacio es reservado.

¡ATENCION! Escribir en DRS mientras el bit de baja potencia (LP) en ICSC2 esta activo no produce ningún resultado, ¡es ignorado por el CPU!

2.DMX32 (DCO Maximun Frecuency with 32.768Khz reference): este bit de control decide si el rango de frecuencia del DCO es aproximado a su máxima frecuencia con un clock de referencia de 32.768Khz (clock interno).En otras palabras el factor del FLL es máximo y la frecuencia es mayor y muy aproximado a la frecuencia máxima de la configuración. (Ver tabla 2)

0 1
El DCO trabaja en un rango del 25% de la frecuencia de referencia. el DCO es conducido a su máxima frecuencia cuando el clock de referencia es de 32.768Khz

En la Siguiente Tabla se muestra la combinación de los bits de DRS y DXM32 y las frecuencias que ellas generan:

¡CUIDADO! La frecuencia del clock del Bus que conecta otros módulos no debería exceder el máximo valor de frecuencia permitido por el dispositivo.

3.IREFST(Internal Reference Status): es un bit de sólo lectura que indica que tipo de fuente está siendo usada como referencia del clock del circuito FLL. Es útil usar este bit como bandera para que el CPU tome alguna decisión a gusto del programador.

0 1
La fuente usada como referencia para el circuito FLL es un Clock Externo La fuente usada como referencia es un Clock Interno

4.CLKST (Clock Mode Status): este campo contiene 2 bits que indican en qué modo está trabajando el clock. Estos bits son como una bandera que muestran el estatus del campo CLKS en el registro ICSC1. Si se escribe en CLKS, el valor de CLKST no cambia inmediatamente debido a la sincronización de los clocks internos.

00 01 10 11
La salida del FLL está seleccionada como fuente de clock el FLL no está siendo usado (Bypassed), el Clock interno de referencia es usado como fuente de clock. el FLL no está siendo usado (Bypassed), el Clock externo de referencia es usado como fuente de clock. Reservado

5.OSCINIT (OSC Initialization): Si el clock externo es seleccionado por el campo ERCLKEN en el registro ICSC2 o se trabaja en el modo FEE,FBE o FBLEP (ver más adelante), y además el bit EREFS está en uno lógico, entonces el OSCINIT se pone en uno lógico después que la inicialización del clock externo es completado.

En otras palabras, indica si el clock externo ya fue inicializado. Este bit es llevado a cero cuando se deshabilita el uso del clock externo.

6.FTRIM (ICS Fine TRIM): este bit es el más pequeño ajuste del registro TRIM (ver ICSTRIM) , si está en 1 lógico se incrementa el Período del clock interno en la más pequeña cantidad posible; si esta en 0 lógico se decrementa el período en la más pequeña cantidad posible. Visto más fácil: es una extensión del registro ICSTRIM y representa el bit de mayor precisión con el que se puede hacer los cambios más pequeños en la frecuencia del clock interno.

Uso de los Registros del ICS

¿Como Inicio la programación de los Registros?

para programar el ICS debemos conocer el alcance que tiene cada registro:

  • Usemos el registro ICSC1para:
  1. Escoger la fuente que generará el clock deseado (FLL, Clock Interno(IC) o Clock Externo(EC))
  2. En caso de usar el FLL escoger la referencia que usará este circuito (Clock Interno o Externo)
  3. Habilitar o no la salida ICSIRCLK que es fuente del módulo RTC
  4. Habilitar o no el clock interno en caso de actuar en el modo de Stop.
  5. Seleccionar el factor divisor de frecuencia en caso de usar el clock externo.
  • Usemos el registro ICSC2 para:
  1. Escoger el factor de division de frecuencia que se le aplicará a la salida de nuestra fuente de clock (FLL,IC,EC)
  2. Seleccionar si trabajaremos en Alta o Baja frecuencia
  3. Configurar el oscilador para trabajar con alta ganancia o baja potencia
  4. Habilitar o no el FLL en caso de trabajar en los modos del tipo Bypass FLL
  5. Habilitar o no el ICSERCLK que es salida del clock externo que sirve de fuente al módulo ADC
  6. Habilitar o no el clock externo en caso de actuar en el modo de Stop.
  • Usemos el registro 'ICSTRM para controlar la frecuencia del Clock interno de referencia variando su período.
  • Usemos el Registro ICSSC para verificar estatus de funcionamiento, tales como:
  1. Chequear en que rango de frecuencia se trabaja (Baja, Media o Alta)
  2. Chequear que tipo de referencia se está usando (Clock interno o Externo)
  3. Chequear en que modo de trabajo se encuentra el clock (FLL, SóloClock Interno, Sólo Clock Externo)
  4. Chequear si el clock externo fue inicializado correctamente en caso de usarlo.

Tambien se puede usar para configurar lo siguiente:

  1. los cambios mas pequeños en la variación del período del Clock interno mediante el FTRIM
  2. el tipo de rango de frecuencia que tendrá el DCO del circuito FLL (Baja, Media o Alta)

¡Enhorabuena! ya solo falta conocer los modos de operación para comenzar a programar el módulo de ICS.

Modos de Operación del Módulo

Existen siete modos de operación del modulo ICS los cuales son:

FLL Enganged Internal (FEI)

En este caso el FLL esta 'Enganchado' con el clock interno.Es el modo de operación por defecto despues de un reset en el microprocesador en el cual la salida del módulo ICSOUT (ver figura 1) es la salida del circuito FLL que es controlada por la referencia de clock interna.En este caso el BDC es alimentado por el clock del FLL mediante la salida ICSLCLK. En este caso el factor divisor de frecuencia viene dado por los bits del BDIV en el registro ICSC2

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 00
  • El bit IREFS debe ser 1 lógico

FLL Enganged External (FEE)

En este caso el FLL esta 'Enganchado' con el clock Externo. Por lo tanto, la salida del módulo ICSOUT' es derivada del circuito FLL el cual usa como referencia dicho clock. En este caso el factor divisor de frecuencia es seleccionado por los bits de RDIV. En este caso el BDC es alimentado por el clock del FLL mediante la salida ICSLCLK

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 00
  • El bit IREFS debe ser 0 lógico
  • Los bits de RDIV deben indicar el factor de división del FLL tal que la frecuencia queden en el rango 31.25-39.0625 Khz

FLL Bypassed Internal (FBI)

En este caso la salida del módulo ICSOUT es derivada directamente del clock interno de referencia sin usar la salida del FLL. por eso se dice en lenguaje común que el circuito FLL es 'Bypaseado'. Sin embargo, el FLL estará programado en este modo para seguir activo y usando el clock interno como referencia aunque sea ignorado por el MCU. En este caso el BDC es alimentado por el clock del FLL mediante la salida ICSLCLK.

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 01
  • El bit IREFS debe ser 1 lógico
  • El modo BDM (Backgroun Debug Mode) debe estar activo o el bit LPen ICSC2 debe ser 0

FLL Bypassed Internal Low Power (FBILP)

Este modo de operación es igual al modo FBI salvo que en este caso el FLL queda desactivado por completo. El clock para el BDC no estará disponible y el clock interno se mantiene activo.

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 01
  • El bit IREFS debe ser 1 lógico
  • El modo BDM (Backgroun Debug Mode) debe estar inactivo o el bit LPen ICSC2 debe ser 1

FLL Bypassed External (FBE)

En este caso la salida del módulo ICSOUT es derivada directamente del clock externo de referencia sin usar la salida del FLL. Sin embargo, el FLL estará programado en este modo para seguir activo y usando el clock externo como referencia aunque sea ignorado por el MCU. En este caso el BDC es alimentado por el clock del FLL mediante la salida ICSLCLK.

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 10
  • El bit IREFS debe ser 0 lógico
  • El modo BDM (Backgroun Debug Mode) debe estar activo o el bit LPen ICSC2 debe ser 0
  • Los bits de RDIV deben indicar el factor de división del FLL tal que la frecuencia queden en el rango 31.25-39.0625 Khz

FLL Bypassed External Low Power (FBELP)

Este modo de operación es igual al modo FBE salvo que en este caso el FLL queda desactivado por completo. El clock para el BDC no estará disponible y el clock externo se mantiene activo.

¿Cuando sucede esto?

  • Los bits de CLKS (ICSC1)deben estar en 10
  • El bit IREFS debe ser 0 lógico
  • El modo BDM (Backgroun Debug Mode) debe estar inactivo o el bit LPen ICSC2 debe ser 1

STOP

Este modo ocurre cuando el MCU entre en estado de standby . En este caso todas las salidas del módulo ICS quen estaticas excepto en los siguientes casos que decida el programador:

  • la salida ICSIRCLK que usa el RTC queda activo a pesar de que el modulo entre en modo stop ¿Cuando sucede esto?
    • IRCLKEN en el registro ICSC1 debe estar en 1.
    • IREFSTEN en el registro ICSC1 debe estar en 1.
  • la salida ICSERCLK que usa el ADC queda activo a pesar de que el modulo entre en modo stop ¿Cuando sucede esto?
    • ERCLKEN en el registro ICSC2 debe estar en 1.
    • EREFSTEN en el registro ICSC2 debe estar en 1.

Algunas Consideraciones del módulo

Cambios entre Modos de Operación

  • El bit IREF puede ser cambiado en cualquier momento pero el cambio no será mostrado inmediatamente por el bit IREFST del registro ICSSC
  • Cuando se pasa del modo FEI al modo FEE, la salida del modulo se enganchará a la nueva frecuencia y clock de referencia cuando el cambio sea completado correctamente.
  • El bit CLKS puede ser cambiado en cualquier momento pero el cambio no será mostrado inmediatamente por el bit CLKST del registro ICSSC
  • El bit DRS puede ser cambiado en cualquier momento excepto cuando el bit LP está en 1. Si DRS es cambiado mientras se trabaja en modo FEI o FEE el clock del bus permanece en el rango de frecuencia anterior hasta que se inicialice el nuevo DCO. Después que cambie el DCO el FLL permanecerá desenganchado de la frecuencia seleccionada por algunos ciclos. Cuando el cambio es completado totalmente, los bits del DRST se actualizan.

=Factor divisor del Bus de Frecuencia

Los bits de BDIV en el registro ICSC2 pueden ser cambiados en cualquier momento y el cambio actual ocurre inmediatamente.

Uso del bit de Baja Potencia (LP) en el registro ICSC2

  • Este bit es usado para permitir al circuito FLL estar deshabilitado y conservar potencia cuando no está siendo usado.
  • Los bits DRS no pueden ser cambiados mientras LP esté en 1.
  • en los casos en los que se desee mantener el FLL activo aunque no se use por momentos (modo Bypass) se deberá colocar el bt LP en 0.