El 68HC12 (6812 o HC12 para abreviar) es una familia de microcontroladores de Freescale Semiconductor . Introducida originalmente a mediados de la década de 1990, la arquitectura es una mejora del Freescale 68HC11 . Los programas escritos para el HC11 suelen ser compatibles con el HC12, que tiene algunas instrucciones adicionales . Los primeros derivados del 68HC12 tenían una velocidad máxima de bus de 8 MHz y tamaños de memoria flash de hasta 128 KB .
Diseñador | Semiconductor Freescale |
---|---|
Bits | 8 bits / 16 bits |
Diseño | CISC |
Codificación | Variable |
Endianidad | Grande |
Registros | |
8 |
Arquitectura del 68HC12
Al igual que el 68HC11, el 68HC12 tiene dos acumuladores A y B de 8 bits (denominados un solo acumulador de 16 bits, D, cuando A y B están conectados en cascada para permitir operaciones con 16 bits ), dos registros de 16 bits X e Y, un contador de programa de 16 bits, un puntero de pila de 16 bits y un registro de código de condición de 8 bits . A diferencia del 68HC11, el procesador tiene rutas de datos internas de 16 bits
El 68HC12 agrega y reemplaza una pequeña cantidad de instrucciones 68HC11 con nuevas formas que están más cerca del procesador 6809 . Más significativamente, cambia las codificaciones de instrucciones para que sean mucho más densas y agrega muchas características de indexación similares a 6809, algunas con incluso más flexibilidad. El resultado neto es que los tamaños de los códigos suelen ser un 30% más pequeños. [1]
Derivados de HCS12 / MC9S12
A partir de 2000, la familia se amplió con la introducción de los derivados MC9S12 que tienen velocidades de bus de hasta 25 MHz y tamaños de flash de hasta 512 KB.
El MC9S12NE64 fue presentado por Freescale en septiembre de 2004, afirmando ser el "primer microcontrolador flash Fast Ethernet de un solo chip de la industria". Cuenta con una CPU HCS12 de 25 MHz, 64 KB de FLASH EEPROM, 8 KB de RAM y un controlador Ethernet 10/100 Mbit / s .
Derivados del MC9S12X
El MC9S12XDP512, que se introdujo en 2004, tiene una velocidad de bus de 40 MHz y un coprocesador periférico conocido como XGATE que permite descargar algunas tareas de la CPU. La CPU del derivado S12X también presenta varias instrucciones nuevas para aumentar el rendimiento.
Freescale anunció el MC9S12XEP100 en mayo de 2006 para ampliar aún más la familia S12X a una velocidad de bus de 50 MHz y agregar una unidad de protección de memoria (basada en la segmentación ) y un esquema de hardware para proporcionar EEPROM emulada .
Los productos HCS12 contienen un solo procesador, el HCS12X cuenta con el procesador periférico XGATE adicional.
La familia S12X ofrece dos métodos principales para abordar más de 64 KBytes.
- Regiones de memoria paginada en el mapa local de 64 KB: PPAGE para datos de programas paginados, RPAGE para RAM paginada, EPAGE para EEPROM / flash paginada
- El direccionamiento global permite el acceso a cualquier dirección en el espacio de direcciones de 8 MB . GPAGE se utiliza junto con códigos de operación especiales. (gldaa etc.)
XGATE
El coprocesador XGATE es un procesador RISC de 16 bits que funciona al doble del reloj del bus principal. Descarga el trabajo del núcleo S12X al manejar solo las interrupciones y no ejecuta un bucle en segundo plano. Las primeras versiones de XGATE no permiten interrupciones de mayor prioridad para adelantarse a una interrupción actualmente manejada, pero el "XGATEV3" como se presenta en el 9S12XEP100 (y otros) sí lo permite. El S12X puede activar interrupciones de software en el núcleo de XGATE y viceversa. Se implementa un sistema de semáforo para permitir que los núcleos S12X y XGATE sincronicen el acceso a los periféricos.
Por lo general, el código XGATE se copia a la RAM al inicio del dispositivo y luego se ejecuta desde la RAM para obtener un beneficio de velocidad. XGATE tiene un espacio de direcciones parcial de 64 KByte sin paginación. Los registros comparten direcciones, pero la memoria flash y la RAM aparecen en direcciones diferentes entre los núcleos. (Consulte la hoja de datos para obtener más detalles).
Referencias
- ^ Sibigtroth, James M. (1996) "Transporte de código M68HC11 a dispositivos M68HC12", Nota de aplicación de semiconductores de Motorola AN1284 / D, Motorola.
enlaces externos
- Código fuente del kernel en tiempo real gratuito para HCS12 con aplicaciones de muestra
- Proyecto OpenTCP oficial de Freescale en SourceForge para la familia MC9S12NE
- DRAGON12-Plus HCS12 / 9S12 Trainer, EVB y placa de desarrollo
- Entorno de desarrollo MiniIDE que funciona con 68HC11 y 68HC12
- 68HC12 Grupo de discusión
- 68HC12 Sistema de desarrollo y formación