Chapitre 2
Chapitre 2
Chapitre 2
MICROCONTROLEURS
Par: Dr NDJE
LE PIC 16F876/877
1 Introduction
2 Définition
1
Dr NDJE
é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.
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 :
Le microcontrôleur a été mis sur pied par Texas Instruments (TI) au début des années
1970, dans le même temps que le premier microprocesseur a été par Intel. Les premiers
2
Dr NDJE
microcontrôleurs étaient simplement des microprocesseurs avec mémoire tels que RAM et
ROM. Plus tard, les microcontrôleurs ont évolué dans un large éventail de dispositifs adaptés
pour les applications de systèmes embarqués spécifiques tels que les voitures, les téléphones
sans fil et les appareils ménagers.
Durant les années 90s, les microcontrôleurs avec ROM (EEPROM) mémoires
programmables et effaçables électriquement, comme la mémoire flash, sont devenus
disponibles. Ces microcontrôleurs pourraient être programmés, effacé et reprogrammé en
utilisant uniquement des signaux électriques. Avant les dispositifs électriquement
reprogrammables, les microcontrôleurs nécessitaient souvent la programmation spécialisée et
de matériel d'effacement qui exigeait que le dispositif soit retiré de son circuit. Ce qui ralentit
le développement des logiciels et augmente le coût de fabrication. Avec cette limitation retirée,
microcontrôleurs ont pu être programmé et reprogrammé. Ainsi, les circuits et les appareils à
microcontrôleurs pourraient désormais être mis à jour avec de nouveaux logiciels sans avoir à
retourner au fabricant. Beaucoup de microcontrôleurs actuels, tels que ceux disponibles auprès
de Microchip et Atmel, incorporer la technologie de mémoire flash.
3
Dr NDJE
public de faible puissance. Les microcontrôleurs sont également devenus plus petits et plus
puissants. Par exemple, en 2010, Atmel a annoncé un microcontrôleur flash dans un boîtier
mesurant 2 mm par 2 mm. Ces minuscules microcontrôleurs sont assez petits et assez pas cher
pour être utilisé dans des produits tels que des jouets et brosses à dents.
4 Du microprocesseur au microcontrôleur
• 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).
4
Dr NDJE
Figure 3.2. Structure d'un système à microprocesseur
Traditionnellement, ces composants sont intégrés dans des circuits distincts (Connaissances
Informatique, 2019). Le développement d'un tel système à base de microprocesseur se trouve
donc pénalisé par (liste non exhaustive) :
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.
5
Dr NDJE
5 Constitution du microcontrôleur
• 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
RC ou encore une PLL ;
• Des périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner
entre autres :
➢ Des convertisseurs analogiques-numériques (CAN) (donnent un nombre
binaire à partir d'une tension électrique),
➢ Des convertisseurs numériques-analogiques (CNA) (effectuent l'opération
inverse),
➢ Des générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en
anglais, PWM pour Pulse Width Modulation),
➢ Des timers/compteurs (compteurs d'impulsions d'horloge interne ou
d'événements externes),
➢ Des chiens de garde (watchdog),
➢ Des comparateurs (comparent deux tensions électriques),
➢ Des contrôleurs de bus de communication (UART, I2C, SSP, CAN, FlexRay,
USB, etc.).
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.
6
Dr NDJE
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
6 Architecture du microcontrôleur
7
Dr NDJE
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 : 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.
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. 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.
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és 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.
8
Dr NDJE
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.
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é.
Une fois le programme compilé, le fichier binaire doit être envoyé au microcontrôleur.
On utilise soit :
10
Dr NDJE
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, ARM7-TDMI, NEC V850.
Selon les fabriquant, les microcontrôleurs sont classés en plusieurs familles (Intel,
2019 ; UVT, 2019). Nous pouvons citer :
11
Dr NDJE
• 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 ;
• La famille LPC21xx ARM7-TDMI 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 ;
• La famille Quark d’Intel.
12
Dr NDJE
6
Les PICs sont des microcontrôleurs à architecture RISC (Reduce Instructions Construction
Set), ou encore composant à jeu d’instructions réduit. L'avantage est que plus on réduit le nombre
d’instructions, plus leur décodage sera rapide ce qui augmente la vitesse de fonctionnement du
microcontrôleur.
La famille des PICs est subdivisée en 3 grandes familles : La famille Base-Line, qui utilise des
mots d’instructions de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (et dont font
partie la 16F84 et 16F876), et la famille High-End, qui utilise des mots de 16 bits.
Les PICs sont des composants STATIQUES, Ils peuvent fonctionner avec des fréquences
d’horloge allant du continu jusqu’à une fréquence max spécifique à chaque circuit. Un PIC16F876-
04 peut fonctionner avec une horloge allant du continu jusqu’à 4 MHz.
Nous nous limiterons dans ce document à la famille Mid-Range et particulièrement au PIC
16F876/877, sachant que si on a tout assimilé, on pourra facilement passer à une autre famille, et
même à un autre microcontrôleur.
96 registres Mémoire
DAC
système programme
10 bits timer 0
TMR0 de type Flash
CCP1 368 registres
Capture/Comparaison utilisateur 8 x 1024
timer 1
TMR1 mots de 14 bits
CCP2
Capture/Comparaison
timer 2 W
TMR2
MSSP
(I2C/SPI) Chien de ALU
garde
USART WDT EEPROM
Horloge
(RS232) 256 octets
système
Le port D (8 bits) et le port E (3 bits) ne sont pas disponibles sur tous les processeurs. (Voir
Tableau I.1)
Avec un quartz de 4 MHz, on obtient une horloge instruction de 1 MHz, soit le temps pour
exécuter une instruction de 1µs.
29
• Pour les utiliser en SORTIES NUMERIQUES, il suffit de les configurer en sortie à l'aide du
registre de direction TRISA.
• Pour les utiliser en ENTRÉES NUMERIQUES, il faut les configurer en entrée à l'aide de
TRISA, en plus il faut les configurer en numérique en plaçant la valeur '00000110' dans le
registre ADCON1,
• Pour les utiliser en ENTRÉE ANALOGIQUE, voir chapitre sur le convertisseur Analogique
numérique.
Quelque soit le mode (Analogique ou Numérique), il faut utiliser le registre TRISA pour
configurer la direction des E/S :
• Bit i de TRISA = 0 bit i de PORTA configuré en sortie
Pour utiliser PORTD en mode normal, il faut placer le bit PSPMODE de TRISE à 0