Microcontrôleur PIC Microchip part1/2

48

Transcript of Microcontrôleur PIC Microchip part1/2

Page 1: Microcontrôleur PIC Microchip part1/2
Page 2: Microcontrôleur PIC Microchip part1/2

MICROCONTRÔLEUR-PIC-

2015-2016

Page 3: Microcontrôleur PIC Microchip part1/2

PLAN

Introduction au microcontrôleur (PIC)

Programmation des PICs

PIC 16F84A

PIC 16F877

Page 4: Microcontrôleur PIC Microchip part1/2

PLAN

Introduction au microcontrôleur (PIC)

Programmation des PICs

PIC 16F84A

PIC 16F877

Page 5: Microcontrôleur PIC Microchip part1/2

MICROCONTRÔLEUR ??Définition : (rappel)

Circuit programmable capable d’exécuter un programme et qui possède des

circuits intégrés d’interface avec le monde extérieur.

Les avantages des microcontrôleurs : (rappel)

- Diminution de l’encombrement du matériel et du circuit imprimé

- Simplification du tracé du circuit imprimé (plus besoin de tracer de bus !)

- Augmentation de la fiabilité du système nombre de composants P

- Diminution de la consommation

- Le microcontrôleur contribue à réduire les coûts à plusieurs niveaux:

moins cher que les composants qu’il remplace

-Diminution des coûts de main d’œuvre (conception et montage)

- Environnement de programmation et de simulation évolués

Page 6: Microcontrôleur PIC Microchip part1/2

MICROCONTRÔLEUR ??

Page 7: Microcontrôleur PIC Microchip part1/2

MICROCONTRÔLEUR ??Les types (rappel) :

De nos jours , il existe plusieurs types de microcontrôleur :

Page 8: Microcontrôleur PIC Microchip part1/2

MICROCONTRÔLEUR ??

Page 9: Microcontrôleur PIC Microchip part1/2

Microcontrôleur PIC

Actuellement les modèles Microchip, sont classés en 3 grandes familles :

Base-Line ; Mid-Range ; High-End

Nous nous limiterons à la famille Mid-Range, sachant que si vous avez tout compris, vous passerez très facilement à une autre famille, et même à un autre microcontrôleur

Page 10: Microcontrôleur PIC Microchip part1/2

Microcontrôleur PIC

Malgré qu’il y a plusieurs modèles de famille de PIC , tous ces µC ont

quelques caractéristiques en communs telles que :

• Digital I/O ports

• On-chip timer avec 8-bit prescaler

• Power-on reset

• Watchdog timer

• Power-saving SLEEP mode

• courant débité

• External clock interface

• RAM data memory

• EPROM or Flash program memory

Page 11: Microcontrôleur PIC Microchip part1/2

Microcontrôleur PIC

quelques PICs présentent plus de caractéristiques :

• Entrée analogique (Analog input channels)

• Comparateur analogique (Analog comparators)

• TIMER additionnel (Additional timer circuits)

• EEPROM data memory

• interrupteur (External and internal interrupts)

• oscillateur intérieur (Internal oscillator)

• modulation-largeur-impultion (Pulse-width modulated (PWM) output)

• USART serial interface (Universal Synchronous Asynchronous Receiver Transmitter )

Et autres qui present plus encore ! :

• CAN bus interface

• Direct LCD interface

• USB interface

• Motor control

Page 12: Microcontrôleur PIC Microchip part1/2

‘‘L’intérieur ’’ d’un microcontrôleurPIC

Program Memory (Flash) :

-Contient le programme à exécuter

-Son contenu demeure conservé après mise hors tension

Data Memory (RAM) :

- Utilisée pour stocker les variables du programme : Pour pouvoir travailler normalement le

μC doit stocker des données temporaire quelque part et c’est la qu’intervient la RAM.

-Volatile : données perdues en cas de coupure de l’alimentation

La mémoire EEPROM (Electrical Erasable Programmable Read Only Memory)

-vous pouvez lire et écrire depuis votre programme. Ces octets sont conservés après une

coupure de courant (non- Volatile ) et sont très utiles pour conserver des paramètres

semi-permanents.

Page 13: Microcontrôleur PIC Microchip part1/2

Les registres spéciaux : SFR (Special Function Registers)

- Ils sont utilisés par le µC pour contrôler ses opérations internes

- Le nombre des SFR varie selon la complexité du µC

Parmi les SFR les plus importants/utilisés :

• OPTION register

• I/O registers

• Timer registers

• INTCON register

• A/D converter registers

Page 14: Microcontrôleur PIC Microchip part1/2

PLAN

Introduction au microcontrôleur (PIC)

Programmation des PICs

PIC 16F84A

PIC 16F877

Page 15: Microcontrôleur PIC Microchip part1/2

PROGRAMMATION

Comment procéder ??Edition du programme

Compilation du programmeExécution du programme

Page 16: Microcontrôleur PIC Microchip part1/2

PROGRAMMATION Edition code source

Compilation

(Simulation)

Chargement

Test sur le matériel

Processus de développement d’un programme pour une

‘‘simple’’ application

Page 17: Microcontrôleur PIC Microchip part1/2

PROGRAMMATION

Pourquoi utiliser le langage C

l’assembleur proche du langage machine est trop peu lisible est mal adaptés

à une architecture complexe de programme.

Il existe de nombreux langage de haut niveau :

Certain développer pour des microcontrôleurs, d’autres largement

répandus dans les ordinateurs ont étés adaptés aux besoins des

microcontrôleurs.

C’est le cas du C.

Page 18: Microcontrôleur PIC Microchip part1/2

PROGRAMMATION

Pré-requises:

basiques de langage C ( types de base , Les opérateurs , Les instructions de

contrôle , les fonctions … )

Mikroc Pro for PIC ( édition du programme , compilation , librairies …) .

Page 19: Microcontrôleur PIC Microchip part1/2

PLAN

Introduction au microcontrôleur (PIC)

Programmation des PICs

PIC 16F84A

PIC 16F877

Page 20: Microcontrôleur PIC Microchip part1/2

Microcontrôleur PIC 16F84A

Les caractéristique essentielles du Pic 16F84A :

Operating frequency/ speed 0-20 MHz

Power supply voltage 2.0-5.5V

13 I/O pins with individual direction control

-High current sink/source for direct LED drive

(25 mA sink/source max. per pin)

68 bytes of Data RAM (Data memory ; volatile)

64 bytes of Data EEPROM (Data memory ; non-volatile)

- 10.000.000 typical erase/write cycles

Page 21: Microcontrôleur PIC Microchip part1/2

1024 words (1K) of program memory flash:

- 10.000.000 typical erase/write cycles

Four interrupt sources:

- External RB0/INT pin- TMR0 timer overflow- PORTB<7:4> interrupt-on-change- Data EEPROM write complete

TMR0: 8-bit timer/counter

Watch-dog timer (chien de garde)

Page 22: Microcontrôleur PIC Microchip part1/2
Page 23: Microcontrôleur PIC Microchip part1/2

1-La mise sous tension :

• Lorsque le µC est mis sous-tension , il doit exécuter son programme dés le début ( le compteur du programme 'PC' forcé à 0 ).

• Le CPU (Central Processing Unit) démarre l’exécution de son programme lorsque la condition RESET n’est plus maintenue (lorsque la pin MCLR est mise au niveau haut )

Page 24: Microcontrôleur PIC Microchip part1/2

2-Les ports parallèles :2-1 Caractéristiques électriques :

Page 25: Microcontrôleur PIC Microchip part1/2

2-2 les entrées logique :

• Le PIC ne fonctionne qu’avec deux niveaux logiques 0 et 1 ; bas et haut ( les broches comportent des trigger de Schmitt ou TLL).

• Pour déterminer si un signal sera bien reçu (interprété) par le circuit/la broche logique ,il est nécessaire de comprendre le fonctionnement des entrées (les broches)

Page 26: Microcontrôleur PIC Microchip part1/2
Page 27: Microcontrôleur PIC Microchip part1/2

2-3 Resistance Pull-up/down :

Ayant une grande valeur d’ordre 10K , elle permet de maintenir les broches (input) dans un niveau logique donné (niveau par défaut ).

L’entrée du µC fig.(a) (resp. fig.(b) ) est maintenue au niveau logique 1 (resp. 0 ) ; lorsqu’on ferme l’interrupteur l’entrée est forcée à la masse (resp. +V) qui correspond à 0 (resp. 1)

Resistance Pull-up Resistance Pull-down

Page 28: Microcontrôleur PIC Microchip part1/2

2-4 Port B ( Pic 16F84A) :

• Ce port peut être utilisé généralement dans les deux directions (in/out) (8 bits) , et doté de résistance Pull-up ‘Weak pull-up’ pour chaque broche.

• Le registre TRISB permet la configuration de la direction des broches ; Chaque bit positionné à 1 configure la pin correspondante en entrée. Chaque bit à 0 configure la pin en sortie

• La configuration des broches en mode out se fait à l'aide du registre PORTB (faire sortir 5v ou 0v) (0=0V ; 1=5V)

• Le registre OPTION (bit 7) permet une configuration globale (tout ou rien) des résistances ‘Weak pull-up’ ;

• La résistance interne (Weak pull-up) est automatiquement désactivée pour les broches en mode output/sortie .

• Le bit 0 du PORT B peut également être utilisé comme entrée d'interruption externe. Le choix du front de déclenchement se fait en configurant le bit 6 du registre OPTION.

• Les 4 broches RB7:RB4 (PB7 PB6 PB5 et PB4) provoquent une interruption sur un changement d'état si elles sont configurées en ENTREE via le registre INTCON (configurable ON/OFF)

Page 29: Microcontrôleur PIC Microchip part1/2

2-5 Port A ( Pic 16F84A) :

• Comme pour le PORTB , ce port peut être utilisé généralement dans les deux directions (in/out) (5 bits)

• La configuration de direction se fait à l'aide du registre TRISA : Chaque bit positionné à 1 configure la pin correspondante en entrée. Chaque bit à 0 configure la pin en sortie ( 0 = out ; 1 =in )

• La configuration des broches en mode sortie se fait à l'aide du registre PORTA (0=0V ; 1=5V)

Page 30: Microcontrôleur PIC Microchip part1/2

RA4 ( Pic 16F84A) :

• En entrée, la broche RA4 peut être utilisée soit comme E/S numérique normale, soit comme entrée horloge pour le TIMER TMR0

• En sortie, RA4 est une E/S à drain ouvert (open drain), pour l'utiliser comme sortie logique (0/1), il faut ajouter une résistance de pull-up externe (470 ohms–4.7 K ohms) , dans ce cas le courant provient de la résistance pull-up.

•Output ‘open drain’ : ce type de broche a un mode ‘Out’ flexible , il peut être utilisé : comme sortie logique normal (fig. a) , ou comme un driver direct pour une charge légère (fig. b)(pour le Pic 16F84A Vod max =8.5 V )

Resistance Pull-up sur RA4

Page 31: Microcontrôleur PIC Microchip part1/2

2-6 l’horloge ( Pic 16F84A) :

• La fréquence de l'horloge interne du PIC est obtenue en divisant par 4 la fréquence de l'horloge externe.

• Le PIC 16F84A peut opérer dans 4 mode :

-LP : Low Power Crystal (32,768 kHz jusqu'à 200 kHz)-XT : Crystal/Resonator 1–4 MHz -HS : High Speed > 4MHz : grande consommation de courant-RC : Resistor/Capacitor difficile de prévoir la fréquence d'oscillation avec certitude.

Mode LP , XT et HSMode RC

Page 32: Microcontrôleur PIC Microchip part1/2

Sélection des capacités adéquates pour un Quartz

Quartz

Page 33: Microcontrôleur PIC Microchip part1/2

3 : les registres spéciaux ( Pic 16F84A) :

vue générale des registres :

Page 34: Microcontrôleur PIC Microchip part1/2

3-1 STATUS REGISTER :

• Contient les différents bits flags liés aux opérations arithmétiques, les indicateurs de RESET et le bit de sélection de la BANK mémoire.

Page 35: Microcontrôleur PIC Microchip part1/2

3-2 OPTION REGISTER :

• Ce registre en lecture écriture permet de configurer les pré-diviseurs(Prescaler) du TIMER et du WATCHDOG, la source du TIMER, le front des interruptions et le choix du Pull up sur le Port B.

Page 36: Microcontrôleur PIC Microchip part1/2

3-3 Gestion des interruptions :

• Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure d'interruption (void interrupt() ). A la fin de cette procédure, le microcontrôleur reprend le programme à l’endroit où il s’était arrêté.

• A chaque interruption sont associés deux bits: un bit de validation (E:enabale) et un drapeau (F:flag). Le premier permet d'autoriser ou non l'interruption, le second permet au programmeur de savoir de quelle interruption il s'agit.

• Toutes les sources d’interruption arrivant à la même adresse, si le programmeur utilise plusieurs sources d’interruptions, il lui faudra déterminer lui-même laquelle il est en train de traiter.

• Une interruption ne peut pas être interrompue par une autre interruption. Les interruptions sont donc invalidées automatiquement lors du saut à void interrupt() par l’effacement du bit GIE (que nous allons voir).

• Les interruptions sont remises en service automatiquement lors du retour de l’interruption.

Page 37: Microcontrôleur PIC Microchip part1/2

INTCON REGISTER:

• Ce registre en lecture écriture permet de configurer les différentes sources d'interruption

• Le PIC16F84A possède 4 sources d'interruption

Page 38: Microcontrôleur PIC Microchip part1/2

4 - TIMER/COUNTER TMR0 :

• Rôle : Réaliser une temporisation

• Élément essentiel : Compteur qui s'incrémente à chaque front montant (ou descendant ) du signal qui lui est appliqué :

• Un TIMER doit pouvoir compter un temps défini par le programme (par exemple 1ms, 10ms,50ms, etc).

Pour cela, 2 paramètres peuvent être modifiés :

La fréquence du signal appliqué au compteur (prescaler)

Le nombre d'impulsions à compter

Page 39: Microcontrôleur PIC Microchip part1/2

• Le contenu du TMR0 est accessible par le registre qui porte le même nom. Il peut être lu ou écrit à n'importe quel moment. Après une écriture, l'incrémentation est inhibée pendant deux cycles instruction

• Au débordement de TMR0 , le drapeau T0IF est placé à 1. Ceci peut déclencher l'interruption T0I si celle-ci est validée

• Ce registre contient une valeur indéterminée à la mise sous tension, si vous désirez compter à partir d’une valeur précise (0 ou autre), placer explicitement cette valeur dans votre programme .

• Ce module peut fonctionner en mode TIMER, quand il s'incrémente en fonction (PRESCALER ) du cycle instruction (Fosc/4) ou en mode compteur, quand il s'incrémente à chaque front montant/descendant de l'horloge externe appliquée sur le Port A0.

Page 40: Microcontrôleur PIC Microchip part1/2

• Quelque soit l'horloge choisie, on peut la passer dans un diviseur de fréquence programmable (prescaler) dont le rapport est fixés par les bits PS0, PS1 et PS2 du registre OPTION

• Il importe de comprendre que le prédiviseur fonctionne de la façon suivante :

- Le prédiviseur compte jusque sa valeur programmée par PS0/PS2.

- Une fois cette valeur atteinte, TMR0 est incrémenté

- Le prédiviseur recommence son comptage à l’impulsion suivante

Page 41: Microcontrôleur PIC Microchip part1/2

MODE TIMER (temporisateur) :

• Dans ce mode , le TMR0 compte les cycles d’horloge du PIC lui-même éventuellement prédivisé .

• Pour travailler dans le mode nous devons configurer OPTION de la façon suivante :

OPTION= xx0abc bc : valeur du prescaler a : assignement du prescaler

MODE compteur :

• Dans ce mode , le TMR0 compte les impulsions (front mentant ou descendant) reçues sur la pin RA4/TOKI

• Pour travailler dans le mode nous devons configurer OPTION de la façon suivante :

OPTION= xx1fabc bc : valeur du prescaler a : assignement du prescaler

Page 42: Microcontrôleur PIC Microchip part1/2

• La formule suivante peut être utilisée pour calculer la duré nécessaire pour que TIMER génére un débordement/overflow :

Overflow time = 4 * TOSC * Prescaler * (256 – TMR0)avec : Overflow time en µs ; TOSC est la période d’oscillation = 1/Fosc

Prescaler est le pré-diviseur choisi par le registre OPTION

TMR0 est la valeur chargée dans le registre TMR0 (valeur initiale)

Exemple

Calcul d'un temps de 10 ms : T= 10.10^-3 = X * Y * 4 /4.10^6 avec : X= valeur du pré-deviseur (Prescaler) Y= valeur à compter= 256 - valeur initiale

Soit X * Y= 10000

Page 43: Microcontrôleur PIC Microchip part1/2

Remarque:

• L’écriture dans le registre TMR0 efface le contenu du prédiviseur. Les événements survenus au niveau du prédiviseur sont donc perdus. ne pas confondre contenu (nombre d’événements comptés) et valeur (déterminée

par les bits de configuration)

• En mode compteur : pour ne pas rater un impulsion il faut Tsignal > Tcyc = 4*Tosc

Page 44: Microcontrôleur PIC Microchip part1/2

4 - Le WatchdogTimer WDT (Chien de garde)Le WATCHDOG, ou chien de garde est un mécanisme de protection de votre programme. Il sert à surveiller si celui-ci s’exécute toujours dans l’espace et dans le temps que vous lui avez attribués.

• 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'utilisation du WDT doit se faire avec précaution pour éviter la réinitialisation (inattendue) répétée du programme. Pour éviter un WDT timeOut lors de l'exécution d'un programme, on a deux possibilités : Inhiber le WDT d'une façon permanente en mettant à 0 le bit WDTE . Remettre le WDT à 0 périodiquement dans le programme à l'aide de l'instruction CLRWDT pour éviter qu'il ne déborde

Page 45: Microcontrôleur PIC Microchip part1/2

illustration du TMR0 et WDT

Page 46: Microcontrôleur PIC Microchip part1/2

5- Redémarrage (RESET) :

• Retenez ceci : pour faire fonctionner le PIC normalement, reliez la pin MCLR au +5V. La mise à la masse de cette broche provoque un reset du PIC. SI vous voulez par exemple un bouton reset sur votre montage, reliez la pin MCLR au +5 via une résistance de 10Kohms. Placez votre bouton reset entre la pin MCLR et la masse, comme dans ce schéma :

Le tableau suivant vous montre tous les événements liés au reset, et leurs effets sur le PC (où le programme se branchera) et le registre STATUS.

« x » renseignent un état inconnu, « u » signifie inchangé

Page 47: Microcontrôleur PIC Microchip part1/2

4 - Le mode SLEEP :

• Le PIC peut être placé en mode faible consommation à l'aide de l'instruction SLEEP (en asm). Dans ce mode, l'horloge système est arrêtée ce qui arrête l'exécution du programme. Pour sortir du mode SLEEP, il faut provoquer un WAKE-UP, pour cela il y a 3 possibilités : RESET externe dû à l'initialisation du PIC en mettant l'entrée MCLR à 0. Le PIC reprend l'exécution du programme à partir du début. Timeout du chien de garde WDT si celui-ci est validé. Le PIC reprend le programme à partir de l'instruction qui suit l'instruction SLEEP Interruption INT (sur RB0) ou RBI (sur RB4-RB7) ou EEI (fin d'écriture en EEPROM de données). Le bit de validation de l'interruption en question doit être validé, par contre, le WAKE-UP a lieu quelque soit la position de bit de validation globale GIE. On a alors deux situations :

GIE = 0, Le PIC reprend l'exécution du programme à partir de l'instruction qui suit l'instruction SLEEP, l'interruption n'est pas prise en compte

GIE = 1, Le PIC exécute l'instruction qui se trouve juste après l'instruction SLEEP puis se branche à la fonction void interrupt() pour exécuter la procédure d'interruption.

Page 48: Microcontrôleur PIC Microchip part1/2

Applications ( PIC 16F84A)