Diferencia entre revisiones de «ICS (Configuración Reloj Interno) - MC9S08QE128»

De Wikitronica
Saltar a: navegación, buscar
(Modos de Operación del Módulo)
(Modos de Operación del Módulo)
Línea 389: Línea 389:
 
*Los bits de '''CLKS''' (ICSC1)deben estar en 00  
 
*Los bits de '''CLKS''' (ICSC1)deben estar en 00  
 
*El bit '''IREFS''' debe ser 0 lógico
 
*El bit '''IREFS''' debe ser 0 lógico
*Los bits de RDIV deben indicar el factor de division del FLL tal que la frecuencia queden en el rango 31.25-39.0625 Khz
+
*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)===
 
===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 '''LP'''en '''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 activo o el bit '''LP'''en '''ICSC2''' debe ser 1
 +
 +
===FLL Bypassed External (FBE)===

Revisión del 18:26 16 nov 2012

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 activo o el bit LPen ICSC2 debe ser 1

FLL Bypassed External (FBE)