Vous êtes sur la page 1sur 29

L ES MICROCONTRÔLEURS PIC

A
I) Généralités sur les microcontrôleurs 8 bits
p2 Historique, domaines d’applications, architecture générale, quelques grandes familles de
microcontrôleur +TD

II) Présentation de la famille PIC


p3 Le PIC et ses trois grandes familles
p3 Décryptage de la référence des PIC
p3 Descriptif sommaire de quelques PIC
p4 Caractéristiques principales de la famille PIC
p4 TD sur la présentation de la famille PIC

II) Architecture interne des PIC de la famille MID-RANGE


p5 Schéma de l’architecture +TD
p7 Principe de fonctionnement de l’unité centrale : exécution d’une instruction +TD
p8 Horloge +TD
p9 RESET +TD
p10 La mémoire programme +TD
p11 La mémoire donnée +TD
p13 Les E/S parallèles : Fonctionnement d’une broche d’un port d’E/S logique +TD
p15 Les E/S parallèles : PORTA + Exemple pour le C et FLOWCODE
p16 Les E/S parallèle : PORTB + Exemple pour le C et FLOWCODE
p17 Le C.A.N. : Présentation
p18 Le C.A.N. : Mise en œuvre + Exemple pour le C et FLOWCODE et TD
p21 La liaison série asynchrone : Présentation
p22 La liaison série asynchrone : Mise en œuvre + Exemple pour le C et TD

IV) La programmation ICSP des PIC


P25 Principe de programmation in situ ou ICSP (In-Circuit Serial Programming) + TD
p26 Le programmateur + TD
p27 La carte d’expérimentation « ELECTROPIC »
p28 Schéma d’implantation de la carte d’expérimentation « ELECTROPIC »

Auteur : C. Roudaut, Lycée Vauban, Brest

Les microcontrôleurs PIC pic.doc Page 1


I. Généralités sur les microcontrôleurs 8 bits
● ▬ ● ▬ ● ▬ ● ▬ ● ▬

1. Historique des microcontrôleurs 8 bits


Nés en 1980 avec le microcontrôleur 8048 d’INTEL et le HC05 de MOTOROLA, les microcontrôleurs reposent sur un
concept très pratique : réunir sur une même puce un processeur 8 bits et des périphériques numériques et analogiques divers
( ex : pilotage d’actionneurs tel que relais, moteur, afficheur,…, acquisition de grandeurs physiques fournies par des capteurs,
poussoirs, clavier…..).

2. Domaines d’application des microcontrôleurs


Les domaines d’application sont extrêmement variés et touchent tous les secteurs : grand public, industriel, informatique, les
télécommunications avec les téléphones portables, l’automobile pour toutes les fonctions autour du tableau de bord, de
l’ouverture des portes, contrôle des sièges, feux, et autres alarmes.

3. Architecture générale des microcontrôleurs


Les microcontrôleurs 8 bits sont des composants peu coûteux qui bénéficient des progrès technologiques comme la mémoire
flash pour le stockage des programmes, la mixité analogique-numérique sur le même silicium.
C’est un circuit intégré qui regroupe dans le même boîtier toutes les fonctions élémentaires d’un système minimum à
microprocesseur :
• unité centrale
• mémoire programme, donnée
• Bus d’adresse, de donnée, de contrôle
• interface d’entrée/sortie parallèle, série.

Selon les besoins de l’application et les modèles de microcontrôleurs disponibles dans une famille (PIC, ATMEL, INTEL) il
peut comprendre en plus :

• des blocs analogiques (CAN, CNA, filtres, amplificateurs, comparateurs analogiques, …..)
• des blocs numériques (temporisateurs, modulateurs, multiplexeur, UART,…..)

4. Quelques grandes familles de microcontrôleurs


Quatre familles sont de véritables standards du domaine : les 8048 et 8051 pour INTEL et les 68HC05 et 68HC11 pour
MOTOROLA.
MOTOROLA est le leader dans le domaine des microcontrôleurs 8 bits avec 21 % des parts de marché pour le 68HCXX.
INTEL est le second avec le microcontrôleur 8051 et représente 15%.

qui fabrique les microcontrôleurs PIC possède 6% du marché.

 TD sur la présentation de la famille PIC


a) Quels sont les deux principaux fabricants de microcontrôleur ?
b) Quelle est la proportion de PIC vendus sur le marché des microcontrôleurs ?
c) Citer trois domaines d’application des microcontrôleurs ?

Les microcontrôleurs PIC pic.doc Page 2


II. Présentation de la famille PIC
● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Le PIC et ses trois grandes familles
Les microcontrôleurs de Microchip, les PIC sont une marque déposée.
Il existe trois grandes familles de microcontrôleurs :
• La famille Base-line, qui utilise des mots d’instructions codés sur 12 bits (ex : 12C508).
• la famille Mid-Range que nous étudierons, qui utilise des mots d’instructions1 codés sur 14 bits (ex :
16F84, 16F628)
• La famille High-End, qui utilise des mots d’instructions codés sur16 bits (ex : 18F8x ou 17Cxx).

2. Décryptage de la référence des PIC


XX X XXX -XX X /XX XXX
N°de famille Type de mémoire programme du circuit Référence du Gamme de Gamme de Type de
Code lié à la
et plage d’alimentation circuit au fréquence Température boîtier :
programmation
12 : Base line Type de Standard Etendu sein de la -04=4MHz Industrial : de la ROM en
P= PDIP
mémoire (4,5V– 6V) (2,5V- 6V) famille I = -40°C to usine (QTP :
16 : Mid-Range EPROM 16 C xxx 16 LC xxx (Base line ou +85°C (l) SO= SOIC Quick Turn
ROM 16 CR xxx 16 LCR xxx Mid-Range Production)
Flash 16 F xxx 16 LF xxx ou High- -20=20MHz Commercial: SS= SSOP (QTP)
17, 18 : High-End
End). ...= 0°C to
+70°C

3. Descriptif sommaire de quelques PIC

référence Mémoire EEPROM Taille Analogiques Numériques système Autres particularités


programme de RAM CAN Com autres Port E/S PWM Timers Vit. IC
Oct Organisa donnée 8 bits para E/S série 10 Max en SP
ets tion teur bits MHz
12C508 768 512x12 - 25 - - - 6 - - 1-8bits. 4 oui Une E/S
1-WDT2 fournit/absorbe
25mA
16F84 1792 1024x14 64 68 - - - 13 - - 1-8bits. 20 oui Une E/S fournit/
1-WDT absorbe 25mA max.
16F628 3584 2048x14 128 256 - 2 BOD3, 16 USART/ 1 1-16bits. 20 oui Une E/S fournit/
Prog SCI 2-8bits. absorbe 25mA max.
Vref4 1-WDT Horloge interne
4MHz .
16F870 3584 2048x14 64 128 5 de - BOD 22 USART/ 1 1-16bits. 20 oui Une E/S fournit/
10bits SCI 2-8bits. absorbe 25mA max.
1-WDT CCP5,
16F877 14336 8192x14 256 368 8 de - BOD 33 USART/ 2 1-16bits. 20 oui Une E/S fournit/
10bits SCI 2-8bits. absorbe 25mA max.
I2C 1-WDT CCP,
PSP6

1
Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code
machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions.
2
WDT : watch dog
3
BOD : Brown out detection : Détection de chute de la tension d’alimentation
4
Prog Vref : tension de référence programmable en sortie
5
CCP : Capture, Compare, PWM
6
PSP : port // esclave
Les microcontrôleurs PIC pic.doc Page 3
II. Présentation de la famille PIC
● ▬ ● ▬ ● ▬ ● ▬ ● ▬

4. Caractéristiques principales de la famille PIC


Un jeu d’instruction réduit ou RISC ( Reduced instruction set computer)

Un jeu d’instruction RISC permet d’accélérer la vitesse d’exécution des programmes. Les instructions7 pour commander le
microcontrôleur sont alors peu nombreuses (33 ou 35 instructions différentes) mais aussi plus simples et donc plus rapides à
exécuter. Chaque mot de la mémoire programme (de 12 ou 14 ou 16 bits) contient une instruction et toutes les instructions
(sauf les sauts) sont exécutées en un seul cycle machine.

Une architecture de type HARVARD

Il existe deux types classiques d’architecture interne de microcontrôleur :


 Architecture de HARVARD qui est celle des PIC. Avec ce type d’architecture les instructions et les
données transitent sur des bus bien différenciés. Il en résulte un gain de temps, puisque pour exécuter une
instruction on peut simultanément accéder à l’instruction ET à la donnée associée à cette instruction.

 Architecture VON NEUMANN qui possède un unique bus de données pour faire transiter les instructions et
les données

Architecture Von Neumann Architecture Harvard

Mémoire programme = Mémoire de Unité Mémoire programme =


Unité
Instructions + données données centrale Instructions
centrale
Bus données Bus de données Bus d’instructions

 TD sur la présentation de la famille PIC


a) Donner la signification d’un jeu d’instruction RISC.
b) Indiquer la différence entre une architecture Von Neumann et Harvard.
c) Préciser l’architecture utilisée par les PIC ?
d) Donner la signification de la référence PIC suivante: 16 F 84 –04 /P .
e) Détailler les caractéristiques du microcontrôleur 16F870.
f) Donner la famille à laquelle appartient le 16F870 (Base-line, Mid-range, End-line).
g) A partir de la documentation technique du 16F84 à la page suivante, rechercher :
• le nombre de bits de données du PIC 16F84.
• l’organisation de la mémoire donnée.
• l’organisation de la mémoire programme.
• le nombre d’écriture/ effacement de la mémoire programme.
• le nombre d’Entrées/Sorties disponibles.
• Le courant maximum IOH pour l’état logique haut et le sens de ce courant.
• Le courant maximum IOL pour l’état logique bas et le sens de ce courant.
h) Donner les différences entre un 16F84 et un 16F628

7
Instructions de 14 bits : Code binaire sur 14 bits qui correspond à un ordre précis que doit exécuter le microcontrôleur. Ce code binaire est aussi nommé code
machine. Un programme est composé d’une suite séquentielle d’ordres ou d’instructions.
Les microcontrôleurs PIC pic.doc Page 4
II. Présentation de la famille PIC
● ▬ ● ▬ ● ▬ ● ▬ ● ▬

Organisation et registres de la
mémoire de donnée

Les microcontrôleurs PIC pic.doc Page 5


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
1. Schéma de l’architecture
L’architecture ci-dessous correspond à un microcontrôleur de la famille MID-RANGE qui serait doté de toutes les
fonctionnalités possibles pour un PIC.

Repérer en rouge l’unité centrale, en vert la mémoire programme, en bleu la mémoire donnée, en jaune les ports
parallèles d’E/S, en violet le périphérique CAN et en orange le périphérique liaison série RS232.

Les microcontrôleurs PIC pic.doc Page 6


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de fonctionnement de l’unité centrale : exécution d’une instruction
1. Le PC (Compteur Programme) registre de 13 bits contient l’adresse de la
prochaine instruction à exécuter dans la mémoire programme.

Le PC peut être stocké, si nécessaire, dans une pile qui peut contenir 8 valeurs aux
maximum (8 niveaux).

Au début du programme qui commence à l’adresse 0, PC=0.

2. La mémoire programme
contient l’ensemble des instructions
du programme.
4.B. L’opérande fournit
Par exemple en adressage direct une l’adresse qui va permettre
instruction se compose d’un mot de d’accéder à la donnée dans la
14 bits qui a la structure suivante : RAM.

Opération
à exécuter Opérande de 7
sur 7 bits bits qui est 5. La donnée et l’opération
+ l’adresse de la décodée arrivent simultanément
donnée dans la dans un multiplexeur.
RAM. (structure de Harvard).

. 6.A. L’ALU (Unité


Arithmétique et Logique) va
exécuter les calculs ou tests
3. Le registre d’instruction permet logiques requis par l’instruction.
de mémoriser la prochaine
instruction qui sera exécutée.

4.A. L’opération va être décodée


pour pouvoir indiquer à l’ALU les 7.A. L’ALU pour effectuer ses
calculs qui devront être exécutées. opérations a besoin d’une
variable, ici un registre de
travail W (Working register).

a) Repérer en les fléchant les éléments participants aux phases 1 à 7 de l’exécution d’une instruction.
b) Tracer en rouge, le chemin utilisé pour exécuter une instruction.
c) Indiquer le rôle du PC.
d) Retrouver le circuit dont le rôle est d’effectuer les opérations arithmétiques et logiques.

Les microcontrôleurs PIC pic.doc Page 7


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
3. Horloge
a) Durée d’exécution d’une instruction
La durée (Tcy) pour exécuter une instruction est telle que : Tcy = Tosc x 4 avec Tosc la période de l’horloge du
microcontrôleur PIC.
Les microcontrôleurs exécutent toutes les instructions en un seul cycle machine (sauf les sauts en 2 cycles).
Pour une horloge équipée d’un quartz de 4 MHz, on obtient alors environ 1 million d’instructions par seconde.

b) Type d’horloge et mot de configuration


On peut équiper le microcontrôleur avec 3 types d’horloge : Oscillateur à quartz ou résonateur céramique, ensemble
résistance capacité, oscillateur à résistance capacité interne.
Au moment de la programmation du PIC dans le mot de configuration, il est obligatoire d’informer le microcontrôleur du
type d’horloge qui est utilisé.

• Oscillateur à quartz ou résonateur céramique


Mode LP : 32 KHz - 200KHz
Mode XT : 100 KHz - 4 MHz
Mode HS : 4 MHz - 20 MHz
Après un reset, le programme démarre après 1024 cycles
d’instructions.

• Horloge pilotée par un ensemble résistance capacité


Mode EXTRC avec une possibilité de sortir l’horloge
instruction sur CLKOUT
Après un reset, le programme démarre après 4 cycles
d’instructions.

• Horloge à 4 MHz pilotée par un oscillateur à


résistance capacité interne
Mode INTRC avec une possibilité de sortir l’horloge
instruction sur CLKOUT. Pour ajuster précisément l’horloge
interne à 4 MHz, il est possible de la modifier avec le
registre OSCCAL.

a) Choisir le mode de fonctionnement adapté à un PIC équipé d’une horloge à 4 MHz.


b) Retrouver dans le chapitre II.3 les microcontrôleurs fonctionnant avec le mode INTRC.

Les microcontrôleurs PIC pic.doc Page 8


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
4. RESET
a) Sources de Reset
Après un RESET, le programme démarre, ce qui se traduit concrètement par la mise à 0 de PC. Le PC contient alors l’adresse
0 du début du programme.
Il existe plusieurs sources de reset :
• Un reset par mise à l’état bas de /MCLR.
A la mise sous tension, VC=0 V d’ou /MCLR=0 il y a donc un RESET.

• Un reset à la mise sous tension du microcontrôleur appelé POR (Power On Reset)


A la mise sous tension, si la vitesse de croissance de la tension d’alimentation est assez élevée (>0,05V.ms-1) il se
produit un reset automatique si le microcontrôleur est équipé de l’option POR.

• Un reset par détection de chute d’alimentation du microcontrôleur ou BOR (Brown Out Reset)
• Un reset par débordement du timer du chien de garde WDT (Watch Dog Timer)

Remarque : Il est possible de retarder le Reset de type POR, ou BOR de 72ms par action sur le bit « Enable POWER
TIMER » dans le mot de configuration du PIC. Le Reset du microcontrôleur a lieu alors quand la tension d’alimentation
est stable.

 TD sur le reset et l’horloge appliqué à une carte minimum avec un 16F628


a) Indiquer la source du reset.
b) Indiquer la fréquence de l’horloge du PIC.

1 18
RA2 RA1 17
2 RA3 RA0
3 RA4 OSC1/RA7 16
Cette carte minimum est 4 RA5/MCLR OSC2/RA6 15
équipée d’un connecteur
ICSP qui fournit 6 RB0 RB7 13
7 RB1 RB6 12
l’alimentation de la carte, et 8 RB2 RB5 11
permet de programmer le 9 10
PIC. RB3 RB4

Les microcontrôleurs PIC pic.doc Page 9


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
5. La mémoire programme

Pour la famille MID-RANGE la mémoire programme est constituée de mots de 14 bits.


Lors de la lecture d’un PIC vierge tous les bits de la mémoire programme sont à 1, on peut donc lire en binaire
(11 1111 1111 1111) ou encore en hexadécimal 3FFFh.

Le PC a une taille de 13 bits, il est donc capable d’adresser au maximum 8Kmots (1mot=14 bits). Cette espace
mémoire est divisée en 4 pages de 2 Kx14 (0h - 7FFh, 800h - FFFh, 1000h - 17FFh, et 1800h - 1FFFh).

Organisation de cette mémoire

Registre PC (Program Counter)


de 13 bits

 TD sur la mémoire programme


a) Indiquer le rôle du PC.
b) Donner la taille maximale en Kmots d’un programme d’un PIC 12C508 en utilisant le chapitre II.3.
c) Donner la taille maximale en Kmots d’un programme d’un PIC 16F870 en utilisant le chapitre II.3.
d) Donner la taille maximale en Kmots d’un programme d’un PIC 16F877 en utilisant le chapitre II.3.

Les microcontrôleurs PIC pic.doc Page 10


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
6. La mémoire donnée
a) Deux types de registres8
Cette mémoire est organisée en mot de 8 bits. Elle contient deux types de registres :

 Les registres SFR (Special Function Registers) sont spécifiques à l’unité centrale. Ils permettent :
• à l’utilisateur de paramétrer le cadre de travail de l’unité centrale, prises en compte d’interruption, …
• à l’unité centrale de pouvoir exécuter une instruction (registre PC, …)
• à l’utilisateur et à l’unité centrale de piloter les périphériques (port E/S, CAN,….)
• à l’unité centrale d’analyser au moyen de drapeau (mémoire de 1 bit) les résultats d’une opération effectuée
par l’Unité Arithmétique et Logique

 Les registres GPR (General Purpose Register) à usage général qui servent de zone de variables pour l’utilisateur.

b) Organisation de la mémoire de données


Elle est divisée en quatre pages d’une taille maximum de 128 octets, chaque page est aussi nommée « banque de
registres ».

Les instructions PIC qui permettent d’accéder directement à une donnée de la RAM sont structurées de la façon
suivante :
Opération Opérande de 7
à exécuter bits qui est
sur 7 bits + l’adresse de la
donnée dans la
RAM.

L’opérande est une adresse de 7 bits. On ne peut donc qu’accéder à 27=128 bits. Or il existe au maximum 4 banques, il
manque donc deux bits qui permettent de sélectionner une banque de 128 octets parmi 4.

Le registre STATUS contient ces deux bits RP1 et RP0 de sélection de banque.

Il faut donc systématiquement que le programmateur renseigne l’unité centrale sur le numéro de banque dans laquelle il
désire travailler. Il réalise cette opération en donnant une valeur au bit RP1 et RP0 du registre STATUS.

8
Registres : Le registre est un ensemble de bascules. Ces bascules permettent de mémoriser l’information. Ici la mémoire de
donnée est organisée en mots de 8 bits. Un registre se compose donc de 8 bascules.
Les microcontrôleurs PIC pic.doc Page 11
III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur la mémoire donnée
a) Indiquer la différence entre registres SFR et GPR.
b) Encadrer en rouge la zone de variables SFR.
c) Encadrer en vert la zone de variables GPR.
d) Retrouver la nature du registre PORTA (SFR ou GPR) en utilisant un exemple d’organisation des registres en
mémoire donnée ci-dessous.
e) Retrouver la taille de la zone de variable utilisateur dans une banque.
f) Nommer les registres SFR qui sont communs aux quatre banques.
g) Compléter le tableau suivant :

Valeur des bits


Nom du registre N° de RP1 et RP0 du
banque registre
STATUS
RP1 RP0
PORTA
TRISA
PORTB
STATUS

Un exemple d’organisation des registres SFR et GPR


Les adresses des registres sont toujours à vérifier dans la documentation
technique de chaque composant PIC.

Les microcontrôleurs PIC pic.doc Page 12


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
7. Les entrées / sorties parallèles
a) Fonctionnement typique d’une broche d’un port d’E/S logique
Fonction :
Chaque broche du port peut être utilisée en entrée ou en sortie.

Par défaut après un reset les broches des ports sont placées en entrée.

Schéma de principe pour la broche 2 d’un PORTX:


Databus = bit2 de TRISX ou PORTX

S3 S1
RX2
T1

S2
T2
S4

Caractéristiques électriques typiques:


Chaque sortie d’un port individuellement peut fournir un courant maximum de 20mA
Chaque sortie d’un port individuellement peut absorber un courant maximum de 25mA
Mais le courant maximum fourni par chaque port en sortie ne peut dépasser 40 mA et le courant maximum absorbé par
chaque port ne peut dépasser 50mA max.

Registres associés :
TRISX: un registre de direction de 8 bits
Le sens de fonctionnement de chaque broche est déterminé par un registre de direction TRISX.
• Mettre le bit 2 de TRISX à 1 aura pour effet de mettre la broche RX2 du PORTX en entrée.
• Mettre le bit 2 de TRISX à 0 aura pour effet de mettre la broche RX2 du PORTX en sortie.

PORTX: un registre d’écriture ou lecture de 8 bits


Si la broche est configurée en entrée une lecture du bit 2 de PORTX donnera le niveau logique présent sur la broche
RX2.
Si la broche RX2 est configurée en sortie une écriture du niveau logique dans le bit 2 du PORTX fixera la niveau
logique de la broche RX2.

Les microcontrôleurs PIC pic.doc Page 13


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur le fonctionnement typique d’une broche d’un port d’E/S logique
a) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente.

Bit2 de WRTRIS S3 S1 S2 T1 T2 Etat de la broche RX2


TRISX2 / (B/P) (B/P)
Data bus

1 0

1 1

b) Compléter le tableau ci-dessous pour étudier la lecture de la broche RX2 en entrée. On utilisera le schéma
structurel de la page précédente.

RX2 RDPORT Bit 2 du PORTX2

0 0

1 0

c) Compléter le tableau ci-dessous pour étudier la configuration de la broche RX2 en sortie. On utilisera le schéma
structurel de la page précédente.

Bit2 de WRTRIS S3 S1 S2 T1 T2 Etat de la broche RX2


TRISX / (B/P) (B/P)
Data bus

0 0

0 1

d) Compléter le tableau ci-dessous pour étudier l’écriture d’un niveau logique sur la broche RX2 en sortie. On
utilisera le schéma structurel de la page précédente.

Bit 2 du PORTX2 WRPORT RX2

Les microcontrôleurs PIC pic.doc Page 14


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Les Entrées/Sorties parallèles portA

Fonction :
Le portA possède 6 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie.
Les broches du PORTA peuvent avoir deux fonctions en entrées : entrées analogiques,
entrées logiques.
Par défaut après un reset le portA est placé en entrée et s’il y a des entrées analogiques, les entrées sont positionnées en
mode analogique.

Schéma pour un bit du PORTA:


Structure pour RA0, RA1, RA2, RA3, RA5 Structure pour RA4, qui est une sortie à drain ouvert

Registres associés :
TRISA: un registre de direction de 8 bits
Un bit de TRISA mis à 1 aura pour effet de mettre la broche correspondante du PORTA en entrée.
PORTA: un registre d’écriture ou lecture de 8 bits.

Exemple avec FLOWCODE Exemple en C: Utilisation du portA avec un 16F84


STATUS=STATUS|0x20; //RP0 à 1; bank1
TRISA=0xF3; // RA3 :RA2=Sorties

STATUS=STATUS&0xDF; //RP0 à 0; bank0


PORTA=0x08; //RA3=1 ; RA2=0

Les microcontrôleurs PIC pic.doc Page 15


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
c) Les Entrées/Sorties parallèles portB

Fonction :
Le portB possède 8 broches E/S. Chaque broche du port peut être utilisée en entrée ou en sortie.
Par défaut après un reset le portB est placé en entrée.

Caractéristiques électriques :
Toutes les broches du portB lorsqu’elles sont en entrées peuvent être reliées à VDD via une résistance de pull-up activée
par programmation du bit RBPU du registre OPTION_REG.

Schéma pour un bit du PORTB:


Résistance de pull_up

Registres associés :
TRISB: un registre de direction de 8 bits
Un bit de TRISB mis à 1 aura pour effet de mettre la broche correspondante du PORTB en entrée.
PORTB: un registre d’écriture ou lecture de 8 bits

Exemple avec FLOWCODE Exemple en C: Utilisation du portA avec un 16F84


STATUS=STATUS|0x20; //RP0 à 1; bank1
TRISB=0x03; //RB0 et RB1 = Entrées

STATUS=STATUS&0xDF; //RP0 à 0; bank0


PB1_0 = PORTB & 0x03; // PB1_0= Entrées RB1 et RB0

Les microcontrôleurs PIC pic.doc Page 16


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
8. Le Convertisseur Analogique Numérique
a) Présentation du C.A.N
Le PIC peut être équipé d’un C.A.N de résolution 10 bits. Ce convertisseur analogique/numérique convertit par
approximations successives. Si on appelle VAIN la tension analogique en entrée à convertir alors on peut établir
l’équation suivante :

VAIN = (VREF+ - VREF-) (29b9+28b8+27b7+26b6+25b5+24b4+23b3+22b2+21b1+20b0)


210

Schéma :
Un échantillonneur-
bloqueur permet de
mémoriser la tension
analogique à convertir
pendant la Un multiplexeur à 8
conversion. entrées maximum permet
de sélectionner l’entrée
A
analogique ANx à
D convertir.
R VAIN
E (Input
S Voltage)
H

A
D
R
E
S
L

La référence de tension peut être


interne (VDD, 0V) ou externe sur
la broche AN3 (Vref+) et AN2
(Vref-).

Les microcontrôleurs PIC pic.doc Page 17


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Mise en œuvre du CAN
Etape 1 : Initialisation du convertisseur
Action Registre Détails du registre
1) Sélectionner des ADCON1
broches d’entrées qui
seront analogiques.

Les lignes d’entrée


analogiques du
convertisseur sont
partagées avec les lignes
d’un port parallèle. Ces
broches doivent être
configurées en entrées
lorsqu’elles sont utilisées
pour la conversion.

2) Sélectionner le type ADCON1


de justification à droite
ou à gauche pour le
résultat de conversion.
ADFM=1 pour justifier à
droite le résultat de la
conversion.
ADFM=0 pour justifier à
gauche le résultat de la
conversion.

3) Sélectionner la vitesse ADCON0 Pour un quartz de 4


de conversion en MHz
fonction de l’horloge du
PIC.
TAD définit le temps pour
la conversion. Il faut
respecter un minimum de
1,6 µs pour la conversion
4) Sélectionner la voie à ADCON0
convertir.

5) Activer le C.A.N. ADCON0


ADON=1
6) Faire une pause pour charger la capacité de l’échantillonneur pendant une durée t > 16,5µs.

Les microcontrôleurs PIC pic.doc Page 18


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2 :Lancement de la conversion
Action Registre Détails du registre
associé
7) Lancer la conversion. ADCON0
GO/DONE=1
Boucle
8) Attendre la fin de la ADCON0 Tant que (GO/DONE=1)
conversion.
Lorsque la conversion est finie le bit Lire
G0/DONE passe à 0. GO/DONE

Boucle

Il faut attendre 2 TAD entre deux conversions successives, le temps que se charge la capacité de
l’échantillonneur.

Etape 3 :Lire le résultat de la conversion


Action Registre Détails du registre
associé
9) Lire le poids faible du résultat ADRESL
de la conversion.
10) Lire le poids fort du résultat ADRESH
de la conversion.

 TD sur la mise en œuvre du CAN


a) Rédiger les commentaires du programme C en précisant le rôle des instructions.
Exemple avec FLOWCODE Exemple en C: conversion A/N sur la broche ……….. pour le 16F876 avec
un quartz 3,2768 MH
1) Choix de la voie à convertir
ADCON1=0x84; //.........................................................................................................

STATUS=STATUS&0xDF; //RP0 à 0; bank0

ADCON0 = 0x81 ; //.........................................................................................................

cnt =0;
while (cnt <200) cnt++; // on charge la capa pdt TCmin >16,5µs

finconv= ADCON0 & 0x04 ; //.............................................................................

while ( finconv !=0 ) //.............................................................................


2) Lancer la conversion {
finconv= ADCON0 & 0x04 ;
}

STATUS=STATUS|0x20; // RP0 à 1; bank1


ADCON1 = 0x07; // Porta en E/S logique
3) Lire le résultat de la conversion
STATUS=STATUS|0x20; // RP0 à 1; bank1

resultat_l=ADRESL; //................................................................................................
STATUS=STATUS&0xDF; //RP0 à 0; bank0

resultat_h=ADRESH;//................................................................................................

Les microcontrôleurs PIC pic.doc Page 19


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
9. La liaison série asynchrone
a) Présentation de la liaison série asynchrone
Il s’agit de connecter le microcontrôleur à un équipement informatique (terminal, PC,….).

RX_232
+12V, -12V Adaptation de PIC
niveaux 0V, 5V
TX_232
+12V, -12V RX_232 RX RX
0V, 5V
TX_232 TX TX

Les bits sont émis depuis la broche TX et reçus avec la broche RX en série et de façon asynchrone. Il n’y a donc pas
d’horloge de synchronisation. Pour commencer l’envoi de bit en série, on envoie un bit de START et pour clôturer cet
envoi la transmission s’achève avec un caractère de STOP selon la trame suivante :

1 Bit 8 Bits 1 Bit


de de de
START DONNEES STOP

Le périphérique qui s’occupe de la transmission série s’appelle l’UART (Universal Asynchronous Receiver Transmitter)
et dans le PIC ses caractéristiques sont les suivantes :
• fonctionnement en full duplex (dans le sens émission et réception à la fois).
• vitesse de transmission programmable.
• 8 ou 9 bits de données
• un bit de start et un bit de stop

Schéma de l’émetteur simplifié sur 8 bits :

Test de registre d’émission vide


Si le bit TXIF=1 le registre Ecriture de la donnée à
TXREG est vide transmettre
Registre de transmission 8
bits parallèle

Autorisation d’émettre
Si le bit TXEN=1
l’émission est possible

Utilisation de cette broche


pour la liaison série

Sélection de la vitesse de
transmission Conversion parallèle →série
Registre à décalage d’émission non accessible
directement en écriture.

Les microcontrôleurs PIC pic.doc Page 20


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Schéma du récepteur simplifié sur 8 bits :
Autorisation de recevoir Erreur de débordement en
Sélection de la Si le bit CREN=1 la réception est possible réception
vitesse de Les données arrivent trop
transmission rapidement et ne peuvent pas
être lues sans perte.

Conversion série → parallèle


Registre à décalage de réception
non accessible directement en
lecture.

Utilisation de
cette broche
Test de registre de
pour la liaison
réception plein
série
Si le bit RCIF=1 le
registre RCREG est Lecture de la donnée à recevoir
plein Registre de réception 8 bits parallèle

b) Mise en œuvre de la liaison série

Etape 1 : Initialisation de la liaison série


Action Registres Détails du registre
1) Sélectionner la vitesse TXSTA
de communication en
bauds (bit/s) de la liaison A partir d’une vitesse (Baud Rate) définie et deux formules au choix,
série. il va s’agir d’en déduire un réel X.
Le registre SPBRG contiendra la partie entière du réel X.
SPBRG On limitera les erreurs d’arrondi entre X et SPBRG pour être le plus
proche de la vitesse (Baud Rate) définie à l’origine et donc éviter au
maximum les erreurs de transmissions.

Si BRGH=0, sélection de la formule avec division par 64.


Baud Rate= Fosc / (64(X+1)) avec X le réel à calculer et SPBRG = partie entière de X.

Si BRGH=1, sélection de la formule avec division par 16.


Baud Rate= Fosc / (16(X+1)) avec X le réel à calculer et SPBRG = partie entière de X.

2) Sélectionner le mode TXSTA


liaison série
ASYNCHRONE
bit SYNC=0

Les microcontrôleurs PIC pic.doc Page 21


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 1 : Initialisation de la liaison série (suite)
3) Connection des RCSTA
broches E/S à l’UART
ASYNCHRONE
bit SPEN=1

4) Activation de TXSTA
l’émission
bit TXEN=1

5) Activation de la RCSTA
réception
bit CREN=1

Etape 2.a :Emission de l’octet


Action Registre
Détails du registre
6) Attendre que l’octet PIR1 --RCIFTXIF----
soit émis et donc que le
tampon d’émission
TXREG soit vide.
Lire
Lorsque le tampon TXIF
d’émission est vide.TXIF
passe à 1. Boucle
Tant que (TXIF=0)

Lire
TXIF

Boucle

7) Stocker l’octet à émettre dans le registre TXREGTXREGTXREG ← octet à émettre

Les microcontrôleurs PIC pic.doc Page 22


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
Etape 2.b :lecture de l’octet reçu
Action Registre Détails du registre
8) Vérifier s’il n’y a pas RCSTA
une erreur de
débordement au niveau
du tampon de réception
tampon. Les octets reçus
ne sont pas lus assez OERR=1 ? oui
rapidement du registre
RCREG et la réception
non CREN=0
se bloque.
Si OERR=1 il y a une
erreur de débordement et
le bit CREN doit être mis CREN=1
à 0 puis remis à 1

9) Attendre que l’octet PIR1


soit reçu et donc que le - - RCIF TXIF - - - -
tampon de réception
RCREG soit plein. Lire
Lorsque le tampon RCIF
d’émission est plein RCIF
passe à 1. Boucle
Tant que (RCIF=0)

Lire
RCIF

Boucle

10) Réceptionner l’octet RCREG octet à recevoir ← RCREG


à recevoir depuis le
registre RCREG

Les microcontrôleurs PIC pic.doc Page 23


III. Architecture interne des PIC de la famille MID-RANGE

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
 TD sur la mise en œuvre de la liaison série asynchrone full duplex à …………bauds, 8 bits de
données et un bit de stop sur les broches RC6/TX et RC7/RX pour le 16F870 avec un quartz 4
MHz.
a) Rédiger les commentaires du programme C en précisant le rôle des instructions.

Exemple en C: conversion A/N sur la broche ……….. pour le 16F876 avec un quartz 3,2768 MH
char tamp_em;
char tamp_rec;
char over;
int compt=0;
//************************INITIALISATION DE LA LIAISON SERIE

STATUS=STATUS|0x20; //RP0 à 1; bank1


SPBRG=25; // vitesse= ………………bauds
TXSTA=TXSTA | 0x04; // formule de calcul utilisée : …………………………………………………………….

TXSTA=TXSTA & 0xEF; //mise à 0 de SYNC (mode asynchrone)

STATUS=STATUS&0xDF; //RP0 à 0; bank0


RCSTA=RCSTA | 0x80; //…………………………………………………………….

STATUS=STATUS|0x20; //RP0 à 1; bank1


TXSTA=TXSTA | 0x20; //…………………………………………………………….

STATUS=STATUS&0xDF; //RP0 à 0; bank0


RCSTA=RCSTA | 0x10; //…………………………………………………………….

//************************EMISSION

STATUS=STATUS&0xDF; //RP0 à 0; bank0

tamp_em=PIR1 & 0x10 ; //…………………………………………………………….

while (tamp_em == 0) //…………………………………………………………….

{
tamp_em=PIR1 & 0x10 ; //…………………………………………………………….
}

TXREG=FCV_CAR_EM; //…………………………………………………………….

//************************RECEPTION

over=RCSTA&0x02; //…………………………………………………………….

if (over==0x02) {
RCSTA=RCSTA&0xEF; //…………………………………………………………….

RCSTA=RCSTA | 0x10; //…………………………………………………………….


}

tamp_rec=PIR1 & 0x20; //…………………………………………………………….

while (tamp_rec==0) //…………………………………………………………….


{
tamp_rec=PIR1 & 0x20; //…………………………………………………………….
}

FCV_CAR_REC=RCREG; //…………………………………………………………….

Les microcontrôleurs PIC pic.doc Page 24


IV. La programmation ICSP des PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
2. Principe de programmation in situ ou ICSP (In-Circuit Serial Programming)
La programmation en circuit ICSP permet de programmer un microcontrôleur PIC in situ dans son application industrielle par
une liaison série synchrone.

Le PC Le programmateur (ici en L’application avec le PIC


mode programmation)

Cde aiguillage
Connecteur
ICSP PIC
D4/PROG +13,5V
+5V /MCLR
D1/CLK
RB6/CLK
D0/DATA
RB7/DATA
Port
parallèle Aiguillage

Actionneur ou capteur de
l’application reliés à RB6 et RB7
hors mode programmation
Sur le PC est stocké le fichier Le programmateur a pour rôle La mémoire programme du PIC est
xxx.hex qui contient le programme d’aiguiller les informations selon programmée sans que le PIC ne soit
à transférer. deux modes : programmation et déplacé de son support, c’est de la
Ce programme est envoyé bit par bit hors programmation du PIC. programmation in situ.
en série sur la ligne D0/DATA du
port parallèle du PC. La broche D4/PROG permet de Le principe de programmation est
mettre le PIC en mode très simple et nécessite 3 broches
programmation. sur le PIC :
/MCLR=13,5V pour mettre le PIC
en mode programmation.
RB7 pour recevoir les données
synchrone
RB6 pour l’horloge synchrone avec
les données.

Hors mode de programmation RB6


et RB7 sont disponibles comme E/S
pour l’application et /MCLR est
disponible pour faire un RESET du
PIC.

 TD sur le principe de programmation in situ


a) Indiquer la particularité de la programmation ICSP.
b) Préciser les deux rôles de la broche RB6.
c) Préciser les deux rôles de la broche RB7.
d) Préciser les deux rôles de la broche /MCLR.
e) Noter les trois tensions que l’on peut appliquer sur la broche /MCLR.

Les microcontrôleurs PIC pic.doc Page 25


LES MICROCONTROLEURS PIC IV) La programmation ICSP des PIC
2. Le programmateur – a) Schéma structurel

FPA
ALIMENTATION +13,5V et +5V

Connecteur ICSP
Vers l’application et son PIC

FP1
Elaboration
de /MCLR

Il existe de nombreux programmateurs sur le


marché. Il est possible pour programmer les PIC
d’utiliser sur le PC la liaison série RS232, USB ou la
liaison parallèle.

Ce programmateur utilise la liaison parallèle côté PC


et le cordon ICSP côté PIC pour le programmer. Il
est compatible avec le logiciel de téléchargement
FP2 PPP.exe qui est fourni avec FLOWCODE.
Aiguillage
.
cri pic.doc Page 26
IV. La programmation ICSP des PIC

● ▬ ● ▬ ● ▬ ● ▬ ● ▬
b) Analyse fonctionnelle du programmateur

FONCTION FP1 : Elaboration du signal /MCLR


Rôle : Elaborer une tension pour : réinitialiser le PIC /MCLR=0V,
mettre le PIC en fonctionnement normal /MCLR=+5V
mettre le PIC en mode programmation /MCLR=+13,5V
Entrées :
D3/RESET : Signal logique au niveau logique « 1 » pour générer un reset.
D4/PROG : Signal logique au niveau logique « 1 » pour faire passer le PIC en mode programmation et au niveau logique
« 0 » pour mettre le PIC en fonctionnement normal.
Sorties :
/MCLR : différence de potentiel valant 0V ou 5Vou +13,5V.
BUSY : Signal logique au niveau logique « 1 » quand le PIC est en cours de programmation et « 0 » sinon.

FONCTION FP2 : Aiguillage


Rôle : Aiguiller les informations sur les broches RB6 et RB7 du PIC selon les deux modes de fonctionnement :
programmation et hors programmation du PIC..
Entrées :
BUSY : Signal logique au niveau logique « 1 » quand le PIC est en cours de programmation et « 0 » sinon.
D1/CLK: Signal logique pour générer une horloge.
D0/DATA: Signal logique pour écrire les données en série dans la mémoire programme du microcontrôleur.
Sorties :
/MCLR : différence de potentiel valant 0V ou 5Vou +13,5V.
ACK/LECT : Signal logique pour LIRE/VERIFIER les données dans la mémoire programme du microcontrôleur.
Entrees/Sorties :
RB6 : Différence de potentiel connecté via le connecteur ICSP à l’application (ex : capteur, actionneur, …)
RB7 : Différence de potentiel connecté via le connecteur ICSP à l’application (ex : capteur, actionneur, …)
CLOCK/RB6 : Différence de potentiel connecté via le connecteur ICSP à la bit n°6 du PORTB du PIC
DATA/RB7: Différence de potentiel connecté via le connecteur ICSP à la bit n°7 du PORTB du PIC

 TD sur le programmateur
a) Compléter le tableau suivant relatif à la fonction FP1 « Elaboration du signal /MCLR ».
D4/PROG D3/RESET /MCLR BUSY Mode de fonctionnement du PIC
0 0
0 1
1 0
1 1

b) Compléter le tableau suivant relatif à la fonction FP2 « Aiguillage ».

BUSY D1/CLK D0/DATA RB6 RB7 CLOCK/RB6 DATA/RB7 ACK/LECT


0 X6 X7
1 X6 X7

X6 et X7 sont des signaux logiques pouvant valoir « 0 » ou « 1 » .

cri pic.doc Page 27


LES MICROCONTROLEURS PIC IV) La programmation ICSP des PIC
3.a La carte d’expérimentation « ELECTROPIC » : schéma structurel
Connecteur ICSP Adaptation de niveaux pour la liaison série
(+5V, 0V) → (-12V,+12V)

12 LEDS

D0 1 18
RA2 RA1 17
à 2
3
4
RA3
RA4
RA0
OSC1/RA7 16
15

D11 6
7
IC0
RA5/MCLR

RB0
OSC2/RA6

RB7 13
RB1 RB6 12
8 RB2 RB5 11
9 RB3 RB4 10

4 générateurs de 1 MCLR RB7 28


2 27
tension variables RA0 RB6

(0,+5V)
3
4
5
IC1
RA1
RA2
RA3
RB5
RB4
RB3
26
25
24

JP1 6
7
RA4
RA5
RB2
RB1
RB0
23
22
21
9 OSC1/CLKI
10 OSC2/CLKO

P0 à P3 JP2
11 RC0 RC7 18
12 17
13
RC1
RC2
RC6
RC5 16 Horloge à quartz
14 RC3 RC4 15

1 MCLR RB7 40
2 RA0 RB6 39
3 38
IC2
RA1 RB5
4 RA2 RB4 37
5 RA3 RB3 36

S0 BP0
6 RA4 RB2 35
7 RA5 RB1 34
RB0 33

à à
8 RE0
9 RE1
10 RE2

S4 BP4 JP0
13
14 OSC1/CLKI
OSC2/CLKOUT
15 30
RC0 RD7 29
16 RC1 RD6
17 28
RC2 RD5 27
18 RC3 RD4
23 22
RC4 RD3 21
24 RC5 RD2
25 20
Résistance de 26
RC6
RC7
RD1
RD0 19

pull-up pour Un seul PIC à la fois doit être inséré sur un des supports.
RA4 Le PORTA et PORTB sur les 3 supports de PIC sont reliés.
Le PORTC sur 2 supports de PIC (28 et 40 broches) sont reliés. BP RESET

5 boutons poussoirs
et 5 interrupteurs bistables
cri pic.doc Page 28
LES MICROCONTROLEURS PIC IV) La programmation ICSP des PIC
3.b La carte d’expérimentation « ELECTROPIC » : schéma d’implantation

19 15 11 7 3 23 19 15 11 7 3
17 13 9 5 25 21 17 13 9 5
J1 J2
JP1 JP2
+5V +5V

18 14 10 6 2 22 18 14 10 6 2 CARTE
16 12 8 4 24 20 16 12 8 4
PROGRAMMATEUR
D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
1

RD0 RE2 RE1 RE0 RA5RA4RA3RA2RA1RA0


Horloge
JP0 conn. ICSP
RD1
RA4
RD2
+5V
RD3 P0
RD4
IC2 IC1 IC0 P1 GND
RD5 BP RESET
J0
ELECTRO_PIC P2
RD6
Lycée VAUBAN
RD7 BREST
krt_elv143 P3
RC7RC6RC5RC4RC3RC2RC1RC0 RB7RB6RB5RB4RB3RB2RB1RB0
RX- TX-
RX TX 232 232

BP4 BP3 BP2 BP1 BP0 S4 S3 S2 S1 S0

cri pic.doc Page 29

Vous aimerez peut-être aussi