Vous êtes sur la page 1sur 22

Microcontrôleur

Chapitre II :
Architecture Générale d’un Microcontrôleur

Plan
-------------------------------------------------------------------------------------
1. Introduction
2. Architecture de µc
3. Microprocesseur (CPU)
4. Les registres
5. Entré/sortie
6. Mémoires
7. Oscillateur
8. Convertisseurs
9. Temporisateur : Timer /compteur
10.Chiens de garde (watchdog)
11.Interruption

--------------------------------------------------------------------------------------
1. Introduction :
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 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 caractérisent par:


 un plus haut degré d'intégration.
 une plus faible consommation électrique (quelques milliwatts en fonctionnement,
quelques nano watts en veille).
 une vitesse de fonctionnement plus faible (quelques mégahertz à quelques centaines de
mégahertz
 un coût réduit par rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs
personnels.

Un microcontrôleur est un circuit programmable capable d’exécuter un programme et qui


possède des circuits d’interface avec le monde extérieur.

On retrouve ainsi les microcontrôleurs dans de nombreuses applications :


✓ Télécommunications : cartes FAX et MODEM, Minitel, téléphones portables (interfaces
homme machine, gestion d'écrans graphiques)...
✓ Industriels : automates programmables, contrôle de processus divers, supervision...

15 Prof. KHOULJI S.
Microcontrôleur
✓ Commercial : électroménager, domotique...
✓ Automobile : ABS, tableau de bord, contrôle des sièges, des vitres...
✓ Militaire et spatial : sonde, lanceurs de fusées, missile, robots...
✓ Loisirs : expo-sciences Réunion
✓ 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.

a) Un peu d’Histoire :
De l'ordinateur au microcontrôleur :
Le diagramme ci-dessous montre les grandes étapes de l'évolution. Chaque étape a été marquée
par un processeur différent.

L'avènement des transistors (1958), des circuits intégrés (1968) et des circuits intégrés à haute
densité (1978) a permis de construire des ordinateurs de plus en plus petits et de plus en plus
puissants. Chacune des intégrations laisse leurs traces dans les différents noms que l'on rencontre
aujourd'hui : mini-ordinateur, microprocesseur, micro-ordinateur, microcontrôleur... On les doit
principalement à la société Intel fondé en 1968.

Voici les grandes étapes d'évolution :


➢ Mini-Ordinateur : première intégration, cet ordinateur contient maintenant une Unité
Centrale de traitement sur une seule carte.
➢ Microprocesseur : deuxième intégration, l'Unité Centrale est contenue dans un seul
circuit, c'est le C.P.U. . Ce fut le 4004 en 1971, le 8008 en 1972 puis le 8080 en 1974. Ce
dernier eut un tel succès qu'il est considéré comme le père de nos microprocesseurs et
microcontrôleurs d'aujourd'hui.
➢ Micro-Ordinateur : c'est le nom qui désignera désormais un ordinateur conçu autour
d'un microprocesseur.
➢ Microcontrôleur : troisième intégration, l'ensemble des 3 unités (centrale, mémoires et
périphériques) sont maintenant contenues dans un seul circuit. Ce fut le 8048 en 1976
puis le 8051 en 1980.
➢ Micro-ordinateur embarqué : C'est un ordinateur spécialisé et conçu autour d'un
microcontrôleur. Il est capable de réagir à des évènements plus rapides. Deux noms sont
à l'origine des plus fameux microcontrôleurs utilisés : Intel et Motorola, avec deux
architectures différentes. En terme électronique, on parlera de cœur 8051 ou cœur
68HC11 par exemple.

16 Prof. KHOULJI S.
Microcontrôleur
b) Le marché des microcontrôleurs

Différents constructeurs de microcontrôleurs se disputent le marché mondial. Parmi


les plus importants à l'heure actuelle et dans l'ordre décroissant de leur importance en
termes de volumes de vente:

• Motorola (68HC11).
• Microchip (séries des PIC).
• Mitsubishi (M30620).
• NEC (78C10).
• Philips (80C552).
• Intel (8051).

Entre parenthèse est indiquée la référence du microcontrôleur le plus vendu par la


société en question.

Historiquement la société pionnière est INTEL qui est considéré comme le père du
microcontrôleur avec le 8048 dans les années 1970.

Ainsi il existe quatre principaux types de microcontrôleurs que l'on peut


différencier par la taille de leur bus de données.

• Le 4 bits essentiellement utilisé pour les automatismes simples (petits


automatismes, jouets,...). Peu cher il est fabriqué en grande quantité pour des
applications de grande consommation.
• Le 8 bits qui est le plus répandu. En effet il existe une grande diversité de ces
microcontrôleurs et ceux-ci permettent une grande souplesse quant à leur
utilisation.
• Le 16 bits moins courant est utilisé pour des applications exigeantes.
• Enfin le 32 bits très peu utilisé n'intervient qu'au sein de très gros projets.

c) Les composants intégrés


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

• Central Processing Unit (CPU), désigne le microprocesseur, avec une


de 4 bits pour les modèles les
largeur du chemin de données allant
plus basiques à 32 ou 64 bits pour les modèles les plus
évolués ;
• de la mémoire vive (RAM) Random Access Memory,
mémoire servant à stocker les variables et les données créées
par le programme
• de la mémoire morte (ROM) : Read Only Memory, est une mémoire à lecture seule, qui
stocke le programme. Différentes technologies peuvent être
employées : EPROM, EEPROM, mémoire flash (la plus récente) ;

17 Prof. KHOULJI S.
Microcontrôleur
• 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 :
• 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
2
(UART, I C, SSP, CAN, FlexRay, USB, Ethernet, etc.).

 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.
2. Architecture générale d’un microcontrôleur

3. Microprocesseur :

18 Prof. KHOULJI S.
Microcontrôleur
3.1. Architecture interne du microprocesseur
Le processeur (microprocesseur) est le composant hardware le plus connu d'un système
micro-programmé. C'est l'unité intelligente de traitement des informations.
Le microprocesseur a pour mission de rechercher les instructions (lire le programme) qui
sont en mémoire, de les décoder et de les exécuter.

Un microprocesseur est construit autour de deux éléments principaux :


➢ Une unité de commande et Une unité de traitement

1. Une unité de commande (UC) chargée de traduire puis d’exécuter les commandes ; Son
rôle est d’aller chercher une information en mémoire centrale, d’analyser cette instruction
(décodage), d’exécuter cette instruction, de localiser l’instruction suivante.
• Un décodeur d’instruction
• Un séquenceur et des circuits de commande
Les blocs de l’unité de commande contiennent:
✓ Le compteur de programme (PC : Programme
Counter) appelé aussi Compteur Ordinal (CO) est
constitué par un registre dont le contenu est initialisé
avec l'adresse de la première instruction du programme.
Il contient toujours l’adresse de la prochaine instruction
à exécuter.
✓ Le registre d'instruction et le décodeur
d'instruction:
✓ Chacune des instructions à exécuter est transférée
depuis la mémoire dans le registre instruction puis est
décodée par le décodeur d’instruction.

✓ Bloc logique de commande (ou séquenceur) : Il organise l'exécution des instructions au


rythme d’une horloge. Il élabore tous les signaux de synchronisation internes ou externes
(bus de commande) du microprocesseur en fonction de l’instruction qu’il a a exécuter. Il
s'agit d'un automate réalisé de façon micro-programmée.

2. l’unité de traitement
Elle regroupe les circuits qui assurent les traitements nécessaires à l'exécution des
instructions
Les blocs de l’unité de traitement contiennent :
✓ Les accumulateurs sont des registres de travail qui servent à stocker une opérande au
début d'une opération arithmétique et le résultat à la fin de l'opération.

19 Prof. KHOULJI S.
Microcontrôleur
✓ L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui assure les
fonctions logiques (ET, OU, Comparaison, Décalage, etc…) ou arithmétique (Addition,
soustraction…).
✓ Le registre d'état est généralement composé de 8 bits à considérer individuellement.
Chacun de ces bits est un indicateur dont l'état dépend du résultat de la dernière opération
effectuée par l’UAL. On les appelle indicateur d’état ou flag ou drapeaux. Dans un
programme le résultat du test de leur état conditionne souvent le déroulement de la suite
du programme. On peut citer par exemple les indicateurs de :
􀁺 Retenue (carry : C)
􀁺 Débordement (overflow : OV ou V)
􀁺 Zéro (Z)
􀁺 ...

Architecture complète du microprocesseur :

Le fonctionnement basique d’une opération de calcul :

(1) Charger une instruction depuis la mémoire


(2) Charger les opérandes depuis la mémoire
(3) Effectuer les calculs

(4) Stocker le résultat en mémoire

Architecture

20 Prof. KHOULJI S.
Microcontrôleur
Il existe deux types d’architecture des microprocesseurs :
• Architecture de Von Neumann
• Architecture de Harvard

 L’architecture dite de « Von Neumann » est une


organisation des composants telle que le bus qui relie la
mémoire programme et la mémoire de donnée au
microprocesseur soit le même.
En général, il existe qu’une mémoire de programme contenant à
la fois des instructions et les données placées à la suite les unes
les autres.
Ce bus sert alors alternativement à transmettre les instructions et les données

 Architecture de Harvard est une organisation des


composants telle que la mémoire du programme et la mémoire
des données sont séparés et sont reliés par 4 bus :
• Un bus de données programme,
• Un bus de données pour les données,
• Un bus d’adresse programme,
• Un bus d’adresse pour les données.
✓ Meilleure utilisation du CPU :
✓ Chargement du programme et des données en parallèle

Remarque : c’est l’Architecture de Harvard que utilise les microcontrôleurs PIC.


Seul les bus de donnée (data ou instructions) sont représentées

2.1.2. Le traitement des instructions


Une instruction est définie comme étant une tâche accomplie (comme une addition) réalisé par
un processeur. Chaque microprocesseur dispose de son propre ensemble d’instructions.

Pour que le μp puisse “comprendre” l’instruction, les instructions doivent être envoyées
(fournies) sous forme binaire, c.à.d. langage machine.

Organisation d’une instruction


Le microprocesseur ne comprend qu’un certain nombre d’instructions qui sont codées en binaire.
Une instruction est composée de deux éléments :
 Le code opération : C’est un code binaire qui correspond à l’action à effectuer par le
processeur
 Le champ opérande : Donnée ou bien adresse de la donnée.

21 Prof. KHOULJI S.
Microcontrôleur
La taille d'une instruction peut varier, elle est généralement de quelques octets (1 à 8), elle
dépend également de l'architecture du processeur.

Exemple d’instruction :
Instruction Addition :
Accumulateur = Accumulateur + Opérande
Correspond à l’instruction ADD A,#2

Cette instruction est comprise par le processeur par le mot binaire :


11001 000 0000 0010 = code machine

Phase 1 : Recherche de l’instruction en mémoire en ie


 La valeur du PC est placée sur le bus d'adresse par
l'unité de commande qui émet un ordre de lecture.
 Après le temps d'accès à la mémoire, le contenu
de la case mémoire sélectionnée est disponible sur
le bus des données.
 L'instruction est stockée dans le registre
d’instruction du processeur.

Phase 2 : Décodage et recherche de l’opérande


 L'unité de commande transforme l'instruction en
une suite de commandes élémentaires nécessaires
au traitement de l'instruction.
 Si l'instruction nécessite une donnée en
provenance de la mémoire, l'unité de commande
récupère sa valeur sur le bus de données.
 L’opérande est stocké dans le registre de
données.

Phase 3 : Exécution de l’instruction


 Le séquenceur réalise l'instruction.
 Les drapeaux sont positionnés (registre d'état).
 L'unité de commande positionne le PC pour
l'instruction suivante.

Les architectures RISC et CISC


Actuellement l’architecture des microprocesseurs se composent de deux grandes familles :
 L’ architecture CISC (Complex Instruction Set Computer): Architecture à jeu
d’instructions complexe

22 Prof. KHOULJI S.
Microcontrôleur
 L’architecture RISC (Reduced Instruction Set Computer): Architecture à jeu
d'instructions réduit

Les PICs sont conçus selon une architecture RISC.


Programmer avec un nombre d’instructions réduit permet de limiter la taille de leur codage et
donc de la place mémoire et du temps d’exécution

2.1.3. Les modes d’adressages

Les modes d'adressages sont un aspect de l'architecture des processeurs et de leurs jeux
d'instructions. Les modes d'adressages définis dans une architecture régissent la façon dont les
instructions en langage machine identifient leurs opérandes. Un mode d'adressage spécifie la
façon dont est calculée l'adresse mémoire effective d'un opérande à partir de valeurs contenues
dans des registres et de constantes contenues dans l'instruction ou ailleurs dans la machine.

En programmation informatique, les personnes préoccupées par les modes d'adressage sont
principalement celles qui programment en assembleur et les auteurs de compilateurs.

Les instructions utilisent toutes une manière particulière d’accéder aux informations qu’elles
manipulent. Ces méthodes sont appelées « modes d’adressage ».
Ce sont les diverses manières de définir la localisation d’un opérande. C’est à dire la manière
dont la donnée est spécifié dans une instruction.
Les trois modes d’adressage les plus courants sont :
 Adressage littéral ou immédiat
 Adressage direct
 Adressage indirect
Adressage littéral ou immédiat : la donnée est contenue dans l’instruction

23 Prof. KHOULJI S.
Microcontrôleur
 Adressage direct : la donnée est contenue dans un registre

 Adressage indirect : l’adresse de la donnée est contenue dans un pointeur


Dans les PIC, un seul pointeur est disponible pour l’adressage indirect :SFR

Exemple d’exécution d’un programme

24 Prof. KHOULJI S.
Microcontrôleur

Le Pipeline :
Définition d’un pipeline
• La technique du pipeline est une technique de mise en oeuvre qui permet à plusieurs
instructions de se chevaucher pendant l'exécution.
• Une instruction est découpée dans un pipeline en petits morceaux appelés étage de
pipeline.
• La technique du pipeline améliore le débit des instructions plutôt que le temps
d'exécution de chaque instruction.
• La technique du pipeline exploite le parallélisme entre instructions d’un flot séquentiel
d’instructions. Elle présente l’avantage de pouvoir, contrairement à d'autres techniques
d'accélération, être rendue invisible du programmeur.

Les étages d’un pipeline

Comparaison avec et sans pipeline

25 Prof. KHOULJI S.
Microcontrôleur

Utilisation des ressources par le pipeline :

Les retards
• Le pipeline atteint son plein rendement une fois qu’il est “rempli”
• Un retard peut se produire
✓ S’il existe un conflit de ressources (retard ponctuel)
 accès à la mémoire
 utilisation des bus
✓ En cas de rupture de séquence (vidange du pipeline)
 branchement non prévu
 appel de sous-programme
 interruption

Exemple de rupture

Solution par l’organisation du code

26 Prof. KHOULJI S.
Microcontrôleur

Types de pipelining

Remarques sur les performances ;


Certaines phases sont inutiles pour certaines instructions (p.ex. un LOAD ne nécessite pas
d'exécution), mais toutes les instructions doivent traverser tout le pipeline.
Ce "gaspillage" est nécessaire pour simplifier le contrôle.

Exemple de profondeur

Aléas d'un pipeline


Les types d’aléas

27 Prof. KHOULJI S.
Microcontrôleur
 La présence d'un pipeline (et donc le partage de l'exécution d'une instruction en plusieurs
étages) introduit des aléas :
✓ Aléas de structure : L'implémentation empêche une certaine combinaison
d'opérations (lorsque des ressources matériels sont accédées par plusieurs étages).
✓ Aléas de données : Le résultat d'une opération dépend de celui d'une opération
précédente qui n'est pas encore terminée.
✓ Aléas de contrôle : L'exécution d'un saut conditionnel ne permet pas de savoir
quelle instruction il faut charger dans le pipeline puisque deux choix sont possibles.

Aléas de structure : Les aléas de structure peuvent être éliminés en agissant sur l'architecture du
processeur lors de sa conception.

Aléas de données : Une instruction ne peut récupérer le résultat de la précédente car celui-ci
n'est pas encore disponible.
Exemple :
ADD R1, R2, R3 // R1 = R2 + R3
STORE R1, 1000 // C(1000) = R1
Cette séquence ne stocke pas à l'emplacement mémoire 1000 la valeur de R1 contenant la
somme R2 + R3, mais la valeur de R1 contenue avant l'instruction ADD.

Aléas de contrôle : La présence d'un pipeline introduit des complications lors de l'exécution d'un
saut ou d’un saut conditionnel. L'étage de décodage de l'instruction n'est pas en mesure de
calculer l'adresse de l'instruction suivante avant de connaître le résultat de l’instruction
précédente.

28 Prof. KHOULJI S.
Microcontrôleur

 Une solution possible est de faire en sorte que le processeur devine si le branchement sera
pris ou pas pris (branch prediction) et commencer à exécuter les instructions
correspondant à cette décision.
• Si le choix se révèle correct, la pénalité de branchement est éliminée.
• Si le choix se révèle incorrect, il faudra vider le pipeline et charger l'instruction
correcte.
 Pour faire de la prédiction de branchement il y a deux possibilités :
• Solution statique : La direction du branchement est fixe, définie en matériel au
moment de la conception du processeur.
• Solution dynamique : La direction du branchement est définie au moment de
l'exécution du programme, sur la base d'une analyse du code.

Solution statique :
Les sauts en arrière (boucles) sont plus souvent pris que pas pris. En effet, une boucle est
souvent réaliser avec plus que 2 itérations.
=>On peut donc faire une prédiction selon la direction:
• si le saut est en arrière, il est pris,
• s'il est en avant, il n'est pas pris.

Cette stratégie donne des très bons résultats (70- 80%) avec une augmentation relativement
restreinte de la logique de contrôle: elle est utilisée dans plusieurs processeurs (p.ex., icroSparc,
HP-PA).

Solution dynamique
✓ Pour réaliser une prédiction dynamique le processeur mémorise le comportement du
programme lors de l'exécution des sauts. À chaque exécution d'un branchement dans un
programme, le processeur mémorise si le saut était pris ou pas pris dans un tampon de
prédiction de branchement. Sur la base du comportement passé du programme pour un
branchement donné, le processeur prédit son comportement pour l'exécution suivante du
même saut.

✓ Par rapport à la prédiction statique, la prédiction dynamique est plus performante, mais
nécessite une quantité très importante de logique de contrôle.

29 Prof. KHOULJI S.
Microcontrôleur

3.4. Les bus


On appelle Bus, en informatique, un ensemble de liaisons physiques (câbles, pistes de circuits
imprimés, ...) pouvant être exploitées en commun par plusieurs éléments matériels afin de
communiquer.
Pour la communication, un microprocesseur a besoin en général de trois Bus. Un Bus de
données, un Bus d’adresse et un Bus de commande.
Bus de données.
Bus de donnée
Il permet de véhiculer des données du microprocesseur vers un composant ou d'un composant
vers le microprocesseur. Il est donc bidirectionnel. Le nombre de fils de ce bus varie suivant les
microprocesseurs (8 / 16 / 32 / 64 bits). Dans la littérature, les différents fils de ce bus sont
appelés D0, D1, ..., Dp-1, si le bus a "p" fils.

Bus d’adresse
La mémoire est composée de nombreuses cases mémoires. Chaque case est repérée par une
adresse. Lorsque le microprocesseur veut, par exemple, lire une case, il doit indiquer à quelle
adresse elle se trouve. Il met cette adresse sur le bus des adresses. La case mémoire reconnaît
alors son adresse et met sur le bus de données son contenu.
Exemple : Bus d’adresse 16 bits - données sur 8 bits.
Bus de commande
Le bus des commandes est constitué d'un ensemble de fils de "commandes", permettant la
synchronisation et bien sûr la commande des boîtiers mémoires et entrées/sorties par le
microprocesseur. Dans le cas précédent, la cellule mémoire doit savoir à quel instant elle doit
mettre son contenu sur le bus de données. Pour cela, le microprocesseur possède une broche
appelée Read ( ) qu'il met à 0 (0v) lorsque la cellule doit agir. De même, lors d'une écriture du
microprocesseur vers la cellule, il met sa broche Write ( ) à 0 (0V). Les signaux RD et WR sont
des signaux de synchronisation, de contrôle et de commande. Ils sont reliés aux autres
composants par un bus: le bus des commandes. Celui-ci comporte d'autres signaux de
commandes.

4. Les registres
Ce terme va être beaucoup utilisé dans ce cours. On désigne par registre un mot (de 8 bits
généralement) qui sert aux calculs ou plus souvent à configurer un paramètre dans le
microcontrôleur. Quand on parle de registre, on met à chaque fois son aspect. En effet, chaque
bit d'un registre configure quelque chose.

30 Prof. KHOULJI S.
Microcontrôleur
Prenons un exemple : soit le registre de 8 bits nommé ELEVE_SI, qu’on représente comme
cela :

Chaque bit du registre peut être mis à 1 ou à 0. Dans notre exemple, il s'agit des caractéristiques
d'un individu J. J'ai montré le LSB et le MSB avec la numérotation des bits. Lorsque l'on
configure un registre, cela signifie que l'on doit assigner chaque bit du registre à une valeur (0
ou 1), sachant que les bits ont tous à un état par défaut. Ici, nous savons que la personne possède
un certain talent à Starcraft, donc nous mettons le bit 0 à 1 par exemple. Le reste est laissé pour
l'instant à 0. L'octet à écrire dans le registre sera donc (01)hex, soit : ELEVE_SI=(01)hex.
Hop c'est fait. Tenez, cela me fait penser à une autre notion : le masquage. Lorsque vous
programmerez un micro, il arrivera que vous ne vouliez pas changer tous les bits d'un coup. Un
p'tit exemple : voici le registre ELEVE_SI tel que

On souhaite mettre le bit nommé "intelligent" à 1 (si l'on considère qu'il existe des élèves
intelligents en S-SI J), sans toucher aux autres valeurs. Ce qu’on va utiliser, ce sont les "bêtes"
opérateurs logiques (si vous êtes perdu, revoir votre cours). Le plus facile serait de charger une
nouvelle valeur, ce qui donnerait ici ELEVE_SI=(05)hex, mais cela est possible que si l'on
connaît la valeur de tous les bits. Admettons que nous ne connaissons pas les autres valeurs :
nous allons alors créer un masque logique afin de ne pas les modifier (les autres bits peuvent
servir ailleurs). Pour mettre un bit à 1, il faut réaliser un OU (voir les tableaux des opérateurs
logiques de votre cours) entre le bit "intelligent" et le chiffre 1. Ainsi, nous avons 0 OU 1 = 1.
Hop, c'est fait. Maintenant, nous allons préparer le masque des autres bits : pour laisser un bit tel
qu'il est, il faut réaliser un OU entre ce bit et 0. Le masque complet pour ce registre est donc :
(04)hex. Enfin, on applique ce masque au registre :
ELEVE_SI = ELEVE_SI OU (04)hex
Hop voilà, le registre ELEVE_SI devient donc :

Il est bien sûr possible de réaliser l'autre masque, pour mettre un bit à 0 : on utilise ici l'opérateur
ET entre le bit et 0. Pour ne pas modifier les autres bits, on masque aussi mais avec des 1 (voir le
tableau de l'opérateur ET).
Nous aurions eu alors :
ELEVE_SI = ELEVE_SI ET (FB)hex

5. Les entrées – sorties


Le microcontrôleur possède beaucoup de broches directement utilisables. Outre les habituelles
broches d'alimentations et de configuration, il y a ce qu'on appelle des Ports. A l'instar des PC, il
existe des ports série et parallèle. Les ports séries servent le plus souvent comme port de

31 Prof. KHOULJI S.
Microcontrôleur
communication avec l'extérieur (un PC par exemple, pour télécharger un programme) ou pour
dialoguer avec d'autres microcontrôleurs, composants esclaves ou autres modules. Quant aux
ports parallèles, ils constituent la majorité des broches que l'on peut voir sur un microcontrôleur.

Cependant, on programme les ports directement par leur nom pour simplifier la programmation
(il faut configurer les noms). Par exemple, mettons que l’on a le composant fictif suivant qui
possède un port parallèle nommé ELEVE_SI

Comme vous pouvez le voir, les ports sont composés de 8 broches, ce qui forme un octet.
Chaque broche a son propre poids ; on nomme généralement chaque broche en prenant le nom
du port et le poids d'une broche. Par exemple, on appellera la première broche (bit 0) du port
ELEVE_SI (0), puis (1) pour le deuxième bit, (2) pour le troisième et ainsi de suite...
Une dernière chose : il existe trois statuts différents pour les ports.
* Port en entrée : il est capable de recevoir des informations en provenance de l'extérieur.
* Port en sortie : il émet des informations du microcontrôleur vers l'extérieur.
* Port bidirectionnel : il est capable, pour toutes ses broches ou certaines d'entre elles, de
recevoir ou d'émettre des données.
Il s'agit là d'un statut physique, c'est à dire que c'est la fabrication électronique des ports qui
décide dans quel mode il sera capable de fonctionner. Certains microcontrôleurs possèdent des
Port dont certaines broches sont en entrée et d'autres en sortie. Enfin, il est possible sur certains
modèles de définir logicielle ment dans quel mode le Port va fonctionner.

6. Les mémoires
La mémoire est utilisée pour le stockage d’instructions,
de donnée et de la pile (portion mémoire réservée
pour sauvegarder le contexte d’exécution d’une
procédure.
Si on donnait une adresse à chaque bit de mémoire, la
quantité d’adresses serait très élevée. La mémoire est
constituée de cellules de mémorisation binaires,
groupé en mot de 8, 16, 32 ou 64 bits.
La mémoire est adressée par mot de 8 bits (octet).
Une position mémoire est spécifiée par l’adresse d’un
octet.

32 Prof. KHOULJI S.
Microcontrôleur
La majorité de microcontrôleurs utilisent deux zones de mémoires
✓ une pour le programme.
✓ et une pour les variables.
Cette séparation comporte de nombreux avantages, dus aux différences d’utilisation de ces
mémoires.
La mémoire contenant le programme n’est modifiée que lors de la programmation du composant,
elle est bien plus souvent lue.
Elle doit également être sauvegardée lors de coupures d’alimentation
La technologie utilisée est couramment la mémoire Flash
La mémoire contenant les données est autant lue qu’écrire
Elle n’a pas besoin d’être préservé lors des coupures d’alimentation car celles-ci provoquent de
toute façon un redémarrage du composant.

Classification des mémoires:


RAM: Random Access Memory (mémoire à accès
aléatoire) : Ces mémoires perdent de l’information
lorsqu’elles ne sont pas alimentées.
Le microcontrôleur a souvent besoin de stoker des
données temporaires dans la mémoire RAM
✓ General Purpose Register : Mémoire RAM
classique, utiliser pour stocké des variables.
Exemple :
int i;
i++; // incrémentation de i depuis la RAM
✓ SFR (Special Function Register) : C’est
aussi de la mémoire RAM, sauf que les rôles
de chacune des cases mémoire (registres) ont
été définis par le fabriquant. Chaque registre
SFR est connecté à un périphérique matériel spécifique et permet de la contrôler.
Exemple :
ADCON0 register (adresse 9Fh) permet de piloter le convertisseur A/D.
ROM: Read Only Memory: Aussi appelé (à juste titre) program memory. C’est une mémoire
Flash qui contient le programme à exécuter.
PROM : (Programmable Read Only Memory) On les appelle aussi mémoire fusibles ou OTP
(One Time Programmable) type de mémoire mort.
EEPROM memory : (Erasable-Programable Read Only Memory). C’est une mémoire similaire
à la mémoire programme. On s’en sert surtout pour stocker des constantes.
UVPROM: EPROM effaçable par une exposition aux ultraviolet U.V Mémoires programmable
électriquement effaçables par UV donc réutilisables.
FLASH: même fcnt que la mémoire EEPROM, mais avec une vitesse supérieure mais ne
permettent que l’effacement total de la mémoire. Ces mémoires sont utilisés dans les PC(BIOS)
et dans les systèmes embarqués.

7. Oscillateur :

33 Prof. KHOULJI S.
Microcontrôleur
Un oscillateur électronique est un montage électronique, dont la fonction est de produire
un signal périodique, de forme sinusoïdale, carrée, voire en dents de scie, ou quelconque.
L'oscillateur peut avoir une fréquence fixe ou variable. Il existe deux types d'oscillateurs : les
oscillateurs harmoniques qui produisent un signal sinusoïdal et les oscillateurs de relaxation ne
produisant pas un signal sinusoïdal.

8. Convertisseur analogique-numérique

Un convertisseur analogique-numérique (CAN, parfois convertisseur A/N), ou en anglais ADC


pour (Analog to Digital Converter) ou plus simplement A/D, est un montage électronique dont la
fonction est de traduire une grandeur analogique en une valeur numérique (codée sur
plusieurs bits), proportionnelle au rapport entre la grandeur analogique d'entrée et la valeur
maximale du signal.
Le signal converti est le plus souvent une tension électrique.
Il existe plusieurs techniques pour convertir un signal analogique en signal numérique.

9. Temporisateur : Timer/compteur
Le temporisateur est utilisé pour contrôler le ‘temps’ et pour contrôler la rapidité du
microcontrôleur.
Un timer est un périphérique matériel permettant de mesurer des durées (généralement inclus
dans les microcontrôleurs). Son rôle est de permettre la synchronisation des opérations que le
microcontrôleur est chargé d'effectuer.
Les timers sont des registres incrémentés à chaque réalisation d’un événement, la valeur de ces
registres pouvant être pré-positionnée à une valeur initiale.

Les événements qui commandent l'incrémentation sont


● un cycle d’horloge, c'est la fonction « timer » ;
● un front montant sur une broche en entrée, c'est la fonction « counter ».
Les timers sont des registres incrémentés à chaque réalisation d’un événement, la valeur de ces
registres pouvant être pré-positionnée à une valeur initiale.
Il en découle que le module timer peut remplir les fonctions suivantes,
● Utilisation « timer » : permet de fournir une référence temporelle à partir de l’horloge du
micro-contrôleur, notamment dans le cadre d’applications temps réel.
● Utilisation « counter » : sert à compter un nombre d’événements asynchrones sur une broche
d’entrée du micro-contrôleur.

10. Un chien de garde (watchdog)

Un chien de garde, en anglais watchdog, est un circuit électronique ou un logiciel utilisé


en électronique numérique pour s'assurer qu'un automate ou un ordinateur ne reste pas bloqué à
une étape particulière du traitement qu'il effectue. C'est une protection destinée généralement à
redémarrer le système, si une action définie n'est pas exécutée dans un délai imparti.

34 Prof. KHOULJI S.
Microcontrôleur
En informatique industrielle, le chien de garde est souvent réalisé par un dispositif électronique,
en général une bascule monostable. Il repose sur le principe que chaque étape du traitement doit
s'exécuter en un temps maximal. À chaque étape, le système arme une temporisation avant son
exécution. Si la bascule retourne à son état stable avant que la tâche ne soit achevée, le chien de
garde se déclenche. Il met en œuvre un système de secours qui peut soit déclencher une alarme,
soit faire redémarrer l'automate, soit mettre en marche un système redondant... Les chiens de
garde sont souvent intégrés aux microcontrôleurs et aux cartes mères dédiées au temps réel.

Quand il est réalisé par logiciel, il s'agit en général d'un compteur qui est régulièrement remis
à zéro. Si le compteur dépasse une valeur donnée (timeout) alors on procède à un
reset (redémarrage) du système. Le chien de garde consiste souvent en un registre qui est mis à
jour via une interruption régulière. Il peut également consister en une routine d'interruption qui
doit effectuer certaines tâches de maintenance avant de redonner la main au programme
principal. Si une routine entre dans une boucle infinie, le compteur du chien de garde ne sera
plus remis à zéro et un reset est ordonné. Le chien de garde permet aussi d'effectuer un
redémarrage si aucune instruction n'est prévue à cet effet. Il suffit alors d'écrire une valeur
dépassant la capacité du compteur directement dans le registre : le chien de garde lancera
le reset.

D'une façon plus générale, il peut également s'agir d'un logiciel destiné à l'observation de
certaines conditions. Par exemple, en matière de sécurité, à s'assurer régulièrement qu'aucune
action malveillante n'est effectuée (dans la mémoire vive en particulier) ou que certaines
conditions de fonctionnement sont bien remplies. Il s'agit généralement de processus ou de
service exécuté en tache de fond et donc, invisible à l'utilisateur.
11. Les interruptions
➢ L'interruption est un mécanisme fondamental de tout processeur. Il permet de prendre en
compte des événements au processeur et de leur associer un traitement spécifique.
➢ L’exécution d’une instruction n’est jamais interrompu en cours; c’est à la fin de
l’instruction en cours lors de l’arrivée de l’événement que le sous programme
d’interruption est exécuté.
➢ Une interruption est un arrêt temporaire de l'exécution normale d'un programme
informatique par le microprocesseur afin d'exécuter un autre programme (appelé routine
d'interruption).
➢ Les interruptions matérielles sont utilisées lorsqu'il est nécessaire de pouvoir réagir en
temps réel à un événement asynchrone, ou bien, de manière plus générale, afin
d'économiser le temps d'exécution lié à une boucle de consultation (polling loop).»
➢ Une interruption peut avoir différentes sources : périphérique d’entrée/sortie, timer,
watchdog (cf. explications plus loin), ...

35 Prof. KHOULJI S.
Microcontrôleur
➢ Les interruptions sont utilisées pour avertir le micro-contrôleur quand une condition est
remplie. En utilisant les interruptions, on évite que le micro-contrôleur reste en attente
inutilement (pooling-loop), elles permettent de gérer les événements asynchrones.
➢ Les interruptions sont, en général, contrôlées par 3 bits :
● Un bit de flag : indique qu’une interruption a été déclenchée et indique la source.
● Un bit de validation : permet à l’utilisateur d’activer ou non une interruption.
● Un bit de priorité : permet de sélectionner la priorité (haute/basse) de l’interruption.

Gestion des priorités : Il existe des interruptions de priorité hautes et basses. À chaque type de
priorité correspond un vecteur d’interruption et donc potentiellement une gestion différente des
Interruptions suivant leur priorité.

36 Prof. KHOULJI S.

Vous aimerez peut-être aussi