Etude du microcontrôleur pic16 f84

Post on 16-Jan-2017

112 views 12 download

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