Microcontrôleur - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs est disponible ici.

Un microcontrôleur est un circuit intégré rassemblant dans un même boitier un microprocesseur, plusieurs types de mémoires et des périphériques de communication (Entrées-Sorties).

Selon un arrêté français du 14 septembre 1990 relatif à la terminologie des composants électroniques[1] : " Circuit intégré comprenant essentiellement un microprocesseur (Un microprocesseur est un processeur dont les composants ont été suffisamment...), ses mémoires, et des éléments personnalisés selon l'application ".

Le Motorola 68HC11, ici en boîtier PLCC, est un microcontrôleur réputé.
Le Motorola (www.motorola.com/fr) 68HC11, ici en boîtier PLCC, est un microcontrôleur (Un microcontrôleur est un circuit intégré qui rassemble les éléments...) réputé.

Structure d'un système à microprocesseur

Un microprocesseur a besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est...) de certains éléments pour fonctionner :

  • de la mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir...) morte dite ROM (principalement pour stocker le programme) ;
  • de la mémoire vive (La mémoire vive, mémoire système ou mémoire volatile, aussi appelée RAM de...) dite RAM (principalement pour stocker les variables) ;
  • des périphériques (principalement pour interagir avec le monde (Le mot monde peut désigner :) extérieur).
  • une horloge pour le cadencer (principalement à quartz)

Ces différents blocs sont reliés par 3 bus :

  • le bus d'adresse (Les adresses forment une notion importante en communication, elles permettent à une entité de...) 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 (Un bus de données est un bus informatique dédié au transfert des données au sein de...) qui permet le transfert des informations entre les différents blocs ; 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 (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de...) qui indique si l'opération en cours est une lecture ou une écriture, si un périphérique demande une interruption etc.
Structure d'un système à microprocesseur
Structure d'un système à microprocesseur

Le fonctionnement est le suivant :

  • À la mise en route (Le mot « route » dérive du latin (via) rupta, littéralement « voie...) du système, le microprocesseur va chercher dans la mémoire à l'adresse 0 (pour la plupart des processeurs) la première instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une...) à exécuter ;
  • il stocke cette instruction dans un registre interne (En France, ce nom désigne un médecin, un pharmacien ou un chirurgien-dentiste, à la...) appelé registre d'instructions ;
  • il exécute cette instruction ;
  • puis en consultant le registre pointeur d'instruction va chercher l'instruction suivante, etc.

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) ;
  • la place occupée physiquement par les composants et les moyens d'interconnexion ;
  • la consommation énergétique ;
  • la chaleur (Dans le langage courant, les mots chaleur et température ont souvent un sens équivalent :...) 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é (Le circuit intégré (CI), aussi appelé puce électronique, est un composant électronique...). On parle alors de " système sur une puce " (en anglais : " System on Chip "). Dans la suite, nous nous intéressons plus particulièrement aux microcontrôleurs 8 bits, c’est-à-dire ceux dont le bus de données comportent 8 bits et le bus d'adresses 16 bits.

Périphériques

Les périphériques sont des circuits électroniques intégrés au microcontrôleur capables d'effectuer des tâches spécifiques. On peut mentionner entre autres :

  • les convertisseurs Analogique/Numérique (donnent un nombre (La notion de nombre en linguistique est traitée à l’article « Nombre...) binaire à partir d'une tension (La tension est une force d'extension.) électrique) ;
  • les convertisseurs Numérique/Analogique (opération inverse) ;
  • les générateurs de signaux à modulation de largeur (La largeur d’un objet représente sa dimension perpendiculaire à sa longueur, soit...) d'impulsion (MLI, ou en Anglais, PWM pour Pulse Width Modulation) ;
  • les timers (compteurs de temps (Le temps est un concept développé par l'être humain pour appréhender le...) ou d'événements) ;
  • les comparateurs (comparent deux tensions électriques) ;
  • les contrôleurs de bus (UART, IIC, SSP) ;
  • les oscillateurs (servent de base de temps aux timers).

Le fonctionnement des périphériques peut être paramétré et commandé par le programme et/ou les entrées-sorties (Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur...). Les périphériques peuvent générer une interruption qui contraint le processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de...) à quitter le programme principal pour effectuer une routine d'interruption.

Jeu d'instructions

On peut classer les instructions qu'un microcontrôleur est capable d'effectuer en quelques groupes.

Instructions de transfert

Le microcontrôleur passe une grande partie de son temps à transférer des octets d'un endroit à l'autre du système : d'un périphérique vers un registre interne ou vice-versa, d'un registre interne vers la mémoire RAM ou vice-versa. Ce qui ne peut en général pas être fait directement, c'est un transfert direct d'une case mémoire vers une autre ou vers un périphérique, ou une écriture en mémoire ROM, la structure du microcontrôleur rend obligatoire le passage des informations par un de ses registres internes. Remarquons que, sauf exceptions, il s'agit plutôt d'une copie que d'un transfert puisque la case mémoire d'origine garde son information (tant qu'on n'a pas écrit autre chose à la place).

Instructions arithmétiques

Un microcontrôleur 8 bits n'est pas un grand mathématicien (Un mathématicien est au sens restreint un chercheur en mathématiques, par extension toute...). Tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou...) au plus est-il capable d'effectuer des additions, des soustractions, des multiplications et des divisions sur des nombres binaires de 8 bits. Toutes les opérations mathématiques (Les mathématiques constituent un domaine de connaissances abstraites construites à l'aide...) complexes telles que le traitement des grands nombres, des nombres fractionnaires, des puissances, des racines carrées, des fonctions trigonométriques, logarithmiques et exponentielles doivent être ramenées à 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.

Instructions logiques

Les microcontrôleurs sont capables d'effectuer des opérations logiques : ET, OU, XOU (XOR), NON (inverseur), rotations, décalages. Les opérations sont opérées simultanément sur les bits correspondant des deux registres.

La comparaison des octets A et B, qui est considérée comme une opération logique (La logique (du grec logikê, dérivé de logos (λόγος),...), est réalisée comme une soustraction (La soustraction est l'une des opérations basiques de l'arithmétique. La soustraction...) dont on néglige le résultat ; on s'intéresse simplement au fait de savoir s'il est nul (ce qui signifie que A = B), positif (A > B) ou négatif (A < B). Ces indications sont inscrites dans des indicateurs d'états (petites mémoires d'1 bit situées dans le processeur).

Instructions d'entrées/sorties

Ces instructions sont utilisées pour :

  • lire l'état d'un port d'entrée (permettant l'interfaçage d'interrupteurs, de commutateurs, d'optocoupleurs, de convertisseurs analogiques/numériques, de claviers, etc.) ;
  • écrire une information dans le registre d'un port de sortie, qui maintient l'information à la disposition des circuits extérieurs (leds, moteurs (Un moteur est un dispositif transformant une énergie non-mécanique (éolienne, chimique,...), relais, convertisseurs numériques/analogiques, etc.) ;
  • écrire ou lire une information dans les registres d'un port série.

Signalons que dans certains microcontrôleurs les périphériques sont considérés simplement comme des cases de mémoire et ils sont gérés par les instructions de transfert (entrées/sorties intégrées mémoire). D'autres microcontrôleurs disposent d'instructions spécifiques pour les entrées/sorties (entrées/sorties indépendantes).

Instructions de branchement

Il s'agit d'instructions qui altèrent le déroulement normal du programme. On distingue les sauts et les sous-routines.

  • Les sauts provoquent un branchement du programme vers une adresse mémoire qui n'est pas contigüe à l'endroit où l'on se trouve.
  • La sous-routine ou sous-programme (En informatique, un sous-programme est un sous-ensemble du programme dans sa hiérarchie...) est une partie de programme dont on a besoin à plusieurs endroits dans l'exécution du programme principal. Plutôt que de répéter ce sous-programme à tous les endroits où l'on en a besoin, on le place en un endroit donné (par exemple à la fin du programme principal) et on opère un branchement du programme principal vers le sous-programme chaque fois que nécessaire. La grande différence par rapport au saut, c'est qu'au moment du branchement il faut mémoriser l'adresse d'où l'on vient, afin de pouvoir y revenir une fois le sous-programme terminé. Ceci est effectué en mémorisant l'adresse de départ dans un registre ad hoc (la pile) du microcontrôleur.

Tant les sauts que les sous-routines peuvent être :

  • inconditionnels ;
  • conditionnels, c'est-à-dire que le branchement n'a lieu que si une certaine condition est remplie ; généralement, la condition testée est le contenu d'un des indicateurs d'état ; ceux-ci indiquent par exemple si le contenu de l'accumulateur est nul, positif, négatif, de parité paire (On dit qu'un ensemble E est une paire lorsqu'il est formé de deux éléments distincts...) ou impaires.

Instructions diverses

On trouve dans ce groupe :

  • des instructions de gestion de la pile (zone de mémoire RAM permettant le stockage de données pendant l'exécution du programme) ;
  • des instructions de contrôle du processeur : par exemple passage en mode basse consommation, contrôle des périphériques embarqués (càd. sur la même puce que le processeur) ;
  • des instructions permettant de positionner des indicateurs internes du processeur.

Ces instructions varient fort selon les familles des microcontrôleurs.

Modes d'adressage pour les données

De nombreuses instructions font référence à des données se trouvant à différents endroits du microcontrôleur : registres internes du processeur, ROM, RAM, ports d'E/S. On appelle modes d'adressage les différentes façons de spécifier les endroits où se trouvent les données dont on a besoin.

Adressage implicite

Certaines opérations ne peuvent être réalisées que sur une donnée (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent...) se trouvant en un endroit bien précis du processeur (par exemple, l'accumulateur ou la pile). Dans ce cas, il n'est pas nécessaire de spécifier l'adresse du registre en question et on parle d'adressage implicite.

Adressage registre ou inhérent

Le processeur dispose d'un certain nombre de registres de travail. De nombreuses instructions y font référence ; vu leur nombre peu élevé (8, par exemple), il suffit d'un petit nombre de bits pour spécifier le registre désiré (3 dans notre cas). On parle dans ce cas d'adressage registre ou inhérent.

Adressage direct

Dans ce mode d'adressage, on donne l'adresse (généralement en 16 bits) de la donnée (Dans les technologies de l'information, une donnée est une description élémentaire,...) en mémoire (RAM, ROM ou port d'E/S s'il est intégré à la mémoire). Ce mode d'adressage permet d'indiquer n'importe quel endroit dans la mémoire, le prix à payer étant que l'on doit spécifier l'adresse concernée dans son intégralité (2 à 4 octets).

Certains processeurs implémentent aussi, pour réduire l'encombrement du programme, l'adressage direct restreint : l'adresse ne comporte qu'un octet (L’octet est une unité de mesure en informatique mesurant la quantité de...), et ce mode ne permet d'accéder qu'aux données se trouvant sur la page courante (adresses ayant donc les mêmes bits de poids (Le poids est la force de pesanteur, d'origine gravitationnelle et inertielle, exercée par la...) fort) ou sur la page 0 (adresses ayant donc les bits de poids fort à 0).

Adressage indirect à registre

Dans ce mode d'adressage, l'adresse de la donnée se trouve dans un registre spécial du processeur (du même nombre de bits que son bus d'adresses), le pointeur de données. L'avantage, par rapport à l'adressage direct, est que l'adresse peut être manipulée commodément, par exemple pour accéder à une suite de données consécutives en mémoire. Ceci est particulièrement utile lorsqu'on manipule des données stockées dans un tableau (Tableau peut avoir plusieurs sens suivant le contexte employé :).

Adressage immédiat

C'est un peu un abus de langage que de parler d'adressage dans ce cas-ci. En effet, la donnée suit tout simplement l'instruction.

Adressage indexé

Ce mode est assez semblable à l'adressage indirect à registre. Il fait appel à un registre spécial appelé " registre d'index ". Certains microcontrôleurs ne supportent pas ce mode, d'autres au contraire ont 1 ou même 2 registres d'index. Deux registres d'index sont particulièrement bienvenus lorsqu'il s'agit de déplacer un bloc de données dans la mémoire RAM.

Structure d'une instruction

Une instruction comporte généralement de 1 à 3 octets. Le premier octet est appelé code opératoire, il spécifie ce que l'on veut faire.

Le ou les octets suivants spécifient la donnée (adressage immédiat), une adresse restreinte, une adresse absolue (L'absolue est un extrait obtenu à partir d’une concrète ou d’un...) (16 bits) ou une donnée 16 bits (peu utilisé).

Une instruction traite au maximum deux données, si l'on se limite à 3 octets pour l'instruction, une seule des données peut être en RAM.

Modes d'adressage pour les branchements

L'adresse de la prochaine instruction à exécuter est contenue dans un registre spécial du processeur, appelé pointeur de programme ou compteur de programme.

  • Adressage direct : dans ce cas, l'adresse où l'on doit aller est donnée en 16 bits ; on peut donc se rendre n'importe où dans la mémoire (programme). Au moment du branchement, le contenu du pointeur de programme est remplacé par l'adresse en question (si le branchement concerne une sous-programme, on sauvegarde (En informatique, la sauvegarde (backup en anglais) est l'opération qui consiste à...) le contenu du pointeur de programme).

Comme de nombreux branchements s'effectuent vers des adresses mémoire proches de l'endroit où l'on se trouve au moment d'exécuter le branchement, on a prévu deux modes d'adressage plus compacts, ne nécessitant qu'un octet pour l'adresse :

  • adressage relatif : on spécifie le nombre de pas à effectuer en avant, ou plus souvent en arrière, dans le programme ;
  • adressage restreint : on spécifie l'adresse sur la page courante (octet d'adresse le plus significatif inchangé).

Familles de microcontrôleurs

  • la famille Atmel AT91 ;
  • la famille Atmel AVR ;
  • le C167 de Siemens/Infineon ;
  • 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 (Le chien (Canis lupus familiaris) est un mammifère domestique de la famille des canidés,...) 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 Motorola 68HC11 ;
  • la famille Freescale 68HC08 (Les Freescale 68HC08 sont des microcontrôleurs de la gamme 8 bits fabriqués par...)
  • la famille Freescale (Freescale Semiconductor est une entreprise américaine dans le domaine des semi-conducteurs. Elle...) 68HC12
  • la famille des PIC de Microchip ;
  • la famille des dsPIC de Microchip ;
  • la famille des ST6 de STMicroelectronics ;
  • la famille ADuC d'Analog Devices ;
  • la famille PICBASIC de Comfile Technology;
  • la famille MSP430 de Texas Instruments (Texas Instruments (TI) est une entreprise d'électronique basée à Dallas,...).
  • la famille 8080 , z80 , Rabbit : pour memoire , le 8080 est un des grands ancetres , mais z80 et Rabbit sont encore bien vivants
  • la famille PSoC de Cypress
  • la famille LPC21xx ARM7-TDMI de Philips
  • la famille V800 de NEC
  • la famille K0 de NEC

Applications

Les microcontrôleurs sont souvent utilisés dans l'élaboration de systèmes embarqués, nécessitant des traitements spécialisés (autoradios, téléphones portables, lecteur mp3, GPS, etc.).

Ces circuits intégrés sont également très prisés en robotique amateur et permettent de réaliser de nombreuses applications, y compris des robots autonomes, les automatismes en modélisme (maquettes de réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des...) ferroviaire).

Programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent...)

Le langage C est le langage de prédilection (avec l'assembleur) du développement sur microcontrôleurs. Une fois le programme compilé, le fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un...) binaire doit être envoyé au microcontrôleur. On utilise soit :

  • un programmateur de 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 microcontôleur du système électronique complet.

On peut alors utiliser le système. Toutefois, le programme qui a été envoyé peut comporter des bogues, aussi, pour parvenir à les détecter on utilisera par exemple un émulateur in-circuit.

Notes et références

Page générée en 0.024 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise