Vous êtes sur la page 1sur 32

Systèmes Embarqués

--Systèmes à Microcontrôleurs

Chapitre II: PIC 16F84A

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 1
Plan

Brochage
Principales caractéristiques
Architecture interne
Organisation de la mémoire
L’ALU et le registre W
Horloge

DUT-GE(S3)-EST -GEULMIM
RST(S6)-ENSA -KENITRA 2
Brochage

 Le PIC 16F84A dispose de 18 broches


• 13 broches entrées/sorties, avec contrôle de direction individuel, et répartis en
deux ports A (5 bits) et B (8 bits)
• 2 broches pour l’alimentation VDD et la masse VSS
• 1 broche pour la mise à zéro, MCLR/, du PIC
• 2 broches pour la connexion de l’oscillateur (OSC1/CLKIN et OSC1/CLKOUT)
DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 3
Brochage

Port A

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 4
Brochage

Port B

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 5
Principales caractéristiques
 Seulement 35 instructions
 Tout les instructions se font en un cycle machine (4 cycles d’horloges) sauf les
instructions de branchement qui se font en deux cycles machine
 Vitesse allant jusqu’à 20 MHz, soit une instruction sur 200 ns
 14 bits pour coder les instructions
 8 bits pour les données
 15 registres pour les fonctions spéciales
 1K mots de mémoire Flash
 68 octets de mémoires de données RAM
 64 octets de mémoire de données EEPROM
 1 Timer/compteur 8 bits avec une prédivision programmable et cadencé par une
horloge interne ou externe
 4 sources d’horloge sélectionnable
 Mode sleep (pour une faible consommation)

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 6
Principales caractéristiques
 8 niveaux de pile
 4 sources d’interruptions
 1000 cycles d’effacements/écriture possible dans la mémoire du programme
Flash
 10 000 000 cycles d’effacements/écriture possible dans la mémoire de données
EEPROM
 Programmation par ICSP ( In Circuit Serial Programming) via deux broches RB6
(clock) et RB7 (data)
 Protection de code

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 7
Architecture interne

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 8
Architecture interne

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM
Architecture interne

Le cœur du processeur est composé de 3 entités :


L’ALU (opérations arithmétiques et logiques sur 8 bits) et son registre d’état
(STATUS)
Le registre de travail : W (Working Register)
Le registres d’usage général (File Registers)

Cœur d’un processeur PIC

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM
Architecture interne

 L’architecture générale du PIC16F84A est constitué des éléments suivants:


• Un système d’initialisation à la mise sous tension (Power up Timer…)
• Un système de génération d’horloge (Timing generation)
• Une unité arithmétique et logique ALU
• Une mémoire de programme Flash de 1K mots de 14 bits
• un compteur de programme (Program Counter) et une pile (Stack)
• Un bus spécifique pour le programme (Program bus) sur 14 bits
• Un registre contenant le code de l’instruction à exécuter
• Un bus spécifique pour les données (data bus) sur 8 bits

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 11
Architecture interne

• Une mémoire de données RAM (File registers)


• Une mémoire de données EEPROM de 64 octets pour le stockage de données
permanentes
• 2 ports d’entrées/sorties A et B
• Un chien de garde (Watchdog) : compteur/Timer 8 bits incrémenté en
permanence

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 12
Organisation de la mémoire

 Le PIC 16F84A possède deux types de mémoires:


• Mémoire de programme
• Mémoire de données

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 13
Organisation de la mémoire

 Mémoire de programme
• Le compteur programme de 13 bits
est capable d’adresser 213=8K mots
de 14 bits
• Seulement le premier 1K mots de 14
bits (0000h à 03FFh) qui est
physiquement implémenté et
accessible
• L’adresse 0000h contient le vecteur
du reset (Il s’agit du branchement
vers début du programme)
• L’adresse 0004h contient le vecteur
d’interruption (Il s’agit Branchement
vers début du programme
d’interruption)

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 14
Organisation de la mémoire

 Mémoire de programme
• Le compteur programme de 13 bits
est capable d’adresser 213=8K mots
de 14 bits
• Seulement le premier 1K mots de 14
bits (0000h à 03FFh) qui est
physiquement implémenté et
accessible
• L’adresse 0000h contient le vecteur
du reset (Il s’agit du branchement
vers début du programme)
•L’adresse 0004h contient le vecteur
d’interruption (Il s’agit Branchement
vers début du programme
d’interruption)

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 15
Organisation de la mémoire

 Mémoire de la pile
• La pile est une zone mémoire qui permet de stocker les adresses (contenu du
compteur programme) de retour d’un sous programme ou d’une routine
d’interruption
• Elle peut contenir 8 valeurs (adresses de retours) de 13 bits chacune
• Elle n’a pas d’adresse dans la plan mémoire
• Ce sont des zones réservées par le système

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 16
Organisation de la mémoire
 Mémoire de données
• La mémoire RAM est constituée de deux
parties :
 Les registres SFR : ce sont les registres
utilisés par le CPU et les périphériques
pour contrôler une opération désirée par
le PIC
o Ils sont situés dans les zones 00h-0Bh
et 80h-8Bh
 Les registres GPR (General Purpose
Registers) sont des positions mémoire que
l'utilisateur peut utiliser pour stocker ses
variables et ces données
oIls sont situés dans la zone 0Ch-4Fh et
mappés dans la zone 8Ch-CFh
• Les zones 07h,87h, 4Fh-7Fh et CFh-FFh
ne sont pas implémentées
DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 17
Organisation de la mémoire
STATUS Registre d’état
• La mémoire RAM est organisée en deux banques (pages): Bank0 et Bank1
 Pour accéder à un registre, il faut d'abord se placer dans la banque où il se
trouve
 L’accès à la page est réalisé en positionnant le bit RP0 du registre STATUS
(Adresse 03h ou 83h)
RP0 = 0 → Bank 0
RP0 = 1 → Bank 1

o Les bits 7 et 6 ne sont pas utilisés pour le PIC16F84A


o TO(Time Out) : débordement du timer WDT
o PD (Power Down) : Ce bit va passer à «0» lorsque le uc recontre
l’instruction « Sleep »(mise en veille)
o Z (zéro) :résultat nul pour une opération arithmétique et logique.
o DC (digit carry): retenue sur un quartet ( 4 bits )
o C (carry): retenue sur un octet ( 8 bits ).

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 18
Organisation de la mémoire

INTCON (0B et 8B ): Contrôle des 4 interruptions

 GIE (Global Interrupt Enable) : masque global d’inter.


 EEIE (EEProm Interrupt Enable): autorise
l'interruption venant de l'EEPROM.
 T0IE (Timer 0 Interrupt Enable): autorise l'interruption
provoquée parle débordement du TIMER0
 INTE (Interrupt Enable): autorise l’interruption provoquée
par un changement d'état sur broche RB0/INT
.

RST(S6)-ENSA -KENITRA
DUT-GE(S3)-EST -GEULMIM
Organisation de la mémoire

RBIE (RB Interrupt Enable): autorise les interruptions provoquées par un


changement d'états sur l'une des broches RB4 à RB7.
Si ces bits sont mis à 1 , ils autorisent les interruptions pour lesquels ils
sont dédiés .
Drapeaux :
T0IF (Timer 0 Interrupt Flag): débordement du timer
INTF ( Interrupt Flag) : interruption provoquée par la broche RB0/INT
RBIF ( RB Interrupt Flag): interruption provoquée par les broches RB4-
RB7
Pour les 68 octets de la mémoire utilisateur, l'utilisation des pages (Bank
) n'est pas nécessaire puisque Bank0 est mappé dans Bank1. Cela
signifie qu'écrire une donnée à l'adresse 0CH ou à l'adresse 8CH revient
au même.

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM
OPTION REGISTER (81h):
8 bits (tous à 1 au RESET) affectant le comportement des E/S et des timers.

RBPU(RB Pull Up) :Résistances de tirage à Vdd des entrées du port B. Si


RBPU=0 les résistances de pull-up sont connectées en interne sur l'ensemble
du port B.
INTEDG ( Interrupt Edge select bit) :
1 = Interruption si front montant sur la broche RB0/INT (pin 6).
0 = Interruption si front descendant sur RB0/INT.
T0CS(TMR0 Clock Source Select ): sélection du signal alimentant le timer 0 :
0 pour horloge interne, 1 pour RA4/T0CLK
T0SE(TMR0 Source Edge Select): sélection du front actif du signal timer
(0 pour front montant).

RST(S6)-ENSA -KENITRA
DUT-GE(S3)-EST -GEULMIM
PSA (Prescaler assignment) : Affecter un facteur de division 0 pour Timer
0 et 1 pour chien de garde WDT.
PS2:0 :sélection de la valeur du diviseur de fréquence pour les timers.

22
Organisation de la mémoire
• Registres SFRs du PIC16F84A

SFRs du BANK0
DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 23
Organisation de la mémoire

SFRs du BANK1
DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 24
Organisation de la mémoire

 INDF (00h ou 80h) : Utilise le contenu de FSR (File Select Register) pour
l’accès indirect à la mémoire
 TM0(01h) : Registre lié au Compteur/Timer0
 PCL (02h ou 82h) : Contient les 8 bits du poids faible du compteur programme
(PC)
 STATUS (03h ou 83h) : Il contient l’état de l’unité arithmétique et logique ainsi
que le bit de sélection des banques
 FSR (04h ou 84h) : Permet l’adressage indirect
 PORTA (05h) : Donne l’accès en lecture ou en écriture du port A
 PORTB (06h) : Donne l’accès en lecture ou en écriture du port B
 EEDATA (08h) : Permet l’accès aux donnés dans la mémoire EEPROM
 EEADR (09h) : Permet l’accès aux adresses de la mémoire EEPROM

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 25
Organisation de la mémoire

 PCLATH (0Ah ou 8Ah) : Contient les 5 bits du poids fort du compteur


programme (PC)
 INTCON (0Bh ou 8Bh) : Registre de contrôle des 4 sources d’interruptions . Il
contient les masques et les drapeaux
 OPTION_REG (81h) : Contient les bits de configurations pour divers
périphériques
 TRISA(85h) : Indique la direction (entrée ou sortie) du port A
 TRISB (86h) : Indique la direction (entrée ou sortie) du port B
 EECON1 (88h) et EECON2 (89h) : Permettent le contrôle d’accès à la
mémoire EEPROM

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 26
Organisation de la mémoire
 Mémoire EEPROM
• Le PIC possède une zone EEPROM de 64 octets
• Accessible en lecture et en écriture par le programme
• Les données sont conservées même si l’alimentation est éteinte
• L’accès à cette mémoire requiert l’utilisation des registres dédiés
• La lecture et l’écriture ne peuvent s’exécuter que selon des séquences
particulières

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 27
L’ALU et le registre W
 C'est une ALU 8 Bits qui réalise les opérations arithmétique et logique entre
l'accumulateur W (Work register) et n'importe quel autre registre 'F‘ (File registre)
ou constante K
 L'accumulateur W est un registre de travail 8 bits, il n'a pas d'adresse comme les
autres SFR
 Pour les instructions à deux opérandes, c'est toujours lui qui contient un des
deux opérandes
 Pour les instructions à un opérande, celui-ci peut être soit W soit n'importe quel
registre F
 Le résultat de l'opération peut être placé soit dans le registre de travail W soit
dans le registre F
Exemple :

ADDWF 0x1C,W ; Ajouter le contenu de l’adresse 0X1C au registre W et mettre le résultat


;dans W

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 28
La mémoire EEPROM de configuration

Pendant la phase d'implantation d'un programme dans la mémoire programme


du PIC, on programme aussi une EEPROM de configuration constituée de 5
mots de 14 bits :

 4 mots d’identification ( ID) à partir de l’adresse 0x2000 pouvant contenir un


repérage quelconque que nous n'utiliserons pas,

 1 mot de configuration (adresse 0x2007) qui permet :


 de choisir le type de l'oscillateur pour l'horloge
 de valider ou non le WDT timer
 d’interdire la lecture des mémoires EEPROM de programme et de
données.

RST(S6)-ENSA -KENITRA
DUT-GE(S3)-EST -GEULMIM
La mémoire EEPROM de configuration

 Bit 2 WDTE validation du timer WDT (chien de garde)


 1 : WDT validé
 0 : WDT inhibé
 Bit 3 PWRTE validation d'une temporisation à la mise sous tension
 1 : temporisation inhibée
 0 : temporisation validée (le μC attend 72 ms)
 Bit 13:4 CP Protection en lecture du code programme
 1 : pas de protection
 0 : protection activée

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM
Horloge
 Le PIC16F84A peut fonctionner avec 4 sources d’oscillateurs différentes :
• LP : Low Power Crystal (Fosc1 et Fosc0 =00 ,jusqu’à 4 MHZ)
• XT : Crystal/Resonator (Fosc1 et Fosc0 =01 ,jusqu’à 20 MHZ )
• HS : High Speed Crystal (Fosc1 et Fosc0 =10 ,jusqu’à 4 MHZ )
• RC : Resistor/Capacitor (Fosc1 et Fosc0 =11 ,jusqu’à 200 KHZ )
 Le choix de la source d’horloge se fait par les deux bits de configurations Fosc1
et Fosc0
 L’horloge peut être externe ou interne. Cette dernière est constituée d'un
oscillateur à quartz ou d'un oscillateur RC

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 31
Horloge

 Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 20 MHz
selon le type du μC
 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

DUT-GE(S3)-EST
RST(S6)-ENSA -KENITRA
-GEULMIM 32

Vous aimerez peut-être aussi