Programmation C embraquée
ISITCOM 2013-2014
3éme année Licence Télécom
Architecture et fonctionnement
du microcontrôleur PIC 16F84
Objectifs
2
Le but de ce chapitre est de :
• Présentation générale du micro-contrôleur PIC 16F84.
• Architecture interne du micro-contrôleur PIC 16F84.
• Principe de fonctionnement.
• TP1 Initiation PIC 16F84A.
3
Présentation du PIC
Présentation du PIC
4
Un PIC est un microcontrôleur de MICROCHIP *
PIC: Peripheral Interface Controller
Caractérisé par:
• Séparation des mémoires de programmes et de données.
• Communication avec l’extérieur seulement avec des ports.
• Utilisation d’un jeu d’instructions réduit: RISC ( Reduced instruction set computer)
* [Link]
Identification des PICs
5
Un PIC est identifié par un numéro de la forme
suivante: xx(L) XXyy-zz (Exp : 16F84A)
xx: famille du composant.
L : Tolérance plus importante de la plage de tension .
XX: Type de mémoire de programme:
C: EPROM ou EEPROM.
CR: PROM.
F: Flush.
yy: Identification.
zz: Vitesse maximale du quartz.
Les familles des PICs
6
La famille PIC 16F dispose de 3 sous-familles :
1. Base-Line : Les instructions sont codées sur 12 bits.
2. Mid-Range, qui utilise des mots de 14 bits.
3. High-End, qui utilise des mots de 16 bits.
On s’ intéresse dans ce cours à la famille Mid-Range.
Exemple
7
Dans ce module, on va étudier le microcontrôleur PIC
16F 84 -10.
16: Mid-Range (14 bits).
F: mémoire Flush.
84: Type.
10: Quartz à 10 MHZ au maximum.
.
Pourquoi un PIC
8
1. Les performances sont identiques voir supérieurs à
ses concurrents.
2. Les prix sont les plus bas du marché.
3. Très utilisé donc très disponible.
4. Les outils de développement sont gratuits et
téléchargeables sur le WEB.
5. Le jeu d'instruction réduit est souple, puissant et
facile à maîtriser.
6. Les versions avec mémoire flash présentent une
souplesse d'utilisation et des avantages pratiques
indéniables .
Brochage
9
Le PIC 16F84 est un circuit intégré de 18 broches.
Le PIC 16F84 peut être présenté sous forme d’un:
Boitier DIP (Plastic Dual In-line Package) à 18 broches
Boitier SOIC (Small Outline Integrated Circuit)
Brochage
10
Architecture Interne
11
La structure générale du PIC 16F84 comporte 4
blocs :
Mémoire de programme,
Mémoire de données,
Processeur,
Ressources auxiliaires ( périphériques ).
Architecture interne
12
Processeur
13
Le processeur est composé en deux parties:
Unité arithmétique et logique(UAL): Chargé d’ exécuter les
opérations arithmétiques ( addition, soustraction, division,…) et
logiques ( ET, Non, AND,…. ).
Registre de Travail noté W.
Ressources auxiliaires
14
Les ressources auxiliaires dans le PIC 16F84 sont:
Ports d’entrées et de sorties.
Temporisateur.
Interruptions.
Chien de garde.
Mode sommeil.
15
Organisation de la mémoire
Deux mémoires
16
Le PIC 16F84 est conçu selon l’architecture de
Harvard donc il possède 2 mémoires:
Mémoire de programme.
Mémoire des données.
Mémoire de programme
17
La mémoire programme est constituée de 1K mots
de 14 bits(1024 emplacements).
Elle contient le programme à exécuter .
C’est une mémoire non volatile de type FLASH.
La technologie utilisée permet plus de 1000 cycles
d’effacement et de programmation
Mémoire de programme
18
Le PIC 16F84 possède un compteur ordinal qui
permet d’adresser 8K * 14 bits.
L'adresse 0000h contient le vecteur du reset.
l'adresse 0004h l'unique vecteur d'interruption du
PIC .
La pile contient 8 valeurs: Ce sont des zones
réservées par le système( pas d’adresse).
Mémoire de programme
19
Mémoire de données
20
Séparée en deux espaces:
1. Mémoire RAM de 68 octets.
Mémoire volatile.
Mot mémoire: 8 [Link]
Elle contient deux partie:
Les SFR ( Special Function Registers) qui permet de contrôler les opérations
sur le circuit.
La seconde partie contient des registres généraux (GPR: General Purpose
Registers) , libres pour l'utilisateur.
2. Mémoire EEPROM de 64 octets.
Accessible pour lecture et écriture.
Non volatile.
Plus lente que la RAM.
On y accède à l'aide des registres EEADR et EEDATA sous le contrôle de deux
registres de contrôle EECON1 et EECON2.
Mémoire de données
21
La mémoire donnée est divisée en deux banques:
La banque 0 est sélectionnée en mettant le bit RP0 du
registre STATUS a 0.
La banque 1 est sélectionnée en mettant le bit RP0 du
registre STATUS a 1.
Chaque banque est composée de 128 octets.
Les 12 premières ligne de chaque banques sont
réservées pour les SFR (Special Function Registers).
Mémoire de données
22
Registre STATUS
23
Mémoire EEPROM de données
24
La mémoire EEPROM de données est constituée de
64 octets que l'on peut lire et écrire depuis un
programme.
Ces octets sont conservés après une coupure de
courant et sont très utiles pour conserver des
paramètres semi permanents.
On y accède à l'aide des registres EEADR et
EEDATA .
Deux registres de contrôle (EECON1 et EECON2)
sont associés à la mémoire EEPROM
25
Principe de fonctionnement
Principe de fonctionnement du PIC
26
Un microcontrôleur exécute des instructions.
"le cycle instruction " : le temps nécessaire à
l’exécution d’une instruction.
Une instruction est exécutée en deux phases :
Phase de recherche du code binaire de l’instruction stocké
dans la mémoire de programme.
Phase d’exécution de l’instruction.
Principe de fonctionnement du PIC
27
Normalement l’exécution d’un instruction dure 8
cycles d’horloges.
L’architecture particulière des PICs(Bus différents
pour les données et le programme) lui permet de
réduire ce temps par deux.
28
Les ports d’Entrée/Sortie
Ports d’ Entrée / Sortie
29
Le 16F84 possède 2 ports d’entrée sortie:
Port A (PORTA).
Port B (PORTB).
PORTA et registre TRISA
30
Le port A désigné par PORTA est un port de 5 bits
(RA0 à RA4).
La configuration de direction pour chaque bit du
port est déterminée avec le registre TRISA.
Bit i de TRISA = 0 bit i de PORTA configuré en
sortie
Bit i de TRISA = 1 bit i de PORTA configuré en
entrée
PORTA et registre TRISA
31
La broche RA4 est multiplexée avec l'entrée
horloge du Timer TMR0.
Elle peut être utilisée soit:
comme E/S normale du port A,
comme entrée horloge pour le Timer TMR0
le choix se fait à l'aide du bit T0CS du registre
OPTION_REG.
PORTA et registre TRISA
32
RA4 est une E/S à drain ouvert, si on veut l'utiliser
comme sortie (pour allumer une LED par
exemple), il ne faut pas oublier de mettre une
résistance externe vers Vdd.
Si RA4 est positionnée à 0, l'interrupteur est
fermé, la sortie est reliée à la masse.
Si RA4 est placée à 1, l'interrupteur est ouvert,
la sortie est déconnectée d'où la
nécessite de la résistance externe.
LED rouges de 20mA (tension de seuil égale à 1.8V).
PORTB et registre TRISB
33
Le port B désigné par PORTB est un port
bidirectionnel de 8 bits (RB0 à RB7).
La configuration de direction se fait à l'aide du
registre TRISB.
Même configuration que le PORTA.
En entrée, la ligne RB0 appelée aussi INT peut
déclencher l’interruption externe INT.
En entrée, une quelconque des lignes RB4 à RB7
peut déclencher l'interruption RBI.
34
Mise en œuvre
Mise en œuvre
35
L’utilisation et la mise en œuvre très simple des
PICs les a rendus extrêmement populaire.
Pour faire fonctionner le PIC, il suffit de:
Alimenter le circuit par ses deux broches VDD et VSS,
fixer sa vitesse de fonctionnement à l’aide d’un quartz,
d’élaborer un petit système pour permettre de réinitialiser le
microcontrôleur sans avoir à couper l’alimentation.
Horloge
36
L'horloge peut être soit interne soit externe ou interne.
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'à 4, 10 ou 20 MHz selon le type de
microcontrôleur.
Dans certains cas, une horloge externe au microcontrôleur
peut être utilisée pour synchroniser le PIC sur un processus
particulier.
Horloge
37
Oscillateur a quartz
Horloge
38
Oscillateur RC
Horloge
39
Horloge externe
Horloge
40
Quelque soit l'oscillateur utilisé, l'horloge système
dite aussi horloge instruction est obtenue en
divisant la fréquence par 4.
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
Reset
41
Le reset se fait généralement via l’entrée MCLR
(broche 4).
42
TP1 Initiation PIC 16F84A
TP1: Clignotement d’un LED
43
TP1: Clignotement d’un LED
44
Trouver la valeurs du registres TRISA
(…………………)16
Ecrire le programme MicroC correspondant à ce
cahier de charge.
Modifier TH et TB.
© ESPRIT 2009 [Link] & [Link]
TP1: Clignotement d’un LED
45
46
Merci
Lecture dans la EEPROM
47
1. Placer l’adresse relative dans EEADR
2. Mettre le bit RD de EECON1 à 1
3. Lire le contenu du registre EEDATA
Ecriture dans la EEPROM
48
1. L'écriture dans L'EEPROM doit être autorisée : bit WREN = 1
2. Placer l’adresse relative dans EEADR
3. Placer la donnée à écrire dans EEDATA
4. Placer 0x55 dans EECON2
5. Placer 0xAA dans EECON2
6. Démarrer l'écriture en positionnant le bit WR
7. Attendre la fin de l'écriture, (10 ms) (EEIF=1 ou WR=0)
8. recommencer au point 2 si on a d'autres données à écrire