Etude du microcontrôleur pic16 f84
-
Upload
souag-abdelkrim -
Category
Technology
-
view
112 -
download
12
Transcript of Etude du microcontrôleur pic16 f84
INTRODUCTION LA NAISSANCE DU MICRO-ORDINATEUR
IDENTIFICATION DES PICs ARCHITECTURE EXTERNE DU PIC16F84ARCHITECTURE INTERNE DU PIC16F84
MODES D’ARESSAGEJEUX D’INSTRUCTIONS EN ASSEMBLEUR
BIBLIOGRAPHIECONCLUSION
Introduction :Un PIC est un microcontrôleur, c’est à dire une unité de traitement de l’information de type microprocesseur à laquelle on a ajouté des périphériques internes.
La dénomination PIC est sous copyright de Microchip. PIC = Peripheral Interface Controller
Les PICs sont des composants dits RISC (Reduce Instructions Construction Set), ou encore composant à jeu d’instructions réduit.
L’idée de l’invention :
L’idée était d’inventer un petit composant qui permet de faire Les mêmes fonctions principales d’un ordinateur .
La naissance du micro-ordinateur :
Intel crée le premier microprocesseur, le 4004. C'est un CPU 4 bits fonctionnant à 108 kHz et composé de 2300 transistors. Sa puissance de calcul énorme pour l'époque, lui permet de réaliser 60000 opérations par seconde.
1971
Fig-1 CPU a 4bits (4004).
La naissance du micro-ordinateur :
Texas Instruments met au point le premier microcontrôleur 4 bits.
1974
Fig-1 Le 1ere microcontrolleur TMS 1000
Les différentes familles des PICs :
1)Base-Line : utilise des mots d’instructions de 12 bits2)Mid-Range: utilise des mots de 14 bits
La famille des PICs est subdivisée en 3 grandes familles :
3)High-End: utilise des mots de 16 bits.
Identification d’un PIC :
16F84-04Catégorie du PIC:PIC Mid-RangeIndique une
mémoire de type FLASH
Identification du PIC
Fréquence horloge
maximale (4 Mhz)
Le PIC existe en 2 versions
PIC16F 84 alimentation classique (4.5 à 5.5V).
PIC16LF 84 l'alimentation (2 à 6V).
Organisation du 16F84 :Les caractéristiques principales :
35 instructions4 sources d'interruption1K mots mémoire programme Flash68 octets de données RAM64 octets de données EEPROM13 Entrée/Sortie1 Timer/Compteur
Architecture externe du PIC 16f84 :
LE BROCHAGE DU PIC :PORTA
PORT B
Oscillateur
Alimentation 5V
Reset (réinitialisation)
Architecture externe du PIC 16f84 :
PORTA : Il est constitué de 5 pattes, chacune représente un bit de son registre
RA0 RA1 RA2 RA3 RA4
TRISA
Architecture externe du PIC 16f84 :
PORTB : Il est constitué de 8 pattes, chaque patte représente un bit de son registre
RB0 RB1 RB6RB2 RB3 RB4 RB5 RB7
TRISB
Architecture externe du PIC 16f84 :
OSC1/CLOCKIN et OSC2/CLOCKOUT :Elle représente les pattes d’horloges, plusieurs types d'horloges peuvent être utilisés: à quartz ou à circuit RC
Architecture externe du PIC 16f84 :
Vdd & Vss : sont les pattes d'alimentation. VDD doit être compris entre 2 et 6 V en utilisation.Lors de la programmation: 4,5 V >VDD >5 V
Architecture externe du PIC 16f84 :
MCLR : est la patte de Reset et d'entrée de la tension de programmation. Les circuits PIC intégrant en interne le circuit de Reset automatique à la mise sous tension.cette broche doit être reliée à la VDD en utilisation normale.
Tableau comparatif::
CPUProgram MemoryFLASH
Free-runCounter
DataMemoryEEPROM
PORTA PORTB
DataMemory
RAM
Structure interne simplifié du PIC:
Structure interne du PIC:
Architecture interne simplifié du PIC:
Architecture interne simplifié du PIC:
La mémoire programme (flash):
Cette mémoire de 1024 mots stocke le programme. Elle est non volatile et reprogrammable à souhait. Chaque position de 14 bits contient une instruction. L'emplacement du programme peut se situer à n'importe quel endroit de la mémoire.
Architecture interne simplifié du PIC:
L'ALU et le registre W:
C'est une ALU 8 Bits qui réalise les opérations arithmétique et logique entrel'accumulateur W et n'importe quel autre registre 'F' ou constante K.
L'accumulateur W est un registre de travail 8 bits, il n'a pas d'adresse comme les autres SFR. Pour les instructions à deux opérandes, c'est toujours lui qui contient un des deux opérandes. Pour les instructions à un opérande, celui-ci peut être soit W soit n'importe quel registre F.
Le résultat de l'opération peut être placé soit dans le registre de travail W soit dans le registre F
Architecture interne simplifié du PIC:
Le Watchdog TimerWDT (Chien de garde):
C’est un compteur 8 bits incrémenté en permanence (même si le µC est en mode sleep) par une horloge RC intégrée indépendante de l'horloge système. Lorsqu’il déborde, (WDT TimeOut), deux situations sont possibles :
•Si le µC est en fonctionnement normal, le WDT time-out provoque un RESET. Ceci permet d’éviter de rester planté en cas de blocage du microcontrôleur par un processus indésirable non contrôlé•Si le µC est en mode SLEEP, le WDT time-out provoque un WAKE-UP, l'exécution du programme continue normalement là où elle s'est arrêtée avant de rentrer en mode SLEEP. Cette situation est souvent exploitée pour réaliser des temporisations
L'horloge du WDT est ajustée pour que Le Time-Out arrive toutes les 18 ms. Il est cependant possible d'augmenter cette durée en faisant passer le signal Time-Out dans un prédiviseur programmable (partagé avec le timer TMR0) l'affectation se fait à l'aide du bit PSA du registre OPTION_REG o PSA = 1 --on utilise le prédiviseur o PSA = 0 --pas de prédiviseur
Architecture interne simplifié du PIC:La mémoire RAM – Registres:
Elle est constituée de 2 parties:
1) SFR : (Special Function Register), ce sont les registres du fonctionnement du PIC ,l’ensemble est appelé fichier des registres
2) GPR : (General Propose Register), sont des positions mémoire que l'utilisateur peut utiliser pour stocker ses variables et ces données.
La mémoire RAM est organisé en 2 banks Pour accéder a un registre , il faut tout d'abord se placer dans le bank ou il se trouve ,ceci est réalisé en positionnant le bit RP0 du registre STATUS.
RP0 = 0 → Bank 0 RP0 = 1 → Bank 1
Architecture interne simplifié du PIC:
Adresse 00 et 80 ,INDF:
Cette adresse ne contient pas de registre physique, elle sert pour l’adressage indirect.
Architecture interne simplifié du PIC:
Adresse 01,TMR0 et 81 OPTION:Contenu du Timer (8 bits). Il peut être incrémenté par l’horloge (fosc/4) ou par la broche RA4 du PORTA (mode compteur)
RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0
Le choix de l’horloge se fait à l'aide du bit T0CS du registre OPTION_REG
TOCS=0 → Horloge interneTOCS=1 → Horloge externe appliqué a RA4
En cas d’horloge externe , on peut choisir le front sur lequel le Timer s’incremente.
TOSE=0 → Increm sur fronts montantTOSE=1 → Increm sur fronts descendantsOPTION_REG
Architecture interne simplifié du PIC:
Adresse 02 et 82 ,PCL:
Le Program Counter est un registre de 13 bits qui s'incrémente automatiquement lors de l'exécution du programme. On peut toutefois le modifier par programme pour réaliser ce qu'on appelle un goto calculé. On y accède par les registres PCL et PCLATH
PCH
PCL
PCLATH
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
Appelé aussi Registre d’état , les cinq bits de poids faible de ce registre sont en lecture seule , ce sont des témoins (flag en anglais) caractérisant le résultat de l’opération réalisée par l’UAL.
IRP RP1 DCRP0 TO PD Z C
STATUS
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
IRP RP1 DCRP0 TO PD Z C
STATUS
C (Carry) : ce bit est mis à 1 lors d'opérations avec retenue et si le résultat est négatif.
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
DC (Digit Carry) : ce bit est mis à "1" lorsque une retenue s'est produite entre les bit 3 et 4.
IRP RP1 RP0 TO PD Z C
STATUS DC
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
IRP RP1 DCRP0 TO PD Z C
STATUS
Z (Zero) : ce bit est mis à "1" lorsqu’ un résultat arithmétique ou logique est nul.
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
PD (Power Down) : caractérise l’activité du chien de garde WDT
IRP RP1 DCRP0 TO Z C
STATUS PD
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
IRP
TO (Time Out) : Le bit est mis à 1 lors de la mise sous tension ou lors de l'exécution des instructions CLRWDT et SLEEP. Ce bit est mis à 0 si le timer chien de garde déborde.
RP1 DCRP0 PD Z C
STATUS TO
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
RP0 (Time Out) : Le bit RP0 sert à sélectionner la page des registres:RP0=0 →Accés au registre d’adresse 00 a 4F RP0=1 →Accés au registre d’adresse 80 a CF
IRP RP1 DCPD Z C
STATUS TORP0
Architecture interne simplifié du PIC:
Adresse 03 et 83 ,STATUS:
IRP et RP1 : ne sont pas utilisés par le PIC16F84A et devrait être programmé comme effacé. utilisation de ces bits comme usage général R / W bits est pas recommandé
IRP
STATUS DCPD Z CTORP0RP1
Architecture interne simplifié du PIC:
Adresse 04 et 84 ,FSR:
FSR (File Select Register) :Appellé aussi Registre de sélection, il sert à sélectionner la mémoire de données, pour pouvoir y accéder.
Architecture interne simplifié du PIC:
Adresse 05,PORTA et 85 ,TRISA: est un 5 bits de large , bi-directionnelle. Le registre correspondant de direction de données est TRISA. La mise a 1 des bits du registre TRISA configura le PORTA correspondant a une entrée .La mise a 0 des bits du registre TRISA configura le PORTA correspondant a une sortie.
TRISA0
PORTA -- -- RA1-- RA4/T0CKI RA3 RA2 RA0
TRISA TRISA1TRISA2TRISA3TRISA4---
Architecture interne simplifié du PIC:
Adresse 05,PORTA et 85 ,TRISA: est un 5 bits de large , bi-directionnelle. Le registre correspondant de direction de données est TRISA. La mise a 1 des bits du registre TRISA configura le PORTA correspondant a une entrée .La mise a 0 des bits du registre TRISA configura le PORTA correspondant a une sortie.
TRISA0
PORTA -- -- RA1-- RA4/T0CKI RA3 RA2 RA0
TRISA TRISA1TRISA2TRISA3TRISA4---
Architecture interne simplifié du PIC:
Adresse 05,PORTA et 85 ,TRISA: Pin RA4 est multiplexé avec le module horloge Timer0 entrée pour devenir le broche RA4 / T0CKI. Ce Pin est une entrée trigger de Schmitt (type de bascule ).
TRISA0
PORTA -- -- RA1-- RA4/T0CKI RA3 RA2 RA0
TRISA TRISA1TRISA2TRISA3TRISA4---
Architecture interne simplifié du PIC:
Adresse 06,PORTB et 86 ,TRISB: est un 8 bits de large , bi-directionnelle. Le registre correspondant de direction de données est TRISA. .La mise a 1 des bits du registre TRISB configura le PORTB correspondant a une entrée ..La mise a 0 des bits du registre TRISB configura le PORTB correspondant a une sortie.
Architecture interne simplifié du PIC:
Adresse 06,PORTB et 86 ,TRISB:
RP4:RB7 :Ces broches peuvent aussi être configurés pour l’opération des interruptions en se servant du registre INTCON ET OPTION
Architecture interne simplifié du PIC:
Adresse 06,PORTB et 86 ,TRISB:
RP4:RB7 :Ces broches peuvent aussi être configurés pour l’opération des interruptions en se servant du registre INTCON ET OPTION
Architecture interne simplifié du PIC:
Adresse 06,PORTB et 86 ,TRISB:
RP4:RB7 :Ces broches peuvent aussi être configurés pour l’opération des interruptions en se servant du registre INTCON ET OPTION
Architecture interne simplifié du PIC:
La mémoire EEPROM de données est constituée de 64 octet que l'on peut lire et écrire depuis un programme. Ces octets sont conservés après une coupure de courant et sont très utiles pour conserver des paramètres.
La mémoire EEPROM:
Cette mémoire n’est pas directement mappée dans l'espace du fichier de registre. Elle est accessible indirectement par le biais de la fonction spéciale Registres. Il ya quatre SFR utilisés pour lire et écrire cette mémoire. Ces registres sont:
Architecture interne simplifié du PIC:
C’est le registre dans lequel est disponible la donnée qu’on est allé chercher à une certaine adresse de la mémoire EEPROM.
C’est aussi le registre dans lequel on place la donné pendant une opération d’écriture
Adresse 08,EEDATA:
Architecture interne simplifié du PIC:
Appellé aussi EEprom ADRess , c’est le registre dans lequel on écrit l’adresse de la mémoire de données EEPROM
Adresse 09,EEADR:
Architecture interne simplifié du PIC:
Appellé aussi EEprom CONtrol1 , c’est un registre qui permet de définir le mode de fonctionnement de la mémoire de données EEPROM
Adresse 88,EECON1:
WR RD
EECON1 WRENWRERREEIF
Architecture interne simplifié du PIC:
Adresse 88,EECON1:
WR RD
EECON1 WRENWRERREEIF
RD (ReaD) :Ce bit se met a 1 pour lire une donnée. La remise a 0 est automatique
Architecture interne simplifié du PIC:
Adresse 88,EECON1:
WR (WRite) :Ce bit se met a 1 pour écrire une donnée. La remise a 0 est automatique
RD
EECON1 WRENWRERREEIF WR
Architecture interne simplifié du PIC:
Adresse 88,EECON1:
WREN (Write Enable) :Ce bit se met a 0 pour interdire l’écriture en EEPROM de données.
WR RD
EECON1 WRERREEIF WREN
Architecture interne simplifié du PIC:
Adresse 88,EECON1:
WRERR (Write Error) :Ce bit se met a 1 s’il y’a une erreur d’ecriture
WR RD
EECON1 WRENEEIF WRERR
Architecture interne simplifié du PIC:
Adresse 88,EECON1:
WR RD
EECON1 WRENWRERREEIF
EEIF (EEProm Interrupt Flag) :Ce bit se met a 1 quand l’écriture est terminée.
Architecture interne simplifié du PIC:
Adresse 89,EECON2:Appellé aussi EEprom CONtrol2 , c’est un registre de sécurité d’écriture en EEPROM de données
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:Appellé aussi INTerrupt CONtrol c’est un registre qui préside au fonctionnement des interruptions.Les quatre sources d’interruption
possibles sont :
1) la fin d’une programmation de l’EEPROM de données .
2) le débordement du timer interne .3) une commande externe appliquée
sur la pin 6 (RB0/INT).4) un changement d’état sur l’une des
pins 10, 11, 12 ou 13 (respectivement RB4,RB5, RB6,RB7).
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
RBIF (RB Interrupt Flag) :Ce bit se met a 1 quand l’interruption est provoquée par les broches RB4-RB7
INTCON INTFTOIFTOIEEEIE RBIEINTEGIE RBIF
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
INTF (Interrupt Flag) :Ce bit se met a 1 quand l’interruption est provoquée par la broche RB0/INT
RBIF
INTCON TOIFTOIEEEIE RBIEINTEGIE INTF
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
TOIF(Timer 0 Interrupt Flag) :Ce bit se met a 1 quand le timer est débordée
RBIF
INTCON INTFTOIEEEIE RBIEINTEGIE TOIF
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
RBIE(RB Interrupt Enable) :Ce bit se met a 1 pour autoriser les interruptions provoquées par un changement d'états sur l'une des broches RB4 à RB7.
RBIF
INTCON INTFTOIFTOIEEEIE INTEGIE RBIE
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
INTE(Interrupt Enable) :Ce bit se met a 1 pour autoriser l’interruption provoquée par un changement d'état sur broche RB0/INT.
RBIF
INTCON INTFTOIFTOIEEEIE RBIEINTEGIE
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
RBIF
INTCON INTFTOIFEEIE
T0IE(Timer 0 Interrupt Enable) :Ce bit se met a 1 pour autoriser l'interruption provoquée par ledébordement du TIMER0
RBIEINTEGIE T0IE
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
RBIF
INTCON INTFTOIF
EEIE(EEProm Interrupt Enable) :Ce bit se met a 1 pour autorise l'interruption venant de l'EEPROM
RBIEINTEGIE T0IEEEIE
Architecture interne simplifié du PIC:
Adresse 0Bet 8B ,INTCON:
RBIF
INTCON INTFTOIF
GIE(Global Interrupt Enable) :masque global d’inter
RBIEINTET0IEEEIEGIE
Architecture interne simplifié du PIC:
La mémoire EEPROM de configuration:
Pendant la phase d'implantation d'un programme dans la mémoire programme du PIC, on programme aussi une EEPROM de configuration constituée principalement de :
FOSC0FOSC1WDTEPWRTECPCPCPCPCPCPCPCPCPCP
Architecture interne simplifié du PIC:
La mémoire EEPROM de configuration:
Pendant la phase d'implantation d'un programme dans la mémoire programme du PIC, on programme aussi une EEPROM de configuration constituée principalement de :
FOSC0FOSC1WDTEPWRTECPCPCPCPCPCPCPCPCPCP
FOSC1 ET FOSC0:Sélection du type d'oscillateur pour l'horloge11 : Oscillateur RC 10 : Oscillateur HS (High speed) : quartz haute fréquence (jusqu'à 10 MHz) 01 : Oscillateur XT, c'est le mode le plus utilisé, quartz jusqu'à 4 MHz 00 : Oscillateur LP (Low power), consommation réduite, jusqu'à 200 kHz
Architecture interne simplifié du PIC:
La mémoire EEPROM de configuration:
Pendant la phase d'implantation d'un programme dans la mémoire programme du PIC, on programme aussi une EEPROM de configuration constituée principalement de :
FOSC0FOSC1WDTEPWRTECPCPCPCPCPCPCPCPCPCP
WDTE:validation du timer WDT (chien de garde)1 : WDT validé 0 : WDT inhibé
Architecture interne simplifié du PIC:
La mémoire EEPROM de configuration:
Pendant la phase d'implantation d'un programme dans la mémoire programme du PIC, on programme aussi une EEPROM de configuration constituée principalement de :
FOSC0FOSC1WDTEPWRTECPCPCPCPCPCPCPCPCPCP
PWRTE:validation d'une temporisation à la mise sous tension 1 : temporisation inhibée 0 : temporisation validée
Architecture interne simplifié du PIC:
La mémoire EEPROM de configuration:
Pendant la phase d'implantation d'un programme dans la mémoire programme du PIC, on programme aussi une EEPROM de configuration constituée principalement de :
FOSC0FOSC1WDTEPWRTECPCPCPCPCPCPCPCPCPCP
CP:Protection en lecture du code programme 1 : pas de protection 0 : protection activée
Modes d’adressage:1)Adressage immédiat :La donnée est contenue dans l'instruction.
Exemple : movlw 0xC4 ; Transfert la valeur 0xC4dans W2)Adressage direct :La donnée est contenue dans un registre. Ce dernier peut être par un nom (par exemple W)ou une adresse mémoire.
Exemple : movf 0x2B, 0 ; Transfert dans W la valeur contenue à l'adresse 0x2B.
3)Adressage indirect L'adresse de la donnée est contenue dans un pointeur .Dans les PIC, un seul pointeur est disponible pour l'adressage indirect : FSR. Contenu à l'adresse 04h dans les deux banques, il est donc accessible indépendamment du numéro de banque.
Les directives de MPASM :Les directives de l'assembleur sont des instructions qu'on ajoute dans le programme et qui seront interprétées par l'assembleur MPASM.les plus utilisées sont :LIST: permet de définir un certain nombre de paramètres comme le processeur utilisé (p), la base par défaut pour les nombres (r), le format du fichier hex à produire (f) ainsi que d'autres paramètres. Exemple : LIST p=16F84A, r=dec, f=inhx8mINCLUDE: permet d'insérer un fichier source. Par exemple le fichier p16f84A.inc exemple : INCLUDE "p16f84A.inc"_CONFIG: permet de définir les 14 fusibles de configuration qui seront copié dans l'EEPROM de configuration lors de l'implantation du programme dans le PIC exemple :_CONFIG _CP_OFF & _XT_OSC & _PWRTE_OFF& _WDT_OFF
Jeux d’instructions en assembleur du PIC:
Jeux d’instructions en assembleur du PIC:
Conclusion:
Il est recommandée aux programmeurs de bien choisir un PIC du point de vue performance ,Sa mémoire , le prix , et sa disponibilité dans le marché du coté hardware et software comme les outils de développement .
[1] PIC16F8X, document DS30430C, www.microchip.com[2] PIC16F84a, document DS35007A, www.microchip.com[3] Programmation des PIC, Première partie-PIC16F84-Révision 5, http://www.abcelectronique.com/bigonoff/organisation.php?2654c[4] PIC16F684 Data Sheet CMOS Microcontrollers with nanoWatt Technology[5] ] PIC16F684A Data Sheet [6] Le microcontrôleur PIC 16F84 ,L’auteur Pierre LOGLISCI[7] PIC 16F84 ,L’auteur Philippe Hoppenothttp://lsc.univ-evry.fr/~hoppenot/presentationfrancaise.html
BIBLIOGRAPHIE