You are on page 1of 42

Les Microcontrôleurs PIC

Abdelouahed ABOUNADA
Département de Génie Electrique 1
Filière Ingénieur Génie électrique 2015-2016
I. Introduction
1.1 microcontrôleur ou microprocesseur
Considérons dans un premier temps le système minimum à
microprocesseur 6809.
le 6809 ne peut pas fonctionner seul . Il requiert différentes ressources qui
sont:

•Une mémoire programme


microP
(ROM, PROM, EPROM...).
6809 ROM RAM PIA
•Une mémoire données (RAM).
•Une interface d ’entrées / sorties
(PIA).
•Un décodeur d’ adresse.
•Différents bus d’interconnexion. Décodeur

Système minimum à 6809


2
Un système à microprocesseur nécessite une grande place matérielle
(nombreux circuits) ainsi qu’une bonne qualité de connectique.

Les microcontrôleurs permettent quant à eux de s ’affranchir de ces contraintes


puisqu’ils intègrent en un seul circuit au moins toutes les ressources propres à
un système minimum.

Ainsi, les microcontrôleurs PIC 16Fxx disposent des principales ressources


internes suivantes:

3
•Mémoire de programme. Microcontrôleur

Les PIC 16Fxx se déclinent selon 3 versions de mémoire de


programme:

-ROM (ou OTP ROM), programmable une seule fois.


Capacité: 512 à 2Kmots.

-UVPROM, effaçable par rayonnement UV.


Capacité: 512 à 4Kmots.

-EEPROM, effaçable électriquement.


Capacité: 1Kmots.

-FLASH,

4
• Mémoire de données. Microcontrôleur

Les PIC 16Fxx disposent d ’une mémoire de données (RAM) de


capacité 25 à 192 octets.

• Entrées/sorties.

Les PIC 16Fxx proposent un certain nombre de broches


d ’entrées/sorties (12 à 33) permettant l ’acquisition ou la
transmission de signaux numériques.

• des ports séries.

Certains PIC 16Fxx possèdent 1 ou 2 ports série permettant


la transmission série d ’informations numériques.

5
• Convertisseur CAN. Microcontrôleur

Certains PIC 16Cxx possèdent en ressource interne un


Convertisseur Analogique Numérique 8bits permettant l ’acquisition
de 4 à 8 signaux analogiques différents.

• des sorties PWM.

6
Microcontrôleur
Conclusion :

Les microcontrôleurs PIC 16Fxx sont des circuits complets et performants.

Ils s’appliquent complètement dans la mise en œuvre de systèmes

microprogrammés simples.

Sommaire
Architectures d’accès à la mémoire

La majorité des structures microprogrammées utilisent une


architecture classique appelée:
Architecture Von Neumann.

A A=Adresse
Programme Entrées/ Unité
et données sorties Arithmétique et D=données
D logique

Machine de Von Neuman

8
Les microcontrôleurs PIC ainsi que bien d ’autres structures sont
construites autour d ’un autre type d ’architecture:
Architecture Harvard.

A A
Entrées/ Unité
Programme
D sorties Arithmétique et D
Données
logique (x2)

Architecture de Harvard

9
1.2 les microcontrôleurs PIC:

Un PIC n’est rien d’autre qu’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 permettant de réaliser des montages sans
nécessiter l’ajout de composants externes.

Les PIC sont des composants dits RISC (Reduced Instructions Set
Computer), ou encore composant à jeu d’instructions réduit.

systèmes d'architecture CISC (Complex Instructions Set


Construction) qui proposent plus d'instructions donc codées sur plus
de bits mais réalisant des traitements plus complexes.

10
Il existe trois familles de PIC :
- Base-Line : Les instructions sont codées sur 12 bits
- Mid-Line : Les instructions sont codées sur 14 bits
- High-End : Les instructions sont codées sur 16 bits

Un PIC est identifié par un numéro de la forme suivant : xx(L)XXyy –zz

- xx : Famille du composant (12, 14, 16, 17, 18)


- L : Tolérance plus importante de la plage de tension
- XX : Type de mémoire de programme
C - EPROM ou EEPROM
CR - PROM
F - FLASH

- yy : Identification
-zz : Vitesse maximum du quartz
Par exemple PIC 16F84 –10:
- 16 : Mid-Line
- F : FLASH
- 84 : Type 11

- 10 : Quartz à 10MHz au maximum


II. Structure interne d’un PIC

1.1 Architecture générale des PIC:

12
1.2 le PIC 16F84 (principales caractéristiques)

► 35 instructions - RISC
► Instructions codées sur 14 bits - Mide line
► Données sur 8 bits
► Vitesse maximum 10MHz (1 instruction en 400ns )
► 4 sources d’interruption

► Deux ports d’entrées / sorties

13
1.3 brochage et fonction des pattes (pic16F84)

► Vss, VDD : alimentation


► OSC 1,2 : Horloge
► RA0-4 : port A (entrée/sortie)
► RB0-7 : port B (entrée/sortie)
► TOCKL : entrée de comptage
► INT: interruption
14

► MCLR : reset 0V
1.4 autres exemples : les pic16F874A/877A

- 14,3 Ko de ROM,
- 368 octets de RAM,
- 256 octets d’EEPROM,
- 33 entrées sorties, un CAN,
- 20 MHz,
- 3 compteurs,
- 15 sources d’interruptions
- une USART,
- un MSSP, (Master synchronous serial port)
- 2 comparateurs,
- 2 modules comparateur et PWM .

15
16
III. Le pic16f84:

3.1 organisation de la mémoire

La mémoire FLASH (non volatile et ré-inscriptible) de programme est


constituée de 1K mots de 14 bits. C’est dans cette zone que vous allez
écrire votre programme.

La mémoire EEPROM (Electrical Erasable Programmable Read Only


Memory), est constituée de 64 octets que vous pouvez lire et écrire depuis
votre programme. Ces octets sont conservés après une coupure de
courant et sont très utiles pour conserver des paramètres semi-
permanents.

La mémoire RAM (Random Access Memory) utilisée pour les variables


intermédiaires. Toutes les données qui y sont stockées sont perdues
lors d’une coupure de courant.

17
18
3.2 les registres
Selon la version de PIC utilisée, le nombre de registres internes au
circuit est différent.

Ainsi, les registres présentés ci-après sont les plus couramment


utilisés:

Registre de travail: W

Registres d ’E/S: PORT

Registres de direction: TRIS

Registre d ’état: STATUS

Registre Compteur Programme: PC

19
Les registres TRISA et TRISB ont pour fonction de configurer les broches
d’entrées / sorties des ports.

Le registre d’état (STATUT) Il contient l'état de l'unité arithmétique et


logique ainsi que les bits de sélection des banques.

Le registre de travail W est un registre sur 8 bits pour réaliser des


opérations arithmétiques ou logiques..

Le registre OPTION permet de définir, entre autres, le choix d’un diviseur.


Accès uniquement en écriture.

Le registre INTCON utilisé pour le contrôle des interruptions.

etc.

20
3.3 Séquencèrent des instructions:

21
3.4 l’Horloge système

Horloge: oscillateur à Quartz (Crystal) Horloge: oscillateur RC

22
Remarque:

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.

23
3.5 les compteurs

3.5 .1 le TMR0
Le PIC 16F84 est doté d’un compteur 8 bits. La valeur du comptage réalisé
est donnée par le registre TMR0

La période de l’horloge d’entrée est divisée par une valeur comprise entre 2
et 256 suivant les bits PS2, PS1 et PS0 du registre OPTION.

24
Remarques:

 Toute écriture dans le registre TMR0 inhibe l’incrémentation du


compteur TMR0 pendant deux cycles d’horloge.

 Le débordement de TMR0 (FF à 00) peut déclencher


l'interruption T0IE.

25
3.5.2 le chien de garde (watchdog timer WDT)
C’est un compteur 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 principale. Lorsque ce compteur arrive à (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é. Pour éviter un
WDT time-out 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 du mot de configuration

Remettre le WDT à 0 périodiquement dans le programme à l'aide de


l'instruction CLRWDT pour éviter qu'il ne déborde

26
3.5.3 le registre de configuration
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 et du "tirage au
plus" du PORT B.
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

27
BIT 3: PSA ( PreScaler Assignment).
Si PSA=1 alors le prescaler est associé avec le WDT.
Si PSA=0 alors le prescaler est associé avec le TIMER.

BIT 4: T0SE ( TMR0 Source Edge).


Ce bit détermine sur quel front l'entrée RA4 incrémentera le registre TMR0
T0SE=1 Front descendant. T0SE=0 Front montant.

BIT 5: T0CS ( TMR0 Clock Source)


Ce bit permet de sélectionner l'horloge de TMR0.
T0CS=1 sélection de l'horloge externe RA4 (PORTA).
T0CS=0 sélection de l'horloge interne.

BIT 6: INTEDG ( INTerrupt EDGe)


Si INTEDG=1 alors la broche RBO/INT génère une interruption sur un front
montant.
Si INTEDG=0 alors la broche RBO/INT génère une interruption sur un front
descendant.

BIT 7: RBPU ( PORT B Pull-Up).


RBPU=1 " pull-up resistors are disabled.
RBPU=0 " pull-up resistors are enabled".
Le pull-up est désactivé à la mise sous tension et quand le port est
configuré en sortie 28
29
3.6 l'Initialisation : RESET

Le RESET peut avoir plusieurs causes :


- Mise sous tension
- Etat 0 sur broche MCLR
- Débordement du timer du chien de garde.

Remarque:
Lorsque le RESET intervient, le μC peut être :
- En fonctionnement normal
- En mode SLEEP.

30
3.7 la pile:
La pile est une zone mémoire particulière.
Pour le PIC 16F84A, elle est constituée de 8 emplacements de 13 bits.
La pile intervient dans le mécanisme interne des instructions :
CALL
RETURN
RETLW (saut dans un tableau)
RETFIE (fin de la routine d'interruption)

En effet, c'est dans la pile qu'est mémorisée l'adresse de retour d'une routine.
Quand intervient une instruction CALL ou une interruption, l'adresse de
l'instruction suivante (qui se trouve dans le compteur de programme PC) est
sauvegardée dans la pile.

Quand une instruction RETURN, RETLW ou RETFIE apparaît, le μC lit la


dernière valeur sauvegardée dans la pile, libère l'emplacement et se branche
à l'adresse indiquée.
Avec le mécanisme de la pile, un sous-programme peut appeler un sous-
programme (ou plutôt un sous-sous-programme) : la pile réserve un autre
emplacement..
La taille de la pile est limitée à 8 niveaux (pour le PIC 16F84A). 31
32
3.8 Interruption
Une interruption provoque l’arrêt du programme en cours pour aller
exécuter une procédure d'interruption. A la fin de cette procédure, le
microcontrôleur reprend le programme à l’endroit où
il s’était arrêté.
Comme une interruption est un événement asynchrone, il faut alors
sauvegarder le contexte dans lequel se trouvait le microcontrôleur avant
l’interruption, afin qu’il puisse reprendre correctement la continuité du
programme.

Le PIC16F84 possède 4 sources d'interruption. A chaque interruption


sont associés deux bits.

Un bit de validation et un drapeau. Le premier permet d'autoriser ou non


l'interruption, le second permet au programmeur de savoir de quelle
interruption il s'agit. Tous ces bits sont dans le registre INTCON à part le
drapeau EEIF de l'interruption EEI qui se trouve dans le registre EECON1.

33
34
L'interruption INT (Entrée RBO DU PORTB)
Cette interruption est provoquée par un changement d'état sur l'entrée
RB0 du port B quand elle est programmée en entrée. Elle est gérée par les
bits :
- INTE : bit de validation (1=oui, 0=non)
- INTF : drapeau
- INTEDG : front de déclenchement 1=montant, 0=descendant (registre
OPTION)
L'interruption RBI (RB4 A RB7 DU PORTB)
Cette interruption est provoquée par un changement d'état sur l'une des
entrées RB4 à RB7 du port B, Le front n'a pas d'importance. Les bits
associés sont RBIE (bit de validation) et RBIF (drapeau)
L'interruption TOI : Débordement du Timer TMR0
Cette interruption est provoquée par le débordement du timer TMR0. Les bits
associés sont TOIE (bit de validation) et TOIF (drapeau)

L'interruption EEI : Fin d'écriture dans 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) et EEIF (drapeau).
35
3.8.1 Déroulement d'une interruption
Lorsque l'événement déclencheur d'une interruption intervient, alors son
drapeau est positionné à un.
au début de chaque instruction le processeur vérifie les drapeaux, il
verra le drapeau levé et vérifie alors si l'interruption en question a été
validée.
Si c'est le cas, l'interruption est déclenchée : le programme arrête ce
qu'il est en train de faire et va exécuter la procédure d'interruption qui se
trouve à l'adresse 4.
l'adresse contenue dans le PC (Program Counter) est sauvegardée dans
la pile, puis remplacée par la valeur 0004 (adresse de la routine
d'interruption).
 Le bit GIE est placé "0" pour inhiber toutes les interruptions (afin qu'on
ne soit pas dérangés pendant l'exécution de la procédure d'interruption).
 A la fin de la routine d'interruption (instruction RETFIE), le bit GIE est
replacé à l'état haut (autorisant ainsi un autre événement d’interruption)
 le contenu du PC est rechargé à partir de la pile et le programme est
repris là où on l'a laissé. 36
3.8.2 le registre de configuration

Le registre INTCON (0B,8BH)


Le registre INTCON contient tous les bits de validation et les drapeaux des
différentes interruptions.

BIT 7: GIE (Global Interrupt Enable).


Bit de validation globale de toutes les interruptions.
GIE=1 : chaque interruption dépendent de son propre bit de validation.
GIE=0 : Toutes les interruption sont interdite.

37
BIT 0: RBIF BIT 1: INTF (INT interrupt Flag).
Drapeau de l'interruption RBI qui provient d'un Drapeau d'interruption INT qui provient d'un
changement d'état d'un des bits RB4 à RB7. changement d'état de l'entrée RB0.
RBIF= 1 : drapeau levé. RBIF=1 drapeau levé.
RBIF= 0 : drapeau baissé. RBIF=0 drapeau baissé.
BIT 2: TOIF ( TMRO Overflow Interrupt BIT 3: RBIE (RB Interrupt Enable).
Flag). Bit de validation de l'interruption RBI qui
Drapeau de l'interruption TOI qui intervient au provient d'un changement d'état sur l'une des
débordement du timer TMR0 entrée
TOIF=1 drapeau levé. RB4 à RB7 du port B.
TOIF=0 drapeau baissé. RBIE=1 : Autorise l'interruption.
BIT 4: INTE ( INT interrupt Enable). RBIE=0 : interdit l'interruption
Bit de validation de l'interruption INT qui BIT 5: TOIE (TMRO Overflow Interrupt
provient d'un changement d'état sur l'entrée Enable).
RB0 du Bit de validation de l'interruption TOI qui
port B. intervient au débordement du timer TMR0
INTE=1 : Valide l'interruption INT. TOIE = 1 : Valide l'interruption.
INTE=0 : Interdit l'interruption INT. 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
38
39
III. Programmation d’un PIC
3.1 Les étapes de programmation des PIC.
Les étapes nécessaires permettant de voir un programme s'exécuter sur un PIC sont :

• Ecrire un programme en langage assembleur 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.

•Mettre le PIC dans son montage final, mettre sous tension et admirer le
travail.
•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.

•Pour ce qui nous concerne, nous utiliseront MPLAB pour écrire, compiler avec un
compilateur c et simuler nos programmes, ensuite nous utiliserons un programmateur 40
pour copier les programme dans la mémoire flash du PIC.
3.2 Les Bits (ou "fusibles") de configuration.

41
IV. Exemple:

Reprendre le programme de TP qui consistait à faire clignoter 2 LEDs.


Écrire une routine d’interruption relative à la broche INT, le traitement
correspondant fait clignoter une troisième LED

42