Microcontrôleurs

 

Les microcontrôleurs (MCU)

Evoquer les microcontrôleurs en quelques lignes paraîtra à certains inconcevable, voire inconvenant, tant il est vrai que ces composants sont devenus, aujourd'hui, omniprésents et pour ainsi dire incontournables...

Nous nous bornerons pourtant à une présentation très succinte des microcontrôleurs (ou µcontrôleurs, c'est plus chic!, ou encore MCU), car la complexité de ce circuit hautement intégré nous entraînerait bien au-delà d'une simple initiation à l'électronique.

 

Qu'est-ce qu'un microcontrôleur?

Un microcontrôleur (MCU) pourrait être très sommairement défini comme un système de contrôle complet, dédié à une application particulière et pour cela doté de fonctions logiques et de la plupart des autres éléments nécessaires à son fonctionnement, d'où un nombre très restreint de composants périphériques.

MCU 8 bits de la famille ST 6200.

Voici le block diagram (l'organisation interne) typique d'un microcontrôleur:

ROM RAM
CPU EEPROM
TIMER A/D CONVERTER
I/O PORT SERIAL INTERFACE

ROM (Read Only Memory): c'est la mémoire "morte", qui contient le programme, donc les instructions à accomplir, et éventuellement des données (data).

La ROM est parfois remplacée par de la mémoire flash, qui peut être effacée électriquement, ce qui permet de modifier le programme. Une mémoire flash peut être effacée des milliers de fois!

RAM (Random Access Memory): c'est la mémoire dite "vive", qui permet de stocker des données pendant l'éxécution du programme.

EEPROM (Electrically Erasable Programmable Read Only Memory): cette mémoire peut être effacée et reprogrammée, comme la flash. Elle sert à sauvegarder des données, en cas par exemple de coupure de courant.

CPU (Central Processing Unit): c'est le "cerveau" du système. Ce microprocesseur lit et éxécute les instructions du programme stocké en mémoire.

Timer: il sert de base de temps interne au système, génère des signaux, compte des évènements.

Certains MCU sont dotés d'un watchdog timer (chien de garde): ce dispositif, s'il n'est pas réinitialisé par le programme à intervalles prédéfinis, considère qu'il y a problème au niveau logiciel et provoque un reset matériel (hardware reset).

I/O ports (Input/output ports): la plupart des MCU possèdent plusieurs ports d'entrée/sortie, qui permettent de "communiquer" avec le système (par l'intermédiaire, par exemple, d'un clavier).

Serial interface: elles servent à échanger des données avec le monde extérieur. On en trouve de deux types: asynchrone (serial communication interface, SCI ou UART) ou synchrone (serial peripheral interface, SPI).

Ces interfaces sont utilisées, par exemple, pour relier le MCU à un PC (SCI) ou à une EEPROM. Dans le cas d'une transmission synchrone, chaque bit est synchronisé par un signal d'horloge. Dans le cas d'une transmission asynchrone, chaque octet est précédé d'un bit de départ et se termine par un bit de fin, qui permettent de synchroniser émetteur et récepteur.

A/D converter: convertissseur analogique/numérique.

 

Comment fonctionne un microcontrôleur?

Le schéma ci-dessous résume le fonctionnement interne d'un microcontrôleur: à droite, les mémoires contenant instructions et données; au centre l'horloge et le processeur, qui participent à l'éxécution des instructions du programme; à gauche, les entrées et sorties, permettant au microcontrôleur de communiquer avec le monde extérieur (recevoir des instructions, transmettre des données...).

Cette manière de présenter les choses n'a sans doute qu'un seul mérite: une (relative) lisibilité... Dans la réalité, un microcontrôleur se révèle nettement plus complexe, surtout s'il est doté de caractéristiques plus sophistiquées.

 

La programmation d'un microcontrôleur

Compte tenu de ce qui a été dit plus haut, il parait évident qu'un MCU n'est pas un circuit comme les autres: on ne peut pas se contenter de le souder sur la carte. D'ailleurs, on évite de le souder: il vaut mieux l'insérer dans un support, ce qui permet au besoin de le retirer, puis de le remettre en place ou de le remplacer.

Pour accomplir sa tâche, un MCU doit être programmé à cet effet: il faut au préalable implanter dans sa mémoire un programme, c'est-à-dire une série d'instructions, que le processeur éxécutera. Cette étape implique deux types d'outils, appelés de développement: des outils logiciels (software tools) et matériels (hardware tools).

La programmation proprement dite est réalisée sur ordinateur, grâce à un environnement de programmation, comprenant un langage (souvent le C), un compilateur, un linker, un debugger... Il s'agit d'écrire le code, ou suite d'instructions qui devront être éxécutées, dans les limites bien sûr des capacités du MCU (mémoire, vitesse d'horloge...).

Une fois le programme écrit, il convient de le tester, à l'aide d'un simulateur (ou émulateur), qui reproduit en temps réel le comportement d'un MCU donné, et du debugger. Lorsque tout va bien, il ne reste plus qu'à transférer le programme dans la mémoire du MCU.

La frontière entre électronique et informatique est ici, on le voit, pour ainsi dire inexistante...

 

A quoi servent les microcontrôleurs?

Le microcontrôleur apparait donc comme un système extrêmement complet et performant, capable d'accomplir une ou plusieurs tâches très spécifiques, pour lesquelles il a été programmé.

Ces tâches peuvent être très diverses, si bien qu'on trouve aujourd'hui des microcontrôleurs presque partout: dans les appareils électro-ménagers (réfrigérateurs, fours à micro-ondes...), les téléviseurs et magnétoscopes, les téléphones sans fil, les périphériques informatiques (imprimantes, scanners...), les voitures (airbags, climatisation, ordinateur de bord, alarme...), les avions et vaisseaux spatiaux, les appareils de mesure ou de contrôle des processus industriels, etc.

La force du microcontrôleur, qui lui a permis de s'imposer de manière si envahissante en si peu de temps, c'est sa spécialisation (il remplit une ou quelques tâches bien définies, c'est tout), sa très grande fiabilité, son coût modique (pour les modèles produits en grande série, notamment pour l'industrie automobile).

Ajoutons que par rapport au microprocesseur, toujours assoiffé de performances pures, le modeste microcontrôleur se cantonne dans un rôle obscur et ingrat, mais essentiel, tout en visant le meilleur rapport qualité/prix.