Nothing Special   »   [go: up one dir, main page]

COURS Pic PDF

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 22

Université Abou Bakr Belkaïd Tlemcen

Faculté de Technologie
Département de Génie Biomédical

Microcontrôleur
1-Introduction

Dans un passé pas très lointain, l’électronique se résumait essentiellement aux circuits analogiques et
éventuellement en logique câblée (portes
( logiques, compteurs, registres à décalage…).
décalage L’usage des
microprocesseurs était plutôt réservé à un public averti d’ingénieurs sachant les interfacer avec différents
circuits périphériques (eprom, ram…) …) et programmer en assembleur.
Au fil du temps on a vu apparaître de nouveaux circuits regroupant dans une seule puce le
microprocesseur et ses circuits périphériques : les microcontrôleurs. On en trouve maintenant partout :
automobile, lave-vaisselle,
vaisselle, rasoir, brosse à dent électrique…

2-Intérêt de la programmation
grammation en langage C

Heureusement, avec la montée en puissance des microcontrôleurs, on voit apparaître actuellement des
compilateurs en langage C (voire même C++) qui permettent de gagner un temps considérable pour le
développement et le débogage des programmes.
1-Le
Le C est un langage de « haut niveau », comparé à l’assembleur,
l’assembleur, qui permet d’écrire des programmes
nettement plus intelligibles et donc plus faciles à relire et corriger ou modifier.
2-Le
Le compilateur contrôle la cohérence du code au moment de la compilation et signale bon nombre
d’erreurs, qui seront autant de bogues en moins à corriger.
3- Le compilateur prend en charge la gestion d’un certain nombre de mécanismes fastidieux : par
exemple, pas besoin de spécifier la page mémoire dans laquelle on veut écrire, le compilateur s’en charge.
charge
4- De plus, certains compilateurs permettent tout de même d’accéder à des ressources de bas niveau, voir
même d’insérer dans le code des portions d’assembleur.
d’assembleur. A vrai dire, à moins d’être un « pro » de
l’assembleur, vous pourrez certainement créer avec un bon compilateur C un code plus propre et plus
robuste, en nettement moins de temps.

Pour bien fixer les idées sur la différence de niveau de langage entre assembleur et
C, je vais donner un exemple. Soit it à décrire une action simple :

« Ouvrir la fenêtre de la pièce dans laquelle vous êtes actuellement ».

En assembleur ça donnerait :
{- soulever pied droit
- avancer pied droit
- poser pied droit
- soulever pied gauche
- avancer pied gauche
- poser pied gauche
- soulever pied droit
- avancer pied droit
- ….
- Sélectionner bras gauche
- Soulever bras
- Avancer bras
- Prendre poignée fenêtre dans main gauche
- Tourner poignée de -90°
- Tirer poignée
- Etc.…}

En C ce serait plutôt :
{- Ouvrir la fenêtre}
Dr HAMZA CHERIF Lotfi

1
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

Et c’est le compilateur qui se chargerait de traduire la fonction « ouvrir la fenêtre » en instructions


élémentaires compréhensibles par le microcontrôleur.

3-Choix du compilateur

La programmation des microcontrôleurs se fait naturellement en langage assembleur. Microchip propose


MPLAB IDE, un environnement de développement performant, téléchargeable gratuitement. Il permet
d'éditer le code source (sous la forme d'un fichier texte avec
a extension .asm), de le simuler et de le débugger.
Le compilateur fournit le code objet (fichier avec extension .HEX). Notez que l'on peut aussi programmer
les microcontrôleurs en :
Langage C (mikroC) ; Pascal (PicPic Micro Pascal ; mikroPascal) ; Basic (Proton
Proton DS ; mikroBasic).
-Il existe aussi des langages
es de programmation graphique : Flowcode ; Niple.
Les figures suivantes illustrent des exemples
exemple de compilateurs.

-MPLAB IDE de Microchip.

Dr HAMZA CHERIF Lotfi

2
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

-MikroC
roC Pro for PIC de Mikroeloktronika.

Flowcode de Matrixmultimédia.
-Flowcode
Dr HAMZA CHERIF Lotfi

3
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

a-Compilateur graphique (Flowcode) :


Flowcode est un langage de haut niveau pour la programmation système PICmicro microcontrôleurs basé
sur les organigrammes. Flowcode vous permet de concevoir complexe PIC fondé la robotique et les
systèmes de contrôle par le dessin simplement un diagramme de votre émission souhaité en quelques
minutes même sans connaissances en programmation
prog préalable.

- Ne nécessite pas d'expérience de la programmation.


programmation
- Permet à un programme ou un code complexe en C à être conçu rapidement.
- Norme internationale utilisations diagramme de symboles (ISO5807).
(ISO5807)
- Plein écran sur la simulation permet le débogage et accélère le processus de développement.
développement
- Facilite l'apprentissage par suite complète de démonstration des didacticiels et des systèmes virtuels
(alarmes anti-vol etc).
- Produit ASM code pour une série de 18, 28 et 40 broches dispositifs.
dispositifs
- Permet un codage en C ou un assemblage de plusieurs codes C pour être intégré comme une macro.macro
- Prend en charge les interruptions et les convertisseurs A / D.

b-Fonctionnement du Flowcode :
Flowcode est construit sur un compilateur C - C2C. Il s'agit d'un objectif général 8 / 16 bits compilateur
conçu spécialement pour les appareils PICmicro. Flowcode génère un fichier de code C de l'organigramme
que vous créez. Ce code est automatiquement compilés
compilés en code assembleur par le compilateur C2C et
ensuite traduits en un code machine Hex fichier à l'aide de Microchip MPASM assembleur.
Toute tierce partie PIC programmeur peut ensuite être utilisé pour télécharger le fichier résultant Hex dans
l'objectif du PIC program mémoire.

4-La
La carte de programmation (hardware) :
Il existe des cartes de programmation qui se branchent sur le port parallèle, le port série ou bien le port
USB d'un ordinateur.

Exemple de carte de programmation.

Dr HAMZA CHERIF Lotfi

4
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

5-Le
Le programmateur (software) :
IC-Prog
Prog (logiciel freeware développé par Bonny Gijzen), Serial Bootloader AN1310 (Microchip) et mikroProg Suite
For PIC (Mikroelectronika) permettent
tent le transfert du code objet (fichier .HEX) dans la mémoire Flash du
microcontrôleur.

-Exemples de logiciels programmateurs.

Dr HAMZA CHERIF Lotfi

5
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

6- Connexion avec le PC

Une solution consiste à utiliser le programmeur à deux résistances qui marche très bien sur le port série d'un
PC de bureau (ne marche pas avec un PC portable). Pour le logiciel, on utilise PICPGM qui a l'avantage de
détecter le PIC quand le câblage est correct. En cas de difficulté, on sélectionner le programmeur JDM
programmer dans la section Hardware

Dr HAMZA CHERIF Lotfi

6
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

7-Choix du microcontrôleur.
a-Du
Du microprocesseur au microcontrôleur.
microcontrôleur
Le processeur est l'élément central d'un système informatique : il interprète les instructions et traite les
données d'un programme. Il a besoin de certains éléments externes pour fonctionner :
-Une horloge pour le cadencer.
-De la mémoire pour stocker les variables durant l’exécution du programme (mémoire
(mémoire vive RAM)
RAM et le
programme d’une mise sous tension à l’autre (mémoire
( morte ROM). ). Si l'on conçoit un système assigné à
une tâche bien particulière
lière (ce qui est généralement le cas des systèmes embarqués), le programme n'est pas
amené à changer. Il peut donc être stocké dans une mémoire morte (ROM) ;
-Des périphériques (pour interagir avec le monde extérieur).
Ces éléments sont reliés par 3 bus :
-le bus d'adresse qui permet au microprocesseur de sélectionner la case mémoire ou le périphérique auquel
il veut accéder pour lire ou écrire une information (instruction ou donnée) ;
-le bus de données qui permet le transfert des informations entre les différents éléments ; ces informations
seront soit des instructions, soit des données en provenance ou à destination de la mémoire ou des
périphériques ;
-le bus de contrôle qui indique si l'opération en cours est une lecture ou une écriture, si un périphérique
demande une interruption pour faire remonter une information au processeur, etc.

Les microcontrôleurs améliorent l'intégration et le coût (lié à la conception et à la réalisation) d'un


système à base de microprocesseur en rassemblant ces éléments essentiels dans un seul circuit intégré. Un
microcontrôleur est donc un composant autonome, capable d'exécuter le programme contenu dans sa
mémoire morte dès qu'il est mis sous tension. Selon les modèles et les conditions de fonctionnement,
fonctionnement les
microcontrôleurs peuvent avoir besoin de quelques composants externes (quartz, quelques condensateurs,
parfois une ROM),
), mais ceci reste très limité.

b-Microcontrôleurs
Microcontrôleurs comme Composants intégrés
Un microcontrôleur intègre sur un unique boitier :
Un processeur (CPU),, avec une largeur du chemin de données allant de 4 bits pour les modèles les plus
basiques à 32 ou 64 bits pour les modèles les plus évolués ;
De la mémoire vive (RAM) pour stocker les données et variables ;

Dr HAMZA CHERIF Lotfi

7
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

De la mémoire morte (ROM) pour stocker le programme. Différentes technologies peuvent être
employées :EPROM, EEPROM, mémoire flash (la plus récente) ;

Souvent un oscillateur pour le cadencement. Il peut être réalisé avec un quartz, un circuit RC, des
périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner entre autres :

• les convertisseurs analogiques-numériques


analogiques (CAN) (donnent
nt un nombre binaire à partir d'une
tension électrique),
• les convertisseurs numériques-analogiques
numériques (CNA) (effectuent l'opération inverse),
inve
• les générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en anglais, PWM
pour Pulse Width Modulation),
Modulation
• les timers/compteurs (compteurs d'impulsions d'horloge interne ou d'événements externes),
• les chiens de garde (watchdog),
(watchdog)
• les comparateurs (comparent deux tensions électriques),
• les contrôleurs de bus de communication (UART, I²C, SSP, CAN, FlexRay,
FlexRay USB, Ethernet, etc.).

c-Famille
Famille de microcontrôleur

• la famille Atmel AT91 ;


• la famille Atmel AVR (utilisée par des cartes Arduino) ;
• le C167 de Siemens/Infineon ;
• la famille Hitachi H8 ;
• la famille Intel 8051,, qui ne cesse de grandir ; de plus, certains processeurs récents utilisent un cœur
8051, qui est complété par divers périphériques (ports d’E/S, compteurs/temporisateurs,
compteurs/tempori convertisseurs
A/N et N/A, chien de garde, superviseur de tension,
tension etc.) ;
• l’Intel 8085,, à l'origine conçu pour être un microprocesseur, a en pratique souvent été utilisé en tant
tan que
microcontrôleur ;
• le Freescale 68HC11 ;
• la famille Freescale 68HC08 ;
• la famille Freescale 68HC12 ;
• la famille des PIC de Microchip ;
• la famille des dsPIC de Microchip ;
• la famille des ST6, ST7, STM8,, ST10, STR7, STR9, STM32 de STMicroelectronics ;
• la famille ADuC d'Analog
Analog Devices ;
• la famille PICBASIC de Comfile Technology;
Technology
• la famille MSP430 de Texas Instruments ;
• la famille 8080,, dont les héritiers sont le microprocesseur
micro Zilog Z80 (désormais utilisé en tant que
contrôleur dans l'embarqué) et le microcontrôleur Rabbit ;

Dr HAMZA CHERIF Lotfi

8
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

• la famille PSoC de Cypress ;


• la famille LPC21xx ARM7-TDMI
TDMI de Philips ;
• la famille V800 de NEC ;
• la famille K0 de NEC.

Exemple de la famille Atmel AVR (utilisée par des cartes Arduino).


Arduino

d-Les PICs de Microchip


Les PICs sont des microcontroleurs à architecture RISC (Reduce Instructions Construction Set), ou
encore composant a jeu d’instructions réduit. L'avantage est que plus on réduit le nombre d’instructions,
d plus
leur décodage sera rapide ce qui augmente la vitesse de fonctionnement du microcontroleur.

La famille des PICs est subdivisee en 3 grandes familles : La famille Base--Line, qui utilise des mots
d’instructions de 12 bits, la famille Mid-Range,
Mid qui utilise dess mots de 14 bits (et dont font partie la 16F84
et 16F877), et la famille High-End,, qui utilise des mots de 16 bits.

Les PICs sont des composants STATIQUES, Ils peuvent fonctionner avec des fréquences d’horloge
allant du continu jusqu’a une fréquence max spécifique a chaque circuit. Un PIC16F876-
PIC1 04 peut
fonctionner avec une horloge allant du continu jusqu’a 4 MHz.

Range, mémoire FLASH (F).


Ex : 16F877 = Mid-Range, (F)

Dr HAMZA CHERIF Lotfi

9
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

e- Classifications des microcontrôleurs à deux niveaux


• Au niveau du processeur:
– RISC : Reduced Instruction Set Computer
– CISC : Complex Instruction Set Computer

• Au niveau de l’organisation de la mémoire


– Architecture Von Neumann : une mémoire unique et pour le programme et pour les données
– Architecture Harvard : le programme et les données sont stockéess dans des mémoires
mémoir physiquement
séparées

Ex : PIC16F877 (4 cycles d’horloge/instr.), Harvard.


Harvard

Explication :

En effet, ils ont été conçus sur une architecture dite HARVARD (RISC) et non sur un modèle VON
NEUMANN (COMPLEX).
- L’architecture VON NEUMANN employée par la plupart des microcontrôleurs actuels (INTEL80XX,
(
motorola HC05, HC08 et HC11, ou ZILOG Z80) Z80) est basée sur un bus de données unique. Celui-ci
Celui
véhicule les instructions et les données.
données

-L’architecture HARVARD utilisée par les microcontrôleurs PICS est basée sur deux bus de données. Un
bus est utilisé pour les données et un autre pour les instructions.

Dr HAMZA CHERIF Lotfi

10
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

1-Le PIC 16F84


Lee numéro 16 signifie qu'il fait partie de la famille "MID-RANGE".
"MID RANGE". C'est la famille de PIC qui travaille sur
des mots de 14 bits.
La lettre F indique que la mémoire programme de ce PIC est de type "Flash".
Les deux derniers chiffres permettent d'identifier précisément le PIC, ici c'est un PIC de type 84.
La référence 16F84 peut avoir un suffixe du type "-XX"
XX" dans lequel XX représente la fréquence d'horloge
maximal que lePIC peut recevoir.
2-Caractéristiques du 16F84.

• 35 instructions (composant RISC), ), Le PIC 16F84 est un processeur RISC, c'est-à-dire


c'est qu'il est doté d'un
set d'instruction réduit (35 instructions).
• 1Ko de mémoire (1024 mots de 14 bits) Flash pour le programme,
• 68 octets de RAM,
• 64 octets de d'EEprom,
• 1 compteur/ timer de 8 bits,
• 1 Watch dog,
• 4 sources d'interruption,
• 13 entrées/sorties configurables individuellement,
• Mode SLEEP.

3-Brochage du PIC 16F84

• VSS et VDD : broches d'alimentation (3 à 5,5 V).


• OSC1 et OSC2 : signaux d'horloges, ces broches peuvent recevoir un circuit RC ou un résonateur.
• CLKIN : peut être connectée à une horloge externe (0 à 4, 10 ou 20 MHz).
• MCLR : Reset (Master Clear).
• RA0, ..., RA4 : 5 entrées/sorties du port A.
• RB0, ..., RB7 : 8 entrées/sorties du port B.
• T0CKI : Entrée d'horloge externe du timer TMR0.
• INT : entrée d'interruption externe.

-Cass particulier de la broche RA4 configurée en sortie


possède une sortie de type drain ouvert.
Cela veut dire qu'elle ne peut pas fournir de courant.
Par contre, elle peut en consommer.

Dr HAMZA CHERIF Lotfi

11
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

4-Exemple de programme :
void main()
{
TRISB=0x00; // registre de configuration (1 seul fois (0 : sortie, 1 : entrée)) TRISB=0b00000000; TRISB=0 ;
PORTB=0x00; // registre de travail.
delay_ms(1000);
PORTB=0b00111111;
PORTB=0;
}

5-Brochage du PIC 16F877

Dr HAMZA CHERIF Lotfi

12
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

Le schéma ci-dessus
dessus représente les différents modules du PIC 16F877.
16F877

Dr HAMZA CHERIF Lotfi

13
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

1-Le
Le cœur du PIC : le microprocesseur
Un microcontrôleur, c’est avant tout un microprocesseur, une unité de traitement logique qui effectue
l’une après l’autre les opérations contenues dans un microprogramme stocké en mémoire (la ( mémoire
FLASH). On peut le voir sur le schéma (en jaune ci-dessous),
ci dessous), il est essentiellement composé de :
-l’ « ALU » (Unité Arithmétique et Logique) qui effectue les opérations sur les donnés,
-le registre de travail « W reg.. », le multiplexeur « MUX », le registre de statut « status reg », le registre «
FSR reg » utilisé pour l’adressage indirect (en assembleur…), le multiplexeur d’adresse « Addr mux », le
compteur programme « Program Counter » qui pointe les instructions à exécuter, écuter, la pile à 8 niveaux « 8
level Stack », le registre d’instruction « Instruction reg », ainsi que les différents bus qui relient tous ces
éléments entre eux.

On n’entrera pas ici dans les détails du fonctionnement d’un microprocesseur


microprocesseu ; c’est très intéressant à
connaître, indispensable même si on programme en assembleur.
Mais en ce qui nous concerne, on veut programmer en C, et c’est donc le compilateur qui se chargera de
traduire notre code source en instructions de bas niveau pour le microprocesseur contenu dans le PIC. C’est
là le principal avantage de la programmation en C.
On se concentre d’avantage sur « ce que fait le programme » que sur « comment fonctionne le programme ».
On va tout de même jeter un petit coup d’œil
d’ sur le schéma ci-dessus,
dessus, histoire de comprendre quelques
particularités du PIC, déroutantes au premier abord.

On s’aperçoit que les bus autour de l’ALU ont un format de 8 bits : le PIC 16F877 travaille sur des
données de 8 bits, c’est donc bien un microcontrôleur
microcontr 8 bits.
-Pourquoi
Pourquoi donc ce cas le « Program Bus » est-il,
est lui, large de 14 bits ?

C’est simple, certaines instructions peuvent être codées sur plus de 8 bits. Si ce bus n’était large que de 8
bits, il faudrait plus d’un cycle d’horloge pour transmettre ces instructions, alors qu’avec un bus plus large,
ça passe en une fois. De plus, la mémoire programme, indépendante du bus de données, est elle-même elle
adressée avec un bus large : le « Program Counter », qui pointe sur l’instruction en cours, à une largeur de
13 bits. Et avec 13 bits on peut coder environ 8000 adresses. Autrement dit, on à 8000 cases de mémoire
programme
ramme pouvant contenir chacune UNE instruction complète. Cette architecture avec bus de données et
de programme séparés (architecture « Harvard ») permet donc d’optimiser le fonctionnement du PIC.

La plupart du temps, le PIC exécute une instruction et charge la suivante simultanément en un seul cycle
d’horloge. En comparaison, un microcontrôleur 8 bits construit selon l’architecture concurrente « Von
Neumann » (mémoire programme et données reliés au microprocesseur par un unique bus 8 bits) devra faire
plusieurs cycles pour chercher les instructions en mémoire (en plusieurs fois si c’est une instruction longues)
et les exécuter ensuite. En conséquence, à fréquence d’horloge égales, un microprocesseur « Harvard » sera
plus rapide qu’un « Von Neumann ».

2- La mémoire
Sur le PIC, il n’y a trois mémoires :

2-a. La Mémoire Programme,, de type FLASH sur le 16F877. Capacité : 8K. C’est dans celle-ci qu’est
stocké le programme du PIC. Après compilation de votre code, le compilateur génère un fichier « .hex »,
une suite de codes hexadécimaux. Celui-ci
Celui est transféré ensuite dans la mémoire programme du PIC
P à l’aide
du programmateur. Cette mémoire n’est pas reliée au bus de données (DATA Bus), sa vocation est de
stocker le programme du PIC, mais PAS les variables de votre programme. Le gros avantage de la mémoire
FLASH c’est que vous pouvez la réécrire, donc
do implanter un nouveau programme dans le PIC. Les PIC

Dr HAMZA CHERIF Lotfi

14
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

existent également avec d’autres versions de mémoire programme (non-FLASH),


FLASH), certaines ne pouvant être
programmée qu’une seule fois.

2-b. La Mémoire RAM,, qui fait partie de la zone d’adressage des données.
donn Elle comprend tous les registres
spéciaux permettant de contrôler le cœur du PIC ainsi que ses périphériques. Elle contient également des
cases mémoires à usage générique dans lesquelles pourront être stockées les variables de nos futurs
programmes.

3-c. La Mémoire EEPROM.. L’EEPROM est plutôt une mémoire de stockage de données à long terme,
alors que la RAM est utilisée pour les variables du programme. Sur le PIC 16F877, on a 256 octets
d’EEPROM disponible. Les mémoires de type EEPROM sont limitées en nombre de cycles d’effacement /
écriture. Ce nombre de cycle est tout de même de l’ordre du million pour le PIC, mais si on l’utilisait pour
stocker des variables modifiées plusieurs milliers de fois par secondes, cette limite pourrais être atteinte plus
vite qu’on ne le croît. Par contre, pour stocker toute les heures une mesure de température, c’estc tout bon
(Programme de fonctionnement du PIC).

Dr HAMZA CHERIF Lotfi

15
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

3- La Pile et le Compteur Programme


On les a déjà évoqués dans le paragraphe « le cœur du PIC : le microprocesseur », mais puisqu’on vient
de parler de la mémoire, une petite remarque s’impose.

Le « Program Counter » ou PC est le compteur qui pointe dans la mémoire programme la prochaine
instruction à exécuter. Il est
st lié à la pile système (Pile = Stack en anglais) qui est sur le PIC 16F877 une pile
8 niveaux ; Cela signifie qu’on peut avoir jusqu'à 8 niveaux d’imbrication d’appels de sous-programme ou
fonctions. Ce point est surtout critique pour la programmation en assembleur : un sous-programme
sous peut
appeler un autre sous-programme
programme qui appelle à son tour un autre sous-programme…programme… jusqu’à une «
profondeur » de 8. Au-delà, c’est la cata : votre programme est buggé et va faire n’importe quoi, étant donné
que le PIC ne peut « dépiler » que 8 niveaux. Le Compteur Programme n’arrivera pas à revenir à la racine
des appels. La programmation en C apporte là un peu de souplesse : un bon compilateur veillera pour vous à
ce que la limite de 8 niveaux ne soit pas dépassée,
dépassée, quitte à recopier localement une fonction pour éviter un
saut à l’adresse mémoire où cette fonction est déjà présente. Au détriment donc de l’occupation en mémoire.
Ainsi, mieux vaut-il il éviter de créer trop de niveaux d’imbrication d’appels de fonctions fonction dans nos
programmes.

4- Les Ports d’Entrées/Sorties généraux : PORTA, PORTB, PORTC, PORTD et PORTE

Le PIC 16F877 est généreusement doté de 5 ports, ce qui est plutôt confortable. Un examen plus attentif
du schéma du brochage nous montre cependant que les lignes d’entrées/sorties (les pattes du composant)
correspondantes sont également utilisées par d’autres modules du PIC. Ainsi, les pattes du PORTA servent
également au convertisseur Analogique/Numérique, les pattes du PORTD au Port Parallèle Esclave, etc. Il
faudra faire des choix au moment de la conception du schéma électronique. On voit également que les ports
B, C et D ont 8 lignes d’entrée/sortie, alors que le port A n’en a que 6 et le port E que 3. Ils sont tous
connectés au bus de donnée (DATA
DATA BUS),
BUS), on pourra donc librement les adresser pour y lire ou écrire des
données, et donc allumer des LED, commander des moteurs pas à pas, des afficheurs LCD, lire les données
envoyées par un clavier ou un bouton poussoir… On peut configurer les entrées/sorties
es/sorties de chaque port en
entrée ou en sortie, grâce à un registre spécial dédié à chaque port. De plus, un des ports (le port B) possède
des résistances de « pull-up
up » internes qui peuvent êtres validées ou non par logiciel.

5-Le Port Parallèle Esclave


e (PSP : Parallel Slave Port)

Le Port Parallèle Esclave est un port 8 bits permettant d’interfacer le PIC avec, par exemple, un autre
microprocesseur. Les données transitent via les lignes PSP0 à PSP7, qui physiquement
hysiquement utilisent les mêmes
broches que le PORTD. Le flux de données est contrôlé par les lignes RD, WR et CS qui correspondent aux
broches du PORTE. C’est le microprocesseur externe qui est le chef d’orchestre : il valide notre PIC par la
ligne CS (Chip Select), et indique au PIC s’il lit ou
ou écrit grâce aux lignes RD (Read) et WR (Write). D’où
l’appellation de port parallèle ESCLAVE. Esclave, puisque c’est le microprocesseur externe qui donne les
ordres, notre PIC ne fait qu’exécuter.

Dr HAMZA CHERIF Lotfi

16
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

6-Le
Le circuit de génération d’horloge

Pour faire battre le cœur de notre PIC, on a besoin d’un circuit de génération d’horloge. Avec les PIC «
Mid Range », plusieurs options possibles : circuit RC (résistance + condensateur), ou circuit résonateur
céramique, ou oscillateur à quartz... Le mode de fonctionnement est déterminé au moment de la
programmation du PIC par des « bits de configuration » qui sont en fait des emplacements de mémoire non-
volatile. Pour générer un « cycle d’instruction », il faut 4 cycles d’horloge. Autrement dit, si votre quartz
q bat
à 20 MHz, les instructions du programme s’exécutent à une cadence de 5 MHz.

7-Le TIMER0

Dans le passé, le Timer0 s’appelait RTCC. C’est un compteur 8 bits (0 à 255) simple, qui compte des
impulsions soit internes, soit d’une source externe. On peut par ailleurs lui appliquer une pré-division
pré
programmable entre 1 et 256. On peut librement lire ou écrire dans le registre de comptage associé. On peut
donc le pré charger avec une valeur, à partir de laquelle il comptera jusqu’à atteindre 255.
Une fois le registre de comptage plein, il peut générer une interruption. Étant donné qu’une fois configuré il
fonctionne quasi-indépendamment
indépendamment du microprocesseur, on pourra s’en servir comme base de temps.

8- le TIMER1

Le Timer1 fonctionne sur le même principe que le Timer0, mais avec un registre de comptage plus gros :
16 bits au lieu de 8, ce qui étend notablement ces capacités de comptage. De plus, il possède un mode de
fonctionnement particulier : on peut l’utiliser en association
association avec un des modules CCP (modules de capture
et de comparaison).). Voyons rapidement le mode « capture » : lorsqu’un événement survient sur l’entrée du
module CCP, la valeur du Timer1 est lue. Comme on connaît la fréquence de comptage, on peut en quelque
sorte « chronométrer » la survenue d’un événement. Exemple : si l’entrée du module CCP est reliée à un
capteur qui délivre une impulsion à chaque tour de l’arbre d’un moteur, la valeur contenue dans le registre
du Timer1 au moment de l’impulsion est le reflet
re de la vitesse de rotation.
Voyons maintenant le mode « comparaison » : Le Timer1 compte en continu, et une interruption est générée
chaque fois que la valeur du compteur est égale à celle qu’on aura pré chargée dans le registre de
comparaison. On peut s’en servir pour, par exemple, générer un signal carré.

Dr HAMZA CHERIF Lotfi

17
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

9-Le TIMER2
Le Timer2 a un fonctionnement différent des Timer0 et Timer1. C’est un compteur 8 bits avec pré-diviseur
pré
et post-diviseur.
diviseur. On s’en sert pour générer des signaux carrés, ou, en association
association avec le module CCP, des
signaux PWM. PWM étant l’acronyme de « Pulse Width Modulation » ou, en français, Modulation de
Largeur d’Impulsion (MLI).

10- Les modules CCP1 et CCP2

On en a parlé au moment de voir les Timer1 et Timer2 ; on a deux modules CCP sur le PIC. CCP pour «
Capture, Compare, PWM ».
imers, ils vont nous permettre de générer des signaux à modulation de
En association avec les deux Timers,
largeur d’impulsion (PWM) pour, par exemple, faire varier la vitesse d’un moteur à courant continu, réguler
le courant (et donc la luminosité) dans une ampoule…
Ils vont également nous permettre de comparer l’occurrence d’un signal en entrée avec la valeur du
compteur Timer1, réalisant ainsi un chronométrage de l’événement en question (par exemple : indication de
la fréquence de rotation d’un moteur). Ils vont encore nous permettre de générer des signaux carrés, et cela
de manière quasi-indépendante
indépendante du reste du microcontrôleur qui pourra continuer à vaquer à ses occupations.

11-Le convertisseur
seur Analogique – Digital 10bits :

Le convertisseur A/D convertit le signal analogique présent sur une de ses 8 entrées en son équivalent
numérique, codé sur 10 bits. Les pattes AN2 et AN3 peuvent être utilisées comme références de tension ou
comme entrées analogiques standard, les références de tension étant dans ce dernier cas prises sur les
tensions d’alimentations du PIC : VDD et VSS. (VDD pour le + et VSS pour le -). - On peut donc numériser
jusqu’à 8 signaux analogiques. Pas tous en même temps, bien sûr, étant donné qu’il n’y a qu’un seul module
de conversion pour 8 signaux d’entrée multiplexés. Mais si vos signaux n’évoluent pas trop vite (fréquence
basse), vous pouvez numériser le signal sur la patte AN0, puis celui sur AN1…
Les paramètres
res important dont il faudra tenir compte sont :
• La résolution du convertisseur. Ici 10 bits, donc meilleur qu’un convertisseur 8 bits, mais moins précis
qu’un 12 bits…
• Le temps de conversion.
• La rapidité d’évolution des signaux présents sur les entrées
entr (leur fréquence pour des signaux périodiques).
• Le nombre de signaux à numériser.
En effet, pour un signal périodique, la fréquence d’échantillonnage doit être au moins deux fois supérieure à
la fréquence du signal.

Dr HAMZA CHERIF Lotfi

18
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

12-L’USART

L’USART ou Universal Synchronous Asynchronous Receiver Transmitter est l’un des deux modules de
communication série du PIC ou SCI en anglais (Serial Communication Interface). Comme son nom
l’indique, elle peut établir une liaison synchrone ou asynchrone, recevoir et transmettre des données, selon la
manière dont elle est configurée. C’est son côté « je peux tout faire » qui lui vaut l’attribut « Universal ».
Concrètement, l’USART permet de communiquer avec le reste du monde : un ordinateur ou tout autre
matériel équipéé d’une interface série RS232, des circuits intégrés convertisseurs Numérique/Analogique ou
Analogique/Numérique, des EEPROMs série…

L’USART peut être configurée selon 3 modes :


• Asynchrone (Full Duplex)
• Synchrone Maître (Half Duplex)
• Synchrone Esclave (Half Duplex)

13-Le
Le SSP, Synchronous Serial Port

Le module SSP est la deuxième interface de communication série du PIC.


En fait, il s’agit d’un port Maître, donc l’appellation exacte est plutôt MSSP pour « Master Synchronous
Serial Port ». Il est utile pour communiquer avec d’autres modules ou microcontrôleurs, des EEPROMs
séries, des registres à décalage, des afficheurs, des convertisseurs A/N ou N/A…
Il peut fonctionner dans deux modes de communication :
• Le mode SPI (Serial Peripheral
heral Interface)
• Le mode I²C (Inter-Integrated
Integrated Circuit)

L’utilisation de l’un de ces deux modules de communication, USART ou MSSP dépend donc
essentiellement du protocole de communication nécessaire. Schématiquement, l’USART est bien adaptée
pour communiquer avec le reste de l’univers via la célèbre interface RS232 alors que le MSSP permet de
communiquer aisément avec d’autres composants électroniques à interface série. Une dernière remarque par
rapport aux interfaces de communication : certains PIC (mais pas le 16F877) intègrent une interface USB ou
un module de communication Ethernet.

14-La logique de RESET

La logique de reset comprend plusieurs modules :

• Le POWER-UP TIMER : c’est une temporisation au démarrage.


Lors d’un démarrage ou redémarrage suite à un reset,
cette temporisation permet à la tension d’alimentation VDD
d’atteindre une valeur suffisante et stable. On évite ainsi au PIC
de subir les inévitables phénomènes transitoires à la mise
sous tension. Cette temporisation
orisation fonctionne avec son propre circuit RC interne.

Dr HAMZA CHERIF Lotfi

19
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

• L’OSCILLATOR START UP TIMER : une fois la temporisation du Power-Up Up Timer écoulée, c’est au
tour de l’Oscillator Start Up Timer de prendre le relais. Il s’agit d’une temporisation dont le but est de
permettre au circuit de l’oscillateur de démarrer proprement. En effet, de la même manière que la tension
d’alimentation met un certain temps à se stabiliser, l’oscillateur a besoin de temps pour démarrer et se
stabiliser

• Le POWER-ON RESET : à la mise sous tension, lorsque VDD est détecté, ce module génère une
impulsion de reset, ce qui lance le Power-Up
Power Timer et remet un certain nombre de registre du PIC dans un
état déterminé. Habituellement on utilise un circuit externe à résistance / condensateur
condensateur pour générer ce «
pulse » de reset. Mais sur le PIC, à condition que l’apparition de la tension d’alimentation soit assez «
énergique » vous pouvez vous passer de ce circuit RC. On ramène juste la tension d’alimentation à travers
une résistance appropriée sur la patte « MCLR » (Memory CLeaR).

• Le BROWN-OUT RESET : ce module surveille la tension d’alimentation. Si celle-ci


celle descend en-dessous
d’une valeur minimum pour laquelle le fonctionnement correct du PIC ne peut plus être assuré, le module
Brown-Out Reset redémarre (reset) le PIC.

• Le WATCHDOG TIMER : C’est le « Chien de garde » (watchdog en anglais) du PIC. S’il est utilisé, ce
timer doit être périodiquement remis à zéro par le programme, car, s’il « déborde », il place le PIC en mode
Reset. Ainsi, en cas de plantage de votre programme le PIC est redémarré automatiquement.

15-L’In-Circuit Debugger

Ce module permet de simplifier la phase de débogage des programmes. Une fois activé,
il donne accès à des fonctionnalités avancées de débogage. Celles-ci sont exploitées
par le module ICD de MPLAB, l’environnement de développement intégré de Microchip.
Vous pouvez alors suivre « en live » l’évolution de votre programme entrain de s’exécuter
sur le PIC, poser des points d’arrêt, lire le contenu des registres, etc.

16-Low-Voltage
Voltage Programming et ICSP (In-Ci
(In rcuit Serial Programming)

Tout d’abord, voyons comment le PIC est programmé habituellement. Contrairement


à des modèles de microcontrôleurs
leurs plus anciens qui étaient programmés en« parallèle »
(les octets étaient transférés dans la mémoire programme sur 8 lignes),
les modèles récents de PIC se programment en série. C'est-à-dire
C'est que les octets sont
transmis bits après bits sur un nombre restreint de lignes. Le grand avantage c’est
qu’on peut, moyennant certaines précautions, programmer le PIC alors qu’il est
déjà implanté sur le circuit imprimé de son application ! Pas besoin de le retirer de
son support à chaque fois (en risquant de tordre
to des pattes) pour le placer sur le
programmateur. C’est ce qu’on appelle l’ICSP : In-Circuit
In Circuit Serial Programming, ou
autrement dit, en français, Programmation Série En Circuit. On programme le PIC
déjà implanté, en mode de transfert série.

Comment se passe
asse la programmation ICSP ?
- On alimente le PIC avec sa tension de programmation, généralement 13V
- On utilise pour transférer le programme les lignes RB6 (qui devient l’horloge
cadençant le transfert) et RB7 (pour transférer les données en écriture ou lecture).
On à donc besoin d’une tension de programmation,
programmation plus élevée que la tension
d’alimentation normale.

Dr HAMZA CHERIF Lotfi

20
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

C’est pour le cas standard, mais grâce au module « Low Voltage Programming », il y a moyen de faire la
même chose en ayant pas besoin de la tension de programmation.

Il y a également un autre moyen de programmer notre PIC : l’utilisation d’un Boot loader. Qu’est-ce
donc ? Un boot loader (traduction littérale : « chausse-pied
chausse ») est un petit bout de programme que l’on
implante dans la mémoireoire du PIC et qui va « charger » le programme que vous voulez implanter dans la
mémoire du PIC. Ici, plus besoin de programmateur. Si votre PIC est équipé d’une interface série, ou
USB, ou autre, vous pouvez transférer le programme via cette interface. C’est C’ le boot loader, en
coordination avec le logiciel ad’ hoc sur votre ordinateur, qui va se charger du transfert et de l’écriture en
mémoire programme. Le boot loader reste ensuite inactif dans la mémoire du PIC pendant que votre
programme s’exécute normalement. Au prochain démarrage du PIC, si le boot loader détecte une nouvelle
tentative de transfert de programme sur l’interface sélectionnée (série, USB,…) il le charge et remplace
l’actuel. Sinon il passe la main au programme actuel.

Ce mécanismee est surtout très pratique dans les phases de prototypage où de nombreux transferts son
nécessaires, d’autant plus que la vitesse de transmission des données est beaucoup plus rapide qu’avec un
programmateur. Ici encore, la programmation se fait sur un mode
mode série, mais comme on ne passe pas par un
programmateur on à pas accès à la tension de programmation. L’utilisation du module « Low Voltage
Programming » prends ici tout son sens.

17- Les Bits de Configuration

Pour « customiser » le PIC, il existe ce que


q l’on appelle les bits de configuration.
Ce sont des bits spéciaux de la mémoire programme qui permettent de spécifier le mode de fonctionnement
d’un certain nombre de fonctionnalité du PIC. À savoir :
- L’oscillateur : utilisation d’un quartz ou d’un circuit
ci RC, plage de fréquence
- Utilisation ou nom du Watchdog
- Utilisation de la patte MCLR ou non
- Validation ou non du Power-Up Up Timer
- Validation ou non du Brown-Out Out Reset
- Protection de la mémoire programme et de la mémoire EEPROM
Ces bits sont programmés
rammés au moment du transfert du programme dans le PIC.

18- Les Interruptions

Un certain nombre d’événements sont susceptible de générer des interruptions : fin de conversion de
signal analogique, écriture en mémoire EEPROM terminée, débordement de Timer, USART, SSP,
changement d’état d’une entrée de port….

Si votre programme comprend une routine de gestion de cette interruption, le déroulement normal
s’interrompt et la routine de gestion de l’interruption est exécutée.
Le gros avantage de ce mécanisme, c’est que le microcontrôleur peut vaquer à ses occupations sans être
obligé de scruter en permanence si telle ou telle action a eu lieu. Par exemple, si un clavier est raccordé au
PIC, pas besoin de surveiller en permanence si une touche a été activée.
activée. Si c’est le cas, le changement d’état
sur le port générera une interruption. Le PIC sera ainsi mis au courant qu’un changement a eu lieu et
exécutera les actions adéquates.

Dr HAMZA CHERIF Lotfi

21
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical

19-Le mode SLEEP

Le mode Sleep est un mode de fonctionnement particulier particulier du PIC dans lequel celui-ci
celui réduit sa
consommation électrique au minimum. Il est presque entièrement désactivé, son oscillateur est éteint. Le
PIC est en mode « veille » !
Pour sortir de cette torpeur, il faut un des événements suivant :
- Reset du circuit, ou
- Réveil par le Watch-Dog
Dog Timer (ci celui-ci
celui est activé, il continue de fonctionner en mode SLEEP)
- Interruption générée par un module périphérique (Timer, convertisseur A/D, changement d’état de port,
SSP….)

ement intéressant pour une application fonctionnant sur pile ou batterie et


Ce mode peut être particulièrement
qui ne requiert le fonctionnement du microprocesseur qu’à la survenue d’événements particuliers. On
prolonge ainsi considérablement l’autonomie.

Dr HAMZA CHERIF Lotfi

22

Vous aimerez peut-être aussi