Microcontrôleur
Deuxième partie :
Les microcontrôleur de
Microchip: PIC
Thamallah Ali
1
1
Plan
Les différentes familles des Microcontrôleurs
Les différentes familles des PICs
Identification d’un PIC
Famille Mid-Range
PIC : 16F84
Architecture interne du 16F84
2
1. Les différentes familles des Microcontrôleurs
la famille Atmel AT91 ;
Le C167 de Siemens;
la famille Hitachi;
la famille Intel et le Fresscale;
la famille des PIC de MICROCHIP;
la famille des STMicroelectronic;
la famille V800 de NECMSP430 de Texas Instruments ;
Motorola,
3
2. Les différentes familles des PICs
La famille Base-Line
12 Bits
la famille Mid-Range 14 Bits
PIC family
la famille High-
16 Bits
Performance
PIC24 and dsPIC 24 Bits
PIC32 32 Bits
La différence entre ces familles réside dans la taille de l’instruction
(case de mémoire)
la famille Mid-Range
instructions
Mémoire
Bus
Instruction1
Instruction2
Instruction3
Instruction4 4
Case mémoire
14 bits
3. Identification d’un PIC
Pour identifier un PIC®, vous utiliserez simplement son numéro
Sur le corps du PIC on trouve :
PIC __ _ _ -XX
Les 2 premiers une lettre indique
une lettre A
chiffres une lettre L : le type de la
représente
indiquent la Celle-ci indique mémoire
la
catégorie du que le PIC® peut programme : Série
fréquence
PIC® fonctionner avec C : EPROM ou Dans la
d’horloge
12: Base-Line une plage de bien EEPROM famille
maximale
16:Mid-Range tension beaucoup CR : ROM
est
18:High- plus tolérante. F :FLASH.
20Mhz
Perfermance
5
Exemples
Famille : Mid-Range
Mémoire Programme est de type : Flash
PIC 16 F 84-04
Série : 84
Horloge Maximale : 4Mhz
Famille : Base-Line
Mémoire Programme est de type : ROM
PIC 12 L CR 508-20
Série : 508
Horloge Maximale : 20Mhz
6
Famille : High-Performance
Mémoire Programme est de type : Flash
PIC 18 F 45-20
Série : 54
Horloge Maximale : 20Mhz
7
4. Caractéristiques de familles Mid-Range (PIC
16F877) et High-perfermance (18F4520)
Mid-Range
Tous les PICs Mid-Range ont un jeu de 35 instructions (RISC)
Tous les PICs Mid-Range stockent chaque instruction dans un seul mot de
programme
Mot de programme(word): 14
bits
Case mémoire
Tous les PICs Mid-Range exécutent une instruction en un cycle
L’horloge fournie au PIC est prédivisée par 4 au niveau de celle-ci. C’est
cette base de temps qui donne le temps d’un cycle. 8
Exemples
Exemple 1
Si on utilise par exemple un quartz de 4MHz , on obtient donc 1000000 de
cycles/seconde, or, comme le PIC exécute pratiquement 1 instruction par
cycle, hormis les sauts, cela vous donne une puissance de l’ordre de
1MIPS (1 Million d’Instructions Par Seconde). La figure II.1 montre le
déroulement d’un cycle
T=1/4Mhz=0,00000025s
Cycle=4 xT=0,000001s=1micros
1s= 1000000 x1micros
on obtient donc :
1000000 de cycles/seconde
T
Cycle
9
Exemple 2
Si on a le programme suivant stocké la mémoire programme d’un PIC de
la famille Mid-Range.
On vous demande de déterminer le temps total d’exécution et l’espace
utilisé de la mémoire programme en octet (1octet=8bit)
Mémoire
Instruction1
Instruction2
Instruction3
Instruction4
Temps d’exécution=
Espace mémoire= 4x14bit=56bit=56bit/8=7oct
10
Famille High-Performance (PIC 18F4520)
Tous les PICs High-Performance ont un jeu de 75 instructions (RISC)
Pour les PICs High-Performance les instruction sont stockées sur 16 bits et il y a
quelques instructions codée sur 32 bits
Case mémoire
Tous les PICs Mid-Range exécutent une instruction en un cycle
L’horloge fournie au PIC est prédivisée par 4 au niveau de celle-ci. C’est
cette base de temps qui donne le temps d’un cycle.
11
5. PIC16F84
Donc, un 16F84-04 est un PIC® Mid-Range
(16) donc la mémoire programme est de
type FLASH (F) donc réinscriptible de
type 84 et capable d’accepter une
fréquence d’horloge de 4MHz en théorie
(probablement : 10Mhz pour un 16F84 et
20Mhz pour un 16F84A).
5: Vss(masee); 14:Vdd (alimenation 5v)
16 et 15 : Oscillateur
Port A (4 Pins): RA0:17, RA1:18, RA2:1, RA3:2,RA4: 3
18 Pins
Port B (8 Pins): RB0:6, RB1:7, RB2:8, RB3:9, RB4:10,
RB5:11, RB6:12, RB7:13,
Pins4: MCLR (Reset)
12
6. Architecture interne du PIC16F84
13
6.1 les éléments du PIC
1-Mémoire programme de type Flash(1Kx14)
2 - Registre compteur de programme
3 - Port A et Port B d'entrées - sorties
4 - Unité Arithmétique et logique
5- RAM (68x8)
6- EEPROM (64x8)
7- Horloge système
8- Registre de décodage des instructions
9- Registre d'état
10- Registre de travail
11- Registre d'instruction
12- Timer
13- Pointeur de pile
14- Bus internes
15- Reset ; Watch dog ; Alimentation
14
6.1.1 Port A et Port B d'entrées - sorties
Port A (4 Pins): RA0:17, RA1:18, RA2:1, RA3:2
Port 8 (8 Pins): RB0:6, RB1:7, RB2:8, RB3:9, RB4:10,
RB5:11, RB6:12, RB7:13,
15
6.1.2 Mémoire programme de type Flash(1Kx14) Case mémoire
14 bits
Début de l’adresse =000hex=0000.0000.0000 bin=0 décimal
Fin de l’adresse =3FFhex=0011.1111.1111 bin=1023 décimal
Nombre des cases =1023 –0+1=1024 case En informatique =1024 =1K
Mémoire Flash =1Kx14bit
16
6.1.3 Registre compteur de programme
Le microcontrôleur exécute, une à une les instructions codées sous forme
binaire ceci se fait grâce un registre interne nommé "compteur de programme"
(2 : Programme Counter PC)
Le contenu du registre du pointeur de programme augmentera au grès de
l'exécution des instructions, le PC pointe toujours à la prochaine instruction à
exécuter.
17
Les registres PCL &PCLATH
Registre compteur de programme PC va pointer à 1024 adresse
Pour cela le PC doit avoir 1 3 bits or les cases de la RAM sont de 8bits
Il faudra donc 2 registres pour accéder à une adresse
Donc PC est divisé en deux registres de 8 bits PCL(PC Low8bits)
et PCLATH(PC LATch counter High 5bits)
18
6.1.4 Pointeur Pile (Stack Pointeur)
Adresse
Mémoire programme
PC : compteur de programme
0000 Instriction1
0001 Saut: aller à l’adresse 0004
0002 Instriction3
SP : Pointeur Pile
0003 Instriction4
0002
0004 Instriction5
0005 Instriction6
Exécution Ins1
Exécution Ins2
Exécution Ins5
Exécution Ins3
Exécution Ins4
Exécution Ins5
Exécution Ins6
19
Les huit niveaux du pointeur de pile (stack pointer)veulent que l'on peut
imbriquer huit sous-programmes
Pointeur Pile
Adresee1
Adresee2
Adresee3
Adresee4
Adresee5
Adresee6
Adresee7
Adresee8
20
6.1.5 RAM
- Bank 0
La mémoire RAM est organisée en 2 banques pour le 16F84
- Bank 1
Les 11 premiers octets(8bits) de l'espace
mémoire sont réservés pour la
configuration et l'accès à certains registres
spécifiques
De l'adresse (0C) 11. à l'adresse (4F) 79 nous
retrouvons les 68 octets réservés à l'utilisateur
La zone située en bank 1 entre l'adresse 140
(8C) et 208 (CF) est une image de la bank 0
Certains registres tels que le registre STATUS
sont accessibles depuis n'importe quelle bank
PCL,INTCON,PCL,FSR , STATUS et PCLATH
21
Adressage directe
Registre STATUS
la sélection de telle ou telle bank se
fait selon la position (0 ou 1) de deux
bits de contrôle,
contenus dans le registre STATUS qui
est situé à l'adresse 3 en mémoire
RAM.
Ces deux bits de contrôle sont RPO
et RP1.
•Si RP1 = 0 et RPO= 0 bank 0
•Si RP1 =0 et RPO = 1 bank 1
22
23
PIC 16F877
24
25
Les registres FSR & INDF(Indirect adress)
Les registres FSR, IDF et le bit IRP font le mécanisme de
l’adressage indirecte
26
PIC 16F877
27
Mémoire programme
Instriction1
FSR
00001111
ADRESSE: 00000001
Instriction3
Instriction4
Instriction5
IND : valeur
Instriction6
00001111
28
Les registres PORTA & PORTB &TRISA & TRISB
Les Registres associés aux PORTA sont PORTA et TRISA :
Registre PORTA 8bits : directement accès au monde
extérieur
Registre TRISA : Configuration Entrée 1/Sortie 0
Les Registres associés aux PORTB sont PORTB et TRISB:
Registre PORTB 8bits : directement accès au monde
extérieur
Registre TRISB : Configuration Entrée 1/Sortie 0
29
30
Entrée Horloge(entrée clock) pour le timer
31
Trigger de Smith ou bien bascule de Smith
32
6.1.6 Timer
Un timer est un registre 8 bits dans lequel on charge une valeur
01
il réalise un comptage depuis la valeur que vous avez prédéterminée jusqu'à
255
Exemple On charge le timer par la valeur 250
10
1 1 1 1 1 1
0 1
1 0 250
251
252
253
254
255
6.1.7 Chien de garde watch Dog
Le watchdog, ou chien de garde est un mécanisme de protection de votre
programme. Il sert à surveiller si celui-ci s’exécute toujours dans l’espace et
dans le temps que vous lui avez attribués.
33
6.1.8 Unité arithmétique (ALU) et logique & Décodeur d’instruction &
registre de travail(w)
ALU va être chargée d'effectuer toutes les opérations de type arithmétique ou
bien de type logique
Entrée 2 Entrée 1
Décodeur d’instruction
Sortie
Registre W
34
6.1.9 Registre d’état STATUS
Bit C (carry) : Ce bit du registre d'état va passer à "1" lorsque
le résultat de la dernière opération arithmétique a provoqué
une retenue.
1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
+
Retenue 1 1 1 1 1 1 1 0 1
35
Bit DC (digit carry) : Ce bit du registre d'état va passer à "1"
lorsque le résultat de la dernière opération arithmétique a
provoqué une retenue sur les quatre premiers bits, ce bit (ou
bien flag... pour drapeau) sera utilisé lorsque l'on travaillera
en BCD (binaire codé décimal).
1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1
Retenue 1 0 0 0 1 1 1 0 1
36
Bit Z (zéro) : Ce bit du registre d'état va passer à "1" lorsque
le résultat de la dernière opération est égal à zéro.
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
Retenue 1 0 0 0 0 0 0 0 0
37
Bit PD (power down) : Ce bit du registre d'état va passer à "0"
lorsque le microcontrôleur rencontre l'instruction particulière
"Sleep" (mise en sommeil)
Mémoire programme
Instriction1
Sleep
Instriction3
Instriction4
Instriction5
Instriction6
38
Bit TO (time out) : Ce bit du registre d'état va passer à "0" lorsque
le chien de garde atteint la fin de comptage que le programmateur
lui a défini
39
6.1. EEPROM
La mémoire EEPROM est une particularité du PIC 16F877, c'est une zone
comportant 64 octets mise à la disposition d’utilisateur et dont la
particularité est de pouvoir être sauvegardée même en absence
d'alimentation.
EEPROM
Case de 8bits
Nombre des cases 68
40
Système d’horloge pour la famille Mind-Range
L'horloge peut être soit interne soit externe. L'horloge interne est constituée
d'un oscillateur à quartz ou d'un oscillateur RC.
Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 20 MHz selon
le type de microcontrôleur.
Le filtre passe bas (Rs, C1, C2) limite les harmoniques dus à l’écrêtage
et réduit l’amplitude de l’oscillation, il n'est pas obligatoire.
41
Avec un oscillateur RC, la fréquence de l'oscillation est fixée par
Vdd, Rext et Cext. Elle peut varier légèrement d'un circuit à
l'autre.
Dans certains cas, une horloge externe au microcontrôleur peut être
utilisée pour synchroniser le PIC sur un processus particulier.
42
43
44