Freescale 68HC08

El 68HC08 es una familia de microcontroladores de Freescale (antes Motorola) de 8 bits y arquitectura de von Neumann, con un solo bloque de memoria. Es conocida también simplemente por HC08.

Los HC08 son microcontroladores de propósito general, cada miembro de esta familia cuenta con diferentes periféricos internos, pero con una CPU común que permite migrar aplicaciones entre ellos, facilitando con ello el diseño.

Entre los periféricos internos que cuentan estos microcontroladores esta conversores analógicos-digital, módulo de control de tiempos y sistemas de comunicación como SPI, I²C, USB o SCI o UART entre otros.

Imagen de un Microcontrolador HC08GP32 montado.

Freescale creó una mejora a esta familia de microcontroladores, la HCS08 que ofrece mejoras en algunas instrucciones y agrega nuevas, además en esta mejora los microcontroladores pueden ser depurados por puerto dedicado llamado BDM (background debug module) , que mejora su versatilidad y amplia su gama de aplicaciones.

A la derecha podemos ver en la referencia (1) el microcontrolador 68HC08GP32 y en la referencia (2) el lugar donde se conecta el BDM (background debug module) para localizar errores de programación en el programa.

Existen infinidad de entornos de desarrollo desde GNU Compiler Collection a freeware o software de pago. Dos de los paquetes más interesantes son los desarrollados por P&E Micro y el Freescale CodeWarrior (el compilador cruzado de pago por excelencia), y SDCC (Small Device C Compiler) , un desarrollo Open Source muy interesante y funcional que permite compilar código escrito en lenguaje C para múltiples plataformas de microcontroladores.

Principales características

  • Código compatible con la familia M6805, M14805 y la familia HC05.
  • El bus interno tiene una frecuencia de 8 MHz.
  • Sistema para proteger el funcionamiento estable del programa.
    • Reset opcional por watch-dog o (COP) (computer operating properly).
    • Detección de baja tensión de alimentación seleccionable a 3.0 o 5.0 Volts.
    • Detección de un código de instrucción ilegal o no existente con opción a reset automático.
    • Detección de una dirección ilegal o no existente con opción a reset automático.
  • Diseñado para sistemas que usan poca potencia.
    • La memoria RAM es totalmente estática con los modos (STOP) y modo esperar un evento externo (WAIT).

Con respecto a la compatibilidad con el código escrito para HC05; hay una leve incompatibilidad en los llamados de interrupciones ya que en el microcontrolador HC05 el registro índice X es de 8 Bits y en el HC08 y HCS08 dicho registro índice se denomina H:X y es de 16 bits y por lo tanto el único registro que se omite guardar en el stack ante una interrupción es el registro H y por lo tanto se deberá apilar (push) y retirar (o desapilar, pop) el registro H con las instrucciones PSHH y PULH respectivamente.

Partes y registros de la HC08 CPU

  • Acumulador de 8-bit denominado A.
  • Registro índice de 16-bit denominado H:X .
  • Un registro de puntero de pila (stack) de 16-bit denominado SP.
  • Un contador de programa de 16 bits denominado PC.
  • Registro de condiciones de 8 bits denominado CCR.
  • Instrucciones de multiplicación de 8-bit por 8-bit y de división de 16-bit por 8-bits.

Tabla familia HC08

Tabla familia Hc08
Miembro Característica principal Flash RAM AD TIM COMUNICACIONES
HC08AB 2 timers de 4 canales 32KB 1KB 8 canales, 8-bit 8 canales, 16-bit SCI , SPI
HC08AP 10-bit A/D 64KB 2.048 bytes 8 canales, 10-bit 4 canales , 16-bit SCI, SPI, I2C
HC08AS/AZ Mercado automotor J1850 , CAN
HC08BD USB 48KB 1.024 bytes 6 canales, 8-bit 2 canal, 16-bit USB, I2C
HC08EY 8KB-16KB 384B-512B ESCI, SPI
HC08G
HC08GZ
HC08JB/JG/JT/JW USB 8192 bytes 256 bytes 2 canales , 16-bit USB, I2C, SCI, SPI
HC08JK/JL Propósito general 4096 bytes 128 bytes 12 canales, 8-bit 2 canales , 16-bit
HC08K
HC08LB
HC08LD
HC08LJ/LK
HC08LT
HC08LV
HC08MR
HC08QT/QY Propósito general , tamaño, no necesita cristal 4096 bytes 128 bytes 12 canales, 8-bit 2 canales , 16-bit
HC08RF
HC08SR

Enlaces externos