Académique Documents
Professionnel Documents
Culture Documents
A
I) Généralités sur les microcontrôleurs 8 bits
p2 Historique, domaines d’applications, architecture générale, quelques grandes familles de
microcontrôleur +TD
Selon les besoins de l’application et les modèles de microcontrôleurs disponibles dans une famille (PIC, ATMEL, INTEL) il
peut comprendre en plus :
• des blocs analogiques (CAN, CNA, filtres, amplificateurs, comparateurs analogiques, …..)
• des blocs numériques (temporisateurs, modulateurs, multiplexeur, UART,…..)
1
Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code
machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions.
2
WDT : watch dog
3
BOD : Brown out detection : Détection de chute de la tension d’alimentation
4
Prog Vref : tension de référence programmable en sortie
5
CCP : Capture, Compare, PWM
6
PSP : port // esclave
Les microcontrôleurs PIC pic.doc Page 3
II. Présentation de la famille PIC
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Un jeu d’instruction RISC permet d’accélérer la vitesse d’exécution des programmes. Les instructions7 pour commander le
microcontrôleur sont alors peu nombreuses (33 ou 35 instructions différentes) mais aussi plus simples et donc plus rapides à
exécuter. Chaque mot de la mémoire programme (de 12 ou 14 ou 16 bits) contient une instruction et toutes les instructions
(sauf les sauts) sont exécutées en un seul cycle machine.
Architecture VON NEUMANN qui possède un unique bus de données pour faire transiter les instructions et
les données
7
Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code
machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions.
Les microcontrôleurs PIC pic.doc Page 4
II. Présentation de la famille PIC
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Organisation et registres de la
mémoire de donnée
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Schéma de l’architecture
L’architecture ci-dessous correspond à un microcontrôleur de la famille MID-RANGE qui serait doté de toutes les
fonctionnalités possibles pour un PIC.
Repérer en rouge l’unité centrale, en vert la mémoire programme, en bleu la mémoire donnée, en jaune les ports
parallèles d’E/S, en violet le périphérique CAN et en orange le périphérique liaison série RS232.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de fonctionnement de l’unité centrale : exécution d’une instruction
1. Le PC (Compteur Programme) registre de 13 bits contient l’adresse de la
prochaine instruction à exécuter dans la mémoire programme.
Le PC peut être stocké, si nécessaire, dans une pile qui peut contenir 8 valeurs aux
maximum (8 niveaux).
2. La mémoire programme
contient l’ensemble des instructions
du programme.
4.B. L’opérande fournit
Par exemple en adressage direct une l’adresse qui va permettre
instruction se compose d’un mot de d’accéder à la donnée dans la
14 bits qui a la structure suivante : RAM.
Opération
à exécuter Opérande de 7
sur 7 bits bits qui est 5. La donnée et l’opération
+ l’adresse de la décodée arrivent simultanément
donnée dans la dans un multiplexeur.
RAM. (structure de Harvard).
a) Repérer en les fléchant les éléments participants aux phases 1 à 7 de l’exécution d’une instruction.
b) Tracer en rouge, le chemin utilisé pour exécuter une instruction.
c) Indiquer le rôle du PC.
d) Retrouver le circuit dont le rôle est d’effectuer les opérations arithmétiques et logiques.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
3. Horloge
a) Durée d’exécution d’une instruction
La durée (Tcy) pour exécuter une instruction est telle que : Tcy = Tosc x 4 avec Tosc la période de l’horloge du
microcontrôleur PIC.
Les microcontrôleurs exécutent toutes les instructions en un seul cycle machine (sauf les sauts en 2 cycles).
Pour une horloge équipée d’un quartz de 4 MHz, on obtient alors environ 1 million d’instructions par seconde.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
4. RESET
a) Sources de Reset
Après un RESET, le programme démarre, ce qui se traduit concrètement par la mise à 0 de PC. Le PC contient alors l’adresse
0 du début du programme.
Il existe plusieurs sources de reset :
• Un reset par mise à l’état bas de /MCLR.
A la mise sous tension, VC=0 V d’ou /MCLR=0 il y a donc un RESET.
• Un reset par détection de chute d’alimentation du microcontrôleur ou BOR (Brown Out Reset)
• Un reset par débordement du timer du chien de garde WDT (Watch Dog Timer)
Remarque : Il est possible de retarder le Reset de type POR, ou BOR de 72ms par action sur le bit « Enable POWER
TIMER » dans le mot de configuration du PIC. Le Reset du microcontrôleur a lieu alors quand la tension d’alimentation
est stable.
1 18
RA2 RA1 17
2 RA3 RA0
3 RA4 OSC1/RA7 16
Cette carte minimum est 4 RA5/MCLR OSC2/RA6 15
équipée d’un connecteur
ICSP qui fournit 6 RB0 RB7 13
7 RB1 RB6 12
l’alimentation de la carte, et 8 RB2 RB5 11
permet de programmer le 9 10
PIC. RB3 RB4
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
5. La mémoire programme
Le PC a une taille de 13 bits, il est donc capable d’adresser au maximum 8Kmots (1mot=14 bits). Cette espace
mémoire est divisée en 4 pages de 2 Kx14 (0h - 7FFh, 800h - FFFh, 1000h - 17FFh, et 1800h - 1FFFh).
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
6. La mémoire donnée
a) Deux types de registres8
Cette mémoire est organisée en mot de 8 bits. Elle contient deux types de registres :
Les registres SFR (Special Function Registers) sont spécifiques à l’unité centrale. Ils permettent :
• à l’utilisateur de paramétrer le cadre de travail de l’unité centrale, prises en compte d’interruption, …
• à l’unité centrale de pouvoir exécuter une instruction (registre PC, …)
• à l’utilisateur et à l’unité centrale de piloter les périphériques (port E/S, CAN,….)
• à l’unité centrale d’analyser au moyen de drapeau (mémoire de 1 bit) les résultats d’une opération effectuée
par l’Unité Arithmétique et Logique
Les registres GPR (General Purpose Register) à usage général qui servent de zone de variables pour l’utilisateur.
Les instructions PIC qui permettent d’accéder directement à une donnée de la RAM sont structurées de la façon
suivante :
Opération Opérande de 7
à exécuter bits qui est
sur 7 bits + l’adresse de la
donnée dans la
RAM.
L’opérande est une adresse de 7 bits. On ne peut donc qu’accéder à 27=128 bits. Or il existe au maximum 4 banques, il
manque donc deux bits qui permettent de sélectionner une banque de 128 octets parmi 4.
Le registre STATUS contient ces deux bits RP1 et RP0 de sélection de banque.
Il faut donc systématiquement que le programmateur renseigne l’unité centrale sur le numéro de banque dans laquelle il
désire travailler. Il réalise cette opération en donnant une valeur au bit RP1 et RP0 du registre STATUS.
8
Registres : Le registre est un ensemble de bascules. Ces bascules permettent de mémoriser l’information. Ici la mémoire de
donnée est organisée en mots de 8 bits. Un registre se compose donc de 8 bascules.
Les microcontrôleurs PIC pic.doc Page 11
III. Architecture interne des PIC de la famille MID-RANGE
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
TD sur la mémoire donnée
a) Indiquer la différence entre registres SFR et GPR.
b) Encadrer en rouge la zone de variables SFR.
c) Encadrer en vert la zone de variables GPR.
d) Retrouver la nature du registre PORTA (SFR ou GPR) en utilisant un exemple d’organisation des registres en
mémoire donnée ci-dessous.
e) Retrouver la taille de la zone de variable utilisateur dans une banque.
f) Nommer les registres SFR qui sont communs aux quatre banques.
g) Compléter le tableau suivant :
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
7. Les entrées / sorties parallèles
a) Fonctionnement typique d’une broche d’un port d’E/S logique
Fonction :
Chaque broche du port peut être utilisée en entrée ou en sortie.
Par défaut après un reset les broches des ports sont placées en entrée.
S3 S1
RX2
T1
S2
T2
S4
Registres associés :
TRISX: un registre de direction de 8 bits
Le sens de fonctionnement de chaque broche est déterminé par un registre de direction TRISX.
• Mettre le bit 2 de TRISX à 1 aura pour effet de mettre la broche RX2 du PORTX en entrée.
• Mettre le bit 2 de TRISX à 0 aura pour effet de mettre la broche RX2 du PORTX en sortie.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
TD sur le fonctionnement typique d’une broche d’un port d’E/S logique
a) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente.
1 0
1 1
b) Compléter le tableau ci-dessous pour étudier la lecture de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente.
0 0
1 0
c) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en sortie. On utilisera le schéma
structurel de la page précédente.
0 0
0 1
d) Compléter le tableau ci-dessous pour étudier l’écriture d’un niveau logique sur la broche RX2 en sortie. On
utilisera le schéma structurel de la page précédente.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Les Entrées/Sorties parallèles portA
Fonction :
Le portA possède 6 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie.
Les broches du PORTA peuvent avoir deux fonctions en entrées : entrées analogiques,
entrées logiques.
Par défaut après un reset le portA est placé en entrée et s’il y a des entrées analogiques, les entrées sont positionnées en
mode analogique.
Registres associés :
TRISA: un registre de direction de 8 bits
Un bit de TRISA mis à 1 aura pour effet de mettre la broche correspondante du PORTA en entrée.
PORTA: un registre d’écriture ou lecture de 8 bits.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
c) Les Entrées/Sorties parallèles portB
Fonction :
Le portB possède 8 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie.
Par défaut après un reset le portB est placé en entrée.
Caractéristiques électriques :
Toutes les broches du portB lorsqu’elles sont en entrées peuvent être reliées à VDD via une résistance de pull-up activée
par programmation du bit RBPU du registre OPTION_REG.
Registres associés :
TRISB: un registre de direction de 8 bits
Un bit de TRISB mis à 1 aura pour effet de mettre la broche correspondante du PORTB en entrée.
PORTB: un registre d’écriture ou lecture de 8 bits
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
8. Le Convertisseur Analogique Numérique
a) Présentation du C.A.N
Le PIC peut être équipé d’un C.A.N de résolution 10 bits. Ce convertisseur analogique/numérique convertit par
approximations successives. Si on appelle VAIN la tension analogique en entrée à convertir alors on peut établir
l’équation suivante :
Schéma :
Un échantillonneur-
bloqueur permet de
mémoriser la tension
analogique à convertir
pendant la Un multiplexeur à 8
conversion. entrées maximum permet
de sélectionner l’entrée
A
analogique ANx à
D convertir.
R VAIN
E (Input
S Voltage)
H
A
D
R
E
S
L
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Mise en œuvre du CAN
Etape 1 : Initialisation du convertisseur
Action Registre Détails du registre
1) Sélectionner des ADCON1
broches d’entrées qui
seront analogiques.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2 :Lancement de la conversion
Action Registre Détails du registre
associé
7) Lancer la conversion. ADCON0
GO/DONE=1
Boucle
8) Attendre la fin de la ADCON0 Tant que (GO/DONE=1)
conversion.
Lorsque la conversion est finie le bit Lire
G0/DONE passe à 0. GO/DONE
Boucle
Il faut attendre 2 TAD entre deux conversions successives, le temps que se charge la capacité de
l’échantillonneur.
cnt =0;
while (cnt <200) cnt++; // on charge la capa pdt TCmin >16,5µs
resultat_l=ADRESL; //................................................................................................
STATUS=STATUS&0xDF; //RP0 à 0; bank0
resultat_h=ADRESH;//................................................................................................
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
9. La liaison série asynchrone
a) Présentation de la liaison série asynchrone
Il s’agit de connecter le microcontrôleur à un équipement informatique (terminal, PC,….).
RX_232
+12V, -12V Adaptation de PIC
niveaux 0V, 5V
TX_232
+12V, -12V RX_232 RX RX
0V, 5V
TX_232 TX TX
Les bits sont émis depuis la broche TX et reçus avec la broche RX en série et de façon asynchrone. Il n’y a donc pas
d’horloge de synchronisation. Pour commencer l’envoi de bit en série, on envoie un bit de START et pour clôturer cet
envoi la transmission s’achève avec un caractère de STOP selon la trame suivante :
Le périphérique qui s’occupe de la transmission série s’appelle l’UART (Universal Asynchronous Receiver Transmitter)
et dans le PIC ses caractéristiques sont les suivantes :
• fonctionnement en full duplex (dans le sens émission et réception à la fois).
• vitesse de transmission programmable.
• 8 ou 9 bits de données
• un bit de start et un bit de stop
Autorisation d’émettre
Si le bit TXEN=1
l’émission est possible
Sélection de la vitesse de
transmission Conversion parallèle →série
Registre à décalage d’émission non accessible
directement en écriture.
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Schéma du récepteur simplifié sur 8 bits :
Autorisation de recevoir Erreur de débordement en
Sélection de la Si le bit CREN=1 la réception est possible réception
vitesse de Les données arrivent trop
transmission rapidement et ne peuvent pas
être lues sans perte.
Utilisation de
cette broche
Test de registre de
pour la liaison
réception plein
série
Si le bit RCIF=1 le
registre RCREG est Lecture de la donnée à recevoir
plein Registre de réception 8 bits parallèle
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 1 : Initialisation de la liaison série (suite)
3) Connection des RCSTA
broches E/S à l’UART
ASYNCHRONE
bit SPEN=1
4) Activation de TXSTA
l’émission
bit TXEN=1
5) Activation de la RCSTA
réception
bit CREN=1
Lire
TXIF
Boucle
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2.b :lecture de l’octet reçu
Action Registre Détails du registre
8) Vérifier s’il n’y a pas RCSTA
une erreur de
débordement au niveau
du tampon de réception
tampon. Les octets reçus
ne sont pas lus assez OERR=1 ? oui
rapidement du registre
RCREG et la réception
non CREN=0
se bloque.
Si OERR=1 il y a une
erreur de débordement et
le bit CREN doit être mis CREN=1
à 0 puis remis à 1
Lire
RCIF
Boucle
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
TD sur la mise en œuvre de la liaison série asynchrone full duplex à …………bauds, 8 bits de
données et un bit de stop sur les broches RC6/TX et RC7/RX pour le 16F870 avec un quartz 4
MHz.
a) Rédiger les commentaires du programme C en précisant le rôle des instructions.
Exemple en C: conversion A/N sur la broche ……….. pour le 16F876 avec un quartz 3,2768 MH
char tamp_em;
char tamp_rec;
char over;
int compt=0;
//************************INITIALISATION DE LA LIAISON SERIE
//************************EMISSION
{
tamp_em=PIR1 & 0x10 ; //…………………………………………………………….
}
TXREG=FCV_CAR_EM; //…………………………………………………………….
//************************RECEPTION
over=RCSTA&0x02; //…………………………………………………………….
if (over==0x02) {
RCSTA=RCSTA&0xEF; //…………………………………………………………….
FCV_CAR_REC=RCREG; //…………………………………………………………….
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de programmation in situ ou ICSP (In-Circuit Serial Programming)
La programmation en circuit ICSP permet de programmer un microcontrôleur PIC in situ dans son application industrielle par
une liaison série synchrone.
Cde aiguillage
Connecteur
ICSP PIC
D4/PROG +13,5V
+5V /MCLR
D1/CLK
RB6/CLK
D0/DATA
RB7/DATA
Port
parallèle Aiguillage
Actionneur ou capteur de
l’application reliés à RB6 et RB7
hors mode programmation
Sur le PC est stocké le fichier Le programmateur a pour rôle La mémoire programme du PIC est
xxx.hex qui contient le programme d’aiguiller les informations selon programmée sans que le PIC ne soit
à transférer. deux modes : programmation et déplacé de son support, c’est de la
Ce programme est envoyé bit par bit hors programmation du PIC. programmation in situ.
en série sur la ligne D0/DATA du
port parallèle du PC. La broche D4/PROG permet de Le principe de programmation est
mettre le PIC en mode très simple et nécessite 3 broches
programmation. sur le PIC :
/MCLR=13,5V pour mettre le PIC
en mode programmation.
RB7 pour recevoir les données
synchrone
RB6 pour l’horloge synchrone avec
les données.
FPA
ALIMENTATION +13,5V et +5V
Connecteur ICSP
Vers l’application et son PIC
FP1
Elaboration
de /MCLR
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Analyse fonctionnelle du programmateur
TD sur le programmateur
a) Compléter le tableau suivant relatif à la fonction FP1 « Elaboration du signal /MCLR ».
D4/PROG D3/RESET /MCLR BUSY Mode de fonctionnement du PIC
0 0
0 1
1 0
1 1
12 LEDS
D0 1 18
RA2 RA1 17
à 2
3
4
RA3
RA4
RA0
OSC1/RA7 16
15
D11 6
7
IC0
RA5/MCLR
RB0
OSC2/RA6
RB7 13
RB1 RB6 12
8 RB2 RB5 11
9 RB3 RB4 10
(0,+5V)
3
4
5
IC1
RA1
RA2
RA3
RB5
RB4
RB3
26
25
24
JP1 6
7
RA4
RA5
RB2
RB1
RB0
23
22
21
9 OSC1/CLKI
10 OSC2/CLKO
P0 à P3 JP2
11 RC0 RC7 18
12 17
13
RC1
RC2
RC6
RC5 16 Horloge à quartz
14 RC3 RC4 15
1 MCLR RB7 40
2 RA0 RB6 39
3 38
IC2
RA1 RB5
4 RA2 RB4 37
5 RA3 RB3 36
S0 BP0
6 RA4 RB2 35
7 RA5 RB1 34
RB0 33
à à
8 RE0
9 RE1
10 RE2
S4 BP4 JP0
13
14 OSC1/CLKI
OSC2/CLKOUT
15 30
RC0 RD7 29
16 RC1 RD6
17 28
RC2 RD5 27
18 RC3 RD4
23 22
RC4 RD3 21
24 RC5 RD2
25 20
Résistance de 26
RC6
RC7
RD1
RD0 19
pull-up pour Un seul PIC à la fois doit être inséré sur un des supports.
RA4 Le PORTA et PORTB sur les 3 supports de PIC sont reliés.
Le PORTC sur 2 supports de PIC (28 et 40 broches) sont reliés. BP RESET
5 boutons poussoirs
et 5 interrupteurs bistables
cri pic.doc Page 28
LES MICROCONTROLEURS PIC IV) La programmation ICSP des PIC
3.b La carte d’expérimentation « ELECTROPIC » : schéma d’implantation
19 15 11 7 3 23 19 15 11 7 3
17 13 9 5 25 21 17 13 9 5
J1 J2
JP1 JP2
+5V +5V
18 14 10 6 2 22 18 14 10 6 2 CARTE
16 12 8 4 24 20 16 12 8 4
PROGRAMMATEUR
D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
1