Microcontrôleur

Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires, unités périphériques et interfaces d'entrées-sorties.



Catégories :

Microcontrôleur - Microprocesseur

Recherche sur Google Images :


Source image : prof.guedon.org
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Définitions :

  • Circuit intégré comprenant principalement un microprocesseur, plusieurs type de mémoires plus, au moins un dispositif d'entrée-sortie et , bien... (source : fr.wiktionary)
Le Motorola 68HC11, ici en boîtier PLCC, est un microcontrôleur connu.

Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires (mémoire morte pour le programme, mémoire vive pour les données), unités périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se définissent par un plus haut degré d'intégration, une plus faible consommation électrique (quelques milliwatts en fonctionnement, quelques nanowatts en veille), une vitesse de fonctionnement plus faible (quelques mégahertz à quelques centaines de mégahertz[1]) et un coût réduit comparé aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels.

Comparé à des dispositifs électroniques à base de microprocesseurs et autres composants scindé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 la plupart de produits et de procédés.

Les microcontrôleurs sont souvent 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 dispositifs embarqués

La plus grande partie des dispositifs électroniques complexes utilisés aujourd'hui sont des systèmes embarqués : téléphones mobiles, horloges, baladeurs, récepteurs GPS, électroménager, automobile, transport aérien/maritime/fluvial. Les dispositifs embarqués se démarquent des dispositifs informatiques respectant les traditions selon plusieurs aspects :

Du microprocesseur au microcontrôleur

Le processeur est l'élément central d'un dispositif informatique : il interprète les instructions et traite les données d'un programme. Il a besoin de certains éléments externes pour fonctionner :

Ces éléments sont reliés par 3 bus :

Structure d'un dispositif à microprocesseur

Habituellement, ces composants sont intégrés dans des circuits différents. Le développement d'un tel dispositif à base de microprocesseur se trouve par conséquent pénalisé par (liste non exhaustive)  :

Les microcontrôleurs perfectionnent l'intégration et le coût (lié à la conception ainsi qu'à la réalisation) d'un dispositif à base de microprocesseur en rassemblant ces éléments essentiels dans un seul circuit intégré. Un microcontrôleur est par conséquent 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, quelquefois une ROM), mais ceci reste particulièrement limité.

Quand toutes les fonctions du dispositif 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, de microprocesseur ou de DSP.

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 :

Ces microcontrôleurs PIC intègrent des quantités de composants particulièrement 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, quand l'événement qui la déclenche survient.

Les microcontrôleurs peuvent le plus souvent 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, ... ) permet de les faire sortir de cet état de sommeil.

Certains microcontrôleurs ont un nombre particulièrement restreint de broches, si quoiqu'une broche donnée peut correspondre à plusieurs périphériques internes. La fonction choisie doit alors être choisie 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, diminuer 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 majorité 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 généralement spécifiquement 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 par conséquent être ramenés à une succession d'opérations simples portant uniquement sur des octets. Des routines mathématiques (petits programmes servant à réaliser les calculs complexes) ont été développées pour la majorité des microcontrôleurs populaires.

Les instructions d'entrée-sortie sont bien développées, de manière à pouvoir :

Les microcontrôleurs disposent le plus souvent de nombreuses instructions dédiées aux opérations sur les bits, de manière à rendre les programmes plus compacts, surtout quand 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 généralement identiques à ceux des autres processeurs.

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

Certains microcontrôleurs suivent une architecture Harvard[3] : ils possèdent des bus scindé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). Quand 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. A titre d'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 particulièrement utilisés dans l'ensemble des systèmes embarqués évoqués en introduction. Ils sont aussi particulièrement 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. En effet, un foyer moyen d'un pays développé est susceptible d'être équipé d'uniquement 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.

Microcontrôleur ST6 équipé d'une mémoire EPROM effaçable aux UV.

Les fabricants proposent fréquemment des versions spéciales de leurs microcontrôleurs pour favoriser le développement matériel et logiciel des applications. A titre d'exemple, quand 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 localisé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 par conséquent 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 localisé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 fréquemment onéreuses et peu pratiques, sauf pour les phases de développement et les particulièrement petites séries.

Le recours à la programmation sur place, dans le circuit applicatif, sert à 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 localisé en ROM, ou passer par l'utilisation d'un connecteur physique spécifique. Dans l'ensemble des cas, on évite ainsi un retour en usine pour effectuer la mise à jour.

Quand 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 aisément amorti sur l'ensemble des 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 on envisage néanmoins de telles mises à jour, on peut prévoir de monter le microcontrôleur sur un support, ce qui sert au faire remplacer par un technicien en cas d'obligation.

Environnements de programmation

Le programme d'un microcontrôleur est le plus souvent nommé firmware ou micrologiciel.

Au départ, les microcontrôleurs se programmaient en assembleur. Fortement bas niveau (et par conséquent, 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, surtout le langage C, capable de favoriser la programmation de microcontrôleurs encore plus puissants. Ces compilateurs C présentent le plus souvent 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 framework et plateformes en C++ dédiés à l'embarqué, comme Qtopia, mais l'utilisation de ceux-ci restera limitée aux microcontrôleurs les plus puissants.

Certains microcontrôleurs disposent aussi 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 il y a peu de temps, 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. A titre d'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, mais aussi celui de ses sorties. Quoique la majorité des simulateurs ne proposent pas de simuler les autres composants d'un dispositif, ils permettent de spécifier les entrées à volonté. On peut de cette façon créer des conditions qui seraient sans cela complexes à reproduire dans une implémentation physique. Cela favorise par conséquent 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 composant 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 :

Cependant, 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, ARM7-TDMI, NEC V850.

Familles de microcontrôleurs

Notes et références

  1. A titre d'exemple, le PIC10F200 de Microchip fonctionne à 4 MHz, le LPC 3131 de NXP fonctionne à 180 MHz.
  2. A titre d'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.


Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/Microcontr%C3%B4leur.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu