Introduction
Les Freescale 68HC08 sont des microcontrôleurs de la gamme 8 bits fabriqués par Freescale (précédemment Motorola) sur base du cœur CPU08, dérivé du dérivé du CPU du Motorola 6800.
Ils ont été conçus comme les successeurs améliorés des microcontrôleurs 6805 et 68HC05, pendant que les 68HC12 succédaient aux 68HC11.
Par rapport au 68HC05
Comme améliorations par rapport aux microcontrôleurs 68HC05, on peut citer :
- des nouvelles instructions et de nouveaux modes d'adressages, l'assembleur restant cependant compatible au niveau du code objet avec celui du HC05 ;
- pointeur de pile et un registre d'index sur 16 bits, permettant d'adresser directement les 64Ko de la mémoire ;
- des périphériques améliorés ;
- une fréquence supérieure : La fréquence « bus » cadence le CPU et les périphériques jusqu'à 25 Mhz (cycle d'instruction de 40 ns).
- mémoire Flash sur tous les modèles
Ils sont optimisés pour le codage en langage C.
Architecture et caractéristiques
- L' Architecture est du type « von Neumann » , en opposition avec l'architecture type « Harvard ». La mémoire de mots de 8 bits est adressée de manière linéaire sur 16 bits, sans banques ou pages. Le programme et les données résident indifféremment en RAM ou ROM. Les registres d'entrée-sortie et les registres des autres périphériques sont mappés dans la mémoire et se gèrent de la même manière qu'une case mémoire banalisée.
- Pointeur de pile et registre d'index sur 16 bits, permettant d'adresser 64 Ko de mémoire
- Mémoire ROM du type Flash
- Jeu de 89 instructions CISC permettant un code assembleur intuitif, compact et lisible, facilitant la maintenance.
- Jusqu'à 64 vecteurs d'interruption distincts, de priorité fixe. Le sauvetage du contexte sur la pile est automatique.
- Le registre d'index et le pointeur de pile peuvent être utilisés pour réaliser des opérations directement sur 16 bits.
- Instructions arithmétiques de multiplication entière « MUL » de 8x8 bits et de division « DIV » de 16 par 8 bits, avec résultat et reste sur 8 bits.
- Oscillateur interne et PLL sur tous les modèles S08
- Le modèle de programmation, c'est-à-dire le jeu de registres du CPU qui sont accessibles au programmeur consiste en :
- un accumulateur A de 8 bits,
- un registre d'index (H:X) de 16 bits,
- un pointeur de pile (SP) de 16 bits,
- un compteur ordinal (PC) de 16 bits,
- un registre d'état (CCR) de 8 bits.
Dénominations et familles
À leur sortie fin des années 90, les micro-contrôleurs à base de CPU08 ont été identifiés de la manière suivante (exemple) :
MC68 HC 908 GP 32 CP, qui se décompose en :
- MC68 : appellation générique des micro-contrôleurs Motorola descendant du 6800
- HC 908 : « HC » indique le procédé de fabrication HC MOS; « 9 » indique le type de mémoire (Flash) et 08 la version du CPU
- GP indique la famille
- 32 : quantité approximative de mémoire Flash (en Ko)
Les lettres qui suivent indiquent le type de boitier (CP = DIL) et la gamme de température opérationnelle.
Les dénominations ont changé lorsque ces composants sont devenus RoHS en 2006 : Le « MC68HC908 » a été remplacé par « MC908 ». Ainsi, le MC68HC908GP32 est devenu MC908GP32. À l'exception d'une famille (AP, les MC908 sont fabriqués en procédé HC MOS de 0,5 micron.
En 2004, est apparue la nouvelle génération des MC908 : les MC9S08. Ceux-ci sont fabriquées en procédé HC MOS 0,25 microns, possèdent des périphériques améliorés, ont quelques modes d'adressage et instructions supplémentaires et sont (trois fois) plus rapides que les MC908. Un micro contrôleur actuel se dénomme par exemple MC9S08QG8CPE. Ils sont également optimisés du point de vue consommation et possèdent différents modes d'arrêt qui placent le contrôleur dans différents états de très basse consommation.
Il existe de nombreuses familles, différant par le nombre et la nature des périphériques. En général :
- Qx sont des entrées de gamme à bas coût ;
- Gx sont des familles d'usage général ;
- Rx sont dédiées aux télécommandes ;
- Lx sont des familles avec gestion de LCD ;
- Jx sont des familles avec périphérique USB ;
- xZ sont des familles avec bus CAN ;
- Ax sont des familles avec timers améliorés.