Curso sobre Microcontroladores Familia HC9S08 de Freescale

10 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

Curso sobre Microcontroladores

Familia HC9S08 de Freescale

Por Ing. Daniel Di Lella – EduDevices –

www.edudevices.com.ar

e-mail:

info@edudevices.com.ar

Responsable Area Educación – ELKO / ARROW –

www.elkonet.com

e-mail:

ddilella@elkonet.com

Capítulo 1.

Continuación .... (entrega nº 3)

Set de Instrucciones.

El set de instrucciones de la familia HC9S08 (CPU HCS08) es esencialmente idéntico

al de la familia HC908, solo se agregan variantes de direccionamiento para las instrucciones LDHX / STHX y la nueva instrucción BGND que permite al MCU entrar al modo “BackGround” que es un modo muy poderoso utilizado para la depuración de código en tiempo real y se ampliará la información en un capítulo posterior.

Hay un total de 250 instrucciones disponibles en el HC9S08. Aquí solo se mostrará en forma general un resumen de las mismas, quedando para el lector ampliar la

información consultando en el curso sobre HC908(www.edudevices.com.ar ) o bien en el manual de referencia de la familia HC9S08.

(2)
(3)

Un comentario aparte merecen las instrucciones WAIT y STOP.

La instrucción WAIT detiene la actividad del CPU al quitarle el clock (reloj) a este, pero permite que todos los otros relojes sigan corriendo dentro del MCU. Al igual que en la familia HC908, todos los periféricos restantes siguen con sus operaciones

normalmente, lo que permite una rápida respuesta ante interrupciones exteriores, pero el consumo, si bien es reducido no es el menor de todos.

En la instrucción STOP, en cambio, se interrumpen todos los clocks internos. A diferencia de la familia HC908 que posee un solo modo STOP, la familia HC9S08 posee múltiples modos STOP con distinto grado de consumo y operatividad según se hayan configurado previamente algunos bits de ciertos registros, en un posterior capítulo se verán estos modos de bajo consumo que constituyen unas de las claves de esta familia para ser utilizadas en aplicaciones portátiles con consumos extremadamente bajos.

Soporte de Interrupciones.

Como se ha mencionado en varios párrafos de este capítulo, la familia HC9S08 mantiene compatibilidad con la familia HC908 y es por ello que el esquema de Soporte de Interrupciones es idéntico al de la familia HC908.

(4)

Modo de “apilado” y “Desapilado” de los registros principales del CPU HCS08.

Diferencias entre las familias HC908 y HC9S08.

Como se ha mencionado a lo largo de este capítulo, la familia HC9S08 es 100% compatible con la familia HC908, pero la nueva familia HC9S08 incorpora nuevas instrucciones y varias mejoras orientadas a aumentar la capacidad de procesamiento, facilidad para realizar la emulación en tiempo real y finalmente mejorar la eficiencia en la densidad de código.

A continuación, mencionaremos en forma resumida las diferencias:

Nuevos modos de direccionamiento para la instrucción LDHX

- Indexado sin Offset (IX).

- Indexado con Offset de 8 Bits (IX1). - Indexado con Offset de 16 Bits (IX2). - Indexado con Post Incremento.

- Indexado con Offset de 8 Bits con Post Incremento.

Estos nuevos modos de direccionamiento ayudan a que el compilador mejore su eficiencia de generación de código.

(5)

Nuevos modos de direccionamiento para la instrucción STHX y CPHX.

- Modo de direccionamiento Extendido (EXT).

- Modo de direccionamiento Indexado utilizando el Stack Pointer con Offset de 8 bits (SP1).

• Nueva instrucción BGND que permite “activar” el modo BDM (Background Debug Module) para colocar al MCU en modo “Debug” que permite la emulación en tiempo real, por medio de una simple instrucción dentro del código original del usuario.

Aumento de la velocidad de procesamiento por medio del aumento de la frecuencia de reloj del CPU (40 MHZ) y del BUS (20 MHZ).

Gracias a la nueva tecnología CMOS que posee la familia HC9S08, el CPU HC9S08 puede “correr” a la velocidad de reloj de 40 MHZ y la frecuencia del Bus (FBUS) es la mitad de dicha frecuencia, o sea, 20 MHZ, el lector debe tener en cuenta que en la familia HC908, la frecuencia del oscilador principal era dividida por 4 para obtener así

Fbus = Fosc / 4. .

Esto permite que cada ciclo de instrucción se ejecute en tan solo 50 nanosegundos!!, y si además tomamos en cuenta que en muchas instrucciones se han “achicado” la cantidad de ciclos de máquina por instrucción, se logra una notable mejora con

respecto a la familia HC908, que puede llegar a ser 3X (3 veces más rápida) superior

en perfomance corriendo igual código.

Capítulo 2.

Módulos ICG / ICS –

Internal Clock Generator / Internal Clock Source.

Uno de los grandes cambios de la familia HC9S8 con respecto a la familia HC908 es el módulo de generación de clock. Si bien en la familia HC908 se dispone de una gran variedad de opciones de osciladores externos, internos, y del tipo R-C, la flexibilidad y variedad de opciones que presenta la familia HC9S08 es muy grande dándole a este módulo una gran importancia dentro del esquema de mejoras implementadas.

La sección generadora de Clocks (reloj) está compuesta por dos módulos, según el tipo de dispositivo HC9S08 elegido:

Internal Clock Generator (ICG) (Generador de Clocks Interno).Internal Clock Source (ICS) (Fuente de Clock Interna).

(6)

ICG (Generador de Clocks Interno).

• Cuatro modos de operación:

- Self Clock Mode (SCM) (Clock interno fijo).

- FLL Engaged Internal clock mode (FEI) (FLL Interno Enganchado). - FLL Bypassed, External (FBE) clock mode (FLL puenteado, clock

Externo).

- FLL Engaged, External (FEE) clock mode (FLL enganchado con clock Externo).

• En los modos FEI y SCM no se requieren componentes externos.

• Todos los modos son seleccionables por programa.

• El programa del usuario puede seleccionar los distintos modos en cualquier momento.

• FBUS = ½ ICGOUT.

Diagrama en bloques del módulo ICG

El módulo ICG esta formado por 4 grandes bloques funcionales.

El bloque oscilador (OSC) permite que el usuario pueda conectar un cristal o resonador externo con el módulo ICG. El usuario por programa puede seleccionar entre un cristal de baja frecuencia (rango entre 32 a 100 KHZ) o un cristal de alta frecuencia (rango entre 1 a 16 MHZ) utilizando las líneas externas OSC1 y OSC2 para conectar el cristal y su circuito asociado. También este bloque permite que ingrese una señal externa conectada a la línea OSC1 proveniente de un oscilador implementado en forma externa (hasta 40 MHZ) en el sistema.

(7)

Para mayor flexibilidad, se puede configurar el bloque oscilador (OSC) para operar en modo “baja potencia” o modo “Alta amplitud”.

El reloj interno de referencia incluye una fuente de reloj de 8 MHZ , que puede seleccionarse como reloj de referencia para el módulo BDC (Background Debug Controller) y permitir así cierta independencia de dicho módulo de la frecuencia de Bus utilizada en el proyecto. Además incluye un reloj de 243 KHZ el cuál puede ser ajustado para lograr una mayor precisión y obtener así una fuente confiable de muy bajo costo.

El bloque de FLL (Frecuency Loop lock) (Oscilador por enganche de Frecuencia) toma la fuente de reloj interna o externa y multiplica ella a un valor más alto.

Finalmente, el bloque de selección de reloj permite conmutar las diferentes frecuencias de reloj al sistema, distribuyéndolo en el.

Las señales presentes son, ICGOUT la cuál es la frecuencia de salida del módulo ICG y constituye la frecuencia de referencia del BUS (FBUS = ½ ICGOUT),ICGERCLK, la cuál es la frecuencia de referencia desde el cristal o fuente de reloj externa y la señal

FEE (habilitación de frecuencia fija) la cuál controla el sistema de frecuencia fija de reloj.

La señal ICGCLK es una fuente de reloj de 8 MHZ generada por el bloque fuente de referencia interna que se utiliza para el módulo BDC (Backgraund Debug Controller).

SCM (Self Clock Module) (Clock Interno Fijo).

• Es el modo por defecto luego de que el MCU sale del RESET.

• Rápido arranque del oscilador a 4 MHZ de FBUS sin programación del usuario.

• No se requiere conexión externa alguna.

• Las líneas del oscilador pueden usarse como I/O grales.

• No ajustable, pero puede modificarse escribiendo en el registro ICGFLT.

• Tiene la menor precisión de todos los osciladores disponibles.

• Consumo de potencia medio (menor que en los modos FEI o FFE).

El SCM es el oscilador por defecto del módulo ICG y está disponible tan pronto como el MCU sale del reset. Este oscilador no requiere de ajustes, y si bien puede ajustarse por medio de la escritura del registro ICGFLT no es recomendable hacerlo sin un profundo conocimiento del funcionamiento del oscilador.

(8)

FEI - FLL Engaged Internal clock mode (FLL Interno Enganchado).

• FOUT = (243KHZ / 7) x 64 x N / R

• N = 4 a 18 en incrementos de 2.

• R = 1 a 128 en potencia de 2.

• El oscilador de referencia (243KHZ) es ajustable en +/- 25% con una precisión del 0,5% en todo el rango de temperatura de trabajo.

• Se puede programar la indicación de la perdida del enganche del FLL para que genere un RESET o una interrupción.

• Las líneas del oscilador pueden utilizarse como I/O generales.

• No se necesitan componentes externos.

• El consumo de energía es superior al modo SCM.

El modo FEI es otro modo de oscilador interno disponible en el módulo ICG.

Este modo está basado en un oscilador interno de baja frecuencia (243 Khz) que ingresa como señal de referencia al FLL (Oscilador por Enganche de Frecuencia) y es

multiplicado en frecuencia hasta alcanzar la frecuencia final de salida FOUT.

El valor “N” es el factor de multiplicación entre 4 y 18 en incrementos de 2 y el valor “R” es el divisor de frecuencia reducida (RFD) entre 1 a 128 en potencias de 2. Ambos valores pueden programarse por medio del ICG Control Register 2.

El reloj de referencia de baja frecuencia es ajustable en +/- 25% por medio de dos registros (ICGTRIM / FTRIM) ubicados dentro del mapa de memoria de RAM y todos los chips de la familia HC9S08 poseen valores de calibración de fábrica en 2 posiciones de memoria FLASH que pueden ser re – escritos o borrados por el programa del usuario. Estos valores de fábrica en FLASH, pueden copiarse en los registros de ajuste del oscilador de referencia para lograr que el oscilador quede ajustado dentro del rango de +/- 0,5%. También, el entorno integrado CodeWarrior, junto con las

herramientas disponibles para la familia HC9S08 (USBMULTILINKBDME, R(S)_POD, etc.) poseen mecanismos automáticos de ajuste de la frecuencia que escriben los valores correctos de ajuste en las posiciones de FLASH reservadas desde fábrica. De esta forma, el usuario no necesita conocer los valores de calibración de fábrica, ya que el sistema contempla la calibración automática.

El FLL puede programarse para que la indicación de “sistema en frecuencia” (lock bit) sea por interrupción o disparando un reset.

Al igual que en el modo SCM, cuando se utiliza el modo FEI, las líneas del oscilador pueden utilizarse como líneas I/O de uso general.

(9)

FBE (FLL Bypassed External clock) (Oscilador Externo con FLL

puenteado).

• Se puede conectar Cristal Externo o Resonador en los pines OSC1 / OSC2.

• Se pueden conectar cristales de baja frecuencia de 32Khz a 100Khz.

• Se pueden conectar cristales de alta frecuencia de 1 Mhz a 16 Mhz.

• Se puede ingresar con un oscilador externo por pin OSC1 (DC a 40 Mhz).

• Frecuencia de Bus = Referencia Externa / (2 x RFD)

• El Sistema de Reloj de más alta precisión (la da la referencia externa).

• La más baja energía consumida.

Al igual que en el modo SCM, el modo FBE no utiliza el bloque del FLL para multiplicar la frecuencia de reloj externa. Este modo permite que puedan emplearse cristales de baja (32 a 100Khz) y de alta frecuencia (1 a 16 Mhz) conectados a los pines OSC1 / OSC2 del MCU. También este modo permite ingresar desde el exterior con un oscilador externo desde DC a 40 Mhz por el pin OSC1.

Cuando se utiliza un cristal externo o resonador, se debe tener especial cuidado de poner en “1” el bit REFS en el ICG Control Register 1. Este bit debe permanecer en “0” cuando se utiliza un oscilador externo, ya que no hay un tema de “ganancias de lazo” en juego para los circuitos osciladores y si solo se requiere no exceder la frecuencia de entrada a un máximo de 40 Mhz.

La frecuencia de salida ICGOUT es igual a la frecuencia de referencia dividido por valor RFD (el cual está especificado en el registro ICG Control Register 2) multiplicado por 2. De esta manera, por ejemplo, si tenemos una frecuencia de referencia externa de 20 MHZ y el valor de RFD es igual a “1”, entonces la frecuencia del BUS (FBUS) será igual a 10 Mhz.

El modo FBE es el más preciso de todos los modos disponibles en el módulo ICG de los HC9S08 y su precisión solo está limitada a la precisión del oscilador externo utilizado como referencia. También este modo es el de más bajo consumo de todos, ya que al no utilizar el FLL este módulo no consume y con ello se logra un ahorro considerable de energía.

FEE (FLL Engaged, External (FEE) clock mode (FLL enganchado con

clock Externo).

• Rango de frecuencia externa de referencia:

- Baja Frecuencia = 32Khz a 100Khz , FOUT = Fext x 64 x N / R. - Alta Frecuencia = 2 a 10 Mhz, FOUT = Fext x N / R.

- N = 4 a 18, en incrementos de 2. - R = 1 a 128 en potencias de 2.

• Este modo posee alta precisión, no tanto como con la fuente externa solo.

• Al usar el FLL cuando se “desengancha” el programa puede avisar por interrupción o por reset.

• El consumo de energía puede ser mayor o menor al modo FEI según la referencia utilizada (alta o baja frecuencia).

(10)

Continuará...

Nota de Redacción: El lector puede descargar este capítulo y capítulos anteriores del curso desde la sección “Artículos” (Curso_HC9S08) en el sitio web de EduDevices (www.edudevices.com.ar )

Figure

Actualización...

Referencias

Actualización...

Related subjects :