SlideShare une entreprise Scribd logo
1
Pr. A.BRAHMI
Département de Physique
Master: Électronique et Systèmes Embarqués ESE
Année Universitaire : 2022-2023
Module: Systèmes à microprocesseur (M14)
Élément 1: Microcontrôleur PIC16F84
Plan du cours Element 1:
II. Architecture (PIC16F84)
III. Programmation (en C)
I. Introduction
1. Systèmes micro-programmés
Les systèmes micro programmés sont actuellement très développés grâce au grand
progrès qu’a connu l’électronique numérique ces dernières années.
Ces systèmes très utilisés dans de nombreuses applications tant domestique
qu’industriels (coût de revient faible, adaptation aux contraintes technologiques
complexes, gestion des fonctionnalités très variées)
Ces systèmes sont développés au début dans les calculateurs de bureau ou de poche
avec des codes (programmes) orientés vers le calcul numérique.
Après, une bonne maîtrise de ces technologies, apparaît des microprocesseurs qui
sont des circuits d’usages généraux qui constituent actuellement l’élément de base de
ces systèmes micro-programmés.
Ainsi le premier microprocesseur 4 bits 4004 Intel a apparut en 1971.
La miniaturisation des transistors a augmenté considérablement la capacité
d’intégration sur le silicium. D’ou un rapide passage aux microprocesseurs (µp)
suivants: µp 8 bits, µp 16 bits, µp 32 bits et finalement au µp 64 bits.
Ainsi, cette miniaturisation a permis d’offrir des possibilités de réaliser des systèmes
embarqués.
I. INTRODUCTION
La majorité des systèmes micro-programmés utilisent une architecture classique appelée:
Von Neumann.
a. Avantages:
• les mémoires (données et programmes), les périphériques (Entrées/Sorties) et l’unité
de contrôle (UC) partagent les mêmes bus d’adresses et de données.
• Structure économique (moins de bus) moins encombrante
b. Inconvénients:
L’exécution des instructions nécessitent plusieurs échanges de données sur le seul et
l’unique bus dédié à cet usage: il faut chercher le code de l’instruction après aller
chercher aussi les données à manipuler: vitesse d’exécution lente.
1.1 Architecture des Systèmes micro-programmés: Von Neumann et Harvard
A. Structure Von Neumann
I. INTRODUCTION
Les systèmes micro-programmés récemment développés sont construits autour d ’un autre
type d ’architecture: Architecture Harvard.
a. Avantages:
• Adressage des deux mémoires indépendant,
• structure performante: rapidité (gain en terme de vitesse d’exécution des programmes).
• Exécution d’une instruction en un seul cycle machine; on peut simultanément grâce aux
deux bus de rechercher le code de l’instruction et la ou les données manipulées.
•Instructions et données pas forcément codées sur un même nombre de bits.
b. Inconvénients: Structure compliquée et coûteuse : encombrante.
1.1. Architecture Systèmes micro-programmés
B. Structure Harvard
I. INTRODUCTION
2. Microprocesseur
Un uP ou processeur (CPU): unité intelligente de traitement des informations
(et données)
• chargé d’organiser, décoder et d’exécuter les taches préconisées par un programme
logé dans son mémoire.
• prend en compte les informations extérieures et assurer leurs traitements.
2.2. Avantages:
• souplesse d’emploi inhérente à la programmation
• économie
2.3. Structure de base:
• Unité arithmétique et logique (UAL)
• Unité de contrôle (UC)
• Des registres
• Des bus (données, adresses, contrôle)
L’ensemble est sous forme d’un circuit intégré
complexe à très grande échelle d’intégration (VLSI).
2.1. Définition
I. INTRODUCTION
7
3. Microcontrôleur
Il s’agit d’un circuit intégré formé d’un microprocesseur auquel sont ajoutés des
périphériques sur la même puce (system on chip). Il est caractérisé par la vitesse du
processeur (fréquence), de l’espace mémoire disponible et du nombre de périphériques.
• Une mémoire programme morte (ROM, PROM, EPROM...).
• Une mémoire données vive (RAM).
• Ports d’entrée/sortie pour la communication avec l’extérieur.
• Convertisseurs analogiques numériques intégrés
• Systèmes de comptage TIMER (générer et mesurer des
signaux avec une grande précision temporelle).
• Sortie MLI ou PWM (modulation de largeur d’impulsion)
• Gestionnaire des liaisons série et / ou parallèle
(dialogue avec d’autres unités ).
• Surveillance de programme Watchdog.
3.1. Définition :
Il est constitué en plus de l‘unité de traitement de
données (CPU) des éléments suivants :
3.2. Constituants :
I. INTRODUCTION
Un microcontrôleur rassemblant plusieurs éléments permet ainsi d’améliorer :
• l’intégration (system on chip) afin de réduire l’encombrement)
• le coût de conception et de réalisation d’un système à base de microprocesseur
Les systèmes à microprocesseur sont plutôt réservés pour:
• les applications qui demandent beaucoup de traitement de l’information
• Assez peu de gestion d’entrées/sorties
(Ordinateurs, calculateurs……)
Les systèmes à microcontrôleur sont plutôt dédiés aux applications qui:
• nécessitent beaucoup de manipulations d’entrées / sorties.
• n’exigeant pas beaucoup de calculs complexes.
(Contrôle de processus…..)
3. Microcontrôleur
3.3. Propriétés :
I. INTRODUCTION
4. Familles de microcontrôleurs
Les types de microcontrôleurs, les plus connus sont :
Atmel AT, familles: AT89Sxxxx, AT90xxxx,……..
Motorolla, familles : 68HCxxx,……..
Intel, familles : 80C186XX
STMicrocontroler, famille : STX
AnalogDevice, famille : ADuC
Microship PIC, familles : 12Cxxx, 16Cxxx, 16Fxxx, 18Fxxx,……
Dans ce cours, on va se limiter au PIC16F84 qui constitue l’élément de base pour l’étude des
microcontrôleurs de MICROCHIP. Il s’agit d’un circuit simple, complet et performant.
Ainsi, si on a tout assimilé, on pourra facilement passer à un autre type de microcontrôleur de
la même famille et aussi à un autre type d’une autre famille.
• Cafetière
• Magnétoscope, Automobile
• Systèmes informatiques: Ordinateur, PC portable, téléphone
• Télécommunication : Radios, Satellite
• Robotique
5. Domaines d’application
I. INTRODUCTION
Un PIC ne possède ni bus d’adresses ni bus de données ni de contrôle pour communiquer
avec l’extérieur comme un uP; il communique uniquement via des ports.
6. les microcontrôleurs PIC:
Il existe trois familles de PIC :
- Base-Line : Les instructions sont codées sur 12 bits
- Mid-Range (line) : Les instructions sont codées sur 14 bits
- High-End : Les instructions sont codées sur 16 bits
Les PIC sont des systèmes ou des composants de structure RISC (Reduced Instructions Set
Computer ou construction), ou encore composant à jeu d’instructions réduit (35 jeux
instructions):
• instructions sont codées sur un nombre réduit de bits
• vitesse d’exécution rapide (1 cycle machine pour les instructions et 2 cycles pour les sauts)
N.B:
Les systèmes d'architecture CISC (Complex Instructions Set Construction) proposent plus
d'instructions donc codées sur plus de bits réalisant ainsi des traitements plus complexes.
En revanche, le nombre de bits limité ou réduit utilisé impose l’utilisation des instructions
basiques (par exemple la comparaison se fait par l’opération de soustraction)
I. INTRODUCTION
11
Un PIC est identifié par un numéro de la forme suivant : xx(L)XXyy –zz
- 16 : Mid-range
- F : FLASH
- 84 : Type
- 10 : Quartz à 10MHz au maximum
-zz : Vitesse maximum du quartz
- yy : Identification ou type
- XX : Type de mémoire de programme
C - EPROM ou EEPROM
CR - PROM
F - FLASH
- L : Tolérance plus importante de la plage de tension
Par exemple PIC 16F84 –10:
- xx : Famille du composant (12, 14, 16, 17, 18)
7. Identification d’un PIC:
I. INTRODUCTION
8. Architecture générale du PIC16F84:
I. INTRODUCTION
8. Architecture générale des PIC :Programmable Interface Controller
La structure générale du PIC 16F84 contient:
• Système d’initialisation à la mise sous
tension(Power Up,timer…),
• Système d’horloge à partir du quartz
externe (base de temps),
• Unité arithmétique et logique (UAL)
• Mémoire flash de programme,
1k mots de14 bits (mot =14 bits,
1k mots=1028 mots),
• Compteur ordinal de programme (PC) et
une pile (stack) de 8 niveaux,
• Bus spécifique pour le programme
(program bus),
• Registre contenant le code de l’instruction à
exécuter,
• Bus spécifique pour les données (data bus)
• Mémoire RAM (registres SFR et 68 octets
de données),
• Mémoire EEPROM (64 octets de données)
• 2 ports d’entrées/sorties (Port A et Port B),
• Compteur (temporisateur ou timer0),
• chien de garde (watchdog) pour surveiller
le dysfonctionnement du pic.
I. INTRODUCTION
14
► 35 instructions - RISC
► Instructions codées sur 14 bits - Mide-line
► Données sur 8 bits =microcontrôleur 8 bits
► 4 sources d’interruptions
► Vitesse maximale spécifique 10MHz (100 ns) soit 1 instruction en 400ns
(1cycle machine = 1cycle instruction = 4 cycles d’horloge)
9. Principales caractéristiques du PIC16F84
► Deux ports d’entrées / sorties (port A et port B)
► Un cycle machine par instruction, sauf pour les sauts : 2cycles machines
► 1000 cycles d’effacements / écritures pour la mémoire
Flash et 10.000 cycles pour la EEPROM de données
N.B : Pour le PIC16F84A :
• 10.000 cycles d’effacements / écritures pour la mémoire Flash
• 10.000.000 cycles d’effacement/ écriture pour la EEPROM de données
Avec plus de 40 ans de maintien de donnée.
• Vitesse maximale de 20MHz (1 instruction en 200 ns( un cycle machine = 4 cycles
d’horloge
• Temps d’écriture et effacement de 8ms (par contre il faut 20ms pour le 16F84)
I. INTRODUCTION
15
10. Brochage et fonctions des pattes (pic16F84)
► Vss(0V), VDD (5V): alimentation
► OSC 1,2 : Horloge Quartz)
► RA0-4 : port A (entrée/sortie)
► TOCKL : entrée de comptage
► INT: entrée d’interruption
► RB0-7 : port B (entrée/sortie)
► MCLR : reset (0V)
► Mode de programmation: tension de 12V à 14V
► Mode d’exécution : 4.5V à 5.5V
► Circuit intégré à 18 broches
I. INTRODUCTION
► 25 mA max dissipé par une broche
► 13 broches d’entrées sorties avec contrôle individuel de direction
► TMR0 Timer 8 bits programmable
11. Type de boîtier
I. INTRODUCTION
► Boîtier DIP : Dual In-line
Package (Plastic) à 18 broches
Ce circuit peut être présenté sous forme d’un boîtier de deux technologies de
construction
► Boîtier SOIC : Small Outline
Integrated Circuit
N.B: Certains boîtiers possèdent des fenêtres transparentes pour l’effacement par
ultraviolet de certaines mémoires.
11. Principe de fonctionnement d’un pic16F84
I. INTRODUCTION
Un PIC exécute instruction par instruction séquentiellement (successivement)
• Le temps nécessaire à l’exécution d’une instruction est appelé : cycle d’instruction.
• Le signal d’horloge (OSC2 Clock) est divisé par 4 à l’intérieur du PIC ce qui donne 4 horloges
internes (OSC1) en quadrature: Q1, Q2,Q3 et Q4.
Chaque instruction est exécutée durant un cycle en deux phases:
• Phase de recherche du code binaire de l’instruction stockée en mémoire de programme
(4 cycles d’horloge)
• Phase d’exécution de l’instruction (4 cycles d’horloge)
Phase de recherche :
• Durant cette 1ère phase, le PC est incrémenté par Q1 sur front montant (pour pointer
l’instruction suivante) et l’instruction est chargée dans le registre d’instruction par Q4 (délai du
au temps d’accès à la mémoire)
Phase d’exécution:
• L’exécution de l’instruction se fait durant la 2ème phase telle que :
Q1: décodage de l’instruction: instruction est décodée en mot binaire 14 bits
Q2 : lecture de l’opérande (W, registre RAM, donnée immédiate….)
Q3 : traitement (addition, soustraction,….)
Q4 : stockage du résultats (dans l’opérande source, w….)
11. Principe de fonctionnement d’un pic16F84
I. INTRODUCTION
Ainsi un cycle d’instruction dure 8 cycles d’horloge (4+4 = 8).
19
L’architecture particulière des PICs Harvard (Bus différents et séparés pour les données et le
programme) lui permet de réduire ce temps.
En effet, un pipeline (chaîne de traitement) à deux étages avec 2 niveaux (ou profondeur)
permet de mener les deux phases (recherche et exécution ) en parallèle, ce qui permet de
réduire ce temps par deux :
• Durant une même phase de 4 périodes d’horloge, le processeur va chercher l’instruction
suivante tout en exécutant l’instruction présente.
une instruction s’exécute alors en une seule phase c-à-d durant la moitié du cycle instruction du
départ.
NB :
Lors d’un déroutement (changement du PC par une instruction), il faut rajouter un cycle
mort pour charger la nouvelle instruction avant son exécution (appel et retour d’interruption,
branchement…). Dans ce cas on utilise la mémoire de la pile pour sauvegarder le PC.
11. Principe de fonctionnement d’un pic16F84
I. INTRODUCTION
Ainsi un cycle d’instruction dure alors uniquement 4 cycles d’horloge.
II. ARCHITECTURE DU PIC16F84:
1. Architecture interne
II. ARCHITECTURE DU PIC16f84:
1. Architecture interne
La structure générale d’un PIC 16F84 comporte 4 éléments essentiels:
• Mémoire de programme (instructions ou code opérande)
• Mémoire de données (opérandes)
• Processeur (Unité de Traitement)
• Périphériques (Ressources auxiliaires)
1. organisation de la mémoire
Le PIC16F84 contient :
1) la mémoire de programme (stockage des instructions u du
code)
2) la mémoire de données (opérandes ou valeurs).
Sa structure interne Havard permet des accès séparés à
chacune des deux mémoires.
Ainsi un accès aux deux mémoires est possible durant un même
cycle machine ce qui augmente la vitesse d’exécution.
II. ARCHITECTURE DU PIC16f84:
1.1. Mémoire de programme : FLASH + pile + PC
1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
1.1. Mémoire de programme : FLASH
• Elle contient le programme (ensemble d’instructions pilotant
l’application envisagée) à exécuter.
• Elle est accessible en lecture uniquement par le uprocesseur.
• Cette mémoire contient 1k mots (mot= instruction sur 14 bits)
(soit 1024 instructions ou 1024 mots codées sur 14 bits chacune)
d’adresses allant de 000 à 3FF.
• Elle est de type Flash (EEPROM à accès rapide) non volatile et
réinscriptible à volonté.
• Les adresses 20h, 420h, 820h, C20h, 1020h, 1420h, 1820h et 1C20h
contiennent les instructions.
• L’adresses 000 est réservée au vecteur de reset.
• l’adresse 004 est réservée au vecteur d’interruption.
• Les adresses des instructions sont gérées par le compteur ordinal dit
compteur de programme PC codé sur 13 bits
1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
• Vecteur RESET: pointeur PC vers l’adresse mémoire du début du programme principal en cas
d’initialisation 000H.
• Vecteur d’interruption: pointeur PC vers l’adresse mémoire du sous programme d’interruption à
exécuter en cas d’interruption 004H.
N.B :
Pointeur : variable (ou registre) contenant une adresse mémoire
La mémoire Flash est accessible uniquement en lecture par le uprocesseur.
Sa programmation nécessite une procédure particulière et un matériel adéquat
(programmateur (circuit), un logiciel pour le transfert du program et un pc).
Sa taille reste suffisante pour les applications traitées dans le cadre de ce cours.
1.1. Mémoire de programme
1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
Pour une bonne programmation, il est conseillé de :
Placé le début du programme après l’adresse 004h
Mettre un branchement au début du programme à l’adresse 000h.
Mettre un branchement au début de la routine d’interruption à
l’adresse 004h (s’il y en a une )
Pour le PIC16F84, la mémoire Flash permet 1000 cycles
d’effacement et de programmation
Pour le PIC 16F84A la mémoire Flash permet 10.000 cycles
d’effacement et de programmation.
Le temps d’écriture ou/et d’effacement est de 20ms.
1.2. Mémoire de donnée
Elle est composée de deux zones: la mémoire RAM et la mémoire EEPROM
a. Mémoire EEPROM
• Elle se trouvent à partir de l’adresse 0x2100.
• Constituée de 64 octets accessible en lecture et écriture par le programme (càd par le up) .
• Utile pour sauvegarder des constantes accessibles au moment de la programmation et
aussi par le programme.
• non volatile: conserve les données même si l’alimentation est coupée ou éteinte et on peut
les récupérer lors de la mise sous tension :.
1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
. Mémoire de donnée
a. Mémoire EEPROM
3.1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
• On y accède à l’aide des registres EEDATA et EEADR sous le contrôle des
deux registres de contrôle: EECON1 et EECON2.
• La lecture et l’écriture s’exécutent selon des séquences particulières.
• Opérations de lecture et d’écriture sont beaucoup plus lentes que la Flash
(RAM)
• Le temps d’accès en écriture est relativement long (10 ms).
On ne peut pas l’utiliser pour stocker les variables temporaires qui évoluent
dans le programme, par contre on y stocke des paramètres semi-permanents:
Code d’accès , version du programme, messages d’accueil, valeur invariable,
paramètres d’étalonnage d’un capteur ou de configuration,résultats obtenus…
Aussi, on peut y stocker les événements survenant au cours de l’exécution du
programme.
b. Mémoire RAM (random acces memory)
• Constituée de 68 octets (mot mémoire de 8 bits).
• Volatile (perd ses données à chaque coupure du courant)
• Elle est organisée en deux banques : Banque 0 et Banque 1.
• Chaque banque est composée de 128 octets
• Accessibles par le bit RP0 du registre STATUS.
le bit RP0 permet de sélectionner la banque 0 ou la banque 1
et vice-versa: RP0 = 0: on sélectionne la banque 0
et RP0 = 1: on sélectionne la banque 1
1.2. Mémoire de donnée
II. ARCHITECTURE DU PIC16f84:
N.B :
La mémoire RAM est dite mémoire File (f), elle comprend trois dispositifs mémoires différents:
* les registres du CPU suivants: STATUS, FSR, PCL,PCLATH.
* les registres des périphériques d’entrées/sorties: PORTA, TRISA,…….
* la mémoire de données utilisateur (cases libres ou cases d’utilisateur).
Les registres du CPU et ceux des périphériques sont appelés: registres spéciaux (SFR) ou registres
systèmes
* zone 2 : Les registres à usage général 68 octets libres utilisable pour stocker des variables
temporaires du programme (General Purpose Registers GPR) : se sont des cases mémoires
libres de taille 8 bits pour les données accessibles directement par le registre FSR et
indirectement par le registre INDF.
Les adresses du GPR sont mappées (0Ch et 8Ch sont accédées par le même registre SFR).
• La zone 2 est utilisée pour les calculs du programme, le stockage des résultats intermédiaires
et des variables d’une application.
• Les instructions MOVWF et MOVF permettent de déplacer les valeurs du registre W à n’importe
quelle adresse registre ‘’F’’, et vice-versa.
• Comprend deux zones:
* zone1 : les 12 premières lignes de chaque banque contiennent les registres à fonction
spéciales SFR qui sont réparties sur les deux banques (Special Function Registers). Ces
registres servent à contrôler les opérations sur le PIC (configuration et gestion du circuit).
Certains ont une fonction générale, d’autres ont une fonction spécifique liée à un
périphérique donné. L’ensemble est appelé: Fichier des registres (‘’F’’)
b. Mémoire RAM
1.2. Mémoire de donnée
II. ARCHITECTURE DU PIC16f84:
30
• Quand l’instruction RETURN, RETLW ou RETFIE
apparaît, le μproc lit la dernière valeur sauvegardée
dans la pile, libère l'emplacement occupé et se
branche à cette adresse lue pour continuer
l’exécution du programme principal.
La pile est constituée de 8 emplacements de 13 bits réservées par le système (pas d’adresse) et
intervient dans le mécanisme des instructions :
CALL
RETURN
RETLW (saut dans un tableau)
RETFIE (fin de la routine d'interruption)
1.3 la pile (level stack) :
1. Organisation de la mémoire
• Quand une instruction CALL intervient ou une
interruption, l'adresse de l'instruction suivante (qui se
trouve dans le compteur de programme PC) est
sauvegardée dans la pile.
II. ARCHITECTURE DU PIC16f84:
Principe : elle permet d’empiler les adresses de retour
lors des appels à des sous-programmes et/ou des sous
programmes d’interruption:
• Il n’y a aucun contrôle sur l’état de la pile par le
processeur (n’est pas accessible à l’utilisateur)
•La pile est de type LIFO (Last In First Out), c’est
comme une pile d’assiettes:
la dernière posée sera la première à être reprise.
• Elle est circulaire: la 9ième écriture écrase la 1ère
définitivement perdue.
• Avec le mécanisme de la pile, un sous-
programme peut appeler un autre sous-programme
(ou plutôt un sous-sous-programme) : la pile
réserve un autre emplacement.
(imbrication de 8 sous programmes au maximum).
N.B :
• les registres: PC, W et la mémoire pile (Stack)
n’ont pas d’adresses: situés en dehors des autres
mémoires.
• La pile est une zone mémoire particulière à accès
séquentiel (contraire à l’accès aléatoire pour la
RAM).
1.3 la pile: Propriétés:
1. organisation de la mémoire
II. ARCHITECTURE DU PIC16f84:
II. ARCHITECTURE INTERNE DU PIC16f84:
PIC: Peripheral (programmable Interface Controller de microchip
2. Processeur :
Le processeur (ou l’unité centrale ) est constitué de 2
éléments :
• Une UAL effectue les opérations arithmétiques (+, -, /..) et
logique (ET, OU, NO, AND…..) internes dictées par l’unité de
contrôle et le Décodeur d’instructions.
• Un registre de travail W fondamental largement utilisé par
les instructions du programme pour stocker les valeurs
temporaires (données) des opérations de calculs.
• Leur nombre dépend du type du PIC étudié. Pour le type PIC16F84, les registres les plus
utilisés sont:
Registres d’entrée/sortie: PORTA et PORTB
Registre d’état: STATUS
Registres de direction: TRIS
Registre Compteur Programme: PC( PCL-PCH ) et PCLATH
Registre de travail: W
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Registre d’interruption: INTCON
Registre de configuration : OPTION
Registres d’accès à l’ EEPROM: EEDATA, EEADR, EECON1, EECON2,
Registre vertuel INDF
Registres TMR0
Registre FSR
• les registres sont les éléments mémoires de petite taille sont plus rapides, ils sont situés dans
la RAM sur 2 banques (deux pages), ils servent au stockages des opérandes et des résultats
intermédiaires utilisées dans le programme et à la gestion (fonctionnement) du PIC.
II. ARCHITECTURE DU PIC16f84:
3.1. le registre PC: compteur programme: séquenceur
3. Registres internes
Le PC (ou compteur ordinal) est un registre qui pointe l’instruction à exécuter en permanence et
permet donc au programmeur de se déplacer à volonté dans mémoire FLASH: Il contient toujours
l’adresse de la prochaine instruction à exécuter.
A la mise sous tension, ce registre est mis à 0 et pointe donc la première case mémoire (000h).
Durant l’exécution du programme, il s’incrémente automatiquement et pointe les adresses des
instructions du programme.
Chaque instruction pointée transite dans le registre d’instruction afin qu’elle puisse être traitée par
le contrôleur et décodeur d’instruction qui gèrent la suite des différentes actions internes
nécessaires à la bonne exécution de l’ instruction pointée.
Contenu ou valeur de PC ??: écriture dans PC:
Le PC (13 bits: taille du bus d’adresses) est obtenu par concaténation des deux registres (8 bits):
PCL(Low) et PCH(High):
• PCL sur 8 bits est la parties basse du PC, il est
accessible en lecture et en écriture.
• PLH de 5 bits est la partie haute du PC, il n’est pas
accessible directement:
On peut accéder et par suite modifier le contenu du
PCH indirectement grâce au registre PCLATH qui est un
registre SFR accessible en lecture et écriture:
Seuls 5 bits (PCLATCH <4:0>) sont utilisés.
PCLATCH participe au fonctionnement du PC.
Il est accessible en écriture seule.
II. ARCHITECTURE DU PIC16F84:
3. Registres internes
N.B: En cas d’instructions de saut dans une
table, seuls les 8 bits du PCL sont modifiables.
Les deux bits (b0 et b1) du PCLATH sont figés.
Ainsi, une table ne pourra excéder 256 cases
(256 données):
Au moment d’écriture dans PCL, le contenu du PCLATH est automatiquement copié dans PCH.
Il faut donc s’assurer que la valeur contenue dans PCLATH est correcte avant d’écrire dans PCL.
N.B:
Pour le 16F84, seuls 10 bits de PC sont utilisés pour adresser 1024 lignes de programme.
Ainsi, il nous faut 2 bits pour compléter le
PC (qui est sur 10 bits).
Ces deux bits sont pris du registre PCLATH
pour le PIC16F84.
3.2. Le registre de travail W (Working register): ou accumulateur
• Il est directement accessible par adressage immédiat (ou Littéral (L)).
• Ce registre 8 bits est indépendant des registres SFR, directement associé à l’UAL
• Il n’est pas adressable (joue le rôle d’un accumulateur pour les uprocesseurs).
Ce registre est utilisé d’une manière temporaire pour déplacer une donnée, effectuer des
opérations (arithmétiques ou logiques) et contenir aussi les résultats des opérations sur
l’un des autres registres SFR ou GPR. Ainsi, on distingue 2 cas possibles:
*Opération à un seul opérande: l’opérande est soit dans W soit dans un autre registre,
*Opération à deux opérandes: un opérande est dans W, l’autre est une constante
(valeur immédiate 8 bits: littéral) ou est contenu dans un autre registre.
Les résultats sont envoyés soit dans W soit dans un autre registre soit dans les deux (pour
certaines instructions).
II. ARCHITECTURE DU PIC16F84:
3. Registres internes
3.3. Le registre d’état STATUS register): Décrit l’état de l‘UAL en ce qui concerne le
résultats de la dernière opération et permet de sélection des banques 0 et 1 par le bit RP0.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Bit0 : C= Carry bit: utilisé pour les instructions de rotation (9ème bit d’une opération)
1: retenue (ou report) sur le bit MSB (après les instructions ADDWF et ADDLW) ou
résultas négatif.
0 : pas de retenue sur le bit MSB
Bit1 : DC= Digit Carry bit: utile pour les nombres BCD (afficheur 7 segments)
1: retenue sur le 4ème bit des poids faible LSB (après les instructions ADDWF et ADDLW)
0 : pas de retenue sur le bit 4 du LSB
Bit2 : Z=Zéro bit:
1: résultat d’une opération arithmétique et logique est nul
0 : Résultat non nul
Exemple: Si une addition de deux octets donne un résultats >255 (FFh) ce bit est à 1,
dans le cas contraire (résultats <255) , il est à 0.
Bit3 : /PD= Power Down bit: indique le passage du PIC en mode sommeil
1: au démarrage ou après l’exécution de l’instruction CLRWDT
0 : après l’instruction SLEEP.
Bit5 : /RP0= sélection des pages mémoires de travail en adressage direct
1: sélection de la page 1 active, on peut accéder aux registres d’adresses 00 à 4F
0 : sélection de la page 0 active, on peut accéder aux registres d’adresses 80 à CF
N.B :
• Les bits RP1 et IRP ne sont pas utilisé pour le PIC16F84, il est conseillé de les laisser à 0 à fin
d’éviter certains problèmes imprévisibles de programmation (compatibité ascendante…).
• IPR : sélection de la banque de travail adressée dans le cas du mode d’adressage
indirect dans le cas de plus de 2 banques (inutile pour le PIC 16F84)
3.3. Le registre d’état (ou code condition):STATUS register) Décrit l’état de l‘UAL
au cours des opérations et les bits de sélection des banques 0 et 1
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Bit4 : /TO= Time Out bit: bit en lecture seule
1: après mise sous tension ou après CLRWDT ou encore après SLEEP
0 : Dépassement du timer Watchdog est survenu (déborde)
3.4. Le registre OPTION : Fixe le fonctionnement de l’horloge interne (prédiviseur) à accès
uniquement en écriture.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Bit7 : /RBPU= validation des résistances de rappel (ou de tirage) à Vdd (5V) pour le port B
1: les résistances de rappel ne sont pas connectées en interne sur le port B
0 : les résistances de rappel internes sont connectées à Vdd sur le port B.
N.B :
Le pull-up est désactivé dans les deux cas suivants:
• à la mise sous tension,
• quand le port est configuré en sortie,
Bit6 : INTEDG=détermine le front de l’interruption sur la broche RB0/INT
1: front montant (passage de l’état 0 à l’état 1)
0 : Front descendant (passage de l’état 1 à l’état 0)
Bit5 :TOSC=choix du signal pour piloter le Timer0
0: Timer0 piloté par horloge interne,
1 : Timer0 piloté par signal externe via la broche RA4/TOCK1 (généré par le circuit NE555)
N.B: Le fait de connecter de façon interne sur une ligne du port
B une résistance interne de tirage (bit /RPU à 0) permet de fixer
la tension de la pin configurée en entrée à un niveau haut
lorsqu’aucun signal n’est appliqué sur cette pin.
41
Bit3 : PSA=affecte un facteur de division
0: pour le Timer0
1 : pour le chien de garde
Bit4 : TOSE=fixe le front de l’horloge externe
1: front montant
0 : Front descendant
3.4. Le registre OPTION : Fixe le fonctionnement de l’horloge interne (prédiviseur)
à accès uniquement en écriture.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Bits 2-0 : PS2:PS0= définie la valeur du facteur de division
(Prescaler)
3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture)
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
a. EEDATA :registre 8 bits
contient selon l’opération à effectuer(écriture,lecture) la donnée lue de l’EEPROM ou la
donnée à écrire dans l’EEPROM
b. Le registre EEADR :
contient l’adresse de la donnée lue ou écrite dans l’EEPROM
c. EECON1 :
registre de contrôle qui définit le mode de fonctionnement de l’EEPROM
d. Le registre EECON2 :
Ce registre fantôme (non physique) set uniquement à sécuriser le fonctionnement du
PIC lors des opérations d’écriture.
Il s’agit de l’adresse 0x89 banque 1 qui sert à envoyer les commandes concernant les
procédures d’écriture dans l’EEPROM
N.B :
L’EEPROM ne contient que 64 octets (00h à 3Fh); les deux bits du poids fort du registre EEADR
sont donc toujours à 0. (6 bits utilisés pour cette capacité de 64 octets).
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Bit4 : EEIF: (EEPROM Interrupt Flag) Il est mis à 1 quand l’écriture d’une donnée est
terminée. Ce bit doit être remis à zéro dans le programme: par le programmeur.
Bit2 : WREN (WRite Enable): doit être mis à 1 pour autoriser l’écriture d’une donnée
dans l’EEPROM
Bit2 : WRERR (WRite ERRor): Il est mis à 1 en cas d’erreur d’écriture (problème
durant l’opération d’écriture ( Reset externe, Reset du au Watchdog),
Il est mis à 0 en fin d’opération d’écriture.
3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture)
Bit0 : RD (Read Data): doit être mis à 1 pour lire une donnée de l’EEPROM
Il est automatiquement remis à 0 par hardware uniquement après une lecture.
N.B:
L’opération de lecture dure un cycle d’instruction (horloge interne)
Bit1 : WR (WRite Data): doit être mis à 1 pour écrire une donnée dans l’EEPROM
remis automatiquement à 0 (par hardware seulement après une écriture).
N.B:
L’opération d’écriture dure plusieurs ms.
c. EECON1 : registre de contrôle qui définit le mode de fonctionnement de l’EEPROM:
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
N.B:
On peut aussi écrire des données en EEPROM directement pendant la phase de transfert du
programme dans la FLASH du PIC:
On utilise la directive de compilation DE de MPLAB à partir de l’adresse 0x2100 (origine des
adresses de l’EEPROM)
Par précaution, on peut vérifier facilement l’écriture d’une donnée en EEPROM:
On relit le contenu cette mémoire et on le compare avec la valeur attendue.
3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture)
A la fin de l’opération d’écriture (plusieurs ms), le bit WR est mis à 0 automatiquement et aussi
le drapeau EEIF est mis à 1 automatiquement.
Au lieu d’attendre la fin de l’écriture, on peut utiliser l’interruption de fin d’écriture de l’EEPROM:
1) On place le bit EEIE à 1 pour autoriser cette source d’interruption et ce après autoriser
toutes les sources d’interruption d’une manière globale (bit GIE à 1),
2) Aussi on efface le drapeau EEIF dans la routine d’interruption(mettre EEIF à 0).
N.B:
L’écriture se fait par un seul emplacement à la fois puis on passe à une nouvelle écriture
dans l’emplacement suivant.
L’écriture complète des 64 octets dure environ ¼ de seconde.
3.6. Le registre FSR pointeur d’adresse:
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
• Il s’agit d’un registre 8 bits c’est le seul registre utilisé comme pointeur pour l’adressage
indirect.
• Il est contenu à l’adresse 04h dans les deux banques (0 et 1), est donc accessible
indépendamment du numéro de banque.
• FSR contient l’adresse du registre INDF, et ce registre INDF contient la donnée à utiliser.
Ainsi, on utilise le mode d’adressage direct pour écrire l’adresse du registre INDF dans le
pointeur FSR (ou registre FSR).
INDF lui contient la donnée.
3.7. Le registre INDF : INDirect File
• C’est un registre fantôme d’adresse 0x00 qui est utilisé en mode d’adressage indirect pour
l’accès à la mémoire de données RAM.
• On ne peut en aucun cas accéder à l’emplacement 0x00.
• C’est une position fictive par laquelle on passe dans ce mode d’adressage indirect.
• C’est un registre qui n’existe pas vraiment, ce n’est qu’un procédé d’accès particulier au
contenu du registre pointeur FSR utilisé par le PIC16F84 pour des raisons de facilité de
construction électronique interne.
N.B:
• FSR contient l’adresse pointée (adresse).
• INDF contient la donnée contenue dans l’adresse pointée par FSR (càd :INDF contient alors une
donnée).
3.6. Le registre FSR pointeur d’adresse:
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
• Il s’agit d’un registre 8 bits c’est le seul registre utilisé comme pointeur pour l’adressage
indirect.
• Il est contenu à l’adresse 04h dans les deux banques (0 et 1), est donc accessible
indépendamment du numéro de banque.
• FSR contient l’adresse du registre INDF, et ce registre INDF contient la donnée à utiliser.
Ainsi, on utilise le mode d’adressage direct pour écrire l’adresse du registre INDF dans le
pointeur FSR (ou registre FSR).
INDF lui contient la donnée.
3.7. Le registre INDF : INDirect File
• C’est un registre fantôme d’adresse 0x00 qui est utilisé en mode d’adressage indirect pour
l’accès à la mémoire de données RAM.
• On ne peut en aucun cas accéder à l’emplacement 0x00.
• C’est une position fictive par laquelle on passe dans ce mode d’adressage indirect.
• C’est un registre qui n’existe pas vraiment, ce n’est qu’un procédé d’accès particulier au
contenu du registre pointeur FSR utilisé par le PIC16F84 pour des raisons de facilité de
construction électronique interne.
N.B:
• FSR contient l’adresse pointée (adresse).
• INDF contient le contenu de l’adresse pointée par FSR (càd :INDF contient alors une donnée).
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
3.7. Le registre INDF : INDirect File
CLRF INDF signifie : mettre à 0 la case mémoire pointée par l’adresse contenue dans FSR.
Or INDF est la case mémoire pointée par le registre pointeur FSR.
Si on place 80h dans FSR et ensuite on exécute CLRF INDF; cela va remettre à 0 la case
mémoire d’adresse 80h.
En effet, le registre pointeur FSR est de 8 bits qui peut adresser uniquement 256
positions qu’est la capacité de la RAM dont on dispose. Ainsi en mode d’adressage
indirect, le bit IRP est inutilisé (registre STATUS).
N.B :
Chaque fois que le Processeur rencontre le mot INDF
dans un programme, il s’agit de la case mémoire dont
l’adresse (8 bits) se trouve dans le registre FSR.
(complété par le bit IRP du registre STATUS dans le des
autres pic (mis à 0 pour le PIC16F84).
3.9. Registre PORTA (0x05 banque 0)
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
Ce registre permet au microcontrôleur de communiquer avec le
monde extérieur, c’est en fait ce registre qui représente l’image
(états) des 5 pins RA0 à RA4, chaque bit de ce registre
représente une pin. Il est à lecture et écriture.
3.8. Registre TRISA (0x85 banque 1)
Ce registre est dit de sens de transfert de données ou informations (entrée , sortie) à écriture
seule est d’adresse complète sur 8 bits.
Ce registre permet de configurer indépendamment les bits du port A ( de 5 pins) en entrée
ou en sortie selon les valeurs mis dans ses bits. Il fonctionne comme suit:
• Chaque bit de ce registre mis à 1 configure la pin correspondante en entrée.
(1=Input)
• Chaque bit de ce registre positionné à 0 configure la pin correspondante en sortie.
(0=Ouput).
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
3.10. Registre TRISB et PORTB
Ces registres fonctionnent de la même façon que les deux registres PORTA et TRISA,
mais concernant bien entendu les 8 pins RBi(i=1….7).
N.B:
Au RESET, les bits du registre TRISB sont mis à 1, ainsi toutes les pins du port B sont
alors des entrées.
En écriture :
on configure le port A en sortie grâce au registre TRISA,
et on place la valeur à écrire dans PORTA.
En lecture:
on configure le port A en entrée grâce au registre TRISA,
On lit la valeur présente sur les pins du port A grâce au registre PORTA.
N.B:
Au RESET, les bits du registre TRISA sont mis à 1 du coup toutes les
pins du port A sont alors des entrées.
3.9. Registre PORTA (0x05 banque 0)
Le registre INTCON à lecture et à écriture contient tous les bits de configuration, de
validation et des drapeaux des différentes interruptions(ou états).
BIT 7: GIE (Global Interrupt Enable).
Bit de validation globale de toutes les interruptions.
• GIE=1 : validation globale (toutes les interruptions sont autorisées)
• GIE=0 : Toutes les interruption sont interdite (masquées).
3.12. le registre INTCON (0B,8BH) : configuration des interruptions
a. Bit de validation globale de toutes les interruptions.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
N.B :
Chaque type d’interruption possède son propre bit de validation.
BIT 3: RBIE (RB Interrupt Enable).
Bit de validation de l'interruption RBI qui provient d'un changement d'état sur l'une des entrée
RB4 à RB7 du port B.
RBIE=1 : Autorise l'interruption.
RBIE=0 : interdit l'interruption
BIT 4: INTE ( INT interrupt Enable).
Bit de validation de l'interruption INT qui provient d'un front (passage de 0 à 1 ou vice versa) sur
l'entrée RB0 du port B.
INTE=1 : Valide l'interruption INT.
INTE=0 : Interdit l'interruption INT.
BIT 5: TOIE (TMRO Overflow Interrupt Enable).
Bit de validation de l'interruption TOI qui intervient au débordement du timer TMR0
TOIE = 1 : Valide l'interruption.
TOIE= 0 : Interdit l'interruption.
BIT 6 : EEIE (EE write Interrupt Enable).
Bit de validation de l'interruption EEI qui intervient à la fin d'une écriture dans l'EEPROM
EEIE=1 : Valide l'interruption. EEIE=0 : Interdit l'interruption
Remarque : le drapeau de cette interruption se trouve dans le registre EECON1
b. Bits de validation des 4 sources interruptions:
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
BIT 0: RBIF (RB Interrupt Flag)
Drapeau de l'interruption RBI qui provient d'un changement d'état d'un des bits RB4 à RB7.
RBIF= 1 : drapeau levé.
RBIF= 0 : drapeau baissé.
BIT 1: INTF (INT Interrupt Flag).
Drapeau d'interruption INT qui provient d'un passage d'état de l'entrée RB0 (front).
INTF=1 drapeau levé.
INTF=0 drapeau baissé.
BIT 2: TOIF ( TMRO Overflow Interrupt Flag).
Drapeau de l'interruption TOI qui intervient au débordement du timer TMR0
TOIF=1 drapeau levé.
TOIF=0 drapeau baissé.
c. Drapeaux (témoins ou indicateurs de changement d’état) des 4 interruptions.
N.B:
• Chaque indicateur RBIF, INTF, TOIF doit être remis à 0 par le programme de traitement de
l’interruption.
• Lors d’un RESET, tous les bits sauf RBIF (bit 0) du registre INTCON sont mis à 0.
• RBIF garde son état précédent.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
3.11. Registre compteur TMR0 (0x01 banque 0) :
Le registre TMR0 8 bits à accès en lecture et en écriture est lié au TIMER 0
(compteur/temporisateur). Il contient la valeur de comptage réalisé du TIMER0.
On peut le précharger avec une valeur de notre choix (l’initialiser à une valeur) à partir de
laquelle il comptera jusqu’à atteindre 255.
Lors d’une écriture dans TMR0, le comptage du TIMER0 est inhibé pendant 2 cycles
machines; il faut prendre en considération ce retard de démarrage dans le calcul des
temporisations précises.
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
N.B : Le registre TMR0 est utilisé par le TIMER 0 et le Timer chien de garde (Watchdog Timer)
Instruction : opération élémentaire effectuée par le processeur durant un cycle machine
(sauf pour les sauts 2 cycles ) suite à la demande d’un programme.
Chaque instruction est codée en binaire, ce code est dit code opération ou « opcode »:
désigne l’opération à effectuer.
Puisque le code binaire (valeur numérique) n’a pas de sens pour l’être humain, le
constructeur à conçu une abréviation du nom de l’opération désignant le code opération
fourni par le langage assembleur pour le processeur appelée: mnémonique.
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions
C’est le type des instructions qui utilise le registre W
pour manipuler les données; Elles sont codées comme
suit :
• 6 bits contiennent le code de l’instruction
• 8 bits contiennent la valeur numérique ou Litérale qui
sera utilisée par l’instruction (de 0 à 255) qui se trouve
la mémoire programme.
a. Instructions générales de contrôle : manipule des données codées directement
dans l’instruction elle même ; adressage Literal ou immédiat
4.1 Format des instructions (4 types codées sur 14 bits)
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
Les PIC sont conçus selon une architecture RISC: programmation avec un nombre
d’instructions réduit ce qui permet de :
• limiter la taille de codage des instructions
• limiter la taille mémoire utilisée (FLASH)
• gain en temps d’exécution
Le format de ces instructions est fixé par le constructeur “MICROCHIP”. Il est constitué d’:
• Un code opératoire: qui spécifie le type de l’opération.
• Un ou Des opérandes: qui sont des valeurs ou des adresses ou signifie qu’on utilise un
registre comme intermédiaire ou rien du tout (ceci dépend du mode d’adressage utilisé)
4.1 Format des instructions (4 types codées sur 14 bits)
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
b. Instructions orientées octet : manipule l’octet contenu dans un registre F
Elles utilisent le registre W et un registre de la mémoire de donnée pour manipuler les données.
Elles sont codées de la manière suivante:
• 6 bits de poids fort contiennent le code de l’instruction : OPCODE
• 1 bit pour la destination (d):
d=0: résultats stocké dans le registre W
d=1 : résultats stocké dans la case mémoire RAM ( libre ou registre) un autre registre F
• 7 bits de poids faible contiennent l’adresse (8 bits) de la case mémoire (libre ou registre)
contenant l’octet à traiter par l’instruction.
N.B : Le 8ème bit de l’adresse du registre est le bit RP0 (bit 5 du registre STATUS) qui permet
de changer de banque (banque 0 ou banque 1).
Pour coder toutes les 35 instructions, il nous faut 6 bits.
c. Instructions orientées bits : manipule directement un des 8 bits d’un registre
Elles permettent de manipuler (modifier ou tester )
directement les bits d’un registre particulier, elles sont
codées comme suit:
• 4 bits de poids fort pour l’instruction: OPCODE
• 3 bits pour indiquer le numéro du bit à manipuler ou
concerner par l’opération (bit 0 à 7 possible)
• 7 bits de poids faible contiennent l’adresse de la case
mémoire (libre ou registre) contenant l’octet à traiter
(+RP0 pour avoir l’adresse sur 8 bits)
4.1 Format des instructions (4 types codées sur 14 bits)
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
d. Instructions de sauts et d’appels de sous programme
C’est le type d’intructions qui provoque une rupture
dans la séquence de déroulement du programme
principal qui est écrit dans la mémoire programme (1K
mots donc 10 bits) .
Elles sont codées de la manière suivante:
• 3 bits pour le code de l’instruction.
• 11 bits pour coder l’adresse de destination (mémoire
de programme).
4.1 Format des instructions (4 types codées sur 14 bits)
N.B :
Pour le pic16F84, 10 bits qui sont utilisés pour coder l’adresse de destination.
Pour ce dernier type d’instructions, si la mémoire programme est supérieure à 2 Kmots
(PIC16F877……), on positionne les bits 3 et 4 du registre PCLATH.
On ne peut pas concevoir un programme qui ne manipule pas de données dite opérandes.
Le mode d’adressage est la manière d’accéder à une donnée en mémoire.
Il existe 3 modes utilisés dans les PIC; à savoir:
le mode Literal (immédiat), le mode direct et le mode indirect.
b. adressage Literal ou immédiat
Dans ce mode, la donnée est contenue dans l’instruction elle-même. (instruction de
transfert). Le registre W est souvent utilisé dans ce mode immédiat.
a. adressage inhérent
Dans ce mode, l’instruction n’a pas besoin d’opérande, il utilise uniquement le
code opératoire « code-op »
NOP: not operation, le PIC ne fait rien durant un cycle machine (perte du
temps de l’ordre d’un cycle machine)
RESET:initialise le PIC commence à l’adresse 000
SLEEP: met le PIC en mode veille (ou mode sommeil)
CLRWDT:Réinitialise le compteur du Watchdog
Pour d’autres pics, on peut trouver:
PUCH: charge une valeur dans la pile
POP :(l’inverse de PUSH) réstaure une valeur de la pile),
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
4.2. Modes d’adressage
c. adressage direct
Dans ce mode, la donnée manipulée de type adresse sur 7 bits est contenue dans un
registre qui peut être désigné ou connu par son nom (par exemple W) ou encore désigné
par son adresse mémoire ou une autre adresse dans la mémoire libre (GPR).
N.B :
Dans ce mode, l’adresse peut correspondre à deux
registres (car on est en présence de deux banques 0 et
1).
Le bit RP0 uniquement utilisé pour le PIC 16F84 permet
le choix de la banque et par la suite le choix du registre
à utiliser.
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
4.2. Modes d’adressage
d. adressage indirect (FSR+ INDF)
Pour ce mode, on utilise deux registres:
• un pointeur 8 bits FSR (File Selected Register) qui est le seul disponible dans les PICs situé
à l’adresse 04h dans les deux banques 0 et 1. Ce registre contient l’adresse de la donnée (de
la mémoire des données): c’est donc un pointeur d’adresse mémoire.
• un registre INDF spécial virtuel dans l’instruction qui représente la case mémoire pointé par
le registre d’index FSR. Ce registre INDF permet l’accès à la donnée dont l’adresse pointée
par FSR. Le registre INDF (INDirect File) contient la valeur du registre pointé par le registre
FSR (on parle d'adressage indirect).
Pour lire ou écrire dans une case mémoire par ce mode indirect, on procède comme suit:
• On place l’adresse de la donnée manipulée dans le registre FSR grâce au registre W.
• On lit ou on écrit la donnée dans le registre INDF;
De cette façon, on peut charger la valeur contenue à l’adresse
pointée par FSR dans W.
Le registre INDF est fictif n’est physique se trouve à l’adresse
0x00 dans les deux banques 0 et 1.
On peut le voir comme un autre nom de FSR utilisé pour
accéder à la donnée elle-même.
N.B: Le bit IRP n’est pas utilisé pour le PIC16F84;
II. ARCHITECTURE DU PIC16f84:
d. adressage indirect (FSR+ INDF)
Ce mode d’adressage est parfois très utile pour optimiser la taille des programmes et aussi la
vitesse d’exécution:
•Par exemple : effacement de la mémoire RAM du PIC:
Il s’agit d’effacer les 68 octets d’usage générale de la mémoire RAM (0x0C à 0x4F)
Avec ce mode on aura besoin de 8 instructions (et 477 cycles) pour le faire et l’exécution
nécessite 68 cycles seulement
•Dans certaines situations, il n’est pas judicieux d’utiliser l’adressage indirect.
Par exemple : lecture ou écriture du port B.
II. ARCHITECTURE DU PIC16f84:
4. Format des instructions et Modes d’adressages
4.2. Modes d’adressage
63
II. ARCHITECTURE DU PIC16f84:
Implanté dans toutes versions des microcontrôleurs Microchip son ancienne appellation est :
RTC: Real Time Clock
Ce temporisateur est un compteur 8 bits qui fonctionne selon deux modes: mode compteur
et mode temporisateur :
• mode compteur: Le timer 0 compte les impulsions reçues sur la pin RA4/TOCKI
• Mode temporisateur: le timer 0 compte les cycles d’horloge interne du PIC lui-même.
• La retenue sur TMR0 alimente l’indicateur ou le flag d’interruption (passage de 255 à 0)
N.B :
Si le timer 0 est configuré en mode compteur; la lecture du registre TMR0 donne le nombre
d’événements (impulsions) survenus sur la patte RA4/TOCKI.
Si le timer 0 est configuré en mode temporisateur; la lecture du registre TMR0 donne le
temps écoulé.
51. Le temporisateur TIMER0 : modes de fonctionnement
5. Périphériques (Ressources auxiliaires)
La structure interne du Timer 0 est schématisée par la figure :
N.B:
Les registres associés au Timer 0 sont: TMR0, INTCON, OPTION et TRISA.
Le bit 5 du registre OPTION décrit le fonctionnement de ce timer 0:
Bit5 :TOSC = mode de fonctionnement du Timer0:
0 : mode temporisateur (nombre de cycles d’horloge du PIC).
1 : mode compteur (nombre d’impulsions reçues sur la pin RA4/TOCKI).
En mode Compteur, le bit TOSE permet de choisir sur quelle transition de la broche
RA4/TOCKI le comptage est effectué :
• Si TOSE=0 incrémentation sur front montant (passage ou transition de 0 à 1)
• Si TOSE=1 incrémentation sur front descendant (passage de 1 à 0)
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
5.1. Le temporisateur TIMER0 : modes de fonctionnement
Les bits PS2:PS0 permettent de fixer la valeur du prédiviseur de fréquence (prescaler)
Ce prédiviseur permet de diviser la fréquence
d’incrémentation Fosc/4 ou TOCKI selon l’effet voulu.
Le prédiviseur peut être aussi utilisé pour le timer du chien de garde,
mais ne peut plus être utilisé par le timer 0.
Le bit PSA permet cette affectation:
PSA = 0 : prediviseur affecté au Timer 0
PSA = 1 : prediviseur affecté au timer du chien de garde
N.B : Pour désactiver le prédiviseur, il suffit de l’affecter au timer
du chien de garde avec un rapport de 1/1 (PS2=PS1=PS0=0).
• Aussi, les 8 bits du prédiviseur ne sont pas accessibles ni en
lecture ni en écriture.
II. ARCHITECTURE DU PIC16f84:
5.1. Le temporisateur TIMER0 : Prédiviseur
5. Ressources auxiliaires
La cadence d’incrémentation (de comptage) est alors liée à la fréquence d’horloge (mode
temporisateur) ou à la fréquence du signal présent sur la broche RA4/TOCKI.
Un prédiviseur permet de programmer cette proportionnalité. Ce prédiviseur est entièrement
géré par le registre OPTION.
5.1. Le temporisateur TIMER0 : la synchro
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
Cadence d’incrémentation : exemple
Avec quartz de 4 MHz=Fhorloge, on a donc un cycle d’horloge de durée T=1us.
Si TOCS=0, on est en mode temporisateur,
Si PSA=0 : le prédiviseur est affecté au Timer 0 (pas au chien de garde)
Pour (PS2PS1PS0=010 : prédiviseur de 8
On a Timer 0 incrémenté toutes les 8 us
La synchro retarde le début du fonctionnement de 2 cycles machine lors d’une :
• écriture dans le registre TMR0,
• modification d’un bit relatif au registre TMR0.
N.B: La lecture ne perturbe pas le comptage.
TMR0 registre de 8 bits accessible en lecture et en écriture.
Il compte les fronts montant du signal qu’il reçoit. Arrivé à 255, il repasse à 0: c’est le
débordement ou la fin de comptage.
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
Le TIMER 0 peut être utilisé de 3 manières:
• par lecture simple du registre TMR0,
• par scrutation (test) du Flag TOIF,
• par interruption.
• Par combine
b. Par scrutation du flag TOIF:
Lorsque le TIMER 0 déborde (passage de 255 à 0) le bit TOIF (b2) du registre INTCON passe à
1 (et reste à 1 tant qu’il n’a pas été remis à 0 par le programme).
Pour savoir si 256 incrémentations ont eu lieu, il suffit donc de scruter (examiner ou tester) à
tous moment le bit TOIF. Elle s’agit d’une méthode simple.
Inconvénients :
• le fait d’attendre tout le temps le bit TOIF à indiquer l’état 1 on perd du temps;
De cette façon, on bloque le processeur dans une boucle d’attente.
• Si la fréquence de test est inférieure à la fréquence d’incrémentation du TIMER 0, le
programme risque de ne pas réagir assez rapidement.
a. Par lecture simple du registre TMR0
Il s’agit de lire tout simplement le registre TMR0 pour voir ce qu’il contient. La valeur lue est le
reflet du nombre des événements survenus (impulsions ou cycles d’horloge).
Technique de test d’un nombre N d’incrémentation : on distingue deux cas :
• N < 256 : on charge le registre TMR0 avec la valeur 256-(N-2).
• N >= 256 : on utilise une ou plusieurs boucles incrémentées par le débordement du TIMER 0.
5.1. Le temporisateur TIMER0 : Techniques d’utilisation
5.1. Utilisation du TIMER0
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
c. Par interruption :
Cette méthode résout le problème posé du au test du débordement du TIMER 0 par le
programme via le bit TOIF du registre INTCON.
On positionne le bit TOIE du registre INTCON à 1, et chaque fois que le flag TOIF passe à 1, une
interruption est alors générée.
Cette interruption déroute aussitôt le PIC du programme principale pour traiter un sous
programme prévu.
Cette méthode est la plus utilisée dans les applications de gestion du temps utilisant le TIMER 0;
le processeur est ainsi libre de poursuivre son travail en attendant l’événement :
passage du bit TOIF à l’état 1.
BIT 5: TOIE (TMRO Overflow Interrupt Enable).
Bit de validation de l'interruption TOI qui intervient au débordement du timer TMR0
TOIE = 1 : Valide l'interruption.
TOIE= 0 : Interdit l'interruption.
d. Par combine :
Cette méthode permet de programmer une temporisation.
Elle permet de combiner la méthode par les interruption avec celle de lecture directe du registre
TMR0 comme suit:
• Les interruptions sont utilisées pour les multiples de 256
• La lecture directe de TMR0 pour les unités (de 0 à 255).
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
5.1. Méthodes de génération des temporisations
Il existe plusieurs techniques pour générer une temporisation:
• Timer 0: pour une temporisation précise.
• Timer 0 (lecture simple)+ Interruption c’est la méthode dite combine: pour des temporisations
précises, mais accompagnées de boucles longues.
• L’instruction nop: utilisée pour des temporisations de coutre durée (1 us par 1instruction nop).
• La boucle (itérations de rien ou de plusieurs nop): permet de générer une temporisation sans
Timer 0
• Le fonction delay : utilise une suite d’instructions nop ou une boucle pour des temporisations
peu précises mais facile à réaliser.
5.1. Applications du Timer 0
Le Timer 0 est un périphérique de gestion du temps, réalisant les fonctions suivantes :
• Comptage des événements (impulsions reçues sur la pin RA4/TOCKI) : compteur d’événements,
• Génération des temporisations ou mesure du temps (comptage des cycles d’horloge système)
• Génération des signaux périodiques (Sinus, triangulaire, carré, MLI…)
• Génération des événements périodiques (échantillonnage des signaux analogiques,
rafraîchissement des afficheurs multiplexés (7 segments)….).
• Synchronisation des signaux (au même temps ou à des intervalles de temps égaux)
• Fixation du débit (nombre max d’infos /s échangé) d’une liaison série synchrone ou asynchrone.
• ……………………………
70
A chaque interruption correspond un événement déclencheur ou une source d’interruption.
A chaque interruption, est associé un traitement spécial appelé sous programme d’interruption
(routine d’interruption)
Comme une interruption est un événement asynchrone, il faut alors :
• sauvegarder le contexte dans lequel se trouvait le processeur avant l’interruption,
• restaurer ce contexte une fois que le processeur a achevé l’exécution du sous programme
d’interruption.
Une interruption est une rupture de séquence asynchrone d’un programme principal.
C-à-d non synchronisée avec le déroulement du programme principal.
N.B :
L’exécution d’une instruction n’est jamais interrompue; c’est à la fin de l’instruction en cours
d’exécution lors de l’arrivée de l’événement que le sous programme d’interruption est
exécuté.
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
a. Définition
b. Mécanisme d’une interruption
Lorsqu’un un événement extérieur autorisé par un programme principal est survenu:
• tout d’abord le processeur le détecte,
• après, le processeur laisse le programme principal et se dirige vers le sous programme
d’interruption pour l’exécuter.
• ensuite, le processeur revient au programme principal pour continuer son exécution une fois
qu’il à terminé l’exécution du sous programme d’interruption et ce à partir de l’endroit où il l’a
laissé.
71
1 le programme principal se déroule normalement
2 L’événement déclencheur survient
5 Sauvegarde du contexte (registres
utilisés STATUS, W ou autre)
4 Le programme saute à l’adresse de
traitement de l’interruption 004
6 Traitement de l’interruption correspondante
7 Restauration du contexte
(W, STATUS….)
8 Retour au programme initial (principale)
La séquence de déroulement d’une interruption est la suivante:
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
e. Déroulement d’une interruption
3 Le programme achève l’instruction en cours de
traitement
72
1) L'interruption INT (RBO) : due à une source externe
Elle est provoquée par l’arrivée d’un front (ou transition) sur l'entrée RB0 (port B) quand
elle est programmée en entrée. Elle est gérée par 3 bits :
- INTE : bit de validation Enable (1= autorisée, 0=interdite) ou autorisation,
- INTF : drapeau Flag ou indicateur de l’événement déclencheur,
- INTEDG : front de déclenchement 1=montant, 0=descendant (registre OPTION)
2) L'interruption RBi (RB4 à RB7):
Cette interruption est provoquée par un changement d'état sur l'une des pins RB4 à RB7 ( port
B) programmées en entrée. Les bits associés à cette interruption sont :
• RBIE : bit de validation ou d’autorisation d’interruption.
• RBIF : drapeau ou indicateur d’interruption.
N.B : Interruption RBI
• Le front n'a pas d'importance pour l’interruption RBi (changement d’état qui compte).
• L’interruption est effective sur les 4 pins ou pour aucune (les pins sont alors liées dans le cas de
l’interruption); C-à-d il est impossible de limiter l’interruption à une seule de ces pins a part.
• RB0 et RB4…RB7 s’appellent des pins interruptibles.
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
c. Les sources d’interruptions
Le PIC16F84 dispose de 4 sources différentes d’interruptions à savoir:
3) L'interruption TOI : Débordement du Timer TMR0 (ou fin de comptage)
Elle est provoquée par le débordement du timer TMR0 (passage de 255 à 0).
Les bits associés dans ce cas sont :
• TOIE (bit de validation)
• TOIF (drapeau)
4) L'interruption EEI : Fin d'écriture dans l'EEPROM (programmation de
l’EEPROM)
Cette interruption est déclenchée à la fin d'une écriture réussie dans l'EEPROM.
Les bits associés sont
• EEIE (validation)
• EEIF (drapeau).
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
c. Les sources d’interruptions
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
d. Le logigramme des interruptions
A chaque interruption sont associés 3 bits:
• Un bit de validation de chaque interruption (Enable : E)
: qui permet d'autoriser ou d’interdire l'interruption en
question.
• Un indicateur (Flag : F): qui permet au processeur de
savoir de quelle interruption il s'agit.
• Un bit GIE : de validation générale de toutes les
interruptions.
Ces bits sont dans le registre INTCON a part l’indicateur
EEIF de l'interruption EEI qui se trouve dans le registre
EECON1.
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
Pour que le déroutement vers le sous programme d’interruption en cours soit déclenché,
il faut 3 conditions:
1 un des événements extérieurs (déclencheur) soit détecté par les Flags),
2 l’interruption correspondante soit validée (autorisée),
3 la validation générale soit active.
f. Conditions du déroutement vers le sous programme d’interruption
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
Pour commencer l’exécution du sous programme d’interruption, 5 étapes sont alors utiles:
1 Apparition d’un événement, sans perturber le déroulement normal des instructions,
2 Prise en compte de l’événement, exécution de l’instruction en cours (pointé par le PC),
3 Cycle d’attente, sauvegarde de l’adresse PC+1 dans la pile,
4 Chargement de l’adresse 004h dans le PC,
5 Exécution de l’instruction d’adresse 004h et chargement de l’instruction suivante,
f. Séquences de déroutement vers le sous programme d’interruption
Exemple:
INTRB0:
N.B 1 : A chaque interruption, 2 cycles machines sont perdus, sans compter:
• la sauvegarde du contexte,
• la restitution du contexte,
• le retour au programme initial.
N.B 2 :
A cause de la faible taille de la pile dans le PIC16F84, une interruption n’est pas interruptible:
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
• Le bit GIE est mis donc à 0 au début du sous programme d’interruption.
Cette opération est gérée automatiquement par le processeur.
• Le bit GIE est mis à 1 à la fin du sous programme d’interruption.
Cette opération est effectuée par le programmeur (dans le programme).
Beaucoup d’instructions modifient le registre STATUS et/ou utilisent le registre W.
Afin de les rendre dans les mêmes états à la fin du sous programme d’interruption qu’au début,
il faut les sauvegarder au début et les recopier à la fin.
• Le PC est sauvegardé dans la pile et restauré à la fin de l’interruption (automatiquement).
• Le sous programme d’interruption doit gérer la sauvegarde et la restauration des registres: W,
STATUS, ou autre registre utilisé dans ce sous programme (par l’utilisateur).
On ne peut en aucun cas utiliser la pile pour cela car elle très petite et non accessible.
On utilise alors une zone de la RAM :
* les directives CBLOCK en ENDC pour définir une variable dans la RAM.
* Les instructions Sauve_W et Sauve_Status pour la sauvegarde de W et de STATUS.
h.1. Ou sauvegarder ces registres ?
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
h. Sauvegarde du contexte
h.2. Comment sauvegarder ces registres ?
 Pour W: on utilise l’instruction movwf sauve_W
 Pour STATUS: On utilise l’instruction swapf (qui permet d’invertir les bits du poids fort et ceux
du poids faible du registre STATUS sans le modifier) et on sauvegarde STATUS swappé.
N.B:
la sauvegarde de W est très simple, par contre la sauvegarde de STATUS est plus compliquée
car:
 Il n’existe pas d’instruction de transfert d’un registre vers un autre registre ; Il faut donc
passer par W.
toutes les opérations à 2 opérandes passent par le registre de travail W.
 L’instruction movf modifie le bit Z du registre STATUS.
Dans cette tache, on va utiliser W donc on commence par restituer STATUS en premier lieu sans
le modifier sachant qu’il est sauvegardé ‘’sawapé’’.
Pour ne pas modifier le bit Z du STATUS (déjà restitué) par l’instruction movf, on est obligé de
passer par l’instruction swap à exécuter 2 fois.
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
h. Sauvegarde du contexte
i. Restaure du contexte
Une fois le sous programme d’interruption terminé, après la restitution du contexte, il faut
revenir au programme principal (ou initial).
Pour ce faire, on utilise l’instruction RETFIE qui permet :
 La revalidation générales des interruptions (GIE=1) en premier lieu,
 Le retour au programme initial grâce à la valeur du PC empilée en second lieu.
5.2. Les interruptions
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires
k. Retour au programme principal
5.3. Le chien de garde Watch Dog
II. ARCHITECTURE DU PIC16f84:
Souvent lorsque un appareil électronique ne fonctionne pas correctement, il faut:
• le débrancher de son alimentation,
• le remettre en service après.
Et ceci pour obtenir le fonctionnement attendu. ‘’Personne ne s’explique ce
disfonctionnement’’.
Les causes du dysfonctionnement d’un PIC sont nombreux (même si son programme
est sans erreur):
• Coupure courte d’alimentation modifiant un registre,
• Surtension due à la mise en fonction d’un appareil proche,
• Champ électromagnétique modifiant un registre,
• Action imprévue sur la patte 4 (RESET ou MCLR),
• Choc mécanique modifiant un registre,
• ………………………………………………
Le chien de garde est une fonction de sécurité principale, qui permet
une initialisation (RESET) du PIC lorsque certains défauts apparaissent.
a. Importance
5. Ressources auxiliaires ou périphériques
5.3. Le chien de garde Watch Dog
II. ARCHITECTURE DU PIC16f84:
C’est un Compteur 8 bits incrémenté en permanence (même si le pic est en mode
sommeil) par une horloge RC intégrée indépendante de l’horloge système.
Lorsqu’il déborde (arrive à TO =Time-Out), deux situations sont possibles:
• Si le uC est en fonctionnement normal, le débordement provoque un RESET
permettant d’éviter le plantage (ou blocage) du programme par certain processus
indésirable non contrôlé (par exemple: attente d’une mesure de l’extérieure et qu’il n’y
a pas de réponse.
• Si le uC est en mode sommeil, ce débordement permet de réveiller le PIC (provoque
un WAKE-UP): pour continuer l’exécution du programme normalement la ou elle s’est
arrêtée avant de rentrer en mode sommeil ou SLEEP.
Cette situation sert à réaliser des temporisations.
5. Ressources auxiliaires ou périphériques
b. Structure et Fonctionnement
• En fonctionnement normal, il est remis à 0 par le programme grâce à l’instruction
CLWDT dans une branche ou une boucle qui s’exécute régulièrement.
• Si le programme est bloqué, il ne passe plus dans la branche de remise à 0 et le
comptage continue jusqu’au bout (la valeur Time Out), déclenche le chien de garde
qui relance le programme (provoque un RESET).
5.3. Le chien de garde Watch Dog
II. ARCHITECTURE DU PIC16f84:
b. Fonctionnement
N.B :
Le test du bit TO (STATUS) au début du programme permet de savoir si :
• TO=1 : le système vient d’être mis sous tension,
• TO=0 le chien de garde vient de s’activer.
5. Ressources auxiliaires ou périphériques
c. Mise en service
N.B :
• Dans sa mise en œuvre par un programmateur, le code du programme ne contient
pas l’information de mise en service du WDT. Cette information peut être oubliée lors
du téléchargement du programme dans la puce, ce qui génère un fonctionnement
incorrect du programme en cas du blocage.
• Le WDT ne peut pas être suspendue pendant l’exécution d’un programme et reste
définitif jusqu’à une nouvelle programmation de la puce.
Sa mise en service peut être réalisée de 2 façons différentes:
• Par le programmeur dans l’EEPROM de configuration à l’aide de la directive: _CONFIG
permet :
* sa validation (option_WDT_ON)
* ou non (option_WDT_OFF)
•Directement par le programmateur.
5.3. Le chien de garde Watch Dog
II. ARCHITECTURE DU PIC16f84:
5. Ressources auxiliaires ou périphériques
L’horloge du WDT est ajustée pour que le Time-Out arrive toutes les 18ms
(période de base).
Il est possible d’augmenter cette durée par un prédiviseur programmable (partager avec le
timer TMR0), l’affectation se fait par le bit PSA du registre OPTION:
• PSA=1 : on utilise le prédiviseur pour le WDT
• PSA=0 : sans prédiviseur ( il est affecté ou assigné au TMR0)
Le prédiviseur programmable est fixé par les bits PS0, PS1, PS2 du registre OPTION.
8 valeurs sont alors possibles de 1 à 128, ce qui permet d’aller jusqu’à 128*18ms=2.3 s
avant le déclenchement du chien de garde.
e. Choix de la durée TO (Time OUT)
5.3. Le chien de garde Watch Dog
5.4. Le mode sommeil
II. ARCHITECTURE DU PIC16f84:
Lorsque le PIC n’a rien à faire (attente d’une mesure extérieure), ce mode est utilisé
pour limiter sa consommation (Icc<0.5 uA) en choisissant les niveaux logiques
programmés compte tenu de l’électronique reliée (PORTs traversés par un courant
minimal).
On peut placer le PIC en mode sommeil par le programme par l’instruction: SLEEP. Ainsi
les séquences suivantes sont exécutées après cette instruction SLEEP:
• Le bit TO est mis à 1, (Time Out)
• Le bit PD est mis à 0, (Power Down)
• Le chien de garde est remis à 0 (initialisé, équivalent à CLRWDT),
• l’horloge système est arrêtée ce qui arrête l’exécution du programme.
a. Mise en sommeil (standby , power down ou sleep)
5. Ressources auxiliaires ou périphériques
87
Trois événements permettent de réveiller le PIC:
1 Application d’un niveau logique 0 sur l’entrée MCLR:le PIC reprend l’exécution du
programme à partir du début (de l’adresse 000).
Les bits TO et PD du registre STATUS permettent à l’utilisateur de savoir l’événement
qui a relancé le programme (mise sous tension, RESET ou Chien de garde):
*TO=0 dépassement du temps du WDG
*TO=1 : au démarrage, après CLRWDT ou SLEEP.
*PD=0: par l’instruction SLEEP
*PD=1 : au démarrage ou par CLRWDT
2 Écoulement du temps du timer du chien de garde lorsqu’il est activé : Le PIC reprend
le programme à partir de l’instruction qui suit l’instruction SLEEP.
3 Apparition d’une interruption (RB0, RB4-RB7, ou EEI=fin d’écriture dans l’EEPROM):
b. Réveil ou WAKE-UP
5.4. Le mode sommeil
II. ARCHITECTURE DU PIC16f84:
N.B :
le WAKE-UP (ou le réveil) peut avoir lieu indépendamment du bit de validation des
interruptions globales GIE. Dans ces cas 2 situations se présentent:
*GIE=0: Le PIC reprend l’exécution du programme à partir de l’instruction qui suit
SLEEP, l’interruption n’est pas prise en compte.
*GIE=1: Le PIC exécute l’instruction qui suit SLEEP, puis se branche à l’adresse 004
pour exécuter la procédure d’interruption liée à l’événement qui à réveillé le PIC. Si
l’instruction qui suit SLEEP n’est pas désirée, il faut utiliser l’instruction NOP.
5. Ressources auxiliaires ou périphériques
5.1. La mémoire EEPROM de données
II. ARCHITECTURE DU PIC16f84:
5. Accès à la mémoire EEPROM
• Le PIC16F84 possède 64 octets de données EEPROM d’adresses allant de 0h à 3Fh.
• On peut y sauvegarder des valeurs qui seront conservées même si l’alimentation est
éteinte et les récupérer lors de la mise sous tension (non volatile).
• Cette mémoire est conçue pour effectuer des cycles rapides d’effacement/écriture.
• L’EEPROM est accessible en lecture et en écriture par le programme et par un
programmateur.
• L’accès à cette mémoire est spécifique et requiert les registres suivants:
* EEDATA contient les données (8bits) pour les opérations RD/WR,
* EEADR contient les adresses des cases mémoires sélectionnées.
* EECON1 contrôle les opérations de l’accès à l’EEPROM grâce à 4 bits:
* RD et RW initient la lecture et l’écriture. Ils sont mis à 1 par le programme pour
initier l’accès, et sont mis à zéro par le processeur à la fin de l’accès.
* WREN autorise (1) ou non (0) l’accès en écriture.
* WREN est mis à 1 par le processeur quand une opération d’écriture est interrompue
par les trois mécanismes: MCL, RESET ou le chien de garde.
* EEIF est un drapeau d’interruption signalant la fin de l’écriture physique dans
l’EEPROM. Il doit être mis à 0 par le programme.
a. Procédure de lecture
Pour lire une donnée de la mémoire EEPROM, on suit les étapes suivantes:
1 Placer l’adresse relative dans le registre EEADR. Les adresses valides sont de 0x00 à 0x2F.
2 Mettre le bit RD de EECON1 à 1
3 Lire le contenu du registre EEDATA
Opération de lecture: Opération au cours de laquelle un mot binaire stocké dans un
emplacement particulier est retrouvé puis transféré dans un autre emplacement
5.1. La mémoire EEPROM de données
II. ARCHITECTURE DU PIC16f84:
Le drapeau WRERR est positionnée à 1 si une erreur d’écriture intervient.
* EECON2 n’est pas un registre physique, utilisé comme registre de commande.
En effet, l’écriture de valeurs spécifiques dans EECON2 provoque l’exécution d’une
commande spécifique dans l’électronique interne du PIC (sécurité lors d’une écriture).
• On y sauvegarde les paramètres semi-permanents comme: constantes, résultats
d’acquisition, paramètres d’étalonnage ou de configuration…,
N.B:
L’opération de lecture depuis l’EEPROM est rapide (qlques ns)
5. Accès à la mémoire EEPROM
b. Procédure d’écriture par le programme sans interruption
5.1. La mémoire EEPROM de données
II. ARCHITECTURE DU PIC16f84:
La procédure d’écriture en mémoire EEPROM est la suivante:
1 Autoriser l’écriture dans l’EEPROM : bit WREN=1,(une seule fois dans le programme)
2 Placer l’adresse relative dans EEADR,
3 placer la donné à écrire dans EEDATA,
4 placer 0x55 dans le registre EECON2 (sécurité),
5 Placer 0xAA dans EECON2 (sécurité),
6 Démarrer l’écriture en positionnant le bit WR à 1,
7 Attendre la fin de l’écriture (10 ms) par l’indicateur WR=0,
8 Recommencer au point 2 s’il y a d’autres données à écrire.
Opération d’écriture: Opération au cours de laquelle un nouveau mot binaire est installé
dans un certain emplacement de la mémoire .
N.B:
On peut écrire dans l’EEPROM par le biais:
• Du programme (opération lente 10 ms),
• D’un programmateur externe.
5. Accès à la mémoire EEPROM
b. Procédure d’écriture par le programme avec interruption
5.1. La mémoire EEPROM de données
II. ARCHITECTURE DU PIC16f84:
Ce type d’écriture est presque identique à la précédente, il faut attendre une
interruption générée par la fin d’écriture au lieu de lire le bit WR.
1 Autoriser l’écriture dans l’EEPROM : bit WREN=1,(une seule fois dans le programme)
2 Mise à 1 du bit EEIF du registre
3 Mise à 0 du bit EEIF du registre EECON1
4 Placer l’adresse relative dans EEADR,
5 placer la donné à écrire dans EEDATA,
6 Désactiver les interruptions par le bit GIE
7 placer 0x55 dans le registre EECON2 (sécurité)
8 Placer 0xAA dans EECON2 (sécurité),
9 Activer les interruptions par le bit GIE
10 Attendre la fin de l’écriture (10 ms à 20 ms) par l’indicateur: EEIF=1,
11 Remettre EEIF à 0.
N.B :
Un sous programme de sécurité doit être réalisé en assembleur pour éviter les
manipulations malencontreuses utilisant le registre virtuel EECON2.
5. Accès à la mémoire EEPROM
b. Écriture en EEPROM par le programmateur
5.1. La mémoire EEPROM de données
II. ARCHITECTURE DU PIC16f84:
Il est possible d’écrire dans cette mémoire lors de la programmation physique via un
programmateur.
Pour le programmateur, l’espace mémoire se situe de l’adresse 0x2100 à 0x212F.
L’opération d’écriture dans ce cas utilise les instructions suivantes dans le programme:
#pragma cdata[adresse] : pour se placer à une adresse,
#pragma cdata[]=octet1, octet2,…..: pour écrire à partir de l’adresse courante,
#pragma cdata[adresse]=octet : pour écrire à une adresse précise.
N.B :
• Ces instructions sont uniquement utilisées par le programmateur. Elles ne
sont pas visibles dans l’EEPROM.
• Ces instructions peuvent se placer dans n’importe ou dans le programme.
5. Accès à la mémoire EEPROM
5.1. La mémoire EEPROM de configuration
II. ARCHITECTURE DU PIC16f84:
Pendant la phase d’implantation d’un programme dans la mémoire Flash 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 contient un repérage
quelconque que nous n’utiliserons pas,
• 1 mot de configuration à l’adresse 0x2007 qui permet de :
* Choisir le type de l’oscillateur utilisé pour l’horloge,
* Valider ou non le WDT Timer,
* Interdire la lecture des mémoires EEPROM, celle de programme et celle de données
(protection).
5. Accès à la mémoire EEPROM
a. Les Bits (ou "fusibles") de configuration:
5.1. La mémoire EEPROM de configuration
Bits 1:0 FOSC1:FOSC0 : sélection du type d’oscillateur pour l’horloge
00: oscillateur LP (Low Power, consommation réduite jusqu’à 200 kHz
01 : Oscillateur XT, c’est le mode le plus utilisé, quartz jusqu’à 4 MHz
10 : Oscillateur HS, High Speed, quartz haute fréquence jusqu’à 10 MHz
11: Oscillateur RC
Bit 2 WDTE : Validation du Timer WDT (chien de garde)
0: WDT inhibé
1 : WDT validé
Bit 3 PWRTE : Validation d’une temporisation à la mise sous tension
0: temporisation validée
1 : temporisation inhibée
Bit 13: 4 ; CP : protection en lecture du code programme
0: Protection activée
1 : pas de protection du code programme
5.1. La mémoire EEPROM de configuration
II. ARCHITECTURE DU PIC16f84:
5. Registres internes
b. Les Bits de configuration:
II. ARCHITECTURE DU PIC16f84:
6. Ports d’entrée / sortie
Le PIC 16F84 est équipé de 13 lignes d’entrées / sorties bidirectionnelles compatibles TTL
réparties en deux ports :
• Port A de 5 pins: RA0 à RA4 (situé à l’adresse 05h banque 0)
• Port B de 7 pins : RB0 à RB7.
Ces deux ports sont en lecture et en écriture utilisés pour communiquer avec le monde
extérieur au PIC.
Le courant max absorbé ou fourni de chaque pin est 25mA
5. Ressources auxiliaires ou périphériques
6.1. Le port A
La figure suivante donne le câblage interne d’une patte du Port A
du PIC. Cette pin est constituée des éléments suivants:
• Data Latch: ce registre mémorise la valeur écrite dans le Port
quand celui-ci est en sortie.
• TRIS Latch : mémorise le sens (entrée ou sortie) de la patte.
• TTL Input Buffer : permet la lecture de la valeur du Port.
N.B : cette lecture est toujours effectuée sur la pin et non pas
à la sortie de la bascule d’écriture.
• Transistor N : deux cas se présentent:
*en écriture: si la valeur écrite est 0: le transistor est saturé.
si la valeur écrite est 1: il est bloqué.
*en lecture : toujours ce transistor est bloqué.
• Transistor P: IL permet d’alimenter la pin en sortie.
6. Ports d’entrée / sortie
5. Ressources auxiliaires ou périphériques
II. ARCHITECTURE DU PIC16f84:
6.1. Câblage interne de la broche RA4
II. ARCHITECTURE DU PIC16f84:
6. Ports d’entrée / sortie
La pin RA4 est une entrée Triger de Schmitt et à sortie drain ouvert.
Cette patte RA4 est multiplexée avec l’entrée Timer0 Clock (double fonction) représentée
par RA4/T0CKI, elle peut être utilisée soit:
• Comme entrée / sortie du Port A
• Comme entrée horloge pour le Timer 0 (TMR0). le choix d’une fonction se fait à l’aide du
bit T0CS du registre OPTION :
N.B :
Toutes les autres pins RAi sont
• des entrées TTL,
• Des sorties à driver CMOS (drain ouvert)
Bit5 :TOSC=choix du signal pour piloter le Timer
0: Timer piloté par horloge interne
1 : Timer piloté par signal externe via la broche RA4/TOCK1
II. ARCHITECTURE DU PIC16f84:
6. Ports d’entrée / sortie
La pin RA4 est une entrée/ sortie à drain ouvert (ou collecteur ouvert).
Si on veut l’utiliser comme sortie (pour allumer une LED), il faut mettre une résistance
externe ( pull-up externe) vers Vdd.
Deux cas se présentent :
• Si RA4 est à l’état 0, l’interrupteur (transistor N) est fermé, la sortie est reliée à la masse.
• Si RA4 est à l’état 1, l’interrupteur est ouvert, la sortie est alors déconnectée d’où la
nécessité de la résistance externe qui permet de placer la sortie au niveau haut.
6.1. Le port B
II. ARCHITECTURE DU PIC16f84:
6. Ports d’entrée / sortie
• 8 pins d’entrée sortie bidirectionnelles compatibles
TTL; RB0, RB1…RB7.
• Le registre PORTB situé à 06h banque 0 permet d’y
accéder en lecture ou en écriture
• Le registre TRISB (situé à 86h) dans la banque 1
permet de choisir le sens de chaque broche
(entrée ou sortie) (voir TRISA)
• Les quatre bits de poids fort (RB7-RB4) peuvent être
utilisés pour déclencher une interruption sur changement
d’état.
• RB0 peut aussi servir d’entrée d’interruption externe.
N.B :
Le câblage interne du Port B ressemble à celui du Port A.
La fonction particulière pilotée par le bit RBUP du registre
OPTION permet d’alimenter (RBPU=0) ou non (RBPU=1)
les sorties.
Bit7 : RBPU= validation des résistances de rappel (ou de tirage) à Vdd pour le port B.
1: les résistances de rappel ne sont pas connectées en interne sur le port B
0 : les résistances de rappel internes sont connectées à Vdd sur le port B et ce en mode
entrée uniquement.
N.B :
Le pull-up interne est désactivé dans les deux cas suivants:
• à la mise sous tension,
• quand le port est configuré en sortie.
N.B: Le fait de connecter de façon interne sure une ligne du
port B une résistance interne de tirage (bit RPU à 0) permet
de fixer la tension de la pin configurée en entrée à un
niveau haut (lorsqu’aucun signal n’est appliqué sur cette pin
configurée en entrée).
II. ARCHITECTURE DU PIC16f84:
7. L’alimentation Pins :Vdd et Vss
La pin Vdd est reliée à la borne + de l’alimentation (source de
tension), tandis que la pin Vss est reliée à la borne -
• La tension de cette alimentation (dépend du type de la mémoire
programme qui va de 4.5V à 6V pour la gamme standard F
• Pour la gamme étendue LF, cette alimentation varie
entre 2V et 6V.
L’intensité du courant consommé peut aller de 1uA à 10mA.
La consommation du uC est fonction de:
• la tension d’alimentation
• La fréquence interne
• Le mode de fonctionnement (normal, sommeil..).
Pour avoir un bon fonctionnement du PIC, les pattes Vdd et Vss
doivent être découplées par deux condensateurs :
• 1uF électrolytique
• 10nF céramique
L’utilisation et la mise en œuvre très simple des PICs les rendus extrêmement populaires.
Pour le faire fonctionner, il suffit de:
• alimenter le circuit via ses deux broches Vdd et Vss (Vdd entre 2.6 et 6V)
• fixer sa vitesse (cadence) de fonctionnement par un quartz
• élaborer un système d’initialisation sans avoir à couper son alimentation en cas de problèmes
103
a. Horloge: oscillateur à Quartz (Crystal)
Ce système est très précis, il peut se diviser en trois types :
• Le type XT est le plus utilisé avec des valeurs inférieures à 4MHz
• Le type HS pour les fréquences élevées et ce a partir de 4MHz jusqu’à 20MHz
• Le type LP est pour les basses fréquences inférieures à 200KHz, il est peu utilisé.
L’horloge peut être interne ou externe.
• L’horloge interne est constituée d’un oscillateur à quartz ou d’un oscillateur RC
• L’horloge externe utilisée pour synchroniser le PIC sur un processus particulier.
8.1. Horloge interne:
II. ARCHITECTURE DU PIC16f84:
8. Horloge système
b. Horloge: oscillateur RC
Cet oscillateur coûte peu cher à fabriquer, mais n’est pas
très précis. Donc utilisé dans les applications qui ne
nécessitent pas une grande précision dans son système
horloge.
Sa constante de temps est ζ=RC,
Sa fréquence est alors F=1/ζ.
8.2. Horloge externe:
Dans certains cas, une horloge externe au
microcontrôleur peut être utilisée pour synchroniser le
PIC sur un processus particulier.
La broche OSC2 est alors inutilisée.
8.1. Horloge interne
II. ARCHITECTURE DU PIC16f84:
8. Horloge système
N.B :
• Les PICs sont des composants statiques; Ils peuvent fonctionner avec des fréquences
allant du continu (0 Hz) jusqu’à leurs fréquences maximales spécifiques (20 MHz).
• Quel que soit l’oscillateur utilisé, l’horloge système (ou l’horloge instruction) est obtenue
en divisant la fréquence Fosc par 4 (architecture Harvard avec Pipeline à deux étages).
• Ainsi avec un quartz de 4 MHz, on obtient une horloge instruction de 1MHz; soit le
temps pour exécuter une instruction est de 1us.
II. ARCHITECTURE DU PIC16f84:
8. Horloge système
9. Systèmes de RESET
Le système de reset peut avoir plusieurs causes:
• Une mise sous tension POR (Power On Reset)
• Une mise à 0 de la broche MCLR (inversée) : reset manuelle :
• Un débordement du Timer du Chien de garde WDT
II. ARCHITECTURE DU PIC16f84:
107
Le système de reset permet d’initialiser le fonctionnement du PIC, Il est important dans les
cas suivants:
• Lors de la mise sous tension du PC (démarrage),
• lorsque le PIC présente des ratés ou se plante au cours de son fonctionnement indiqué par
un débordement du Timer du chien de garde.
Le RESET s’effectue en mettant un 0 logique sur la pin 4: MCLR du PIC soit de trois
manières différentes:
- Manuellement via une résistance de 1KΩ et un bouton poussoir,
- Automatiquement par le biais d’un circuit RC (1uF, 1KΩ lors de la mise sous tension).
- Mixte, en regroupant les deux techniques manuelle et automatique.
Manuellement :
Résistance 1KΩ et bouton poussoir
Automatique:
circuit RC
Mixte :
Automatique et manuelle
9. Systèmes de RESET
II. ARCHITECTURE DU PIC16f84:
108
• Pour ce qui nous concerne, nous utiliseront MPLAB pour écrire, compiler avec un
compilateur c et simuler nos programmes, ensuite nous utiliserons un programmateur
pour copier les programme dans la mémoire flash du PIC pour la pratique.
Les étapes nécessaires permettant de voir un programme s'exécuter sur un PIC sont :
• Ecrire un programme en langage assembleur (dans MPLAB) dans un fichier texte et le
sauvegarder
avec l'extension .asm (éventuellement en c et l’enregistrer avec l’extension .c)
• Compiler ce programme avec l'assembleur MPASM fourni par Microchip. Le résultat est
un fichier avec l'extension .hex contenant une suite d'instruction compréhensible par le
pic.
• Copier le fichier .hex dans la mémoire programme du PIC (mémoire flash) à l'aide d'un
programmateur adéquat. On peut utiliser les programmateurs de Microchip ou tout
autre programmateur de pic.
• Microchip propose gratuitement l'outil de développement MPLAB qui regroupe l'éditeur
de texte, le compilateur MPASM, un outil de simulation et le logiciel de programmation.
Le programmateur lui-même, n'est malheureusement pas gratuit.
• Mettre le PIC dans son montage final, mettre sous tension et admirer le travail.
3.1 Les étapes de programmation des PIC.
III. Programmation d’un PIC
2.1. Le registre TMR0
II. ARCHITECTURE DU PIC16f84:
3. Registres internes
• Il s’agit d’un compteur 8 bits programmable incrémenté continuellement à une
cadence constante indépendante de l’exécution du reste du programme.
• Cette cadence est proportionnelle à la fréquence de l’horloge appliquée au PIC ou à la
fréquence d’un signal appliqué sur la broche 3 (RA4/TOCKI)
• Après avoir atteint la valeur 255, ce compteur reprend à 0.
• Un pré-diviseur permet de programmer cette cadence.
• Le fonctionnement du prédiviseur est géré dans le registre OPTION
N.B :
Après un Reset, tous les bits du registre OPTION sont à 1
2. Ressources auxiliaires ou
périphériques
111
Le registre OPTION ou OPTION_REG (81H)
Le registre d'OPTION contient les bits de contrôles du PRESCALER, de
l'interruption externe INT, de l'horloge du timer TMR0,
BIT 0,1 et 2: Sélectionnent le ratio du PRESCALER.
Ces trois bits déterminent le ratio du prescaler. Les timers TMR0 et WDT
s'incrémente au rythme de l'horloge divisée par le prescaler
3.5.3 le registre de configuration
Cours_SAM(M14).ppt
Cours_SAM(M14).ppt
Cours_SAM(M14).ppt
Cours_SAM(M14).ppt

Contenu connexe

Similaire à Cours_SAM(M14).ppt

Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
Mohammed Lamghari
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
HouBou3
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------
NasriMohsen2
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.ppt
wafawafa52
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
byorn TANDU
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
byorn TANDU
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
mohamedsaidi212001
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
sunprass
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
Hamza RAJHI
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industriels
HafsaELMessaoudi
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
BesmaOthmaniKrifa
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
josue25052001
 
Cours de microcontrôleurs
Cours de microcontrôleursCours de microcontrôleurs
Cours de microcontrôleurs
sarah Benmerzouk
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Chapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptxChapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptx
FazaTabbana1
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
Adnane Ahmidani
 
a_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdfa_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdf
AnasAsran1
 
Architecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGAArchitecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGA
Chiheb Ouaghlani
 

Similaire à Cours_SAM(M14).ppt (20)

Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------Chapitre1.ppt-------------------------------
Chapitre1.ppt-------------------------------
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.ppt
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
 
Microcontroleur arduino uno
Microcontroleur arduino unoMicrocontroleur arduino uno
Microcontroleur arduino uno
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industriels
 
cours2 ARM.pptx
cours2 ARM.pptxcours2 ARM.pptx
cours2 ARM.pptx
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
 
Cours de microcontrôleurs
Cours de microcontrôleursCours de microcontrôleurs
Cours de microcontrôleurs
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Chapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptxChapitre 05 architecture microprocesseur (2).pptx
Chapitre 05 architecture microprocesseur (2).pptx
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
 
a_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdfa_introduction ElectroniqueDesSysEmbarqués.pdf
a_introduction ElectroniqueDesSysEmbarqués.pdf
 
Architecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGAArchitecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGA
 

Plus de Abdo Brahmi

Cours_P627_19_03_2024.pptfjghgfjjfjhggjb
Cours_P627_19_03_2024.pptfjghgfjjfjhggjbCours_P627_19_03_2024.pptfjghgfjjfjhggjb
Cours_P627_19_03_2024.pptfjghgfjjfjhggjb
Abdo Brahmi
 
Cours_P627_09_03_2023.pptghfgggghgghhghh
Cours_P627_09_03_2023.pptghfgggghgghhghhCours_P627_09_03_2023.pptghfgggghgghhghh
Cours_P627_09_03_2023.pptghfgggghgghhghh
Abdo Brahmi
 
capteurs I.pptxfgggghghghghhghhhhhhhhhhh
capteurs I.pptxfgggghghghghhghhhhhhhhhhhcapteurs I.pptxfgggghghghghhghhhhhhhhhhh
capteurs I.pptxfgggghghghghhghhhhhhhhhhh
Abdo Brahmi
 
Cours_P627_11_03_2023.ppthghggggghhhjhhh
Cours_P627_11_03_2023.ppthghggggghhhjhhhCours_P627_11_03_2023.ppthghggggghhhjhhh
Cours_P627_11_03_2023.ppthghggggghhhjhhh
Abdo Brahmi
 
Cours_P627_09_03_2023.pptafrsecxghgghjgj
Cours_P627_09_03_2023.pptafrsecxghgghjgjCours_P627_09_03_2023.pptafrsecxghgghjgj
Cours_P627_09_03_2023.pptafrsecxghgghjgj
Abdo Brahmi
 
Cours2 Master Embarqué 2022-2023.ppt
Cours2 Master Embarqué 2022-2023.pptCours2 Master Embarqué 2022-2023.ppt
Cours2 Master Embarqué 2022-2023.ppt
Abdo Brahmi
 
M312_Electricité_BCG.ppt
M312_Electricité_BCG.pptM312_Electricité_BCG.ppt
M312_Electricité_BCG.ppt
Abdo Brahmi
 
Cours_P627_11_03_2023.ppt
Cours_P627_11_03_2023.pptCours_P627_11_03_2023.ppt
Cours_P627_11_03_2023.ppt
Abdo Brahmi
 
Cours Master Embarqué 2019-2020.pptx
Cours Master Embarqué 2019-2020.pptxCours Master Embarqué 2019-2020.pptx
Cours Master Embarqué 2019-2020.pptx
Abdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
Abdo Brahmi
 
capteurs II.pptx
capteurs II.pptxcapteurs II.pptx
capteurs II.pptx
Abdo Brahmi
 
diaporama_1_professeurs_94e.ppt
diaporama_1_professeurs_94e.pptdiaporama_1_professeurs_94e.ppt
diaporama_1_professeurs_94e.ppt
Abdo Brahmi
 
pres_chapter5 (5).pptx
pres_chapter5 (5).pptxpres_chapter5 (5).pptx
pres_chapter5 (5).pptx
Abdo Brahmi
 
card_sorting.ppt
card_sorting.pptcard_sorting.ppt
card_sorting.ppt
Abdo Brahmi
 
Initiation_a_l_informatique.pptx
Initiation_a_l_informatique.pptxInitiation_a_l_informatique.pptx
Initiation_a_l_informatique.pptx
Abdo Brahmi
 
Les microcontrôleurs PIC.pptx
Les microcontrôleurs PIC.pptxLes microcontrôleurs PIC.pptx
Les microcontrôleurs PIC.pptx
Abdo Brahmi
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
Abdo Brahmi
 
Cours_Physique_des_Composants_dElectroni.pptx
Cours_Physique_des_Composants_dElectroni.pptxCours_Physique_des_Composants_dElectroni.pptx
Cours_Physique_des_Composants_dElectroni.pptx
Abdo Brahmi
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
Abdo Brahmi
 
le-courant-electrique-continu-cours-ppt-3.pdf
le-courant-electrique-continu-cours-ppt-3.pdfle-courant-electrique-continu-cours-ppt-3.pdf
le-courant-electrique-continu-cours-ppt-3.pdf
Abdo Brahmi
 

Plus de Abdo Brahmi (20)

Cours_P627_19_03_2024.pptfjghgfjjfjhggjb
Cours_P627_19_03_2024.pptfjghgfjjfjhggjbCours_P627_19_03_2024.pptfjghgfjjfjhggjb
Cours_P627_19_03_2024.pptfjghgfjjfjhggjb
 
Cours_P627_09_03_2023.pptghfgggghgghhghh
Cours_P627_09_03_2023.pptghfgggghgghhghhCours_P627_09_03_2023.pptghfgggghgghhghh
Cours_P627_09_03_2023.pptghfgggghgghhghh
 
capteurs I.pptxfgggghghghghhghhhhhhhhhhh
capteurs I.pptxfgggghghghghhghhhhhhhhhhhcapteurs I.pptxfgggghghghghhghhhhhhhhhhh
capteurs I.pptxfgggghghghghhghhhhhhhhhhh
 
Cours_P627_11_03_2023.ppthghggggghhhjhhh
Cours_P627_11_03_2023.ppthghggggghhhjhhhCours_P627_11_03_2023.ppthghggggghhhjhhh
Cours_P627_11_03_2023.ppthghggggghhhjhhh
 
Cours_P627_09_03_2023.pptafrsecxghgghjgj
Cours_P627_09_03_2023.pptafrsecxghgghjgjCours_P627_09_03_2023.pptafrsecxghgghjgj
Cours_P627_09_03_2023.pptafrsecxghgghjgj
 
Cours2 Master Embarqué 2022-2023.ppt
Cours2 Master Embarqué 2022-2023.pptCours2 Master Embarqué 2022-2023.ppt
Cours2 Master Embarqué 2022-2023.ppt
 
M312_Electricité_BCG.ppt
M312_Electricité_BCG.pptM312_Electricité_BCG.ppt
M312_Electricité_BCG.ppt
 
Cours_P627_11_03_2023.ppt
Cours_P627_11_03_2023.pptCours_P627_11_03_2023.ppt
Cours_P627_11_03_2023.ppt
 
Cours Master Embarqué 2019-2020.pptx
Cours Master Embarqué 2019-2020.pptxCours Master Embarqué 2019-2020.pptx
Cours Master Embarqué 2019-2020.pptx
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
capteurs II.pptx
capteurs II.pptxcapteurs II.pptx
capteurs II.pptx
 
diaporama_1_professeurs_94e.ppt
diaporama_1_professeurs_94e.pptdiaporama_1_professeurs_94e.ppt
diaporama_1_professeurs_94e.ppt
 
pres_chapter5 (5).pptx
pres_chapter5 (5).pptxpres_chapter5 (5).pptx
pres_chapter5 (5).pptx
 
card_sorting.ppt
card_sorting.pptcard_sorting.ppt
card_sorting.ppt
 
Initiation_a_l_informatique.pptx
Initiation_a_l_informatique.pptxInitiation_a_l_informatique.pptx
Initiation_a_l_informatique.pptx
 
Les microcontrôleurs PIC.pptx
Les microcontrôleurs PIC.pptxLes microcontrôleurs PIC.pptx
Les microcontrôleurs PIC.pptx
 
pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
 
Cours_Physique_des_Composants_dElectroni.pptx
Cours_Physique_des_Composants_dElectroni.pptxCours_Physique_des_Composants_dElectroni.pptx
Cours_Physique_des_Composants_dElectroni.pptx
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
 
le-courant-electrique-continu-cours-ppt-3.pdf
le-courant-electrique-continu-cours-ppt-3.pdfle-courant-electrique-continu-cours-ppt-3.pdf
le-courant-electrique-continu-cours-ppt-3.pdf
 

Cours_SAM(M14).ppt

  • 1. 1 Pr. A.BRAHMI Département de Physique Master: Électronique et Systèmes Embarqués ESE Année Universitaire : 2022-2023 Module: Systèmes à microprocesseur (M14) Élément 1: Microcontrôleur PIC16F84
  • 2. Plan du cours Element 1: II. Architecture (PIC16F84) III. Programmation (en C) I. Introduction
  • 3. 1. Systèmes micro-programmés Les systèmes micro programmés sont actuellement très développés grâce au grand progrès qu’a connu l’électronique numérique ces dernières années. Ces systèmes très utilisés dans de nombreuses applications tant domestique qu’industriels (coût de revient faible, adaptation aux contraintes technologiques complexes, gestion des fonctionnalités très variées) Ces systèmes sont développés au début dans les calculateurs de bureau ou de poche avec des codes (programmes) orientés vers le calcul numérique. Après, une bonne maîtrise de ces technologies, apparaît des microprocesseurs qui sont des circuits d’usages généraux qui constituent actuellement l’élément de base de ces systèmes micro-programmés. Ainsi le premier microprocesseur 4 bits 4004 Intel a apparut en 1971. La miniaturisation des transistors a augmenté considérablement la capacité d’intégration sur le silicium. D’ou un rapide passage aux microprocesseurs (µp) suivants: µp 8 bits, µp 16 bits, µp 32 bits et finalement au µp 64 bits. Ainsi, cette miniaturisation a permis d’offrir des possibilités de réaliser des systèmes embarqués. I. INTRODUCTION
  • 4. La majorité des systèmes micro-programmés utilisent une architecture classique appelée: Von Neumann. a. Avantages: • les mémoires (données et programmes), les périphériques (Entrées/Sorties) et l’unité de contrôle (UC) partagent les mêmes bus d’adresses et de données. • Structure économique (moins de bus) moins encombrante b. Inconvénients: L’exécution des instructions nécessitent plusieurs échanges de données sur le seul et l’unique bus dédié à cet usage: il faut chercher le code de l’instruction après aller chercher aussi les données à manipuler: vitesse d’exécution lente. 1.1 Architecture des Systèmes micro-programmés: Von Neumann et Harvard A. Structure Von Neumann I. INTRODUCTION
  • 5. Les systèmes micro-programmés récemment développés sont construits autour d ’un autre type d ’architecture: Architecture Harvard. a. Avantages: • Adressage des deux mémoires indépendant, • structure performante: rapidité (gain en terme de vitesse d’exécution des programmes). • Exécution d’une instruction en un seul cycle machine; on peut simultanément grâce aux deux bus de rechercher le code de l’instruction et la ou les données manipulées. •Instructions et données pas forcément codées sur un même nombre de bits. b. Inconvénients: Structure compliquée et coûteuse : encombrante. 1.1. Architecture Systèmes micro-programmés B. Structure Harvard I. INTRODUCTION
  • 6. 2. Microprocesseur Un uP ou processeur (CPU): unité intelligente de traitement des informations (et données) • chargé d’organiser, décoder et d’exécuter les taches préconisées par un programme logé dans son mémoire. • prend en compte les informations extérieures et assurer leurs traitements. 2.2. Avantages: • souplesse d’emploi inhérente à la programmation • économie 2.3. Structure de base: • Unité arithmétique et logique (UAL) • Unité de contrôle (UC) • Des registres • Des bus (données, adresses, contrôle) L’ensemble est sous forme d’un circuit intégré complexe à très grande échelle d’intégration (VLSI). 2.1. Définition I. INTRODUCTION
  • 7. 7 3. Microcontrôleur Il s’agit d’un circuit intégré formé d’un microprocesseur auquel sont ajoutés des périphériques sur la même puce (system on chip). Il est caractérisé par la vitesse du processeur (fréquence), de l’espace mémoire disponible et du nombre de périphériques. • Une mémoire programme morte (ROM, PROM, EPROM...). • Une mémoire données vive (RAM). • Ports d’entrée/sortie pour la communication avec l’extérieur. • Convertisseurs analogiques numériques intégrés • Systèmes de comptage TIMER (générer et mesurer des signaux avec une grande précision temporelle). • Sortie MLI ou PWM (modulation de largeur d’impulsion) • Gestionnaire des liaisons série et / ou parallèle (dialogue avec d’autres unités ). • Surveillance de programme Watchdog. 3.1. Définition : Il est constitué en plus de l‘unité de traitement de données (CPU) des éléments suivants : 3.2. Constituants : I. INTRODUCTION
  • 8. Un microcontrôleur rassemblant plusieurs éléments permet ainsi d’améliorer : • l’intégration (system on chip) afin de réduire l’encombrement) • le coût de conception et de réalisation d’un système à base de microprocesseur Les systèmes à microprocesseur sont plutôt réservés pour: • les applications qui demandent beaucoup de traitement de l’information • Assez peu de gestion d’entrées/sorties (Ordinateurs, calculateurs……) Les systèmes à microcontrôleur sont plutôt dédiés aux applications qui: • nécessitent beaucoup de manipulations d’entrées / sorties. • n’exigeant pas beaucoup de calculs complexes. (Contrôle de processus…..) 3. Microcontrôleur 3.3. Propriétés : I. INTRODUCTION
  • 9. 4. Familles de microcontrôleurs Les types de microcontrôleurs, les plus connus sont : Atmel AT, familles: AT89Sxxxx, AT90xxxx,…….. Motorolla, familles : 68HCxxx,…….. Intel, familles : 80C186XX STMicrocontroler, famille : STX AnalogDevice, famille : ADuC Microship PIC, familles : 12Cxxx, 16Cxxx, 16Fxxx, 18Fxxx,…… Dans ce cours, on va se limiter au PIC16F84 qui constitue l’élément de base pour l’étude des microcontrôleurs de MICROCHIP. Il s’agit d’un circuit simple, complet et performant. Ainsi, si on a tout assimilé, on pourra facilement passer à un autre type de microcontrôleur de la même famille et aussi à un autre type d’une autre famille. • Cafetière • Magnétoscope, Automobile • Systèmes informatiques: Ordinateur, PC portable, téléphone • Télécommunication : Radios, Satellite • Robotique 5. Domaines d’application I. INTRODUCTION
  • 10. Un PIC ne possède ni bus d’adresses ni bus de données ni de contrôle pour communiquer avec l’extérieur comme un uP; il communique uniquement via des ports. 6. les microcontrôleurs PIC: Il existe trois familles de PIC : - Base-Line : Les instructions sont codées sur 12 bits - Mid-Range (line) : Les instructions sont codées sur 14 bits - High-End : Les instructions sont codées sur 16 bits Les PIC sont des systèmes ou des composants de structure RISC (Reduced Instructions Set Computer ou construction), ou encore composant à jeu d’instructions réduit (35 jeux instructions): • instructions sont codées sur un nombre réduit de bits • vitesse d’exécution rapide (1 cycle machine pour les instructions et 2 cycles pour les sauts) N.B: Les systèmes d'architecture CISC (Complex Instructions Set Construction) proposent plus d'instructions donc codées sur plus de bits réalisant ainsi des traitements plus complexes. En revanche, le nombre de bits limité ou réduit utilisé impose l’utilisation des instructions basiques (par exemple la comparaison se fait par l’opération de soustraction) I. INTRODUCTION
  • 11. 11 Un PIC est identifié par un numéro de la forme suivant : xx(L)XXyy –zz - 16 : Mid-range - F : FLASH - 84 : Type - 10 : Quartz à 10MHz au maximum -zz : Vitesse maximum du quartz - yy : Identification ou type - XX : Type de mémoire de programme C - EPROM ou EEPROM CR - PROM F - FLASH - L : Tolérance plus importante de la plage de tension Par exemple PIC 16F84 –10: - xx : Famille du composant (12, 14, 16, 17, 18) 7. Identification d’un PIC: I. INTRODUCTION
  • 12. 8. Architecture générale du PIC16F84: I. INTRODUCTION
  • 13. 8. Architecture générale des PIC :Programmable Interface Controller La structure générale du PIC 16F84 contient: • Système d’initialisation à la mise sous tension(Power Up,timer…), • Système d’horloge à partir du quartz externe (base de temps), • Unité arithmétique et logique (UAL) • Mémoire flash de programme, 1k mots de14 bits (mot =14 bits, 1k mots=1028 mots), • Compteur ordinal de programme (PC) et une pile (stack) de 8 niveaux, • Bus spécifique pour le programme (program bus), • Registre contenant le code de l’instruction à exécuter, • Bus spécifique pour les données (data bus) • Mémoire RAM (registres SFR et 68 octets de données), • Mémoire EEPROM (64 octets de données) • 2 ports d’entrées/sorties (Port A et Port B), • Compteur (temporisateur ou timer0), • chien de garde (watchdog) pour surveiller le dysfonctionnement du pic. I. INTRODUCTION
  • 14. 14 ► 35 instructions - RISC ► Instructions codées sur 14 bits - Mide-line ► Données sur 8 bits =microcontrôleur 8 bits ► 4 sources d’interruptions ► Vitesse maximale spécifique 10MHz (100 ns) soit 1 instruction en 400ns (1cycle machine = 1cycle instruction = 4 cycles d’horloge) 9. Principales caractéristiques du PIC16F84 ► Deux ports d’entrées / sorties (port A et port B) ► Un cycle machine par instruction, sauf pour les sauts : 2cycles machines ► 1000 cycles d’effacements / écritures pour la mémoire Flash et 10.000 cycles pour la EEPROM de données N.B : Pour le PIC16F84A : • 10.000 cycles d’effacements / écritures pour la mémoire Flash • 10.000.000 cycles d’effacement/ écriture pour la EEPROM de données Avec plus de 40 ans de maintien de donnée. • Vitesse maximale de 20MHz (1 instruction en 200 ns( un cycle machine = 4 cycles d’horloge • Temps d’écriture et effacement de 8ms (par contre il faut 20ms pour le 16F84) I. INTRODUCTION
  • 15. 15 10. Brochage et fonctions des pattes (pic16F84) ► Vss(0V), VDD (5V): alimentation ► OSC 1,2 : Horloge Quartz) ► RA0-4 : port A (entrée/sortie) ► TOCKL : entrée de comptage ► INT: entrée d’interruption ► RB0-7 : port B (entrée/sortie) ► MCLR : reset (0V) ► Mode de programmation: tension de 12V à 14V ► Mode d’exécution : 4.5V à 5.5V ► Circuit intégré à 18 broches I. INTRODUCTION ► 25 mA max dissipé par une broche ► 13 broches d’entrées sorties avec contrôle individuel de direction ► TMR0 Timer 8 bits programmable
  • 16. 11. Type de boîtier I. INTRODUCTION ► Boîtier DIP : Dual In-line Package (Plastic) à 18 broches Ce circuit peut être présenté sous forme d’un boîtier de deux technologies de construction ► Boîtier SOIC : Small Outline Integrated Circuit N.B: Certains boîtiers possèdent des fenêtres transparentes pour l’effacement par ultraviolet de certaines mémoires.
  • 17. 11. Principe de fonctionnement d’un pic16F84 I. INTRODUCTION Un PIC exécute instruction par instruction séquentiellement (successivement) • Le temps nécessaire à l’exécution d’une instruction est appelé : cycle d’instruction. • Le signal d’horloge (OSC2 Clock) est divisé par 4 à l’intérieur du PIC ce qui donne 4 horloges internes (OSC1) en quadrature: Q1, Q2,Q3 et Q4. Chaque instruction est exécutée durant un cycle en deux phases: • Phase de recherche du code binaire de l’instruction stockée en mémoire de programme (4 cycles d’horloge) • Phase d’exécution de l’instruction (4 cycles d’horloge)
  • 18. Phase de recherche : • Durant cette 1ère phase, le PC est incrémenté par Q1 sur front montant (pour pointer l’instruction suivante) et l’instruction est chargée dans le registre d’instruction par Q4 (délai du au temps d’accès à la mémoire) Phase d’exécution: • L’exécution de l’instruction se fait durant la 2ème phase telle que : Q1: décodage de l’instruction: instruction est décodée en mot binaire 14 bits Q2 : lecture de l’opérande (W, registre RAM, donnée immédiate….) Q3 : traitement (addition, soustraction,….) Q4 : stockage du résultats (dans l’opérande source, w….) 11. Principe de fonctionnement d’un pic16F84 I. INTRODUCTION Ainsi un cycle d’instruction dure 8 cycles d’horloge (4+4 = 8).
  • 19. 19 L’architecture particulière des PICs Harvard (Bus différents et séparés pour les données et le programme) lui permet de réduire ce temps. En effet, un pipeline (chaîne de traitement) à deux étages avec 2 niveaux (ou profondeur) permet de mener les deux phases (recherche et exécution ) en parallèle, ce qui permet de réduire ce temps par deux : • Durant une même phase de 4 périodes d’horloge, le processeur va chercher l’instruction suivante tout en exécutant l’instruction présente. une instruction s’exécute alors en une seule phase c-à-d durant la moitié du cycle instruction du départ. NB : Lors d’un déroutement (changement du PC par une instruction), il faut rajouter un cycle mort pour charger la nouvelle instruction avant son exécution (appel et retour d’interruption, branchement…). Dans ce cas on utilise la mémoire de la pile pour sauvegarder le PC. 11. Principe de fonctionnement d’un pic16F84 I. INTRODUCTION Ainsi un cycle d’instruction dure alors uniquement 4 cycles d’horloge.
  • 20. II. ARCHITECTURE DU PIC16F84: 1. Architecture interne
  • 21. II. ARCHITECTURE DU PIC16f84: 1. Architecture interne La structure générale d’un PIC 16F84 comporte 4 éléments essentiels: • Mémoire de programme (instructions ou code opérande) • Mémoire de données (opérandes) • Processeur (Unité de Traitement) • Périphériques (Ressources auxiliaires)
  • 22. 1. organisation de la mémoire Le PIC16F84 contient : 1) la mémoire de programme (stockage des instructions u du code) 2) la mémoire de données (opérandes ou valeurs). Sa structure interne Havard permet des accès séparés à chacune des deux mémoires. Ainsi un accès aux deux mémoires est possible durant un même cycle machine ce qui augmente la vitesse d’exécution. II. ARCHITECTURE DU PIC16f84:
  • 23. 1.1. Mémoire de programme : FLASH + pile + PC 1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84:
  • 24. 1.1. Mémoire de programme : FLASH • Elle contient le programme (ensemble d’instructions pilotant l’application envisagée) à exécuter. • Elle est accessible en lecture uniquement par le uprocesseur. • Cette mémoire contient 1k mots (mot= instruction sur 14 bits) (soit 1024 instructions ou 1024 mots codées sur 14 bits chacune) d’adresses allant de 000 à 3FF. • Elle est de type Flash (EEPROM à accès rapide) non volatile et réinscriptible à volonté. • Les adresses 20h, 420h, 820h, C20h, 1020h, 1420h, 1820h et 1C20h contiennent les instructions. • L’adresses 000 est réservée au vecteur de reset. • l’adresse 004 est réservée au vecteur d’interruption. • Les adresses des instructions sont gérées par le compteur ordinal dit compteur de programme PC codé sur 13 bits 1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84: • Vecteur RESET: pointeur PC vers l’adresse mémoire du début du programme principal en cas d’initialisation 000H. • Vecteur d’interruption: pointeur PC vers l’adresse mémoire du sous programme d’interruption à exécuter en cas d’interruption 004H. N.B : Pointeur : variable (ou registre) contenant une adresse mémoire
  • 25. La mémoire Flash est accessible uniquement en lecture par le uprocesseur. Sa programmation nécessite une procédure particulière et un matériel adéquat (programmateur (circuit), un logiciel pour le transfert du program et un pc). Sa taille reste suffisante pour les applications traitées dans le cadre de ce cours. 1.1. Mémoire de programme 1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84: Pour une bonne programmation, il est conseillé de : Placé le début du programme après l’adresse 004h Mettre un branchement au début du programme à l’adresse 000h. Mettre un branchement au début de la routine d’interruption à l’adresse 004h (s’il y en a une ) Pour le PIC16F84, la mémoire Flash permet 1000 cycles d’effacement et de programmation Pour le PIC 16F84A la mémoire Flash permet 10.000 cycles d’effacement et de programmation. Le temps d’écriture ou/et d’effacement est de 20ms.
  • 26. 1.2. Mémoire de donnée Elle est composée de deux zones: la mémoire RAM et la mémoire EEPROM a. Mémoire EEPROM • Elle se trouvent à partir de l’adresse 0x2100. • Constituée de 64 octets accessible en lecture et écriture par le programme (càd par le up) . • Utile pour sauvegarder des constantes accessibles au moment de la programmation et aussi par le programme. • non volatile: conserve les données même si l’alimentation est coupée ou éteinte et on peut les récupérer lors de la mise sous tension :. 1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84:
  • 27. . Mémoire de donnée a. Mémoire EEPROM 3.1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84: • On y accède à l’aide des registres EEDATA et EEADR sous le contrôle des deux registres de contrôle: EECON1 et EECON2. • La lecture et l’écriture s’exécutent selon des séquences particulières. • Opérations de lecture et d’écriture sont beaucoup plus lentes que la Flash (RAM) • Le temps d’accès en écriture est relativement long (10 ms). On ne peut pas l’utiliser pour stocker les variables temporaires qui évoluent dans le programme, par contre on y stocke des paramètres semi-permanents: Code d’accès , version du programme, messages d’accueil, valeur invariable, paramètres d’étalonnage d’un capteur ou de configuration,résultats obtenus… Aussi, on peut y stocker les événements survenant au cours de l’exécution du programme.
  • 28. b. Mémoire RAM (random acces memory) • Constituée de 68 octets (mot mémoire de 8 bits). • Volatile (perd ses données à chaque coupure du courant) • Elle est organisée en deux banques : Banque 0 et Banque 1. • Chaque banque est composée de 128 octets • Accessibles par le bit RP0 du registre STATUS. le bit RP0 permet de sélectionner la banque 0 ou la banque 1 et vice-versa: RP0 = 0: on sélectionne la banque 0 et RP0 = 1: on sélectionne la banque 1 1.2. Mémoire de donnée II. ARCHITECTURE DU PIC16f84: N.B : La mémoire RAM est dite mémoire File (f), elle comprend trois dispositifs mémoires différents: * les registres du CPU suivants: STATUS, FSR, PCL,PCLATH. * les registres des périphériques d’entrées/sorties: PORTA, TRISA,……. * la mémoire de données utilisateur (cases libres ou cases d’utilisateur). Les registres du CPU et ceux des périphériques sont appelés: registres spéciaux (SFR) ou registres systèmes
  • 29. * zone 2 : Les registres à usage général 68 octets libres utilisable pour stocker des variables temporaires du programme (General Purpose Registers GPR) : se sont des cases mémoires libres de taille 8 bits pour les données accessibles directement par le registre FSR et indirectement par le registre INDF. Les adresses du GPR sont mappées (0Ch et 8Ch sont accédées par le même registre SFR). • La zone 2 est utilisée pour les calculs du programme, le stockage des résultats intermédiaires et des variables d’une application. • Les instructions MOVWF et MOVF permettent de déplacer les valeurs du registre W à n’importe quelle adresse registre ‘’F’’, et vice-versa. • Comprend deux zones: * zone1 : les 12 premières lignes de chaque banque contiennent les registres à fonction spéciales SFR qui sont réparties sur les deux banques (Special Function Registers). Ces registres servent à contrôler les opérations sur le PIC (configuration et gestion du circuit). Certains ont une fonction générale, d’autres ont une fonction spécifique liée à un périphérique donné. L’ensemble est appelé: Fichier des registres (‘’F’’) b. Mémoire RAM 1.2. Mémoire de donnée II. ARCHITECTURE DU PIC16f84:
  • 30. 30 • Quand l’instruction RETURN, RETLW ou RETFIE apparaît, le μproc lit la dernière valeur sauvegardée dans la pile, libère l'emplacement occupé et se branche à cette adresse lue pour continuer l’exécution du programme principal. La pile est constituée de 8 emplacements de 13 bits réservées par le système (pas d’adresse) et intervient dans le mécanisme des instructions : CALL RETURN RETLW (saut dans un tableau) RETFIE (fin de la routine d'interruption) 1.3 la pile (level stack) : 1. Organisation de la mémoire • Quand une instruction CALL intervient ou une interruption, l'adresse de l'instruction suivante (qui se trouve dans le compteur de programme PC) est sauvegardée dans la pile. II. ARCHITECTURE DU PIC16f84: Principe : elle permet d’empiler les adresses de retour lors des appels à des sous-programmes et/ou des sous programmes d’interruption:
  • 31. • Il n’y a aucun contrôle sur l’état de la pile par le processeur (n’est pas accessible à l’utilisateur) •La pile est de type LIFO (Last In First Out), c’est comme une pile d’assiettes: la dernière posée sera la première à être reprise. • Elle est circulaire: la 9ième écriture écrase la 1ère définitivement perdue. • Avec le mécanisme de la pile, un sous- programme peut appeler un autre sous-programme (ou plutôt un sous-sous-programme) : la pile réserve un autre emplacement. (imbrication de 8 sous programmes au maximum). N.B : • les registres: PC, W et la mémoire pile (Stack) n’ont pas d’adresses: situés en dehors des autres mémoires. • La pile est une zone mémoire particulière à accès séquentiel (contraire à l’accès aléatoire pour la RAM). 1.3 la pile: Propriétés: 1. organisation de la mémoire II. ARCHITECTURE DU PIC16f84:
  • 32. II. ARCHITECTURE INTERNE DU PIC16f84: PIC: Peripheral (programmable Interface Controller de microchip 2. Processeur : Le processeur (ou l’unité centrale ) est constitué de 2 éléments : • Une UAL effectue les opérations arithmétiques (+, -, /..) et logique (ET, OU, NO, AND…..) internes dictées par l’unité de contrôle et le Décodeur d’instructions. • Un registre de travail W fondamental largement utilisé par les instructions du programme pour stocker les valeurs temporaires (données) des opérations de calculs.
  • 33.
  • 34. • Leur nombre dépend du type du PIC étudié. Pour le type PIC16F84, les registres les plus utilisés sont: Registres d’entrée/sortie: PORTA et PORTB Registre d’état: STATUS Registres de direction: TRIS Registre Compteur Programme: PC( PCL-PCH ) et PCLATH Registre de travail: W II. ARCHITECTURE DU PIC16f84: 3. Registres internes Registre d’interruption: INTCON Registre de configuration : OPTION Registres d’accès à l’ EEPROM: EEDATA, EEADR, EECON1, EECON2, Registre vertuel INDF Registres TMR0 Registre FSR • les registres sont les éléments mémoires de petite taille sont plus rapides, ils sont situés dans la RAM sur 2 banques (deux pages), ils servent au stockages des opérandes et des résultats intermédiaires utilisées dans le programme et à la gestion (fonctionnement) du PIC.
  • 35. II. ARCHITECTURE DU PIC16f84: 3.1. le registre PC: compteur programme: séquenceur 3. Registres internes Le PC (ou compteur ordinal) est un registre qui pointe l’instruction à exécuter en permanence et permet donc au programmeur de se déplacer à volonté dans mémoire FLASH: Il contient toujours l’adresse de la prochaine instruction à exécuter. A la mise sous tension, ce registre est mis à 0 et pointe donc la première case mémoire (000h). Durant l’exécution du programme, il s’incrémente automatiquement et pointe les adresses des instructions du programme. Chaque instruction pointée transite dans le registre d’instruction afin qu’elle puisse être traitée par le contrôleur et décodeur d’instruction qui gèrent la suite des différentes actions internes nécessaires à la bonne exécution de l’ instruction pointée. Contenu ou valeur de PC ??: écriture dans PC: Le PC (13 bits: taille du bus d’adresses) est obtenu par concaténation des deux registres (8 bits): PCL(Low) et PCH(High): • PCL sur 8 bits est la parties basse du PC, il est accessible en lecture et en écriture. • PLH de 5 bits est la partie haute du PC, il n’est pas accessible directement: On peut accéder et par suite modifier le contenu du PCH indirectement grâce au registre PCLATH qui est un registre SFR accessible en lecture et écriture: Seuls 5 bits (PCLATCH <4:0>) sont utilisés. PCLATCH participe au fonctionnement du PC. Il est accessible en écriture seule.
  • 36. II. ARCHITECTURE DU PIC16F84: 3. Registres internes N.B: En cas d’instructions de saut dans une table, seuls les 8 bits du PCL sont modifiables. Les deux bits (b0 et b1) du PCLATH sont figés. Ainsi, une table ne pourra excéder 256 cases (256 données): Au moment d’écriture dans PCL, le contenu du PCLATH est automatiquement copié dans PCH. Il faut donc s’assurer que la valeur contenue dans PCLATH est correcte avant d’écrire dans PCL. N.B: Pour le 16F84, seuls 10 bits de PC sont utilisés pour adresser 1024 lignes de programme. Ainsi, il nous faut 2 bits pour compléter le PC (qui est sur 10 bits). Ces deux bits sont pris du registre PCLATH pour le PIC16F84.
  • 37. 3.2. Le registre de travail W (Working register): ou accumulateur • Il est directement accessible par adressage immédiat (ou Littéral (L)). • Ce registre 8 bits est indépendant des registres SFR, directement associé à l’UAL • Il n’est pas adressable (joue le rôle d’un accumulateur pour les uprocesseurs). Ce registre est utilisé d’une manière temporaire pour déplacer une donnée, effectuer des opérations (arithmétiques ou logiques) et contenir aussi les résultats des opérations sur l’un des autres registres SFR ou GPR. Ainsi, on distingue 2 cas possibles: *Opération à un seul opérande: l’opérande est soit dans W soit dans un autre registre, *Opération à deux opérandes: un opérande est dans W, l’autre est une constante (valeur immédiate 8 bits: littéral) ou est contenu dans un autre registre. Les résultats sont envoyés soit dans W soit dans un autre registre soit dans les deux (pour certaines instructions). II. ARCHITECTURE DU PIC16F84: 3. Registres internes
  • 38. 3.3. Le registre d’état STATUS register): Décrit l’état de l‘UAL en ce qui concerne le résultats de la dernière opération et permet de sélection des banques 0 et 1 par le bit RP0. II. ARCHITECTURE DU PIC16f84: 3. Registres internes Bit0 : C= Carry bit: utilisé pour les instructions de rotation (9ème bit d’une opération) 1: retenue (ou report) sur le bit MSB (après les instructions ADDWF et ADDLW) ou résultas négatif. 0 : pas de retenue sur le bit MSB Bit1 : DC= Digit Carry bit: utile pour les nombres BCD (afficheur 7 segments) 1: retenue sur le 4ème bit des poids faible LSB (après les instructions ADDWF et ADDLW) 0 : pas de retenue sur le bit 4 du LSB Bit2 : Z=Zéro bit: 1: résultat d’une opération arithmétique et logique est nul 0 : Résultat non nul Exemple: Si une addition de deux octets donne un résultats >255 (FFh) ce bit est à 1, dans le cas contraire (résultats <255) , il est à 0. Bit3 : /PD= Power Down bit: indique le passage du PIC en mode sommeil 1: au démarrage ou après l’exécution de l’instruction CLRWDT 0 : après l’instruction SLEEP.
  • 39. Bit5 : /RP0= sélection des pages mémoires de travail en adressage direct 1: sélection de la page 1 active, on peut accéder aux registres d’adresses 00 à 4F 0 : sélection de la page 0 active, on peut accéder aux registres d’adresses 80 à CF N.B : • Les bits RP1 et IRP ne sont pas utilisé pour le PIC16F84, il est conseillé de les laisser à 0 à fin d’éviter certains problèmes imprévisibles de programmation (compatibité ascendante…). • IPR : sélection de la banque de travail adressée dans le cas du mode d’adressage indirect dans le cas de plus de 2 banques (inutile pour le PIC 16F84) 3.3. Le registre d’état (ou code condition):STATUS register) Décrit l’état de l‘UAL au cours des opérations et les bits de sélection des banques 0 et 1 II. ARCHITECTURE DU PIC16f84: 3. Registres internes Bit4 : /TO= Time Out bit: bit en lecture seule 1: après mise sous tension ou après CLRWDT ou encore après SLEEP 0 : Dépassement du timer Watchdog est survenu (déborde)
  • 40. 3.4. Le registre OPTION : Fixe le fonctionnement de l’horloge interne (prédiviseur) à accès uniquement en écriture. II. ARCHITECTURE DU PIC16f84: 3. Registres internes Bit7 : /RBPU= validation des résistances de rappel (ou de tirage) à Vdd (5V) pour le port B 1: les résistances de rappel ne sont pas connectées en interne sur le port B 0 : les résistances de rappel internes sont connectées à Vdd sur le port B. N.B : Le pull-up est désactivé dans les deux cas suivants: • à la mise sous tension, • quand le port est configuré en sortie, Bit6 : INTEDG=détermine le front de l’interruption sur la broche RB0/INT 1: front montant (passage de l’état 0 à l’état 1) 0 : Front descendant (passage de l’état 1 à l’état 0) Bit5 :TOSC=choix du signal pour piloter le Timer0 0: Timer0 piloté par horloge interne, 1 : Timer0 piloté par signal externe via la broche RA4/TOCK1 (généré par le circuit NE555) N.B: Le fait de connecter de façon interne sur une ligne du port B une résistance interne de tirage (bit /RPU à 0) permet de fixer la tension de la pin configurée en entrée à un niveau haut lorsqu’aucun signal n’est appliqué sur cette pin.
  • 41. 41 Bit3 : PSA=affecte un facteur de division 0: pour le Timer0 1 : pour le chien de garde Bit4 : TOSE=fixe le front de l’horloge externe 1: front montant 0 : Front descendant 3.4. Le registre OPTION : Fixe le fonctionnement de l’horloge interne (prédiviseur) à accès uniquement en écriture. II. ARCHITECTURE DU PIC16f84: 3. Registres internes Bits 2-0 : PS2:PS0= définie la valeur du facteur de division (Prescaler)
  • 42. 3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture) II. ARCHITECTURE DU PIC16f84: 3. Registres internes a. EEDATA :registre 8 bits contient selon l’opération à effectuer(écriture,lecture) la donnée lue de l’EEPROM ou la donnée à écrire dans l’EEPROM b. Le registre EEADR : contient l’adresse de la donnée lue ou écrite dans l’EEPROM c. EECON1 : registre de contrôle qui définit le mode de fonctionnement de l’EEPROM d. Le registre EECON2 : Ce registre fantôme (non physique) set uniquement à sécuriser le fonctionnement du PIC lors des opérations d’écriture. Il s’agit de l’adresse 0x89 banque 1 qui sert à envoyer les commandes concernant les procédures d’écriture dans l’EEPROM N.B : L’EEPROM ne contient que 64 octets (00h à 3Fh); les deux bits du poids fort du registre EEADR sont donc toujours à 0. (6 bits utilisés pour cette capacité de 64 octets).
  • 43. II. ARCHITECTURE DU PIC16f84: 3. Registres internes Bit4 : EEIF: (EEPROM Interrupt Flag) Il est mis à 1 quand l’écriture d’une donnée est terminée. Ce bit doit être remis à zéro dans le programme: par le programmeur. Bit2 : WREN (WRite Enable): doit être mis à 1 pour autoriser l’écriture d’une donnée dans l’EEPROM Bit2 : WRERR (WRite ERRor): Il est mis à 1 en cas d’erreur d’écriture (problème durant l’opération d’écriture ( Reset externe, Reset du au Watchdog), Il est mis à 0 en fin d’opération d’écriture. 3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture) Bit0 : RD (Read Data): doit être mis à 1 pour lire une donnée de l’EEPROM Il est automatiquement remis à 0 par hardware uniquement après une lecture. N.B: L’opération de lecture dure un cycle d’instruction (horloge interne) Bit1 : WR (WRite Data): doit être mis à 1 pour écrire une donnée dans l’EEPROM remis automatiquement à 0 (par hardware seulement après une écriture). N.B: L’opération d’écriture dure plusieurs ms. c. EECON1 : registre de contrôle qui définit le mode de fonctionnement de l’EEPROM:
  • 44. II. ARCHITECTURE DU PIC16f84: 3. Registres internes N.B: On peut aussi écrire des données en EEPROM directement pendant la phase de transfert du programme dans la FLASH du PIC: On utilise la directive de compilation DE de MPLAB à partir de l’adresse 0x2100 (origine des adresses de l’EEPROM) Par précaution, on peut vérifier facilement l’écriture d’une donnée en EEPROM: On relit le contenu cette mémoire et on le compare avec la valeur attendue. 3.5. Registres: EEDATA, EEADR, EECON1 et EECON2 : accès à l’EEPROM (lecture, écriture) A la fin de l’opération d’écriture (plusieurs ms), le bit WR est mis à 0 automatiquement et aussi le drapeau EEIF est mis à 1 automatiquement. Au lieu d’attendre la fin de l’écriture, on peut utiliser l’interruption de fin d’écriture de l’EEPROM: 1) On place le bit EEIE à 1 pour autoriser cette source d’interruption et ce après autoriser toutes les sources d’interruption d’une manière globale (bit GIE à 1), 2) Aussi on efface le drapeau EEIF dans la routine d’interruption(mettre EEIF à 0). N.B: L’écriture se fait par un seul emplacement à la fois puis on passe à une nouvelle écriture dans l’emplacement suivant. L’écriture complète des 64 octets dure environ ¼ de seconde.
  • 45. 3.6. Le registre FSR pointeur d’adresse: II. ARCHITECTURE DU PIC16f84: 3. Registres internes • Il s’agit d’un registre 8 bits c’est le seul registre utilisé comme pointeur pour l’adressage indirect. • Il est contenu à l’adresse 04h dans les deux banques (0 et 1), est donc accessible indépendamment du numéro de banque. • FSR contient l’adresse du registre INDF, et ce registre INDF contient la donnée à utiliser. Ainsi, on utilise le mode d’adressage direct pour écrire l’adresse du registre INDF dans le pointeur FSR (ou registre FSR). INDF lui contient la donnée. 3.7. Le registre INDF : INDirect File • C’est un registre fantôme d’adresse 0x00 qui est utilisé en mode d’adressage indirect pour l’accès à la mémoire de données RAM. • On ne peut en aucun cas accéder à l’emplacement 0x00. • C’est une position fictive par laquelle on passe dans ce mode d’adressage indirect. • C’est un registre qui n’existe pas vraiment, ce n’est qu’un procédé d’accès particulier au contenu du registre pointeur FSR utilisé par le PIC16F84 pour des raisons de facilité de construction électronique interne. N.B: • FSR contient l’adresse pointée (adresse). • INDF contient la donnée contenue dans l’adresse pointée par FSR (càd :INDF contient alors une donnée).
  • 46. 3.6. Le registre FSR pointeur d’adresse: II. ARCHITECTURE DU PIC16f84: 3. Registres internes • Il s’agit d’un registre 8 bits c’est le seul registre utilisé comme pointeur pour l’adressage indirect. • Il est contenu à l’adresse 04h dans les deux banques (0 et 1), est donc accessible indépendamment du numéro de banque. • FSR contient l’adresse du registre INDF, et ce registre INDF contient la donnée à utiliser. Ainsi, on utilise le mode d’adressage direct pour écrire l’adresse du registre INDF dans le pointeur FSR (ou registre FSR). INDF lui contient la donnée. 3.7. Le registre INDF : INDirect File • C’est un registre fantôme d’adresse 0x00 qui est utilisé en mode d’adressage indirect pour l’accès à la mémoire de données RAM. • On ne peut en aucun cas accéder à l’emplacement 0x00. • C’est une position fictive par laquelle on passe dans ce mode d’adressage indirect. • C’est un registre qui n’existe pas vraiment, ce n’est qu’un procédé d’accès particulier au contenu du registre pointeur FSR utilisé par le PIC16F84 pour des raisons de facilité de construction électronique interne. N.B: • FSR contient l’adresse pointée (adresse). • INDF contient le contenu de l’adresse pointée par FSR (càd :INDF contient alors une donnée).
  • 47. II. ARCHITECTURE DU PIC16f84: 3. Registres internes 3.7. Le registre INDF : INDirect File CLRF INDF signifie : mettre à 0 la case mémoire pointée par l’adresse contenue dans FSR. Or INDF est la case mémoire pointée par le registre pointeur FSR. Si on place 80h dans FSR et ensuite on exécute CLRF INDF; cela va remettre à 0 la case mémoire d’adresse 80h. En effet, le registre pointeur FSR est de 8 bits qui peut adresser uniquement 256 positions qu’est la capacité de la RAM dont on dispose. Ainsi en mode d’adressage indirect, le bit IRP est inutilisé (registre STATUS). N.B : Chaque fois que le Processeur rencontre le mot INDF dans un programme, il s’agit de la case mémoire dont l’adresse (8 bits) se trouve dans le registre FSR. (complété par le bit IRP du registre STATUS dans le des autres pic (mis à 0 pour le PIC16F84).
  • 48. 3.9. Registre PORTA (0x05 banque 0) II. ARCHITECTURE DU PIC16f84: 3. Registres internes Ce registre permet au microcontrôleur de communiquer avec le monde extérieur, c’est en fait ce registre qui représente l’image (états) des 5 pins RA0 à RA4, chaque bit de ce registre représente une pin. Il est à lecture et écriture. 3.8. Registre TRISA (0x85 banque 1) Ce registre est dit de sens de transfert de données ou informations (entrée , sortie) à écriture seule est d’adresse complète sur 8 bits. Ce registre permet de configurer indépendamment les bits du port A ( de 5 pins) en entrée ou en sortie selon les valeurs mis dans ses bits. Il fonctionne comme suit: • Chaque bit de ce registre mis à 1 configure la pin correspondante en entrée. (1=Input) • Chaque bit de ce registre positionné à 0 configure la pin correspondante en sortie. (0=Ouput).
  • 49. II. ARCHITECTURE DU PIC16f84: 3. Registres internes 3.10. Registre TRISB et PORTB Ces registres fonctionnent de la même façon que les deux registres PORTA et TRISA, mais concernant bien entendu les 8 pins RBi(i=1….7). N.B: Au RESET, les bits du registre TRISB sont mis à 1, ainsi toutes les pins du port B sont alors des entrées. En écriture : on configure le port A en sortie grâce au registre TRISA, et on place la valeur à écrire dans PORTA. En lecture: on configure le port A en entrée grâce au registre TRISA, On lit la valeur présente sur les pins du port A grâce au registre PORTA. N.B: Au RESET, les bits du registre TRISA sont mis à 1 du coup toutes les pins du port A sont alors des entrées. 3.9. Registre PORTA (0x05 banque 0)
  • 50. Le registre INTCON à lecture et à écriture contient tous les bits de configuration, de validation et des drapeaux des différentes interruptions(ou états). BIT 7: GIE (Global Interrupt Enable). Bit de validation globale de toutes les interruptions. • GIE=1 : validation globale (toutes les interruptions sont autorisées) • GIE=0 : Toutes les interruption sont interdite (masquées). 3.12. le registre INTCON (0B,8BH) : configuration des interruptions a. Bit de validation globale de toutes les interruptions. II. ARCHITECTURE DU PIC16f84: 3. Registres internes N.B : Chaque type d’interruption possède son propre bit de validation.
  • 51. BIT 3: RBIE (RB Interrupt Enable). Bit de validation de l'interruption RBI qui provient d'un changement d'état sur l'une des entrée RB4 à RB7 du port B. RBIE=1 : Autorise l'interruption. RBIE=0 : interdit l'interruption BIT 4: INTE ( INT interrupt Enable). Bit de validation de l'interruption INT qui provient d'un front (passage de 0 à 1 ou vice versa) sur l'entrée RB0 du port B. INTE=1 : Valide l'interruption INT. INTE=0 : Interdit l'interruption INT. BIT 5: TOIE (TMRO Overflow Interrupt Enable). Bit de validation de l'interruption TOI qui intervient au débordement du timer TMR0 TOIE = 1 : Valide l'interruption. TOIE= 0 : Interdit l'interruption. BIT 6 : EEIE (EE write Interrupt Enable). Bit de validation de l'interruption EEI qui intervient à la fin d'une écriture dans l'EEPROM EEIE=1 : Valide l'interruption. EEIE=0 : Interdit l'interruption Remarque : le drapeau de cette interruption se trouve dans le registre EECON1 b. Bits de validation des 4 sources interruptions: II. ARCHITECTURE DU PIC16f84: 3. Registres internes
  • 52. BIT 0: RBIF (RB Interrupt Flag) Drapeau de l'interruption RBI qui provient d'un changement d'état d'un des bits RB4 à RB7. RBIF= 1 : drapeau levé. RBIF= 0 : drapeau baissé. BIT 1: INTF (INT Interrupt Flag). Drapeau d'interruption INT qui provient d'un passage d'état de l'entrée RB0 (front). INTF=1 drapeau levé. INTF=0 drapeau baissé. BIT 2: TOIF ( TMRO Overflow Interrupt Flag). Drapeau de l'interruption TOI qui intervient au débordement du timer TMR0 TOIF=1 drapeau levé. TOIF=0 drapeau baissé. c. Drapeaux (témoins ou indicateurs de changement d’état) des 4 interruptions. N.B: • Chaque indicateur RBIF, INTF, TOIF doit être remis à 0 par le programme de traitement de l’interruption. • Lors d’un RESET, tous les bits sauf RBIF (bit 0) du registre INTCON sont mis à 0. • RBIF garde son état précédent. II. ARCHITECTURE DU PIC16f84: 3. Registres internes
  • 53. 3.11. Registre compteur TMR0 (0x01 banque 0) : Le registre TMR0 8 bits à accès en lecture et en écriture est lié au TIMER 0 (compteur/temporisateur). Il contient la valeur de comptage réalisé du TIMER0. On peut le précharger avec une valeur de notre choix (l’initialiser à une valeur) à partir de laquelle il comptera jusqu’à atteindre 255. Lors d’une écriture dans TMR0, le comptage du TIMER0 est inhibé pendant 2 cycles machines; il faut prendre en considération ce retard de démarrage dans le calcul des temporisations précises. II. ARCHITECTURE DU PIC16f84: 3. Registres internes N.B : Le registre TMR0 est utilisé par le TIMER 0 et le Timer chien de garde (Watchdog Timer)
  • 54. Instruction : opération élémentaire effectuée par le processeur durant un cycle machine (sauf pour les sauts 2 cycles ) suite à la demande d’un programme. Chaque instruction est codée en binaire, ce code est dit code opération ou « opcode »: désigne l’opération à effectuer. Puisque le code binaire (valeur numérique) n’a pas de sens pour l’être humain, le constructeur à conçu une abréviation du nom de l’opération désignant le code opération fourni par le langage assembleur pour le processeur appelée: mnémonique. II. ARCHITECTURE DU PIC16f84: 4. Format des instructions
  • 55. C’est le type des instructions qui utilise le registre W pour manipuler les données; Elles sont codées comme suit : • 6 bits contiennent le code de l’instruction • 8 bits contiennent la valeur numérique ou Litérale qui sera utilisée par l’instruction (de 0 à 255) qui se trouve la mémoire programme. a. Instructions générales de contrôle : manipule des données codées directement dans l’instruction elle même ; adressage Literal ou immédiat 4.1 Format des instructions (4 types codées sur 14 bits) II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages Les PIC sont conçus selon une architecture RISC: programmation avec un nombre d’instructions réduit ce qui permet de : • limiter la taille de codage des instructions • limiter la taille mémoire utilisée (FLASH) • gain en temps d’exécution Le format de ces instructions est fixé par le constructeur “MICROCHIP”. Il est constitué d’: • Un code opératoire: qui spécifie le type de l’opération. • Un ou Des opérandes: qui sont des valeurs ou des adresses ou signifie qu’on utilise un registre comme intermédiaire ou rien du tout (ceci dépend du mode d’adressage utilisé)
  • 56. 4.1 Format des instructions (4 types codées sur 14 bits) II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages b. Instructions orientées octet : manipule l’octet contenu dans un registre F Elles utilisent le registre W et un registre de la mémoire de donnée pour manipuler les données. Elles sont codées de la manière suivante: • 6 bits de poids fort contiennent le code de l’instruction : OPCODE • 1 bit pour la destination (d): d=0: résultats stocké dans le registre W d=1 : résultats stocké dans la case mémoire RAM ( libre ou registre) un autre registre F • 7 bits de poids faible contiennent l’adresse (8 bits) de la case mémoire (libre ou registre) contenant l’octet à traiter par l’instruction. N.B : Le 8ème bit de l’adresse du registre est le bit RP0 (bit 5 du registre STATUS) qui permet de changer de banque (banque 0 ou banque 1). Pour coder toutes les 35 instructions, il nous faut 6 bits.
  • 57. c. Instructions orientées bits : manipule directement un des 8 bits d’un registre Elles permettent de manipuler (modifier ou tester ) directement les bits d’un registre particulier, elles sont codées comme suit: • 4 bits de poids fort pour l’instruction: OPCODE • 3 bits pour indiquer le numéro du bit à manipuler ou concerner par l’opération (bit 0 à 7 possible) • 7 bits de poids faible contiennent l’adresse de la case mémoire (libre ou registre) contenant l’octet à traiter (+RP0 pour avoir l’adresse sur 8 bits) 4.1 Format des instructions (4 types codées sur 14 bits) II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages
  • 58. II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages d. Instructions de sauts et d’appels de sous programme C’est le type d’intructions qui provoque une rupture dans la séquence de déroulement du programme principal qui est écrit dans la mémoire programme (1K mots donc 10 bits) . Elles sont codées de la manière suivante: • 3 bits pour le code de l’instruction. • 11 bits pour coder l’adresse de destination (mémoire de programme). 4.1 Format des instructions (4 types codées sur 14 bits) N.B : Pour le pic16F84, 10 bits qui sont utilisés pour coder l’adresse de destination. Pour ce dernier type d’instructions, si la mémoire programme est supérieure à 2 Kmots (PIC16F877……), on positionne les bits 3 et 4 du registre PCLATH.
  • 59. On ne peut pas concevoir un programme qui ne manipule pas de données dite opérandes. Le mode d’adressage est la manière d’accéder à une donnée en mémoire. Il existe 3 modes utilisés dans les PIC; à savoir: le mode Literal (immédiat), le mode direct et le mode indirect. b. adressage Literal ou immédiat Dans ce mode, la donnée est contenue dans l’instruction elle-même. (instruction de transfert). Le registre W est souvent utilisé dans ce mode immédiat. a. adressage inhérent Dans ce mode, l’instruction n’a pas besoin d’opérande, il utilise uniquement le code opératoire « code-op » NOP: not operation, le PIC ne fait rien durant un cycle machine (perte du temps de l’ordre d’un cycle machine) RESET:initialise le PIC commence à l’adresse 000 SLEEP: met le PIC en mode veille (ou mode sommeil) CLRWDT:Réinitialise le compteur du Watchdog Pour d’autres pics, on peut trouver: PUCH: charge une valeur dans la pile POP :(l’inverse de PUSH) réstaure une valeur de la pile), II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages 4.2. Modes d’adressage
  • 60. c. adressage direct Dans ce mode, la donnée manipulée de type adresse sur 7 bits est contenue dans un registre qui peut être désigné ou connu par son nom (par exemple W) ou encore désigné par son adresse mémoire ou une autre adresse dans la mémoire libre (GPR). N.B : Dans ce mode, l’adresse peut correspondre à deux registres (car on est en présence de deux banques 0 et 1). Le bit RP0 uniquement utilisé pour le PIC 16F84 permet le choix de la banque et par la suite le choix du registre à utiliser. II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages 4.2. Modes d’adressage
  • 61. d. adressage indirect (FSR+ INDF) Pour ce mode, on utilise deux registres: • un pointeur 8 bits FSR (File Selected Register) qui est le seul disponible dans les PICs situé à l’adresse 04h dans les deux banques 0 et 1. Ce registre contient l’adresse de la donnée (de la mémoire des données): c’est donc un pointeur d’adresse mémoire. • un registre INDF spécial virtuel dans l’instruction qui représente la case mémoire pointé par le registre d’index FSR. Ce registre INDF permet l’accès à la donnée dont l’adresse pointée par FSR. Le registre INDF (INDirect File) contient la valeur du registre pointé par le registre FSR (on parle d'adressage indirect). Pour lire ou écrire dans une case mémoire par ce mode indirect, on procède comme suit: • On place l’adresse de la donnée manipulée dans le registre FSR grâce au registre W. • On lit ou on écrit la donnée dans le registre INDF; De cette façon, on peut charger la valeur contenue à l’adresse pointée par FSR dans W. Le registre INDF est fictif n’est physique se trouve à l’adresse 0x00 dans les deux banques 0 et 1. On peut le voir comme un autre nom de FSR utilisé pour accéder à la donnée elle-même. N.B: Le bit IRP n’est pas utilisé pour le PIC16F84; II. ARCHITECTURE DU PIC16f84:
  • 62. d. adressage indirect (FSR+ INDF) Ce mode d’adressage est parfois très utile pour optimiser la taille des programmes et aussi la vitesse d’exécution: •Par exemple : effacement de la mémoire RAM du PIC: Il s’agit d’effacer les 68 octets d’usage générale de la mémoire RAM (0x0C à 0x4F) Avec ce mode on aura besoin de 8 instructions (et 477 cycles) pour le faire et l’exécution nécessite 68 cycles seulement •Dans certaines situations, il n’est pas judicieux d’utiliser l’adressage indirect. Par exemple : lecture ou écriture du port B. II. ARCHITECTURE DU PIC16f84: 4. Format des instructions et Modes d’adressages 4.2. Modes d’adressage
  • 63. 63 II. ARCHITECTURE DU PIC16f84: Implanté dans toutes versions des microcontrôleurs Microchip son ancienne appellation est : RTC: Real Time Clock Ce temporisateur est un compteur 8 bits qui fonctionne selon deux modes: mode compteur et mode temporisateur : • mode compteur: Le timer 0 compte les impulsions reçues sur la pin RA4/TOCKI • Mode temporisateur: le timer 0 compte les cycles d’horloge interne du PIC lui-même. • La retenue sur TMR0 alimente l’indicateur ou le flag d’interruption (passage de 255 à 0) N.B : Si le timer 0 est configuré en mode compteur; la lecture du registre TMR0 donne le nombre d’événements (impulsions) survenus sur la patte RA4/TOCKI. Si le timer 0 est configuré en mode temporisateur; la lecture du registre TMR0 donne le temps écoulé. 51. Le temporisateur TIMER0 : modes de fonctionnement 5. Périphériques (Ressources auxiliaires) La structure interne du Timer 0 est schématisée par la figure :
  • 64. N.B: Les registres associés au Timer 0 sont: TMR0, INTCON, OPTION et TRISA. Le bit 5 du registre OPTION décrit le fonctionnement de ce timer 0: Bit5 :TOSC = mode de fonctionnement du Timer0: 0 : mode temporisateur (nombre de cycles d’horloge du PIC). 1 : mode compteur (nombre d’impulsions reçues sur la pin RA4/TOCKI). En mode Compteur, le bit TOSE permet de choisir sur quelle transition de la broche RA4/TOCKI le comptage est effectué : • Si TOSE=0 incrémentation sur front montant (passage ou transition de 0 à 1) • Si TOSE=1 incrémentation sur front descendant (passage de 1 à 0) II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires 5.1. Le temporisateur TIMER0 : modes de fonctionnement
  • 65. Les bits PS2:PS0 permettent de fixer la valeur du prédiviseur de fréquence (prescaler) Ce prédiviseur permet de diviser la fréquence d’incrémentation Fosc/4 ou TOCKI selon l’effet voulu. Le prédiviseur peut être aussi utilisé pour le timer du chien de garde, mais ne peut plus être utilisé par le timer 0. Le bit PSA permet cette affectation: PSA = 0 : prediviseur affecté au Timer 0 PSA = 1 : prediviseur affecté au timer du chien de garde N.B : Pour désactiver le prédiviseur, il suffit de l’affecter au timer du chien de garde avec un rapport de 1/1 (PS2=PS1=PS0=0). • Aussi, les 8 bits du prédiviseur ne sont pas accessibles ni en lecture ni en écriture. II. ARCHITECTURE DU PIC16f84: 5.1. Le temporisateur TIMER0 : Prédiviseur 5. Ressources auxiliaires La cadence d’incrémentation (de comptage) est alors liée à la fréquence d’horloge (mode temporisateur) ou à la fréquence du signal présent sur la broche RA4/TOCKI. Un prédiviseur permet de programmer cette proportionnalité. Ce prédiviseur est entièrement géré par le registre OPTION.
  • 66. 5.1. Le temporisateur TIMER0 : la synchro II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires Cadence d’incrémentation : exemple Avec quartz de 4 MHz=Fhorloge, on a donc un cycle d’horloge de durée T=1us. Si TOCS=0, on est en mode temporisateur, Si PSA=0 : le prédiviseur est affecté au Timer 0 (pas au chien de garde) Pour (PS2PS1PS0=010 : prédiviseur de 8 On a Timer 0 incrémenté toutes les 8 us La synchro retarde le début du fonctionnement de 2 cycles machine lors d’une : • écriture dans le registre TMR0, • modification d’un bit relatif au registre TMR0. N.B: La lecture ne perturbe pas le comptage. TMR0 registre de 8 bits accessible en lecture et en écriture. Il compte les fronts montant du signal qu’il reçoit. Arrivé à 255, il repasse à 0: c’est le débordement ou la fin de comptage.
  • 67. II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires Le TIMER 0 peut être utilisé de 3 manières: • par lecture simple du registre TMR0, • par scrutation (test) du Flag TOIF, • par interruption. • Par combine b. Par scrutation du flag TOIF: Lorsque le TIMER 0 déborde (passage de 255 à 0) le bit TOIF (b2) du registre INTCON passe à 1 (et reste à 1 tant qu’il n’a pas été remis à 0 par le programme). Pour savoir si 256 incrémentations ont eu lieu, il suffit donc de scruter (examiner ou tester) à tous moment le bit TOIF. Elle s’agit d’une méthode simple. Inconvénients : • le fait d’attendre tout le temps le bit TOIF à indiquer l’état 1 on perd du temps; De cette façon, on bloque le processeur dans une boucle d’attente. • Si la fréquence de test est inférieure à la fréquence d’incrémentation du TIMER 0, le programme risque de ne pas réagir assez rapidement. a. Par lecture simple du registre TMR0 Il s’agit de lire tout simplement le registre TMR0 pour voir ce qu’il contient. La valeur lue est le reflet du nombre des événements survenus (impulsions ou cycles d’horloge). Technique de test d’un nombre N d’incrémentation : on distingue deux cas : • N < 256 : on charge le registre TMR0 avec la valeur 256-(N-2). • N >= 256 : on utilise une ou plusieurs boucles incrémentées par le débordement du TIMER 0. 5.1. Le temporisateur TIMER0 : Techniques d’utilisation
  • 68. 5.1. Utilisation du TIMER0 II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires c. Par interruption : Cette méthode résout le problème posé du au test du débordement du TIMER 0 par le programme via le bit TOIF du registre INTCON. On positionne le bit TOIE du registre INTCON à 1, et chaque fois que le flag TOIF passe à 1, une interruption est alors générée. Cette interruption déroute aussitôt le PIC du programme principale pour traiter un sous programme prévu. Cette méthode est la plus utilisée dans les applications de gestion du temps utilisant le TIMER 0; le processeur est ainsi libre de poursuivre son travail en attendant l’événement : passage du bit TOIF à l’état 1. BIT 5: TOIE (TMRO Overflow Interrupt Enable). Bit de validation de l'interruption TOI qui intervient au débordement du timer TMR0 TOIE = 1 : Valide l'interruption. TOIE= 0 : Interdit l'interruption. d. Par combine : Cette méthode permet de programmer une temporisation. Elle permet de combiner la méthode par les interruption avec celle de lecture directe du registre TMR0 comme suit: • Les interruptions sont utilisées pour les multiples de 256 • La lecture directe de TMR0 pour les unités (de 0 à 255).
  • 69. II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires 5.1. Méthodes de génération des temporisations Il existe plusieurs techniques pour générer une temporisation: • Timer 0: pour une temporisation précise. • Timer 0 (lecture simple)+ Interruption c’est la méthode dite combine: pour des temporisations précises, mais accompagnées de boucles longues. • L’instruction nop: utilisée pour des temporisations de coutre durée (1 us par 1instruction nop). • La boucle (itérations de rien ou de plusieurs nop): permet de générer une temporisation sans Timer 0 • Le fonction delay : utilise une suite d’instructions nop ou une boucle pour des temporisations peu précises mais facile à réaliser. 5.1. Applications du Timer 0 Le Timer 0 est un périphérique de gestion du temps, réalisant les fonctions suivantes : • Comptage des événements (impulsions reçues sur la pin RA4/TOCKI) : compteur d’événements, • Génération des temporisations ou mesure du temps (comptage des cycles d’horloge système) • Génération des signaux périodiques (Sinus, triangulaire, carré, MLI…) • Génération des événements périodiques (échantillonnage des signaux analogiques, rafraîchissement des afficheurs multiplexés (7 segments)….). • Synchronisation des signaux (au même temps ou à des intervalles de temps égaux) • Fixation du débit (nombre max d’infos /s échangé) d’une liaison série synchrone ou asynchrone. • ……………………………
  • 70. 70 A chaque interruption correspond un événement déclencheur ou une source d’interruption. A chaque interruption, est associé un traitement spécial appelé sous programme d’interruption (routine d’interruption) Comme une interruption est un événement asynchrone, il faut alors : • sauvegarder le contexte dans lequel se trouvait le processeur avant l’interruption, • restaurer ce contexte une fois que le processeur a achevé l’exécution du sous programme d’interruption. Une interruption est une rupture de séquence asynchrone d’un programme principal. C-à-d non synchronisée avec le déroulement du programme principal. N.B : L’exécution d’une instruction n’est jamais interrompue; c’est à la fin de l’instruction en cours d’exécution lors de l’arrivée de l’événement que le sous programme d’interruption est exécuté. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires a. Définition b. Mécanisme d’une interruption Lorsqu’un un événement extérieur autorisé par un programme principal est survenu: • tout d’abord le processeur le détecte, • après, le processeur laisse le programme principal et se dirige vers le sous programme d’interruption pour l’exécuter. • ensuite, le processeur revient au programme principal pour continuer son exécution une fois qu’il à terminé l’exécution du sous programme d’interruption et ce à partir de l’endroit où il l’a laissé.
  • 71. 71 1 le programme principal se déroule normalement 2 L’événement déclencheur survient 5 Sauvegarde du contexte (registres utilisés STATUS, W ou autre) 4 Le programme saute à l’adresse de traitement de l’interruption 004 6 Traitement de l’interruption correspondante 7 Restauration du contexte (W, STATUS….) 8 Retour au programme initial (principale) La séquence de déroulement d’une interruption est la suivante: 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires e. Déroulement d’une interruption 3 Le programme achève l’instruction en cours de traitement
  • 72. 72 1) L'interruption INT (RBO) : due à une source externe Elle est provoquée par l’arrivée d’un front (ou transition) sur l'entrée RB0 (port B) quand elle est programmée en entrée. Elle est gérée par 3 bits : - INTE : bit de validation Enable (1= autorisée, 0=interdite) ou autorisation, - INTF : drapeau Flag ou indicateur de l’événement déclencheur, - INTEDG : front de déclenchement 1=montant, 0=descendant (registre OPTION) 2) L'interruption RBi (RB4 à RB7): Cette interruption est provoquée par un changement d'état sur l'une des pins RB4 à RB7 ( port B) programmées en entrée. Les bits associés à cette interruption sont : • RBIE : bit de validation ou d’autorisation d’interruption. • RBIF : drapeau ou indicateur d’interruption. N.B : Interruption RBI • Le front n'a pas d'importance pour l’interruption RBi (changement d’état qui compte). • L’interruption est effective sur les 4 pins ou pour aucune (les pins sont alors liées dans le cas de l’interruption); C-à-d il est impossible de limiter l’interruption à une seule de ces pins a part. • RB0 et RB4…RB7 s’appellent des pins interruptibles. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires c. Les sources d’interruptions Le PIC16F84 dispose de 4 sources différentes d’interruptions à savoir:
  • 73. 3) L'interruption TOI : Débordement du Timer TMR0 (ou fin de comptage) Elle est provoquée par le débordement du timer TMR0 (passage de 255 à 0). Les bits associés dans ce cas sont : • TOIE (bit de validation) • TOIF (drapeau) 4) L'interruption EEI : Fin d'écriture dans l'EEPROM (programmation de l’EEPROM) Cette interruption est déclenchée à la fin d'une écriture réussie dans l'EEPROM. Les bits associés sont • EEIE (validation) • EEIF (drapeau). 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires c. Les sources d’interruptions
  • 74. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires d. Le logigramme des interruptions A chaque interruption sont associés 3 bits: • Un bit de validation de chaque interruption (Enable : E) : qui permet d'autoriser ou d’interdire l'interruption en question. • Un indicateur (Flag : F): qui permet au processeur de savoir de quelle interruption il s'agit. • Un bit GIE : de validation générale de toutes les interruptions. Ces bits sont dans le registre INTCON a part l’indicateur EEIF de l'interruption EEI qui se trouve dans le registre EECON1.
  • 75. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires Pour que le déroutement vers le sous programme d’interruption en cours soit déclenché, il faut 3 conditions: 1 un des événements extérieurs (déclencheur) soit détecté par les Flags), 2 l’interruption correspondante soit validée (autorisée), 3 la validation générale soit active. f. Conditions du déroutement vers le sous programme d’interruption
  • 76. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires Pour commencer l’exécution du sous programme d’interruption, 5 étapes sont alors utiles: 1 Apparition d’un événement, sans perturber le déroulement normal des instructions, 2 Prise en compte de l’événement, exécution de l’instruction en cours (pointé par le PC), 3 Cycle d’attente, sauvegarde de l’adresse PC+1 dans la pile, 4 Chargement de l’adresse 004h dans le PC, 5 Exécution de l’instruction d’adresse 004h et chargement de l’instruction suivante, f. Séquences de déroutement vers le sous programme d’interruption Exemple: INTRB0:
  • 77. N.B 1 : A chaque interruption, 2 cycles machines sont perdus, sans compter: • la sauvegarde du contexte, • la restitution du contexte, • le retour au programme initial. N.B 2 : A cause de la faible taille de la pile dans le PIC16F84, une interruption n’est pas interruptible: 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires • Le bit GIE est mis donc à 0 au début du sous programme d’interruption. Cette opération est gérée automatiquement par le processeur. • Le bit GIE est mis à 1 à la fin du sous programme d’interruption. Cette opération est effectuée par le programmeur (dans le programme).
  • 78. Beaucoup d’instructions modifient le registre STATUS et/ou utilisent le registre W. Afin de les rendre dans les mêmes états à la fin du sous programme d’interruption qu’au début, il faut les sauvegarder au début et les recopier à la fin. • Le PC est sauvegardé dans la pile et restauré à la fin de l’interruption (automatiquement). • Le sous programme d’interruption doit gérer la sauvegarde et la restauration des registres: W, STATUS, ou autre registre utilisé dans ce sous programme (par l’utilisateur). On ne peut en aucun cas utiliser la pile pour cela car elle très petite et non accessible. On utilise alors une zone de la RAM : * les directives CBLOCK en ENDC pour définir une variable dans la RAM. * Les instructions Sauve_W et Sauve_Status pour la sauvegarde de W et de STATUS. h.1. Ou sauvegarder ces registres ? 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires h. Sauvegarde du contexte h.2. Comment sauvegarder ces registres ?  Pour W: on utilise l’instruction movwf sauve_W  Pour STATUS: On utilise l’instruction swapf (qui permet d’invertir les bits du poids fort et ceux du poids faible du registre STATUS sans le modifier) et on sauvegarde STATUS swappé.
  • 79. N.B: la sauvegarde de W est très simple, par contre la sauvegarde de STATUS est plus compliquée car:  Il n’existe pas d’instruction de transfert d’un registre vers un autre registre ; Il faut donc passer par W. toutes les opérations à 2 opérandes passent par le registre de travail W.  L’instruction movf modifie le bit Z du registre STATUS. Dans cette tache, on va utiliser W donc on commence par restituer STATUS en premier lieu sans le modifier sachant qu’il est sauvegardé ‘’sawapé’’. Pour ne pas modifier le bit Z du STATUS (déjà restitué) par l’instruction movf, on est obligé de passer par l’instruction swap à exécuter 2 fois. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires h. Sauvegarde du contexte i. Restaure du contexte
  • 80. Une fois le sous programme d’interruption terminé, après la restitution du contexte, il faut revenir au programme principal (ou initial). Pour ce faire, on utilise l’instruction RETFIE qui permet :  La revalidation générales des interruptions (GIE=1) en premier lieu,  Le retour au programme initial grâce à la valeur du PC empilée en second lieu. 5.2. Les interruptions II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires k. Retour au programme principal
  • 81. 5.3. Le chien de garde Watch Dog II. ARCHITECTURE DU PIC16f84: Souvent lorsque un appareil électronique ne fonctionne pas correctement, il faut: • le débrancher de son alimentation, • le remettre en service après. Et ceci pour obtenir le fonctionnement attendu. ‘’Personne ne s’explique ce disfonctionnement’’. Les causes du dysfonctionnement d’un PIC sont nombreux (même si son programme est sans erreur): • Coupure courte d’alimentation modifiant un registre, • Surtension due à la mise en fonction d’un appareil proche, • Champ électromagnétique modifiant un registre, • Action imprévue sur la patte 4 (RESET ou MCLR), • Choc mécanique modifiant un registre, • ……………………………………………… Le chien de garde est une fonction de sécurité principale, qui permet une initialisation (RESET) du PIC lorsque certains défauts apparaissent. a. Importance 5. Ressources auxiliaires ou périphériques
  • 82. 5.3. Le chien de garde Watch Dog II. ARCHITECTURE DU PIC16f84: C’est un Compteur 8 bits incrémenté en permanence (même si le pic est en mode sommeil) par une horloge RC intégrée indépendante de l’horloge système. Lorsqu’il déborde (arrive à TO =Time-Out), deux situations sont possibles: • Si le uC est en fonctionnement normal, le débordement provoque un RESET permettant d’éviter le plantage (ou blocage) du programme par certain processus indésirable non contrôlé (par exemple: attente d’une mesure de l’extérieure et qu’il n’y a pas de réponse. • Si le uC est en mode sommeil, ce débordement permet de réveiller le PIC (provoque un WAKE-UP): pour continuer l’exécution du programme normalement la ou elle s’est arrêtée avant de rentrer en mode sommeil ou SLEEP. Cette situation sert à réaliser des temporisations. 5. Ressources auxiliaires ou périphériques b. Structure et Fonctionnement
  • 83. • En fonctionnement normal, il est remis à 0 par le programme grâce à l’instruction CLWDT dans une branche ou une boucle qui s’exécute régulièrement. • Si le programme est bloqué, il ne passe plus dans la branche de remise à 0 et le comptage continue jusqu’au bout (la valeur Time Out), déclenche le chien de garde qui relance le programme (provoque un RESET). 5.3. Le chien de garde Watch Dog II. ARCHITECTURE DU PIC16f84: b. Fonctionnement N.B : Le test du bit TO (STATUS) au début du programme permet de savoir si : • TO=1 : le système vient d’être mis sous tension, • TO=0 le chien de garde vient de s’activer. 5. Ressources auxiliaires ou périphériques
  • 84. c. Mise en service N.B : • Dans sa mise en œuvre par un programmateur, le code du programme ne contient pas l’information de mise en service du WDT. Cette information peut être oubliée lors du téléchargement du programme dans la puce, ce qui génère un fonctionnement incorrect du programme en cas du blocage. • Le WDT ne peut pas être suspendue pendant l’exécution d’un programme et reste définitif jusqu’à une nouvelle programmation de la puce. Sa mise en service peut être réalisée de 2 façons différentes: • Par le programmeur dans l’EEPROM de configuration à l’aide de la directive: _CONFIG permet : * sa validation (option_WDT_ON) * ou non (option_WDT_OFF) •Directement par le programmateur. 5.3. Le chien de garde Watch Dog II. ARCHITECTURE DU PIC16f84: 5. Ressources auxiliaires ou périphériques
  • 85. L’horloge du WDT est ajustée pour que le Time-Out arrive toutes les 18ms (période de base). Il est possible d’augmenter cette durée par un prédiviseur programmable (partager avec le timer TMR0), l’affectation se fait par le bit PSA du registre OPTION: • PSA=1 : on utilise le prédiviseur pour le WDT • PSA=0 : sans prédiviseur ( il est affecté ou assigné au TMR0) Le prédiviseur programmable est fixé par les bits PS0, PS1, PS2 du registre OPTION. 8 valeurs sont alors possibles de 1 à 128, ce qui permet d’aller jusqu’à 128*18ms=2.3 s avant le déclenchement du chien de garde. e. Choix de la durée TO (Time OUT) 5.3. Le chien de garde Watch Dog
  • 86. 5.4. Le mode sommeil II. ARCHITECTURE DU PIC16f84: Lorsque le PIC n’a rien à faire (attente d’une mesure extérieure), ce mode est utilisé pour limiter sa consommation (Icc<0.5 uA) en choisissant les niveaux logiques programmés compte tenu de l’électronique reliée (PORTs traversés par un courant minimal). On peut placer le PIC en mode sommeil par le programme par l’instruction: SLEEP. Ainsi les séquences suivantes sont exécutées après cette instruction SLEEP: • Le bit TO est mis à 1, (Time Out) • Le bit PD est mis à 0, (Power Down) • Le chien de garde est remis à 0 (initialisé, équivalent à CLRWDT), • l’horloge système est arrêtée ce qui arrête l’exécution du programme. a. Mise en sommeil (standby , power down ou sleep) 5. Ressources auxiliaires ou périphériques
  • 87. 87 Trois événements permettent de réveiller le PIC: 1 Application d’un niveau logique 0 sur l’entrée MCLR:le PIC reprend l’exécution du programme à partir du début (de l’adresse 000). Les bits TO et PD du registre STATUS permettent à l’utilisateur de savoir l’événement qui a relancé le programme (mise sous tension, RESET ou Chien de garde): *TO=0 dépassement du temps du WDG *TO=1 : au démarrage, après CLRWDT ou SLEEP. *PD=0: par l’instruction SLEEP *PD=1 : au démarrage ou par CLRWDT 2 Écoulement du temps du timer du chien de garde lorsqu’il est activé : Le PIC reprend le programme à partir de l’instruction qui suit l’instruction SLEEP. 3 Apparition d’une interruption (RB0, RB4-RB7, ou EEI=fin d’écriture dans l’EEPROM): b. Réveil ou WAKE-UP 5.4. Le mode sommeil II. ARCHITECTURE DU PIC16f84: N.B : le WAKE-UP (ou le réveil) peut avoir lieu indépendamment du bit de validation des interruptions globales GIE. Dans ces cas 2 situations se présentent: *GIE=0: Le PIC reprend l’exécution du programme à partir de l’instruction qui suit SLEEP, l’interruption n’est pas prise en compte. *GIE=1: Le PIC exécute l’instruction qui suit SLEEP, puis se branche à l’adresse 004 pour exécuter la procédure d’interruption liée à l’événement qui à réveillé le PIC. Si l’instruction qui suit SLEEP n’est pas désirée, il faut utiliser l’instruction NOP. 5. Ressources auxiliaires ou périphériques
  • 88. 5.1. La mémoire EEPROM de données II. ARCHITECTURE DU PIC16f84: 5. Accès à la mémoire EEPROM • Le PIC16F84 possède 64 octets de données EEPROM d’adresses allant de 0h à 3Fh. • On peut y sauvegarder des valeurs qui seront conservées même si l’alimentation est éteinte et les récupérer lors de la mise sous tension (non volatile). • Cette mémoire est conçue pour effectuer des cycles rapides d’effacement/écriture. • L’EEPROM est accessible en lecture et en écriture par le programme et par un programmateur. • L’accès à cette mémoire est spécifique et requiert les registres suivants: * EEDATA contient les données (8bits) pour les opérations RD/WR, * EEADR contient les adresses des cases mémoires sélectionnées. * EECON1 contrôle les opérations de l’accès à l’EEPROM grâce à 4 bits: * RD et RW initient la lecture et l’écriture. Ils sont mis à 1 par le programme pour initier l’accès, et sont mis à zéro par le processeur à la fin de l’accès. * WREN autorise (1) ou non (0) l’accès en écriture. * WREN est mis à 1 par le processeur quand une opération d’écriture est interrompue par les trois mécanismes: MCL, RESET ou le chien de garde. * EEIF est un drapeau d’interruption signalant la fin de l’écriture physique dans l’EEPROM. Il doit être mis à 0 par le programme.
  • 89. a. Procédure de lecture Pour lire une donnée de la mémoire EEPROM, on suit les étapes suivantes: 1 Placer l’adresse relative dans le registre EEADR. Les adresses valides sont de 0x00 à 0x2F. 2 Mettre le bit RD de EECON1 à 1 3 Lire le contenu du registre EEDATA Opération de lecture: Opération au cours de laquelle un mot binaire stocké dans un emplacement particulier est retrouvé puis transféré dans un autre emplacement 5.1. La mémoire EEPROM de données II. ARCHITECTURE DU PIC16f84: Le drapeau WRERR est positionnée à 1 si une erreur d’écriture intervient. * EECON2 n’est pas un registre physique, utilisé comme registre de commande. En effet, l’écriture de valeurs spécifiques dans EECON2 provoque l’exécution d’une commande spécifique dans l’électronique interne du PIC (sécurité lors d’une écriture). • On y sauvegarde les paramètres semi-permanents comme: constantes, résultats d’acquisition, paramètres d’étalonnage ou de configuration…, N.B: L’opération de lecture depuis l’EEPROM est rapide (qlques ns) 5. Accès à la mémoire EEPROM
  • 90. b. Procédure d’écriture par le programme sans interruption 5.1. La mémoire EEPROM de données II. ARCHITECTURE DU PIC16f84: La procédure d’écriture en mémoire EEPROM est la suivante: 1 Autoriser l’écriture dans l’EEPROM : bit WREN=1,(une seule fois dans le programme) 2 Placer l’adresse relative dans EEADR, 3 placer la donné à écrire dans EEDATA, 4 placer 0x55 dans le registre EECON2 (sécurité), 5 Placer 0xAA dans EECON2 (sécurité), 6 Démarrer l’écriture en positionnant le bit WR à 1, 7 Attendre la fin de l’écriture (10 ms) par l’indicateur WR=0, 8 Recommencer au point 2 s’il y a d’autres données à écrire. Opération d’écriture: Opération au cours de laquelle un nouveau mot binaire est installé dans un certain emplacement de la mémoire . N.B: On peut écrire dans l’EEPROM par le biais: • Du programme (opération lente 10 ms), • D’un programmateur externe. 5. Accès à la mémoire EEPROM
  • 91. b. Procédure d’écriture par le programme avec interruption 5.1. La mémoire EEPROM de données II. ARCHITECTURE DU PIC16f84: Ce type d’écriture est presque identique à la précédente, il faut attendre une interruption générée par la fin d’écriture au lieu de lire le bit WR. 1 Autoriser l’écriture dans l’EEPROM : bit WREN=1,(une seule fois dans le programme) 2 Mise à 1 du bit EEIF du registre 3 Mise à 0 du bit EEIF du registre EECON1 4 Placer l’adresse relative dans EEADR, 5 placer la donné à écrire dans EEDATA, 6 Désactiver les interruptions par le bit GIE 7 placer 0x55 dans le registre EECON2 (sécurité) 8 Placer 0xAA dans EECON2 (sécurité), 9 Activer les interruptions par le bit GIE 10 Attendre la fin de l’écriture (10 ms à 20 ms) par l’indicateur: EEIF=1, 11 Remettre EEIF à 0. N.B : Un sous programme de sécurité doit être réalisé en assembleur pour éviter les manipulations malencontreuses utilisant le registre virtuel EECON2. 5. Accès à la mémoire EEPROM
  • 92. b. Écriture en EEPROM par le programmateur 5.1. La mémoire EEPROM de données II. ARCHITECTURE DU PIC16f84: Il est possible d’écrire dans cette mémoire lors de la programmation physique via un programmateur. Pour le programmateur, l’espace mémoire se situe de l’adresse 0x2100 à 0x212F. L’opération d’écriture dans ce cas utilise les instructions suivantes dans le programme: #pragma cdata[adresse] : pour se placer à une adresse, #pragma cdata[]=octet1, octet2,…..: pour écrire à partir de l’adresse courante, #pragma cdata[adresse]=octet : pour écrire à une adresse précise. N.B : • Ces instructions sont uniquement utilisées par le programmateur. Elles ne sont pas visibles dans l’EEPROM. • Ces instructions peuvent se placer dans n’importe ou dans le programme. 5. Accès à la mémoire EEPROM
  • 93. 5.1. La mémoire EEPROM de configuration II. ARCHITECTURE DU PIC16f84: Pendant la phase d’implantation d’un programme dans la mémoire Flash 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 contient un repérage quelconque que nous n’utiliserons pas, • 1 mot de configuration à l’adresse 0x2007 qui permet de : * Choisir le type de l’oscillateur utilisé pour l’horloge, * Valider ou non le WDT Timer, * Interdire la lecture des mémoires EEPROM, celle de programme et celle de données (protection). 5. Accès à la mémoire EEPROM
  • 94. a. Les Bits (ou "fusibles") de configuration: 5.1. La mémoire EEPROM de configuration
  • 95. Bits 1:0 FOSC1:FOSC0 : sélection du type d’oscillateur pour l’horloge 00: oscillateur LP (Low Power, consommation réduite jusqu’à 200 kHz 01 : Oscillateur XT, c’est le mode le plus utilisé, quartz jusqu’à 4 MHz 10 : Oscillateur HS, High Speed, quartz haute fréquence jusqu’à 10 MHz 11: Oscillateur RC Bit 2 WDTE : Validation du Timer WDT (chien de garde) 0: WDT inhibé 1 : WDT validé Bit 3 PWRTE : Validation d’une temporisation à la mise sous tension 0: temporisation validée 1 : temporisation inhibée Bit 13: 4 ; CP : protection en lecture du code programme 0: Protection activée 1 : pas de protection du code programme 5.1. La mémoire EEPROM de configuration II. ARCHITECTURE DU PIC16f84: 5. Registres internes b. Les Bits de configuration:
  • 96. II. ARCHITECTURE DU PIC16f84: 6. Ports d’entrée / sortie Le PIC 16F84 est équipé de 13 lignes d’entrées / sorties bidirectionnelles compatibles TTL réparties en deux ports : • Port A de 5 pins: RA0 à RA4 (situé à l’adresse 05h banque 0) • Port B de 7 pins : RB0 à RB7. Ces deux ports sont en lecture et en écriture utilisés pour communiquer avec le monde extérieur au PIC. Le courant max absorbé ou fourni de chaque pin est 25mA 5. Ressources auxiliaires ou périphériques
  • 97. 6.1. Le port A La figure suivante donne le câblage interne d’une patte du Port A du PIC. Cette pin est constituée des éléments suivants: • Data Latch: ce registre mémorise la valeur écrite dans le Port quand celui-ci est en sortie. • TRIS Latch : mémorise le sens (entrée ou sortie) de la patte. • TTL Input Buffer : permet la lecture de la valeur du Port. N.B : cette lecture est toujours effectuée sur la pin et non pas à la sortie de la bascule d’écriture. • Transistor N : deux cas se présentent: *en écriture: si la valeur écrite est 0: le transistor est saturé. si la valeur écrite est 1: il est bloqué. *en lecture : toujours ce transistor est bloqué. • Transistor P: IL permet d’alimenter la pin en sortie. 6. Ports d’entrée / sortie 5. Ressources auxiliaires ou périphériques II. ARCHITECTURE DU PIC16f84:
  • 98. 6.1. Câblage interne de la broche RA4 II. ARCHITECTURE DU PIC16f84: 6. Ports d’entrée / sortie La pin RA4 est une entrée Triger de Schmitt et à sortie drain ouvert. Cette patte RA4 est multiplexée avec l’entrée Timer0 Clock (double fonction) représentée par RA4/T0CKI, elle peut être utilisée soit: • Comme entrée / sortie du Port A • Comme entrée horloge pour le Timer 0 (TMR0). le choix d’une fonction se fait à l’aide du bit T0CS du registre OPTION : N.B : Toutes les autres pins RAi sont • des entrées TTL, • Des sorties à driver CMOS (drain ouvert) Bit5 :TOSC=choix du signal pour piloter le Timer 0: Timer piloté par horloge interne 1 : Timer piloté par signal externe via la broche RA4/TOCK1
  • 99. II. ARCHITECTURE DU PIC16f84: 6. Ports d’entrée / sortie La pin RA4 est une entrée/ sortie à drain ouvert (ou collecteur ouvert). Si on veut l’utiliser comme sortie (pour allumer une LED), il faut mettre une résistance externe ( pull-up externe) vers Vdd. Deux cas se présentent : • Si RA4 est à l’état 0, l’interrupteur (transistor N) est fermé, la sortie est reliée à la masse. • Si RA4 est à l’état 1, l’interrupteur est ouvert, la sortie est alors déconnectée d’où la nécessité de la résistance externe qui permet de placer la sortie au niveau haut.
  • 100. 6.1. Le port B II. ARCHITECTURE DU PIC16f84: 6. Ports d’entrée / sortie • 8 pins d’entrée sortie bidirectionnelles compatibles TTL; RB0, RB1…RB7. • Le registre PORTB situé à 06h banque 0 permet d’y accéder en lecture ou en écriture • Le registre TRISB (situé à 86h) dans la banque 1 permet de choisir le sens de chaque broche (entrée ou sortie) (voir TRISA) • Les quatre bits de poids fort (RB7-RB4) peuvent être utilisés pour déclencher une interruption sur changement d’état. • RB0 peut aussi servir d’entrée d’interruption externe.
  • 101. N.B : Le câblage interne du Port B ressemble à celui du Port A. La fonction particulière pilotée par le bit RBUP du registre OPTION permet d’alimenter (RBPU=0) ou non (RBPU=1) les sorties. Bit7 : RBPU= validation des résistances de rappel (ou de tirage) à Vdd pour le port B. 1: les résistances de rappel ne sont pas connectées en interne sur le port B 0 : les résistances de rappel internes sont connectées à Vdd sur le port B et ce en mode entrée uniquement. N.B : Le pull-up interne est désactivé dans les deux cas suivants: • à la mise sous tension, • quand le port est configuré en sortie. N.B: Le fait de connecter de façon interne sure une ligne du port B une résistance interne de tirage (bit RPU à 0) permet de fixer la tension de la pin configurée en entrée à un niveau haut (lorsqu’aucun signal n’est appliqué sur cette pin configurée en entrée).
  • 102. II. ARCHITECTURE DU PIC16f84: 7. L’alimentation Pins :Vdd et Vss La pin Vdd est reliée à la borne + de l’alimentation (source de tension), tandis que la pin Vss est reliée à la borne - • La tension de cette alimentation (dépend du type de la mémoire programme qui va de 4.5V à 6V pour la gamme standard F • Pour la gamme étendue LF, cette alimentation varie entre 2V et 6V. L’intensité du courant consommé peut aller de 1uA à 10mA. La consommation du uC est fonction de: • la tension d’alimentation • La fréquence interne • Le mode de fonctionnement (normal, sommeil..). Pour avoir un bon fonctionnement du PIC, les pattes Vdd et Vss doivent être découplées par deux condensateurs : • 1uF électrolytique • 10nF céramique L’utilisation et la mise en œuvre très simple des PICs les rendus extrêmement populaires. Pour le faire fonctionner, il suffit de: • alimenter le circuit via ses deux broches Vdd et Vss (Vdd entre 2.6 et 6V) • fixer sa vitesse (cadence) de fonctionnement par un quartz • élaborer un système d’initialisation sans avoir à couper son alimentation en cas de problèmes
  • 103. 103 a. Horloge: oscillateur à Quartz (Crystal) Ce système est très précis, il peut se diviser en trois types : • Le type XT est le plus utilisé avec des valeurs inférieures à 4MHz • Le type HS pour les fréquences élevées et ce a partir de 4MHz jusqu’à 20MHz • Le type LP est pour les basses fréquences inférieures à 200KHz, il est peu utilisé. L’horloge peut être interne ou externe. • L’horloge interne est constituée d’un oscillateur à quartz ou d’un oscillateur RC • L’horloge externe utilisée pour synchroniser le PIC sur un processus particulier. 8.1. Horloge interne: II. ARCHITECTURE DU PIC16f84: 8. Horloge système
  • 104. b. Horloge: oscillateur RC Cet oscillateur coûte peu cher à fabriquer, mais n’est pas très précis. Donc utilisé dans les applications qui ne nécessitent pas une grande précision dans son système horloge. Sa constante de temps est ζ=RC, Sa fréquence est alors F=1/ζ. 8.2. Horloge externe: Dans certains cas, une horloge externe au microcontrôleur peut être utilisée pour synchroniser le PIC sur un processus particulier. La broche OSC2 est alors inutilisée. 8.1. Horloge interne II. ARCHITECTURE DU PIC16f84: 8. Horloge système
  • 105. N.B : • Les PICs sont des composants statiques; Ils peuvent fonctionner avec des fréquences allant du continu (0 Hz) jusqu’à leurs fréquences maximales spécifiques (20 MHz). • Quel que soit l’oscillateur utilisé, l’horloge système (ou l’horloge instruction) est obtenue en divisant la fréquence Fosc par 4 (architecture Harvard avec Pipeline à deux étages). • Ainsi avec un quartz de 4 MHz, on obtient une horloge instruction de 1MHz; soit le temps pour exécuter une instruction est de 1us. II. ARCHITECTURE DU PIC16f84: 8. Horloge système
  • 106. 9. Systèmes de RESET Le système de reset peut avoir plusieurs causes: • Une mise sous tension POR (Power On Reset) • Une mise à 0 de la broche MCLR (inversée) : reset manuelle : • Un débordement du Timer du Chien de garde WDT II. ARCHITECTURE DU PIC16f84:
  • 107. 107 Le système de reset permet d’initialiser le fonctionnement du PIC, Il est important dans les cas suivants: • Lors de la mise sous tension du PC (démarrage), • lorsque le PIC présente des ratés ou se plante au cours de son fonctionnement indiqué par un débordement du Timer du chien de garde. Le RESET s’effectue en mettant un 0 logique sur la pin 4: MCLR du PIC soit de trois manières différentes: - Manuellement via une résistance de 1KΩ et un bouton poussoir, - Automatiquement par le biais d’un circuit RC (1uF, 1KΩ lors de la mise sous tension). - Mixte, en regroupant les deux techniques manuelle et automatique. Manuellement : Résistance 1KΩ et bouton poussoir Automatique: circuit RC Mixte : Automatique et manuelle 9. Systèmes de RESET II. ARCHITECTURE DU PIC16f84:
  • 108. 108 • Pour ce qui nous concerne, nous utiliseront MPLAB pour écrire, compiler avec un compilateur c et simuler nos programmes, ensuite nous utiliserons un programmateur pour copier les programme dans la mémoire flash du PIC pour la pratique. Les étapes nécessaires permettant de voir un programme s'exécuter sur un PIC sont : • Ecrire un programme en langage assembleur (dans MPLAB) dans un fichier texte et le sauvegarder avec l'extension .asm (éventuellement en c et l’enregistrer avec l’extension .c) • Compiler ce programme avec l'assembleur MPASM fourni par Microchip. Le résultat est un fichier avec l'extension .hex contenant une suite d'instruction compréhensible par le pic. • Copier le fichier .hex dans la mémoire programme du PIC (mémoire flash) à l'aide d'un programmateur adéquat. On peut utiliser les programmateurs de Microchip ou tout autre programmateur de pic. • Microchip propose gratuitement l'outil de développement MPLAB qui regroupe l'éditeur de texte, le compilateur MPASM, un outil de simulation et le logiciel de programmation. Le programmateur lui-même, n'est malheureusement pas gratuit. • Mettre le PIC dans son montage final, mettre sous tension et admirer le travail. 3.1 Les étapes de programmation des PIC. III. Programmation d’un PIC
  • 109.
  • 110. 2.1. Le registre TMR0 II. ARCHITECTURE DU PIC16f84: 3. Registres internes • Il s’agit d’un compteur 8 bits programmable incrémenté continuellement à une cadence constante indépendante de l’exécution du reste du programme. • Cette cadence est proportionnelle à la fréquence de l’horloge appliquée au PIC ou à la fréquence d’un signal appliqué sur la broche 3 (RA4/TOCKI) • Après avoir atteint la valeur 255, ce compteur reprend à 0. • Un pré-diviseur permet de programmer cette cadence. • Le fonctionnement du prédiviseur est géré dans le registre OPTION N.B : Après un Reset, tous les bits du registre OPTION sont à 1 2. Ressources auxiliaires ou périphériques
  • 111. 111 Le registre OPTION ou OPTION_REG (81H) Le registre d'OPTION contient les bits de contrôles du PRESCALER, de l'interruption externe INT, de l'horloge du timer TMR0, BIT 0,1 et 2: Sélectionnent le ratio du PRESCALER. Ces trois bits déterminent le ratio du prescaler. Les timers TMR0 et WDT s'incrémente au rythme de l'horloge divisée par le prescaler 3.5.3 le registre de configuration

Notes de l'éditeur

  1. « « « « « « « « « «