Qu`est ce qu`un uC (micro-contrôleur)

Transcription

Qu`est ce qu`un uC (micro-contrôleur)
Qu’est ce qu’un uC (micro-contrôleur) ?
Un uC est un composant électronique dit « actif » c'est-à-dire qu’il participe de manière intense et
conditionnée au système (contrairement à une résistance qui est dite « passive »).
Le uC comporte plusieurs sous-parties, chacune jouant un rôle précis dans son fonctionnement :
Le CPU : C’est le cœur du uC, le cerveau, c’est lui qui va « calculer » et gérer les
communications entre les différentes sous-parties.
Il en existe différents type, en fonction de leur puissance de calcul (en bits) et de leur vitesse
de travail (en Hz ou plus souvent en MHz) ou encore de leur architecture interne.
La mémoire : C’est là ou serra stockée à la fois le programme (mémoire morte) et les
variables (mémoire vive ou RAM).
Les entrées/sorties : C’est le module qui permet de communiquer avec l’extérieur (afficheurs,
boutons, relais, moteurs, leds…..).
Les modules de conversion A/N : Ce module interne permet de transformer une tension
d’entrée en une valeur numérique.
Les modules de communication : Ceux-ci permettent de faire communiquer le uC avec
d’autres composants du système par l’intermédiaire de différents protocoles (SCI, SPI, I2C,
USB, WIFI…).
Chaque modèle de uC comporte un certain nombre de ces modules suivant leur gamme, leur utilisation.
Par exemple un petit uC bas de gamme va comporter : un CPU (c’est un minimum….), de la mémoire (Flash ou
eeprom pour le programme, RAM pour les variables) en « petite » quantité (4 à 8 ko pour le programme et 256
à 512 octets pour la RAM ), de 4 à 12 entrées/sorties, éventuellement un module A/N (généralement 8 entrées
analogiques) et SCI et/ou SPI.
Au contraire un haut de gamme, va comporter 1 voir 2 CPU, de la mémoire flash (de 16 à 512 ko) pour le
programme, de la RAM (1024 à 4096 octets ) pour les variables, éventuellement de l’eeprom (1 à 4 ko) pour
stocker des variables même en coupant l’alimentation.
32 à 120 E/S, jusqu'à 24 entrées analogiques, 1 à 2 modules SCI et SPI, 1 à 2 modules I2C….
Et entre les deux il existe toute une gamme de uC de taille, de forme, de prix, de performances variables, le jeu
consiste aussi à choisir lequel ferra l’affaire dans l’application sans dépenser trop d’argent dans des modules
inutiles (mais ce n’est pas notre soucis pour l’instant).
Commençons par décrire les différentes familles de uC fabriqués par FREESCALE.
Tout d’abord les plus petits : les 8 bits.
Cette famille dérive d’une ancienne génération de uC les 68hc05.
Elle se caractérise par un faible coût de ses composants, une grande facilité d’approvisionnement, de
performances tout à fait honorables pour leur taille et leur prix, et surtout d’une grande facilité et souplesse
d’utilisation qui la place sur le marché des uC destinés à un usage privé (dit de « domotique ») et aux
débutants. C’est celle que nous utiliserons.
Ensuite une taille au dessus, les 16 bits.
Ils sont les dignes successeurs des célèbres 68hc11.
Ils sont plus puissants, plus rapides, possédant plus de modules internes, plus de mémoire. En contre partie,
leur emploie est plus contraignant, et moins à la portée du débutant, son domaine d’application se situe dans
l’industrie, l’automatisation, l’automobile, aux professionnels.
Leur prix est supérieur au hc08, mais leurs performances sans communes mesures.
Pour finir le haut du tableau, les 32 bits, ou Coldfire.
Alors là c’est de la Formule 1, les performances sont largement supérieures à celles des hc12 et sans
comparaisons avec les hc08, mais le prix aussi….
Revenons à ce qui nous intéresse, les « petits » hc08.
Apparue il y a quelques années, cette gamme de uC s’est progressivement étoffée, améliorée et diversifiée.
Au point que maintenant elle compte 3 sous familles, chacune ayant des caractéristiques différentes et ses
avantages et inconvénients.
Voyons ça en détail :
•
La plus ancienne : les hc08 ou hc908 :
Cette famille comporte 25 modèles différents !!!!
La programmation se fait par port série à l’aide d’un programmateur relativement simple, mais est
assez lente, pas très sûre et le debuggage n’est pas ce qu’on peut dire des plus pratique.
Ils ne sont pas très pratiques à mettre en œuvre, utilisation d’un quartz spéciale pour la
programmation, d’un autre pour le fonctionnement normal….
Son avantage est qu’il est très diffusé, et je crois que c’est le seul, mis à part le prix des petits modèles
Ils sont en voie de disparition.
•
En suite, est arrivée la famille des hcS08.
Alors là c’est la révolution, la programmation se fait par USB à l’aide d’un programmateur vendu dans
le commerce pour environ 100€, mais que l’on peut réaliser sois même pour moins de 10€…
Là le debuggage est beaucoup plus pratique et fiable.
Ils ne nécessitent pas de quartz (sauf certains modèles peu diffusés), sont 2.5 fois plus rapides. Et surtout 2 fois
moins chers….
•
Pour finir les hcRS08
Arrivés en même temps que les S08, ils n’ont pas eut le succès de leurs cousins, pas pratiques à mettre
en œuvre (format tout petit) ils ne sont presque pas utilisés.
Dénomination des uC :
Les uC sont référencés de cette manière :
Exemple : 68hcS08QG8
Le 68hc : veut dire que c’est un uC
Le S : veut dire qu’il s’agit de la famille qui se programme par USB
Le 08 veut dire qu’il s’agit d’un 8 bits
Le QG : il est de la famille des QG (logique !!!)
Le 8 c’est la taille de la mémoire flash, ici 8 ko
S’il y a encore d’autres lettres après, elles correspondent au type de boitier, aux performances de résistance en
température, et éventuellement, s’il est conforme aux dernières normes anti-plomb.
La programmation :
Le plus facile consiste à utiliser le logiciel développé par le même fabriquant, se nommant CODEWARRIOR.
Il est disponible au téléchargement gratuit après inscription sur le site www.freescale.com
https://www.freescale.com/webapp/Download?colCode=CWX-H08-PROED-EX&prodCode=CWX-H08SE&nodeId=01272694011860&location=psp
Bien que son téléchargement et son utilisation soit gratuite, elle limite la taille des programmes (en C) à 32ko
(ça fait déjà pas mal….) et en assembleur, là c’est illimité.