Vous êtes sur la page 1sur 22

Microcontrôleur

type de circuit intégré

Un microcontrôleur (en notation abrégée µc, ou uc ou encore MCU en anglais) est un circuit
intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires
(mémoire morte et mémoire vive), unités périphériques et interfaces d'entrées-sorties. Les
microcontrôleurs se caractérisent par un plus haut degré d'intégration, une plus faible
consommation électrique, une vitesse de fonctionnement plus faible (de quelques mégahertz
jusqu'à plus d'un gigahertz[1]) et un coût réduit par rapport aux microprocesseurs polyvalents
utilisés dans les ordinateurs personnels.

Le Motorola 68HC11, ici en boîtier


PLCC, est un microcontrôleur réputé.

Par rapport à des systèmes électroniques à base de microprocesseurs et autres composants


séparés, les microcontrôleurs permettent de diminuer la taille, la consommation électrique et
le coût des produits. Ils ont ainsi permis de démocratiser l'utilisation de l'informatique dans
un grand nombre de produits et de procédés.

Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les
contrôleurs des moteurs automobiles, les télécommandes, les appareils de bureau,
l'électroménager, les jouets, la téléphonie mobile, etc.

Introduction : le domaine
visé, les systèmes
embarqués
La plus grande partie des systèmes électroniques complexes utilisés de nos jours sont des
systèmes embarqués : téléphones mobiles, horloges, baladeurs, récepteurs GPS,
électroménager, automobile, transport aérien/maritime/fluvial. Les systèmes embarqués se
démarquent des systèmes informatiques traditionnels selon plusieurs aspects :

Ils sont soumis à des contraintes de


taille (intégration), de consommation
électrique (autonomie) et de coût
importants (grande série) ;
Ils sont en général affectés à une
tâche bien précise. La taille des
programmes et la quantité de mémoire
(vive et morte), dont ils disposent, sont
modestes (face à un micro-
ordinateur) ;
Ils doivent communiquer avec des
dispositifs d'entrées-sorties (IO) :
boutons, relais, résistances variables,
optocoupleurs, moteurs électriques,
LED, circuits intégrés logiques, etc. ;
Ils n'ont parfois aucun dispositif
d'interface homme-machine : ni clavier,
ni écran, ni disque, ni imprimante, etc.
Par exemple, le contrôleur d'injection
de carburant du moteur d'une
automobile est totalement invisible
pour le conducteur.

Du microprocesseur au
microcontrôleur
Le processeur est l'élément central d'un système informatique : il interprète les instructions et
traite les données d'un programme. Il a besoin de certains éléments externes pour
fonctionner :
une horloge pour le cadencer (en
général à quartz ou Boucle à
verrouillage de phase (PLL : Phase-
Locked Loop)) ;
de la mémoire pour stocker les
variables durant l’exécution du
programme (mémoire vive RAM) et le
programme d’une mise sous tension à
l’autre (mémoire morte ROM). Si l'on
conçoit un système affecté à une
tâche bien particulière (ce qui est
généralement le cas des systèmes
embarqués), le programme n'est pas
amené à changer. Il peut donc être
stocké dans une mémoire morte
(ROM) ;
des périphériques (pour interagir avec
le monde extérieur).
Ces éléments sont reliés par 3 bus :

le bus d'adresse qui permet au


microprocesseur de sélectionner la
case mémoire ou le périphérique
auquel il veut accéder pour lire ou
écrire une information (instruction ou
donnée) ;
le bus de données qui permet le
transfert des informations entre les
différents éléments ; ces informations
seront soit des instructions, soit des
données en provenance ou à
destination de la mémoire ou des
périphériques ;
le bus de contrôle qui indique si
l'opération en cours est une lecture ou
une écriture, si un périphérique
demande une interruption pour faire
remonter une information au
processeur, etc.

Structure d'un système à microprocesseur

Traditionnellement, ces composants sont intégrés dans des circuits distincts. Le


développement d'un tel système à base de microprocesseur se trouve donc pénalisé par
(liste non exhaustive) :

la nécessité de prévoir l'interconnexion


de ces composants (bus, câblage,
nappes de connexion) ;
la place occupée physiquement par les
composants et les moyens
d'interconnexion ;
la consommation énergétique ;
la chaleur dégagée ;
le coût financier.
Les microcontrôleurs améliorent l'intégration et le coût (lié à la conception et à la réalisation)
d'un système à base de microprocesseur en rassemblant ces éléments essentiels dans un
seul circuit intégré. Un microcontrôleur est donc un composant autonome, capable
d'exécuter le programme contenu dans sa mémoire morte dès qu'il est mis sous tension.
Selon les modèles et les conditions de fonctionnement, les microcontrôleurs peuvent avoir
besoin de quelques composants externes (quartz, quelques condensateurs, parfois une
ROM), mais ceci reste très limité.

Lorsque toutes les fonctions du système informatique sont regroupées dans un unique
circuit intégré, y compris les fonctions logiques, analogiques, radiofréquence, d'interface
(USB, Ethernet, etc.), on parle alors de System on Chip (système sur puce ou système mono-
puce). Ces composants sont basés sur un ou plusieurs cœurs de microcontrôleur,
microprocesseur, processeur graphique, DSP, contrôleur de périphériques, etc.
Composants intégrés

Le circuit intégré d'un Intel 8742, un


microcontrôleur 8 bits qui comprend un
processeur cadencé à 12 MHz,
128 octets de mémoire vive, une
EPROM de 2 048 bits, et des entrées-
sorties sur une unique puce.

Un microcontrôleur intègre sur un unique die :

un processeur (CPU), avec une largeur


du chemin de données allant de 4 bits
pour les modèles les plus basiques à
32 ou 64 bits pour les modèles les plus
évolués ;
de la mémoire vive (RAM) pour stocker
les données et variables ;
de la mémoire morte (ROM) pour
stocker le programme. Différentes
technologies peuvent être employées :
EPROM, EEPROM, mémoire flash (la
plus récente) ;
souvent un oscillateur pour le
cadencement. Il peut être réalisé avec
un quartz, un circuit LC ou encore une
PLL ;
des périphériques, capables d'effectuer
des tâches spécifiques. On peut
mentionner entre autres :
les convertisseurs analogiques-
numériques (CAN) (donnent un
nombre binaire à partir d'une
tension électrique),
les convertisseurs numériques-
analogiques (CNA) (effectuent
l'opération inverse),
les générateurs de signaux à
modulation de largeur d'impulsion
(MLI, ou en anglais, PWM pour
Pulse Width Modulation),

les timers/compteurs (compteurs


d'impulsions d'horloge interne ou
d'événements externes),
les chiens de garde (watchdog),
les comparateurs (comparent
deux tensions électriques),
les contrôleurs de bus de
communication (UART, I2C, SSP,
CAN, FlexRay, USB, etc.).
Ces PIC (microcontrôleurs de la
marque Microchip) intègrent des
quantités de composants très
différentes.

Le fonctionnement des périphériques peut être paramétré et commandé par le programme


et/ou les entrées-sorties. Les périphériques peuvent générer une interruption qui contraint le
processeur à quitter le programme en cours pour effectuer une routine de traitement de
l’interruption, lorsque l’événement qui la déclenche survient.

Les microcontrôleurs peuvent généralement se placer dans un état de sommeil, dans lequel
ils présentent une très faible consommation électrique. Un signal envoyé par l'un de leurs
périphériques (timer, broche d'entrée-sortie, watchdog, etc.) permet de les faire sortir de cet
état de sommeil.

Certains microcontrôleurs ont un nombre très restreint de broches, si bien qu'une broche
donnée peut correspondre à plusieurs périphériques internes. La fonction choisie doit alors
être sélectionnée par logiciel.

Le choix des périphériques à intégrer dans un microcontrôleur est délicat. Les fabricants
doivent réaliser un compromis entre des besoins contradictoires : utiliser des fréquences
élevées, réduire la taille du circuit, apporter des fonctionnalités nombreuses, élaborer une
architecture flexible, assurer des coûts modérés, etc.

Architecture
Un microcontrôleur peut effectuer la plupart des instructions machine habituelles, avec
certaines restrictions liées à son caractère embarqué (taille restreinte des mots machine,
petite taille disponible, etc.). On note cependant quelques particularités.

Les capacités mathématiques sont en général particulièrement limitées, réduites à des


additions, soustractions et décalages sur des octets pour les plus simples d'entre eux. Les
calculs mathématiques évolués doivent donc être ramenés à une succession d'opérations
simples portant seulement sur des octets. Des routines mathématiques (petits programmes
permettant de réaliser les calculs complexes) ont été développées pour la plupart des
microcontrôleurs populaires.

Les instructions d'entrée-sortie sont bien développées, de façon à pouvoir :

lire l'état d'un port d'entrée ;


écrire une information dans le registre
d'un port de sortie, qui maintient
l'information à la disposition des
circuits extérieurs.
Les microcontrôleurs disposent généralement de nombreuses instructions destinées aux
opérations sur les bits, de façon à rendre les programmes plus compacts, notamment
lorsqu'ils agissent sur une entrée-sortie donnée. Ainsi, un processeur généraliste peut avoir
besoin de plusieurs instructions pour tester la valeur d'un bit d'un registre et effectuer un saut
si le bit vaut vrai. Cette fonction courante est assurée par une seule instruction dans certains
microcontrôleurs[2].

Les modes d'adressage utilisables sont en général semblables à ceux des autres
processeurs.

De façon générale, les instructions et modes d'adressage disponibles varient fort selon les
familles de microcontrôleurs.

Certains microcontrôleurs suivent une architecture Harvard[3] : ils possèdent des bus séparés
pour la mémoire de programme et la mémoire de données, ce qui permet aux accès d'avoir
lieu en même temps (on parle d'accès concurrent). Lorsqu'on utilise une architecture Harvard,
les mots de programme peuvent avoir une largeur (nombre de bits) différente de celle des
mots de la mémoire de données et des registres. Par exemple, il peut y avoir des instructions
de 12 bits et des registres de données de 8 bits.
Utilisations et volume du
marché
Les microcontrôleurs sont très utilisés dans tous les systèmes embarqués évoqués en
introduction. Ils sont également très prisés en robotique amateur (robots autonomes) et en
modélisme (automatismes des maquettes de réseaux ferroviaires par exemple).

Les microcontrôleurs représentent la plus grosse partie des ventes dans le marché des
microprocesseurs [réf. nécessaire]. En effet, un foyer moyen d'un pays développé est susceptible
d'être équipé de seulement un ou deux microprocesseurs généralistes (ordinateurs), mais
d'une ou deux douzaines de microcontrôleurs (appareils électroménagers). Une automobile
de milieu de gamme est équipée d'au moins 50 microcontrôleurs [réf. nécessaire].

Microcontrôleur ST6 équipé d'une


mémoire EPROM effaçable aux UV.

Les fabricants proposent souvent des versions spéciales de leurs microcontrôleurs pour
faciliter le développement matériel et logiciel des applications. Par exemple, lorsque les
mémoires mortes utilisées étaient des EPROM, il existait des variantes des microcontrôleurs
équipées de fenêtres sur le dessus, qui permettaient d'effacer le programme grâce à de la
lumière ultraviolette. Ceci permettait de recommencer une programmation après un cycle
programmation-test.

Pour de petites séries (quelques milliers d'unités ou moins), les microcontrôleurs


programmables une seule fois (OTP, one-time programmable) sont économiques. Ils sont
basés sur la même puce que la version UV-EPROM, se programment avec le même matériel,
mais le boîtier n'est pas équipé de la fenêtre qui permet l'effacement (et qui est onéreuse).
Il peut exister des versions de microcontrôleurs dépourvus de mémoire morte interne. La
mémoire morte est alors située dans un boîtier extérieur, par exemple une EPROM. Il suffit
alors d'un simple programmateur d'EPROM pour réaliser la programmation, mais des broches
du microcontrôleur sont requises pour la communication avec la mémoire externe, et ne
peuvent donc pas être utilisées pour les entrées-sorties. Ces versions sont plus coûteuses,
mais peuvent se révéler intéressantes si les quantités visées sont faibles.

Plus rarement, on rencontre une variante de l'approche précédente, le piggy back. Le


microcontrôleur ne dispose pas non plus de mémoire morte interne, mais la communication
avec l’EPROM se fait non pas par des broches d'entrée-sortie, mais par des broches spéciales
situées sur le dessus du boîtier. L’EPROM se fixe alors au-dessus du microcontrôleur, et ne
monopolise pas de port d'entrée-sortie. Ces versions sont souvent onéreuses et peu
pratiques, sauf pour les phases de développement et les très petites séries.

Le recours à la programmation sur place, dans le circuit applicatif, permet de mettre à jour le
programme après la fabrication du produit. On parle alors de flashage. Cette opération peut
être effectuée via un programme situé en ROM, ou passer par l'utilisation d'un connecteur
physique particulier. Dans tous les cas, on évite ainsi un retour en usine pour effectuer la
mise à jour.

Lorsqu'il s'agit de produire de plus grandes séries (plusieurs milliers et plus), le coût de
réalisation d'un masque pour la fabrication de mémoire morte non programmable est
facilement amorti sur tous les exemplaires produits. On peut alors fixer le contenu de la
mémoire morte lors de la réalisation du circuit intégré, et non plus lors du montage du
produit. Cependant, ces mémoires présentent l'inconvénient de ne pouvoir être mises à jour.
Si l'on envisage néanmoins de telles mises à jour, on peut prévoir de monter le
microcontrôleur sur un support, ce qui permet de le faire remplacer par un technicien en cas
de nécessité.

Environnements de
programmation
Le programme d'un microcontrôleur est généralement appelé micrologiciel.

À l'origine, les microcontrôleurs se programmaient en assembleur. Fortement bas niveau (et


donc, intrinsèquement optimisé), l'assembleur posa et pose toujours d'énormes problèmes
pour la maintenance et l'évolution des logiciels embarqués. Désormais, on utilise de plus en
plus des langages de haut niveau, notamment le langage C, capable de faciliter la
programmation de microcontrôleurs toujours plus puissants. Ces compilateurs C présentent
généralement certaines restrictions liées aux spécificités des microcontrôleurs (mémoire
limitée, par exemple). Le compilateur GCC peut produire du code pour certains
microcontrôleurs[4]. Avec l’augmentation de la puissance et de la quantité de mémoire de
stockage (FLASH) disponible dans les microcontrôleurs, les programmes de ces derniers
peuvent désormais être écrits en C++. Il existe même des frameworks et plateformes en C++
destinés à l’embarqué, comme Qtopia, mais l'utilisation de ceux-ci restera limitée aux
microcontrôleurs les plus puissants.

Certains microcontrôleurs disposent également de firmware réalisant l'interprétation d'un


langage évolué. Ainsi, l’Intel 8052 et le Zilog Z8 ont pu être programmés en BASIC dès leurs
débuts. Plus récemment, le BASIC Stamp dispose d'un interprète BASIC en mémoire morte.

Il existe des environnements pour aider au développement de certaines applications. Par


exemple, LabVIEW et son langage G permettent de programmer les microcontrôleurs Blackfin
d'Analog Devices.

Des simulateurs sont disponibles pour certains microcontrôleurs, comme l'environnement


MPLAB de Microchip. Les développeurs peuvent ainsi analyser le comportement du
microcontrôleur et du programme, comme s'il s'agissait du composant réel. Un simulateur
montre l'état interne du processeur, ainsi que celui de ses sorties. Bien que la plupart des
simulateurs ne proposent pas de simuler les autres composants d'un système, ils permettent
de spécifier les entrées à volonté. On peut de cette façon créer des conditions qui seraient
sans cela difficiles à reproduire dans une implémentation physique. Cela facilite donc
l'analyse et la résolution des problèmes. De la même façon, certains logiciels de CAO
simulent le comportement du microcontrôleur et des composants qui l'entourent. On peut
ainsi afficher les états des entrées et sorties des différents composants au cours de
l'exécution d'un programme.

Programmateur de microcontrôleur
PIC.
Une fois le programme compilé, le fichier binaire doit être envoyé au microcontrôleur. On
utilise soit :

un programmateur, pour
microcontrôleurs et souvent
également d’EEPROM. On parle alors
de programmateur universel.
un programmateur ISP qui a l'avantage
de ne pas nécessiter de sortir le
microcontrôleur du système
électronique complet. Ce type de
programmation pourra se faire via le
bus de communication standard JTAG
ou un autre bus, souvent propriétaire
(Microchip par ex. avec sa série
PIC16F) et, malheureusement,
inadapté au test des cartes lors de la
phase de production.
Toutefois, le programme qui a été envoyé peut comporter des bogues (bugs), aussi, pour
parvenir à les détecter on peut utiliser un émulateur in-circuit.

Le projet μCLinux vise à faire fonctionner Linux sur des microcontrôleurs et des
microprocesseurs dépourvus de MMU. Il est par exemple disponible sur Motorola ColdFire,
Blackfin, Intel i960, Motorola QUICC, ARM7TDMI, NEC V850.

Familles de
microcontrôleurs

la famille Atmel AT91 ;


les familles ARM Cortex-M et ARM
Cortex-R
la famille Atmel AVR (utilisée par des
cartes Wiring et Arduino) ;
le C167 de Siemens/Infineon ;
la famille des Infineon AURIX TC3x,
Infineon AURIX TC2x, Infineon TriCore
TC1x, Infineon XMC, XC2000 de
Infineon Technologies ;
la famille Hitachi H8 ;
la famille Intel 8051, qui ne cesse de
grandir ; de plus, certains processeurs
récents utilisent un cœur 8051, qui est
complété par divers périphériques
(ports d’E/S,
compteurs/temporisateurs,
convertisseurs A/N et N/A, chien de
garde, superviseur de tension, etc.) ;
l’Intel 8085, à l'origine conçu pour être
un microprocesseur, a en pratique
souvent été utilisé en tant que
microcontrôleur ;
le Freescale 68HC11 ;
la famille Freescale 68HC08 ;
la famille Freescale 68HC12 ;
la famille Freescale Qorivva
MPC5XXX ;
la famille des PIC de Microchip ;
la famille des dsPIC de Microchip ;
la famille ADuC d'Analog Devices ;
la famille PICBASIC de Comfile
Technology;
la famille MSP430 de Texas
Instruments ;
la famille 8080, dont les héritiers sont
le microprocesseur Zilog Z80
(désormais utilisé en tant que
contrôleur dans l'embarqué) et le
microcontrôleur Rabbit ;
la famille PSoC de Cypress
Semiconductor ;
la famille LPC21xx ARM7TDMI de
Philips ;
la famille V800 de NEC ;
la famille K0 de NEC;
la famille des ST6, ST7, ST10, STR7,
STR9, de STMicroelectronics ;
la famille STM32 de
STMicroelectronics;
la famille STM8 de
STMicroelectronics.

Notes et références

1. Par exemple, le PIC10F200 (http://w


ww.microchip.com/wwwproducts/De
vices.aspx?dDocName=en01986
3) [archive] de Microchip fonctionne à
4 MHz, le LPC 3131 (http://www.stan
dardics.nxp.com/products/lpc3000/l
pc3130.lpc3131/) [archive] « Copie
archivée (https://web.archive.org/we
b/20181108094122/http://www.stan
dardics.nxp.com/products/lpc3000/l
pc3130.lpc3131/#) » (version du
8 novembre 2018 sur Internet Archive) de

NXP fonctionne à 180 MHz.

2. Par exemple, l'instruction BTFSS


(« bit test file, skip if set ») sur PIC
permet d'ignorer l'instruction
suivante si un certain bit d'un registre
est à 1

3. Par exemple les PIC et les AVR.


4. Voir : Host/Target specific
installation notes for GCC (http://gcc.
gnu.org/install/specific.htm
l) [archive].

Portail de l’informatique
Portail de l’électricité et de l’électr

Ce document provient de
« https://fr.wikipedia.org/w/index.php?
title=Microcontrôleur&oldid=207841284 ».

La dernière modification de cette page a été faite


le 14 septembre 2023 à 15:47. •
Le contenu est disponible sous licence CC BY-SA
4.0 sauf mention contraire.

Vous aimerez peut-être aussi