Vous êtes sur la page 1sur 86

ELECTRONIQUE

   EMBARQUEE

Microcontrôleur

Pr: A. Zugari

Filière: GM2 Année Universitaire : 2016/2017


Organisation de l'enseignement
L'objectif de ce cours est de vous rendre
capable
Contenu horaire : de choisir, de programmer, d'utiliser
● un+ 10microcontrôleur
20 h de cours et3h)plus généralement de
h de TD [Julien Marot] (≃10x

vous transmettre une ...). culture


Présentation de l'informatique industrielle, des systèmes micro-
programmés (architecture, principes généraux, des systèmes
Étude d'un micro-

électroniques embarqués.
contrôleur Microchip PIC 18F4520. Programmation en langage
Assembleur et langage C.


35 h de travaux pratiques [Allain & Marot] (12x 4h)
Mise en pratique des connaissances sur la carte de démonstration
PICDEM2 plus. Utilisation du micro-contrôleur Microchip PIC 18F4520.

! Merci d’être
Merci à l'heure
d'être en cours
à l'heure / TD/!TP !
en cours

A.  Z UGARI Filière:GM2 3 2
I. Introduction :Qu'est-ce qu'un système embarqué?

qVous êtes réveillé le matin par votre radioréveil

qVous appelez votre ami avec votre téléphone portable pour signaler que vous serez en
retard

qVous prenez votre voiture et la voix du calculateur vous dit que vous n'avez pas mis
votre ceinture

qVous programmez votre machine à laver pour qu'il démarre le lavage

qVous allumez la télévision et utilisez votre télécommande

A.  Z UGARI Filière:GM2 3
I. Introduction :Qu'est-ce qu'un système embarqué?

• Un système embarqué peut être défini comme un système électronique et


informatique autonome, qui est dédié à une tâche bien précise (contrôle,
surveillance, communication...).
• Le terme de « Système Embarqué » désigne aussi bien le matériel que le logiciel
utilisé.
• système embarqué est une application qui contient au moins un ordinateur
programmable sous la forme d'un microcontrôleur, un microprocesseur ou DSP(Digital
Signal Processor) etc.

• Les microcontrôleurs sont présents dans la plupart des systèmes électroniques


embarqués ou dédiés à une application unique

on dit aussi que le système est enfoui, ce qui traduit plus fidèlement le terme anglais «embedded».

A.  Z UGARI Filière:GM2 4
II. UN PEU D'HISTOIRE : FLASBACK

• Le premier ordinateur fut l'ENIAC, apparut en 1945:


o Il coûtait 10 millions de dollars,
o contenait 20 000 tubes,
Vacuum tubes
o pesait 30 tonnes,
o consommait 0,2 MWatts
o et occupait une pièce de 150m2.
Transisteur
u L’avénement des transistors (1958), des circuits intégrés
(1968) et des circuits intégrés à haute densité (1978) a
permis de construire des ordinateurs de plus en plus petits et
de plus en plus puissants.

A.  Z UGARI Filière:GM2 5
Tout d'abord, l'intégration se fera au niveau des cartes électroniques puis au niveau des circuits intégrés.

Anecdote : Savez-vous d'où vient le mot "bug" ? "Bug" signifie punaise en anglais. A l'époque des
premiers ordinateurs, les cartes électroniques chauffaient tellement que cela attirait ces satanées
bestioles. Malheureusement pour elles, l'électricité n'a rien de confortable et elles grillaient facilement au
II.d'un
contact UNcomposant,
PEU D'HISTOIRE : FLASBACK
provoquant de fâcheux courts-circuits. Sauf qu'aujourd'hui, les bugs sont plus
souvent logiciels...
• Chacune des intégrations laisse leurs traces dans les différents noms que l'on rencontre
2.1. De l'ordinateur au microcontrôleur
aujourd'hui : mini- ordinateur, microprocesseur, micro-ordinateur, microcontrôleur... On les
Le diagramme ci-dessous montre les grandes étapes de l'évolution. Chaque étape a été marquée par un
doit principalement à la société Intel fondé en 1968. Voici les grandes étapes d’évolution :
processeur différent
C'est un ordinateur spécialisé et conçu autour d'un microcontrôleur.
Il est capable de réagir à des évènements plus rapides

2 In: Unité
Centrale est
contenue dans 3 In: l'ensemble des
un seul circuit, 3 unités (centrale,
1 In: cet ordinateur
c'est le C.P.U mémoires et
contient une Unité c'est le nom qui périphériques) sont
Centrale de désignera désormais maintenant
traitement sur une un ordinateur conçu contenues dans un
seule carte. autour d'un seul circuit
microprocesseur.

A.  Z UGARI Filière:GM2 6

Le microcontroleur Lycée SARDA GARRIGA 1/14 S SI Section GENIE ELECTRIQUE


III. Qu’est ce qu’un microcontrôleur ?

• Un microcontrôleur, est un composant électronique qui rassemble tous


les éléments d'un "mini-ordinateur" et qui se présente sous la forme
d'un circuit intégré.
• Un microcontrôleur permet de réaliser des systèmes et montages
électroniques programmés. Cela veut dire que l'on pourra, avec le
même montage, réaliser des fonctions très différentes qui dépendront
du programme qui aura été programmé dans le microprocesseur.
• Comme tout ordinateur, on peut décomposer la structure interne d’un
microcontrôleurs en trois parties :
-Les mémoires
-Le processeur
-Les périphériques
Un microcontrôleur = « petit » contrôleur.

A.  Z UGARI Filière:GM2 7
III. Qu’est ce qu’un microcontrôleur ?

ØLes mémoires sont chargées de stocker le programme qui sera exécuté ainsi que les
données nécessaires et les résultats obtenus
ØLe processeur est le cœur du système puisqu’il est chargé d’interpréter les instructions du
programme en cours d’exécution et de réaliser les opérations qu’elles contiennent .Au sein
du processeur, l’unité arithmétique et logique interprète, traduit et exécute les
instructions de calcul.
ØLes périphériques ont pour tâche de connecter le processeur avec le monde extérieur dans
les deux sens . Soit le processeur fournit des informations vers l’extérieur (périphérique de
sortie ), soit il en reçoit (périphérique d’entrée ).

A.  Z UGARI Filière:GM2 8
Notions de base
Les différents blocs de Microcontrôleur reliés par 3 bus (groupes de fils en parallèle) :
• Les bus sont les liaisons électriques qui véhiculent les informations entre les différents composants du
système électronique.
On peut distinguer trois types de bus :
• Bus de données : C’est sur ces lignes que circulent les données du programme. Il est BI-DIRECTIONNEL
• Bus d’adresse : Il est parcouru par des informations qui permettent de localiser les boîtiers concernés par
l’échange d’information. On parle alors de l’adresse de l’information. Il est UNIDIRECTIONNEL, il
transporte une adresse produite par le microprocesseur. Cette adresse spécifie l’origine ou la destination des
données qui transitent. Un seul composant (ROM, RAM …) est sélectionné à la fois. Le décodage du bus
d’adresse permet de valider le composant sélectionné. (Rôle du décodeur d’adresse)
• Bus de contrôle: C’est un ensemble de lignes qui permettent de
üSynchroniser le système : Horloge
üRéaliser l’initialisation de l’unité centrale (Reset)
üContrôler les échanges (lecture, écriture)

Une adresse: est un nombre binaire qui indique un emplacement dans une
zone mémoire

A.  Z UGARI Filière:GM2 9
III.1. A distinguer : microcontrôleurs et microprocesseur
u Le microprocesseur,( à la différence d'un microcontrôleur), nécessite une grande
surface matérielle (nombreux circuits) ainsi qu’une bonne qualité des connexions.
u Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d'un
ordinateur: processeur, mémoires (mémoire morte pour le programme, mémoire vive
pour les données), unités périphériques et interfaces d'entrées-sorties.

Microcontrôleur= microprocesseur +ROM+RAM+E/S


u Les microcontrôleurs se caractérisent par un plus haut degré d'intégration, une plus
faible consommation électrique, une vitesse de fonctionnement plus faible et un coût
réduit par rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs
personnels.
A.  Z UGARI Filière:GM2 10
VI. Différentes Familles de microcontrôleurs
• On trouve plusieurs familles des microcontrôleurs citons :
üla famille Atmel AT91
üla famille Atmel AVR (utilisée par des cartes Arduino)
üla famille Hitachi H8
üla famille Intel 8051
üla famille Motorola – 68HC11
üla famille Freescale 68HC12
üla famille des PIC de Microchip
üla famille des dsPIC de Microchip
q Au sein d’une même famille, les microcontrôleurs possèdent le même processeur et
donc le même langage, seuls les périphériques changent. Ainsi, la connaissance de la
structure matérielle et logicielle d’un produit d’une famille permet une adaptation rapide
à tout microcontrôleur de la même famille.

v Les microcontrôleurs du marché se distinguent principalement par la structure de leurs processeurs (4,8,16
ou 32 bits, CISC1 ou RISC), la taille des espaces mémoires, la nature et la quantité de périphériques.

A.  Z UGARI Filière:GM2 11
temps) et le serveur Web intégré (connexion Internet de l'équipement et la machinerie). Bien que ces derniers
appartiennent au monde des microcontrôleurs et des systèmes embarqués, ils sont enseignés dans des autres
modules du cursus d’enseignement de la Haute école.

1.2 Domaine d’application des microcontrôleurs


VI.1. Différents modèles de microcontrôleurs
Le choix
Les du microcontrôleur
technologies de la 8-bit, 16 bits ou 32 bits dépend de la complexité de l’application embarquée. La
sécurité:
q Tous les microcontrôleurs
notion de systèmes embarqués se distinguent
est traitée pluspar une seule
en détail grande
au chapitre caractéristique
2. Ces : la taille de constitués
derniers sont essentiellement
d’une Les
sa mémoire systèmes
de
partie calcul,pour
matérielle gérer laenet
exprimée
(Hardware) sécurité
d’une dans
bit. partieles moyes (Software).
logicielle de Leurs domaines d’applications sont les
choixtransport
q Le suivants (par exemple : les8-bit,
: microcontrôleur
du passages
16 àbits
niveau),
ou 32dansbits
les dépend de la complexité de
Systèmebâtiments
l’application (par exemple: alarme incendie, effractions) etc.
deembarquée.
communication:
Les microcontrôleurs
Les microcontrôleurs 8 bits8 bits
sontsont utilisés
souvent en particulier
utilisés pour lesdans
Système deles
communication:
téléphones appareils périphériques
portables simples et alors les microcontrôleurs
la téléphonie fixe alors que32 bits
les microcontrôleurs
• Les microcontrôleurs 832bits
assument les tâches bitscontrôle
de se retrouvent
sont plutôt dans
et de gestion.
souvent utilisés pourles les téléphones
Smartphones
portables simpleset et
les la
PDA.téléphonie fixe alors que les microcontrôleurs
32 bits
Lesseprocesseurs
retrouvent8-bits
plutôtoudans 32 les
bitsSmartphones et leslePDA.
sont utilisés pour
Mécatronique
raccordement et automation
des capteurs industrielle
et actionneurs :
aux systèmes de
bus en fonction de la complexité du bus et de l'application.
Mécatronique Installation pour la industrielle
et automation production de : biens, pour la
logistique,
• Installation
Techniquepour laetc. Les microcontrôleurs
production
médicinale: de biens,8 pour
bits sont
la utilisés
logistique, etc. Les
microcontrôleurs
en 8 bits
particulier sont
pour les utilisés
capteurs enactionneurs
et particulier pour
alors que les capteurs et
Les instruments
actionneurs alors quedeles mesure (par exemple 32
microcontrôleurs mesure de la
bits assument les tâches
les
glycémie),
de contrôle microcontrôleurs
les gestion.
et de 32 bits assument les tâches
organes artificiels, etc. Selon la complexité de
application
On appelle de microcontrôleurs
« microcontrôleur 8 bits, 16 bits ou
8bits » un microcontrôleur 32labits
dont CPU. traite des données codées en binaire sur 8 bits.
A.  Z UGARI Filière:GM2 12
Version 3.0a, Januar 2012 Seite 5
V. Famille PIC de Microchip
V.1. Introduction

• Un PIC (Programmable Interface Controler) est un microcontrôleur fabriqué par la


Société américaine Arizona MICROCHIP Technology. Caractérisé par:
üSéparation des mémoires de programmes et de données (Harvard).
üCommunication avec l’extérieur seulement avec des ports.
üUtilisation d’un jeu d’instructions réduit: RISC (Reduced intruction set computer)
L'avantage est que plus on réduit le nombre d’instructions, plus leur décodage sera
rapide ce qui augmente la vitesse de fonctionnement du microcontrôleur.

On appelle « microcontrôleur 8bits » un microcontrôleur dont la CPU traite des données codées en binaire sur 8 bits.

A.  Z UGARI Filière:GM2 13
V. Famille PIC de Microchip
V.2. Pourquoi choisir un PIC??

• Les performances sont identiques voir supérieurs à ses concurrents.


• Les prix sont les plus bas du marché (25dh)
• Très utilisé donc très disponible
• Les outils de développement sont gratuits et téléchargeables sur le net
• Le jeu d’instructions réduit est souple, puissant et facile à maitriser
• La communauté des utilisateurs des PIC est très présente sur le net, on trouve
quasiment tout ce dont on a besoin, tutoriaux pour démarrer, document plus
approfondis, schémas de programmeurs avec les logiciels qui vont avec, librairies
de routine , forums de discussion….

A.  Z UGARI Filière:GM2 14
V. 3. Différentes Familles des PICs

§ Base-Line : Les instructions sont codées sur 12 bits


-PIC10 - PIC12
§ Mid-Range : Les instructions sont codées sur 14 bits
-La plupart des PIC 16 - Certains PIC12F
§ High-End : Les instructions sont codées sur 16 bits
-PIC17 - PIC18
A.  Z UGARI Filière:GM2 15
V. 4. Identification des PICs
• Un PIC est identifié par un numéro de la forme suivante : xx(L)XXyy –zz
qxx : Famille du composant (12, 14, 16, 17, 18)
qL : Tolérance plus importante de la plage de tension
qXX : Type de mémoire de programme
§ C - EPROM ou EEPROM
§ CR - PROM
§ F - FLASH
q yy : Identification (référence)
qzz : Vitesse maximum du quartz
16 F 84–4
Catégorie du PIC:
PIC Mid-Range Fréquence d’horloge
maximale (4MHz)
Indique une mémoire
de type FLASH
Type

A.  Z UGARI Filière:GM2 16
ocument écrit par Alexandre GALODÉ Le PIC 16F84 :l’essentiel
Des exemples de la famille PIC de chez Microchip

A.  Z UGARI Filière:GM2 17
Des exemples de la famille PIC de chez Microchip

Jusqu’à une certaine époque, les microcontrôleurs respectaient


VI. Etudes de PIC 16F 84

q Le fabricant de circuits intégrés Microchip a développé et fabriqué une gamme très large
de microcontrôleurs.
• Parmi eux, le PIC 16F84A.
• Ce microcontrôleur s’est très vite répandu, et reste aujourd’hui l’un des plus utilisé dans le
monde de l’électronique amateur.

• Pourquoi : sans doute pour de multiples raisons :


Øfacilité de mise en œuvre du composant
Øfacilité de programmation grâce à un jeu d’instruction limité (35)
Øgratuité (ou presque) d’outils et des programmateurs
Øfaible coût du composant

A.  Z UGARI Filière:GM2 18
VI. Etudes de PIC 16F 84

• Dans ce cours, on va étudier le microcontrôleur PIC 16F 84 -04.


ü16: Mid-Range (14 bits).
üF: mémoire Flash.
ü84: Type.
ü04: Quartz à 4 MHZ au maximum..

v Le PIC 16F84 est un microcontrôleur 8 bits qui offre un très bon rapport qualité/prix. Il
dispose donc d'un bus de données de huit bits. Puisqu’il traite des données de huit bits, il
dispose d’une mémoire de donnée dans laquelle chaque emplacement (défini par une
adresse) possède huit cases pouvant contenir chacune un bit.

A.  Z UGARI Filière:GM2 19
VI.1 Principales caractéristiques du PIC 16F 84
§ Seulement 35 mots d’instructions
§ Mémoire programme Flash 1K x 14 bits
§ RAM 68 octets
§ EEPROM 64 octets
§ 1Timer TMR0 8 bits
§ PORTA port d’entrées/sorties 5bits RA0:RA4
§ PORTB port d’entrées/sorties 8bits RB0:RB7
§ Horloge interne, avec prédiviseur et chien de garde (WATCHDOG) intégré
§ 15 registres matériels de fonctions spéciales
§ 4 sources d’interruptions
§ Alimentation 2volts à 6volts
§ Fréquence interne = Fréquence externe/4

A.  Z UGARI Filière:GM2 20
VI.2 Architecteur interne du PIC 16F 84
V.Tourtchine. Microcontrôleur de la famille PIC. Support de cours & Prise en main du logiciel MPLAB
--------------------------------------------------------------------------------------------------------------------------------------
• La structure générale du PIC 16F84 comporte 4 blocs comme le montre la figure suivante :
qu’elle peut üMémoire
être programmée et effacée par l’utilisateur via un programmateur et un
de programme
PC. La technologie utilisée permet plus de 1000 cycles d’effacement et de
üMémoire
programmation. Pour le de
PICdonnées
16F84 cette mémoire est d’une taille de 1024*14 bits,
c’est à dire qu’elle dispose de 1024 emplacements (de 000h à 3FFh) contenant
üProcesseur
chacun 14 cases car dans le cas du PIC, les instructions sont codées sur 14 bits. On
üRessources
peut donc stocker auxiliaires ( périphériques )
1024 instructions.

A.  Z UGARI Fig.1 Filière:GM2 21

La mémoire de donnée est séparée en deux parties :


-une mémoire RAM de 68 octets puisque le bus de donnée est de huit bits.
Cette RAM est volatile (les données sont perdues à chaque coupure de courant). On
peut y lire et écrire des données.
VI.2 Architecteur interne du PIC 16F 84

A.  Z UGARI Filière:GM2 22
VI.2.1. Deux mémoires
• Le PIC 16F84 est conçu selon l’architecture de Harvard donc il possède 2 mémoires:
üMémoire de programme.
üMémoire des données.
Architecture de Harvard
Bus d’adresse Processeur Bus d’adresse
d’instruction de données
Mémoire Mémoire
Programme Bus de données
d’instruction
CPU Bus de données
Données

14  bits 8  bits

v Bus Mémoire Données v Bus Mémoire Programme


Bus adresses: 9 bits (512 octets) Bus adresses : 13 bits (8k instructions)
Bus données: 8 bits (taille des données) Bus données : 14 bits (taille d’une instruction
Bus Mémoire Programme

A.  Z UGARI Filière:GM2 23
VI.2.1. Deux mémoires

qLe CPU et la/les zones mémoires sont reliés par un (plusieurs) BUS qui transportent
respectivement des instructions ou des données (Architecture Harvard), ou les deux
indifféremment (architecture Von Neumann).
• Le BUS se compose classiquement de 3 types de signaux :
ØBus d'adresse (unidirectionnel) qui transporte l'adresse mémoire dont la CPU lit ou écrit le
contenu.
ØBus de données (bidirectionnel) qui transporte la donnée de/vers la mémoire
ØBus de contrôle(unidirectionnel) qui rassemble les signaux logiques de contrôle de
l’échange.
qDans ces 3 exemples, la CPU doit donc aller en permanence chercher une instruction à
exécuter, puis (souvent mais pas toujours) une donnée sur laquelle cette instruction devra «
travailler »

A.  Z UGARI Filière:GM2 24
VI.2.2. Mémoires de programme
• La mémoire de programme contient les instructions pilotant
l’application à laquelle le microcontrôleur est dédié.

üC’est une mémoire non volatile ( elle garde son contenu, même en
l’absence de tension )
üElle est de type FLASH c’est à dire qu’elle peut être programmée et
effacée par l’utilisateur via un programmateur et un PC.
üPour le PIC 16F84 cette mémoire est d’une taille de 1024*14 bits, c’est à
dire qu’elle dispose de 1024 emplacements ( de 000h à 3FFh ) contenant
chacun 14 cases car dans le cas du PIC, les instructions sont codées sur 14
bits. On peut donc stocker 1024 instructions(1K mots de 14 bits).
üLa technologie utilisée permet plus de 1000 cycles d'effacement et de
programmation
üL'adresse 0000h contient le vecteur du reset.
ül'adresse 0004h l'unique vecteur d'interruption du PIC.

A.  Z UGARI Filière:GM2 25
VI.2.3. Mémoires de données
• La mémoire de donnée est séparée en deux parties :
1. une mémoire RAM (Random Access Memory ) de 68 octets puisque le bus de donnée est
de huit bits.
§ Cette RAM est volatile (les données sont perdues à chaque coupure de courant). Elle
contient deux partie:
• Les SFR ( Special Function Registers) qui permet de contrôler les opérations sur le
circuit.
• La seconde partie contient des registres généraux (GPR: General Purpose
Registers), libres pour l'utilisateur
2. une mémoire EEPROM (Electrically-Erasable Programmable Read-Only Memory ou
mémoire morte effaçable électriquement et programmable) de 64 octets dans laquelle on
peut lire et écrire des données ( de huit bits soit un octet )
§ et qui possède l’avantage d’être non volatile ( les données sont conservées même en
l’absence de tension ).
§ La lecture et l’écriture dans cette mémoire de données sont beaucoup plus lentes que
dans la mémoire de données RAM.

A.  Z UGARI Filière:GM2 26
VI.2.3. Mémoires de données
SFR
• La mémoire donnée est divisée en deux banques:
o La banque 0 est sélectionnée en mettant le bit RP0
du registre STATUS a 0.
o La banque 1 est sélectionnée en mettant le bit RP0
du registre STATUS a 1.
• Chaque banque est composée de 128 octets.
• Les 12 premières ligne de chaque banques (vont de 00h
à 0Bh en Bank0 et de 80h à 8Bh en Bank1) sont
réservées pour les SFR (Special Function Registers).

q Dans la mémoire de donnée se trouve tout les GPR


registres nécessaires pour la configuration et
l'utilisation des périphériques internes ainsi que 68
octets de RAM utilisateurs.

A.  Z UGARI Filière:GM2 27
3.2 CORE SFRS
The following text describes the core SFRs of the PIC16F887 microcontroller. Bits of each of
3.4.1. Les registres these registers control different circuits within the chip, so that it is not possible to classify
Ce terme va être beaucoup utilisé dans ce cours. On désigne parspecial
them in some registre unthismot
groups. For (de
reason, they8arebits généralement)
described qui
along with the processes
they are in control of.
sert aux calculs ou plus souvent à configurer un paramètre dans le microcontrôleur. Quand je parlerai de
STATUS Register
registre, je mettrai à chaque fois son aspect. En effet, chaque bit d'un registre configure quelque chose.
Prenons un exemple : soit le registre de 8 bits nommé ELEVE_SI, que je représente comme cela :
Notions de base
bit 7 6 5 4 3 2 1 0
q Lorsque le processeur
fonction brunexécute
grand des instructions,
webmaster sympasles données
chef The sont
intelligent temporairement
STATUSprogrammeur
register fort à
contains: the arithmeticstockées
status of datadans
Starcraft in the Wderegister,
petites
the RESET

mémoires rapides de 8, 16, 32 ou 64 bits que l'on appelle registres. Suivant le type de processeur le
status and the bank select bits for data memory.

Chaquenombre globalpeut
bit du registre de registres
être mis peut varier
à 1 ou d'unenotre
à 0. Dans dizaine à plusieurs
exemple, il s'agit centaines.
IRP - des caractéristiques
Bit selects d'un
register bank. It is used for indirectindividu
addressing. . J'ai
1 - Banks 0 and 1 are active (memory locations 00h-FFh)
montré
q le LSB et leceMSB
Registre: avec
terme valaêtre
numérotation
beaucoupdes bits. dans
utilisé Lorsque
ce l'on configure
cours. On désigne un2registre,
0 - Banks andpar cela
(memorysignifie
registre
3 are active un mot
locations que(del'on
100h-1FFh) 8 doit
bits
assignergénéralement)
chaque bit du registre
qui sert aux calculs ou plus souvent à configurer un paramètre dans le microcontrôleur. que
à une valeur (0 ou 1), sachant que les bits ont
RP1,RP0tous- Bits à un
select état
register par
bank. défaut.
They Ici,
are used for directnous savons
addressing.

la personne possède un certain talent à Starcraft, donc nous mettons le bit 0 à 1 par exemple. Le reste est laissé pour
En effet, chaque bit d'un registre configure quelque chose. Prenons un exemple : soit le registre de 8 bits
l'instant à 0. L'octet à écrire dans le registre sera donc (01)hex, soit : ELEVE_SI=(01)hex.
nommé ELEVE, que je représente comme cela :
Hop§c'eChaque bit ducela
st fait. Tenez, registre peut
me fait être mis
penser à uneà autre
1 ou notion
à 0. Lorsque l'on configure
: le masquage. Lorsqueun vous registre,
programmerez cela signifie un micro,que l'on il
arriveradoit
que assigner chaquepas
vous ne vouliez bit du registre
changer tousà les
unebits
valeur
d'un(0 ou 1,)
coup. Unsachant
p'tit exempleque les: voici bits ont tous à un
le registre état par défaut.
ELEVE_SI tel que
nous l'avons configuré plus haut :

bit 7 6 5 4 3 2 1 0
ELEVE
fonction brun grand webmaster sympas chef intelligent programmeur fort à Starcraft
valeur 0 0 0 0 0 0 0 1

Je souhaite mettre le bit nommé "intelligent" à 1 (si l'on considère qu'il existe des élèves intelligents en S-SI J ), sans
§ Une instruction est l'opération élémentaire que le processeur peut accomplir. Les instructions sont
toucher aux autres valeurs. Ce que je vais utiliser, ce sont les "bêtes" opérateurs logiques (si vous êtes perdu, revoyer
stockées dans la mémoire principale, en vue d’être traitée par le processeur.
votre cours). Le plus facile serait de charger une nouvelle valeur, ce qui donnerait ici ELEVE_SI=(05)hex, mais cela est
possible que si l'on connaît la valeur de tous les bits. Admettons que nous ne connaissons pas les autres valeurs : nous
allons alorsA.  créer
Z UGARI un masque logique afin de ne pas les modifier (les autres bits peuvent servir ailleurs). Pour mettre28un bit
Filière:GM2
à 1, il faut réaliser un OU (voir les tableaux des opérateurs logiques de votre cours) entre le bit "intelligent" et le chiffre
1. Ainsi, nous avons 0 OU 1 = 1. Hop, c'est fait. Maintenant, nous allons préparer le masque des autres bits : pour laisser
un bit tel qu'il est, il faut réaliser un OU entre ce bit et 0. Le masque complet pour ce registre est donc : (04)hex. Enfin, on
applique ce masque au registre :
Les registres
q Le registre d’adressage indirect des données (adresse 00h et 80h): est le
registre d' adressage indirect qui donne un accès aux données.

q Le registre TMR0 (TiMeR zero) (adresse 01h): ce registre de 8 bits


s'incrémente de "1" a chaque impulsion de l'horloge (externe ou interne) Ce
timer peut soit fonctionner seul, soit être précédé par un pré diviseur
programmable à 8 bits dont la programmation se fait par l'intermédiaire du
registre OPTION .
q Les registres PCL (h'02' et h'82') et PCLATH (h'0A' et h'8A' ): Le
compteur de programme ou compteur ordinal nommé PC (PC: Program
Counter= PCL + PCLATH) permet de pointer sur la prochaine
instruction a exécuter, le PC complet étant d'office sur 13 bits . Le registre
PCL (PC Low) accessible en lecture et écriture contient l'adresse basse du
PC sur 8 bits et le registre PCLATH (PC LATch counter High ) n’est pas
accessibles ni pour lecture ni pour écriture contient 5 bits .
q Le registre OPTION ( h'81' ): 8 bits (tous à 1 au RESET) affectant le
comportement des E/S et des timers.
q Le registre STATUS (h'03' et h'83' ) ou registre d'état contient notamment
les flags qui informent sur le résultat de la dernière opération

A.  Z UGARI Filière:GM2 29
Les registres

q Le registre FSR (h'04' et h'84’ ): Il est utilisé en programmation pour les adressage indirect.
q Les registres TRIS ( h'85' ): Les registres TRIS ont pour fonction de configurer les broches d' entrées -
sorties des ports.
q Le registre EEDATA EEprom DATA ( h'08' ) :Ce registre de 8 bits permet de lire ou d'écrire une donnée
dans la mémoire interne non volatile (EEPROM).
qLe registre EEADR EEprom ADRess ( h'09' ) :Registre de 8 bits qui contient l'adresse de la donnée se
trouvant dans l'EEPROM.
qLe registre EECON 1 EEprom CONtrol ( h'88' ) :Registre de contrôle permettant de définir le mode de
fonctionnement (écriture et l'écriture ) de la mémoire de donnée EEPROM ,Seuls les 5 bits de poids faible
sont utilisés .
qLe registre EECON 2 EEprom CONtrol ( h'89' ) :Registre n'ayant aucune consistance physique , et dont
le seul rôle consiste à obliger le programmeur à vérifier les données qu'il envoie dans l'EEPROM. il
compte jusqu'à 256
qLe registre INTCON INTerrupt CONtrol (h'0B' et h'8B' ): C'est le registre qui préside au fonctionnement
des interruptions

A.  Z UGARI Filière:GM2 30
VI.2.4. Processeur

q C’est le cœur du PIC car c’est ici que se font les calculs et le traitement des instructions.
q Le processeur est formé de deux parties :
üune unité ( UAL ) arithmétique ( addition, soustraction, division,…) et logiques ( ET, Non,
AND,…. ) chargée de faire des calculs, qui exécute une seule instruction à la fois
üun registre de travail noté W sur lequel travail l’UAL, c’est un registre de travail qui correspond
aux anciens accumulateurs sur les microprocesseurs et par lequel vont être transiter un bon nombre
d’informations que ce soit donnée a traitée (pour réaliser par exemple une addition, une soustraction,
ets..) ou bien pour stocker le résultat d’une opération ou d’un traitement.
W
§ Le registre de travail W est un registre 8 bits destiné à b7 b6 b5 b4 b3 b2 b1 b0
la manipulation générale des données.
§ Il peut donc contenir une donnée de 8 bits que l’on Ex: W
appelle ici un littéral.
1 0 1 1 0 0 1 0

Le littéral chargé dans le registre de travail W a


pour valeur hexadécimale B2.
A.  Z UGARI Filière:GM2 31
VI.2.4. Processeur
Exemple : nous voulons soustraire deux nombres, comment l’unité central va elle procéder ?
• Dans un premier temps la première valeur à soustraire va être stockée dans le registre de travail W,
remarquez que le registre de travail est relié sur une des entrées de l’unité arithmétique et logique.
• Puis la deuxième valeur à soustraire est dirigée vers une autre entrée de l’unité arithmétique et logique.
Ensuite un code indiquant qu’une soustraction doit être effectuée est envoyé vers l’unité arithmétique et
logique qui exécute cette instruction.
• Le résultat de la soustraction est stockée dans le registre de travail qui lui-même est relié au bus de donnée
interne, cela veut dire que le résultat peut être transféré en interne vers n’importe quel registre.

A.  Z UGARI Filière:GM2 32
VI.2.5. Ressources auxiliaires
• les ressources auxiliaires dans le PIC16F84 sont:
üports d’entrées et de sorties.
ütemporisateur.
üInterruptions
üchien de garde
ümode sommeil

Ces ressources seront analysées dans la


suite du cours.

A.  Z UGARI Filière:GM2 33
1. Brochage
• Le PIC 16F84 est un circuit intégré de 18 broches.

• Le PIC 16F84 peut être présenté sous forme d’un:


ü Boitier DIP (Plastic Dual In-line Package) à 18 broches

ü Boitier SOIC (Small Outline Integrated Circuit)

A.  Z UGARI Filière:GM2 34
1. Brochage
qL’alimentation du circuit est assurée par les pattes VDD et VSS.
Elles permettent à l’ensemble des composants électroniques du
PIC de fonctionner. Pour cela on relie VSS (patte 5) à la masse
(0 Volt) et VDD (patte 14) à la borne positive de l’alimentation
qui doit délivrer une tension continue comprise entre 3 et 6
Volts.
q La patte 4 est appelée MCLR (MCLR=Master Clear Reset).
o Elle permet lorsque la tension appliquée est égale à 0V de
réinitialiser le microcontrôleur. C’est à dire que si un niveau bas
(0 Volt ) est appliqué sur MCLR le microcontrôleur s’arrête,
place tout ses registres dans un état connu et se redirige vers le
début de la mémoire de programme pour recommencer le
programme au début (adresse dans la mémoire de programme:
0000).
o A la mise sous tension, la patte MCLR étant à zéro, le
programme démarre donc à l’adresse 0000.

A.  Z UGARI Filière:GM2 35
1. Brochage

• Le microcontrôleur est un système qui exécute des instructions


les unes après les autres à une vitesse ( fréquence ) qui est fixée
par une horloge interne au circuit. Cette horloge doit être
stabilisée de manière externe au moyen d’un cristal de quartz
connecté aux pattes OSC1/CLKIN (patte 16) et
OSC2/CLKOUT ( patte 15 ) .

A.  Z UGARI Filière:GM2 36
1. 1. Horloge
• Le rôle de l’horloge est de cadencer les différentes opérations effectuées par le
microcontrôleur et notamment l’exécution des instructions du programme.
• L'horloge peut être soit interne soit externe.
üL'horloge interne est constituée : d'un oscillateur à quartz ou d'un oscillateur RC

Un quartz ou résonateur céramique permet d’obtenir une


fréquence de fonctionnement très précise Un simple réseau RC peut suffire, l’oscillateur est
peu précis mais économique.

A.  Z UGARI Filière:GM2 37
1. 1. Horloge

• Dans certains cas, une horloge externe au microcontrôleur peut être utilisée pour
synchroniser le PIC sur un processus particulier.

Horloge externe Un oscillateur externe permet une synchronisation


avec un autre circuit

• Avec l'oscillateur à Quartz, on peut avoir des fréquences allant jusqu'à 4, 10 ou 20 MHz
selon le type de microcontrôleur.
• le signal d’horloge possède les caractéristiques suivantes:
Signal d ’horloge OSC
ü Signal carré
ü De fréquence f et de période T

Temps t
T=1 /f

A.  Z UGARI Filière:GM2 38
1. 1. Horloge

• Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est obtenue
en divisant la fréquence par 4. Signal d ’horloge OSC
• On appelle alors cycle machine :
üla durée caractérisant 4 périodes d’horloge.
au cours de chaque cycle machine : Cycle machine 0 Cycle machine 1 Cycle machine2 Temps t
ü Incrémentation du registre PC PC PC+1 PC+2
ü Recherche de l’instruction dans l’adresse
pointée par le registre PC. Recherche
ü Exécution de l’instruction qui était pointée par le Instr (PC)

registre PC au cours du cycle précédent. Exécution Recherche


Instr (PC-1) Instr(PC+1)
Exécution Recherche
Instr(PC) Instr(PC+2)
q Le registre PC: est le compteur de programme ( PC ) ou
compteur ordinal. Il contient l’adresse en mémoire de Exécution
Instr(PC+1)
programme de la prochaine instruction à exécuter.

A.  Z UGARI Filière:GM2 39
1. 1. Horloge
• Résumé:
Signal d’horloge OSC
Il faut donc un cycle machine pour exécuter une
instruction.
• Un T pour incrémenter le registre PC.
• Deux T pour l’exécution du code machine. T=1 /f
Temps t
Cycle machine
• Un T pour prendre le code.
• soit 4 périodes d’horloge. 1 instruction = 1 cycle machine =4 x Tosc
Ex:
• Dans le cas d’un oscillateur à quartz de 20 Si fosc = 20 MHz et Tosc = 1/fosc
MHz, le temps d’exécution d’une instruction
est donc de : 200 ns
Donc Tosc = 50 ns
• Avec un quartz de 4 MHz, on obtient une horloge
instruction de 1 MHz, soit le temps pour exécuter D’où 4 x Tosc = 200 ns
une instruction de 1µs
A.  Z UGARI Filière:GM2 40
VII Portes d’entrées et de sorties

• Pour dialoguer avec l’extérieur, le PIC16F84 est équipé de 13 lignes d’entrées/sorties programmables
individuellement réparties en deux ports :
üle port A : RA0 à RA4
üle port B : RB0 à RB7
Chaque ligne peut être configurée soit en entrée, soit en sortie, et ceci indépendamment l’une de l’autre. Pour
cela on utilise les registres TRISA et TRISB. Certaines de ces broches ont aussi d’autres fonctions
(interruption, timer ).

A.  Z UGARI Filière:GM2 41
VII. Portes d’entrées et de sorties

A.  Z UGARI Filière:GM2 42
Port A

o La particularité du port A : les bits b7 à b5 des registres TRISA et PORTA ne correspondent à rien car il n’y
a que 5 lignes ( b0 à b4 )
o La broche RA4 est multiplexée avec l'entrée horloge du Timer TMR0. Elle peut être utilisée soit:
ücomme E/S normale du port A,
ücomme entrée horloge pour le Timer TMR0

o le choix se fait à l'aide du bit T0CS du registre OPTION_REG.

§ La configuration de direction pour chaque bit du port est déterminée avec le registre TRISA.

Bit i de TRISA = 0 bit i de PORTA configuré en sortie


Bit i de TRISA = 1 bit i de PORTA configuré en entrée

o Lors d’un RESET, toutes les lignes sont configurées en entrées.


A.  Z UGARI Filière:GM2 43
Port A
§ RA4 est une E/S à drain ouvert, si on veut l'utiliser comme sortie (pour allumer une LED
par exemple), il ne faut pas oublier de mettre une résistance externe vers Vdd.

ü Si RA4 est positionnée à 0, l'interrupteur est fermé, la sortie est reliée à la masse.
ü Si RA4 est placée à 1, l'interrupteur est ouvert, la sortie est déconnectée d'où la
nécessite de la résistance externe.

Synoptique du port A pour RA4 Synoptique du port A pour RA0- RA3

A.  Z UGARI Filière:GM2 44
Port B
o Le port B désigné par PORTB est un port bidirectionnel de 8 bits (RB0 à
RB7).
o La configuration de direction se fait à l'aide du registre TRISB. Même
configuration que le PORTA.
o En entrée, la ligne RB0 appelée aussi INT peut déclencher l’interruption
externe INT.
o En entrée, une quelconque des lignes RB4 à RB7 peut déclencher
l'interruption RBI.
o le choix se fait à l'aide du bit INTE du registre INTCON
La broche RB0/INT peut être utilisée comme entrée d’interruption Les lignes RB4 à RB7 peuvent également
êtres utilisées comme entrées d’interruption

A.  Z UGARI Filière:GM2 45
Port B
o La particularité du port B :il est possible de connecter deRBPU - Port B Pull up Enable bit.
façon interne sur chaque ligne
1 - PortB pull-ups are disabled.
une résistance de tirage ( pull up ) dont le rôle consiste à fixer la tension de la patte
0 - PortB pull-ups are enabled.
(configuré en entrée ) à un niveau haut lorsque qu’aucun signal n’est appliqué sur la patte
en question. Pour connecter ces résistances, il suffit de placer le bit RBPU/ du registre
OPTION à 0.

INTEDG - Interrupt Edge Select bit.


1 - Interrupt on rising edge of RB0/INT
pin.
0 - Interrupt on falling edge of RB0/INT
pin.

T0CS - TMR0 Clock Source Select bit.


1 - Transition on TOCKI pin.
0 - Internal instruction cycle clock
(Fosc/4).
A.  Z UGARI Filière:GM2 46
Interruption
qUne interruption est un signal demandant au processeur de suspendre
temporairement l’exécution du programme courant afin d’effectuer des
opérations particulières.
Intérêt: Ce mécanisme permet d’implémenter une réaction à une sollicitation
üoffrant un délai de réponse très bref,
üprogrammée de façon indépendante du code en cours d’exécution.
q Les interruptions sont utilisées pour avertir le microcontrôleur quand une condition est
remplie, et pour éviter que le microcontrôleur reste en attente inutilement (pooling-loop),
elles permettent de gérer les évènements asynchrones.
• Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure
d'interruption (appelé routine d'interruption).
• A la fin de cette procédure, le microcontrôleur reprend le programme principale à l’endroit
où il l’a laissé.

A.  Z UGARI Filière:GM2 47
Mécanisme des interruptions

q Quand une interruption survient, le programme principal est


interrompu :
• Le µC finit l'exécution de l'instruction en cours puis il se
branche vers le sous-programme d'interruption (la routine
d'interruption).
• Quand la routine d'interruption est achevée, le µC retourne
au programme principal, à l'endroit exact où il l'avait quitté.

q Lors de la mise sous tension du microcontrôleur, le programme exécute en premier


l'instruction à l'adresse 0 du programme. Le compilateur place à cette adresse l'instruction,
ce qui signifie aller à la fonction "main".
q Lorsqu'une interruption se produit, le microcontrôleur sauvegarde son environnement et
saute à l'adresse 0X4 du programme.

A.  Z UGARI Filière:GM2 48
Interruption
q Le PIC 16F84A dispose de 4 sources d'interruptions, ces sources d’IT sont en rapport bien sûr avec les
différents fonctionnalités que le nombre de registres internes propres à chaque PIC :
1. INT: Interruption sur la broche RB0/INT
2. PORTB: Interruption "RB" : sur changement du niveau logique d'au moins une de ces 4 broches :
RB4, RB5, RB6 ou RB7 (port B)
3. TMR0: Interruption de débordement du registre TMR0 (H'FF' -> H'00')
4. EEPROM: Interruption de fin d'écriture de l'EEPROM

A.  Z UGARI Filière:GM2 49
Interruption
q La configuration des 4 interruptions se fait à l'aide de bits des registres INTCON (INTerrupt CONfiguration)

Masques Drapeaux

Les interruptions sont, en général, contrôlées par 3 bits


v Un bit de validation globale
permet de valider ou d’invalider toutes les interruptions d’une seule fois
v Un bit de validation
permet à l’utilisateur d’activer ou non une interruption.
v Un bit de flag
indique qu’une interruption a été déclenchée et indique la source.
v Remarquez déjà que tous les bits dont le nom se termine par E (Enable) sont en fait des commutateurs de
validation (ce sont les interrupteurs de notre schéma symbolique). Les bits donc le nom se termine par F sont
des Flags (indicateurs). Que nous manque-t-il ?
A.  Z UGARI Filière:GM2 50
33

33
OPTION
OPTION
Est le registre qui préside au fonctionnement de l’horloge interne
Interruption
du microcontrôleur (TMR0) :
Est le registre qui préside au fonctionnement de l’horloge interne
du 7microcontrôleur
6 (TMR 5 0) : 4 3 2 1 0
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
q Chaque interruption peut être validée/interdite par son bit de validation individuel
7
RBPU
6
INTEDG
5
T0CS
4
T0SE
3
PSA
2
PS2
1
PS1
0
PS0
Bit 7 : RBPU (Register B Pull Up)
q Les interruptions, quelles qu'elles soient, ne sont autorisées que si le bit 7 (GIE) du registre INTCON (0Bh) est à 1
Mis à zéro (actif à l’état bas) valide les résistances de
Bit 7 : RBPUpull-up
(Register B Pull Up)
présentes, à l’intérieur du boîtier, sur les lignes
Misduà port
zéroB.(actif à l’état bas) valide les résistances de
pull-up présentes, à l’intérieur du boîtier, sur les lignes
Ø GIE (General Interrupt Enable) : Le chef suprême du registre INTCON. Le roi de toutes les interruptions !
du port B.
Bit 6 : INTEDG (INTerrupt EDGe)
Mis à 1, il autorise la prise en compte de tous les autres bits de l’octet ; tandis que mis à zéro, il les masque
Détermine le front du signal d’horloge sur lequel on veut que
Bit 6 : INTEDG (INTerrupt EDGe)
soit prise en compte une demande d’interruption provenant
Détermine le front du signal d’horloge sur lequel on veut que
(même s’ils sont positionnés).
de l’extérieur
soit prise en compte (commande appliquée
une demande sur
d’interruption provenant
de la pin 6 : RB
l’extérieur 0/INT). Car on peut faire agir une telle
(commande appliquée sur
Ø INTE : (INTerrupt Enable) : mis à 1, il autorise les interruptions dues à un front sur la la patte RB0/INT.
demande soit à l’apparition d’un front
la pin 6 : RB0/INT). Car on peut faire agir une telle
de zérosoit
demande à 1),à soit à l’apparition
l’apparition
montant
d’un montant
d’un front front
(passage
(passage
NB : ces demandes peuvent se déclencher soit à l’apparition d’un Front montant, soit à l’apparition d’un front
de descendant
zéro à 1), soit
descendant
(passage
1 =(passage
interruption
de 1 à zéro).
à l’apparition d’un front
de 1programmée
à zéro). pour se déclencher
descendant, selon la façon dont on a programmé le bit 6 du registre OPTION (INTEDG)
1 = interruption programmée pour se déclencher
sur un front montant ( )
1 = sur front montant 0 sur
= interruption ( pour se) déclencher
programmée
un front montant
0 = interruption programmée pour se déclencher
0 = sur front descendant sur un front descendant ( ).
sur un front descendant ( ).
Bit 5 : T0CS (Timer zero Clock Source)
Bit 5 : T0CS (Timer zero Clock
Sert à choisir Source) du signal qu’on souhaite
la provenance
Ø T0IE (Timer 0 Interrupt Enable) : mis à 1, il autorise les
Sert à choisir
utiliser
utiliser
comme
comme
Il existe
la provenance
deuxclock
clock pourdu
choixpour
signal
piloter
piloter: soit
possibles
qu’on souhaite
l’horloge
l’horloge
interne.
utiliserinterne.
l’horloge
interruptions dues au timer interne (passage de FF à 00) .
Il existe
internedeux
interne utilisant
fournissant
choixlepossibles
utilisant
unlesignal
quartzdont
pilote
: soitduutiliser
quartz pilote l’horloge et
microcontrôleur
du microcontrôleur
la fréquence est celle duetquartz
Ø EEIE (EEprom Interrupt Enable) : un 1 valide la fin d’écriture dans
fournissant
divisée par
divisée
la pinpar
un4,signal
RA4,4 soit
dont laun
soit utiliser
(bit utiliser
4 du port
fréquence
unA).
est celle
signal externe du quartz
prélevé
signal externe prélevé sur
sur

la EEprom comme source d'interruption.


la pin RA04 =(bit 4
le timer
du port
estest
A).
le timer est piloté par l’horloge interne
0 =1le= timer piloté parpar
piloté l’horloge
un signal interne
externe.
Ø RBIE (RB Interrupt Enable) : mis à 1, il autorise les interruptions
1 = le timer est piloté par un signal externe.

dues au changement d’état des pattes RB4 à RB7.


A.  Z UGARI Filière:GM2 51
Interruption
q Les 3 derniers bits du registre INTCON vont renseigner
l’utilisateur sur l’origine de la source D’IT responsable du
déroutement de programme, sans eux nous ne pourrions
savoir d’ou provient l’interruption.
Ø T0IF (Timer zero Interrupt Flag): Le fonctionnement de ce
flag est conditionné par l’état du bit 5. Il ne fonctionne que
si le bit 5 a préalablement été mis à 1. Dans la mesure où le
bit 5 est à 1, ce flag passe à 1 chaque fois que le timer
TMR0 déborde (passage de FF à 00).

Ø INTF (INTerrupt Flag): Le fonctionnement de ce flag est conditionné par l’état du bit 4. Il ne fonctionne que
si le bit 4 a préalablement été mis à 1. Dans la mesure où le bit 4 est à 1, ce flag passe à 1 chaque fois qu’une
demande d’interruption surgit, provenant de l’extérieur, appliquée sur la pin 6 du boitier (RB0/INT).
Ø RBIF (Register B Interrupt Flag): Le fonctionnement de ce flag est conditionné par l’état du bit 3. Il ne
fonctionne que si le bit 3 a préalablement été́ mis à 1. Dans la mesure où le bit 3 est à 1,ce bit passe à 1 chaque
fois qu’il y a un changement d’état sur l’une des lignes du port B (RB4, RB5, RB6 ou RB7) par rapport à la
dernière opération de lecture du port B (dans la mesure, évidemment, où les lignes de ce port sont configurées
en entrée).
A.  Z UGARI Filière:GM2 52
Fonction d’interruption
q Comme le PIC n’a qu’un seul programme de traitement d’interruption, il faut
absolument commencer par rechercher la source de l’interruption, lorsque plusieurs
sources sont possibles.
• Ceci s’effectue en testant les drapeaux (bits d’état). Une interruption provoque une mise
à 1 du drapeau correspondant.
• A la fin de l’interruption, on remet le drapeau à 0. Cela permet de prendre en compte la
prochaine interruption.
• Exemple : void interrupt()
{ if (INTCON. INTF) { …. … INTCON. INTF = 0; } }
Deux remarques importantes sont à faire :
ü Le drapeau reste à l’état haut même après le traitement de l’interruption. Par conséquent, il faut toujours le
remettre à "0" à la fin de la routine d'interruption sinon l'interruption sera déclenchée de nouveau
ü Seul le PC est empilé automatiquement. Si cela est nécessaire, les registres W et STATUS doivent être
sauvegardés en RAM puis restaurés à la fin de la routine pour que le microcontrôleur puisse reprendre le
programme principal dans les mêmes conditions où il l'a laissé.

A.  Z UGARI Filière:GM2 53
Exemples : Cas d'une seule source d'interruption
• Imaginons une application où l'on désire utiliser l'interruption sur la broche RB0/INT.
• Il peut s'agir d'un bouton poussoir connecté sur la broche RB0/INT :

On veut donc provoquer une interruption quand on appuie sur le


bouton poussoir.

Le registre OPTION permet de choisir le type de front pour l’interruption


INT/RB0

•/RBPU = 0 : activation des résistances de pull-up du port B (bit 7 du registre OPTION_REG)


•INTEDG = 0 : l'interruption de la broche RB0/INT est active sur un front descendant (bit 6 du registre
OPTION_REG)

A.  Z UGARI Filière:GM2 54
Exemples : Cas d'une seule source d'interruption
q Pour cela, il faut commencer par autoriser les interruptions de manière globale :
• GIE = 1 (bit 7 du registre INTCON)
q Puis, on autorise uniquement l'interruption qui nous intéresse :
• INTE = 1 (bit 4 du registre INTCON) : autorise l'interruption sur la broche RB0/INT
• RBIE = 0 (bit 3 du registre INTCON) : désactive l'interruption "RB"
• T0IE = 0 (bit 5 du registre INTCON) : désactive l'interruption de débordement du
registre TMR0
• EEIE = 0 (bit 6 du registre INTCON) : désactive l'interruption de fin d'écriture de
l'EEPROM
q Enfin, on initialise le drapeau (flag) INTF à 0 (bit 1 du registre INTCON).

Le registre INTCON

A.  Z UGARI Filière:GM2 55
Exemples : Cas d'une seule source d'interruption

• Maintenant, quand on appuie sur le bouton poussoir, le drapeau INTF est


automatiquement mis à 1.
• Le µC prend en compte cette interruption quand il a connaissance du niveau haut de
drapeau INTF (3 ou 4 cycles de délai).
• Le mécanisme des interruptions est lancé

Important :
• Il faut remettre le drapeau INTF à 0 avant de quitter la routine d'interruption.
Sinon, le µC se rebranche indéfiniment sur la routine d'interruption (puisque INTF = 1) :le programme est planté !

A.  Z UGARI Filière:GM2 56
Exemples : Cas de plusieurs sources d'interruption
qOn suppose que les 4 sources d'interruptions sont actives :
üGIE = 1
üINTE = 1
üRBIE = 1
üT0IE = 1
üEEIE = 1
q Dans la routine d'interruption (après avoir sauvegardé le registre W et le registre
STATUS), se pose la question suivante : quelle est la source de l'interruption ?
La réponse se fait en testant, les uns après les autres, le niveau logique des drapeaux :
üINTF (bit 1 du registre INTCON)
üRBIF (bit 3 du registre INTCON)
üT0IF (bit 2 du registre INTCON)
üEEIF (bit 4 du registre EECON1)

A.  Z UGARI Filière:GM2 57
Exemples : Cas de plusieurs sources d'interruption

q Par exemple, supposons que l'interruption est due au débordement du registre TMR0 :
üINTF = 0
üRBIF = 0
üT0IF = 1
üEEIF = 0
q Après le test, le µC se branche vers le bloc de traitement spécifique de l'interruption TMR0.
Il ne faut pas oublier d'effacer le drapeau T0IF.
On finit par la restauration du registre STATUS puis du registre W.

A.  Z UGARI Filière:GM2 58
Exemples : Cas de plusieurs sources d'interruption
q Il peut arriver qu'il y ait plusieurs sources d'interruptions en même temps :
üINTF = 1
üRBIF = 1
üT0IF = 0
üEEIF = 0
q Dans ce cas, on se peut se contenter de traiter une seule source d'interruption à la fois.
• Ce sera l'interruption RB0/INT s'il se trouve que le drapeau INTF est testé en premier.
q Après retour dans le programme principal, on aura :
üINTF = 0
üRBIF = 1
üT0IF = 0
üEEIF = 0
• L'interruption "RB" est alors traitée, etc ...
qOn voit ici que l'on peut choisir des niveaux de priorités entre les différentes sources
d'interruptions.
A.  Z UGARI Filière:GM2 59
A.  Z UGARI Filière:GM2 60
Le Timer

q Le TIMER est un registre de contrôle de l’horloge interne (timer) du microcontrôleur, qui


permet de réaliser des temporisations par comptage d’impulsions à fréquence constante.
q Le pic 16F84 dispose de deux timers,
ü un à usage général ( le TMR0 )
üet un autre utilisé pour le chien de garde (watch dog WDG ).

q Le TMR0 est un compteur ascendant (qui compte) de 8 bits qui peur être chargé avec une
valeur initiale quelconque. Il est ensuite incrémenté à chaque coup d'horloge jusqu'à ce que
le débordement ait lieu ( passage de FF à 00 ) (en hexa).

q Les évènements qui commandent l'incrémentation sont:


ü un cycle d’horloge, c'est la fonction « timer » ;
ü un front montant sur une broche en entrée, c'est la fonction « counter ».

A.  Z UGARI Filière:GM2 61
Principe de fonctionnement
● Rôle : Réaliser une temporisation
Le Timer
● Élément essentiel : Compteur qui s'incrémente
Principe de fonctionnement
à chaque
§ Rôle : Réaliser front montant du signal qui lui est
une temporisation
§ Elémentappliqué :
essentiel : Compteur qui s'incrémente à chaque front montant du signal qui lui
est appliqué :

q Lorsque le compteur dépasse la valeur maximale qu'il peut contenir (par exemple : 256
pour un compteur sur 8 bits), un drapeau (flag en anglais) se lève.

Ø Ce drapeau a pour but d'indiquer au programme que le compteur a débordé (c'est à dire
qu'il a ”fini” de compter).
A.  Z UGARI Filière:GM2 62
Le Timer
qLe TMR0 peut remplir deux fonctions:
• Temporisateur ou contrôle du temps: permet de fournir une référence temporelle à partir
de l’horloge du microcontrôleur, notamment dans le cadre d’applications temps réel. Son
entrée d'incrémentation est alors l'horloge qui correspond au cycle instruction. Il est
possible d'utiliser un pré-diviseur de fréquence.
• Compteur d'événements: sert à compter un nombre d’événements asynchrones sur une
broche d’entrée du microcontrôleur. Dans ce cas les impulsions d'entrées du timer sont
fournies par la patte RA4/TOCK1.
q La sélection d’un ou l’autre de ces deux modes de fonctionnement s’effectue par le bit 5 du registre Option TOCS
T0CS = 1 : Fonctionnement en mode compteur
T0CS = 0 : Fonctionnement en mode timer

q Le pic 16F84 dispose d'un diviseur de fréquence qui peut être assigné soit au chien de garde, soit au TMR0 (
uniquement un à la fois ).
q L'assignation du prédiviseur se fait grâce au bit PSA du registre OPTION.

A.  Z UGARI Filière:GM2 63
Le Timer Méthodes de configuration

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

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


1. La fréquence du signal appliqué au compteur
ü Le compteur s'incrémentera ainsi plus ou moins vite.
2. Le nombre d'impulsions à compter
ü Le drapeau se lève toujours lorsqu'il y a débordement, on peut donc faire partir le
compteur d'une valeur non nulle pour réduire le temps de comptage.

A.  Z UGARI Filière:GM2 64
Le Timer Méthodes de configuration
q Supposons que nous travaillons avec un quartz de 4MHz. Nous avons donc dans ce cas (4
000 000/4) = 1.000.000 de cycles par seconde.
Chaque cycle d’horloge dure donc 1/1000000ème de seconde, soit 1µs.
q Si nous décidons d’utiliser le timer0 dans sa fonction timer et en mode interruptions.
Nous avons donc uneHOWinterruption toutes les 256µs.
DOES THE TIMER OPERATE?
q Si nous désirons réaliser une LED clignotante à une fréquence de 1Hz, nous aurons
In practice, pulses generated by the quartz oscillator are once per each machine cycle, directly or via a prescaler,
besoin d’une temporisation de 500ms,
brought to the circuit soitthe2000
which increments numberfois
stored plus. Ceregister.
in the timer n’estIf donc pas (one
one instruction pratique.
machine
cycle) lasts for four quartz oscillator periods then this number will be incremented a million times per second (each
Nous disposons pour microsecond)
améliorer ceci d’un
by embedding prédiviseur
quartz with the frequency of .4MHz.

A.  Z UGARI Filière:GM2 65
It is easy to measure short time intervals, up to 256 microseconds, in the way described above because it is the
largest number that one register can store. This restriction may be easily overcome in several ways such as by using a
slower oscillator, registers with more bits, prescaler or interrupts. The first two solutions have some weaknesses so it
is more recommended to use prescalers or interrupts.

USING A PRESCALER IN TIMER OPERATION


Modification de la fréquence du signal appliqué

HOW DOES THE TIMER OPERATE?

au compteur : le pré-diviseur (prescaler en


In practice, pulses generated by the quartz oscillator are once per each machine cycle, directly or via a prescaler,

Le Timer anglais)
brought to the circuit which increments the number stored in the timer register. If one instruction (one machine

Méthodes de configuration
cycle) lasts for four quartz oscillator periods then this number will be incremented a million times per second (each
microsecond) by embedding quartz with the frequency of 4MHz.

1. ModificationdeExemple : pour
la fréquence compter
du signal 4 fois
appliqué moins vite
au compteur: le prédiviseur (prescaler)
ØExemple : pour compter 4 fois moins vite

Les Timers du PIC 16F887


It is easy to measure short time intervals, up to 256 microseconds, in the way described above because it is the

Composition générale d'un Timer sur un


largest number that one register can store. This restriction may be easily overcome in several ways such as by using a
● slower oscillator, registers with more bits, prescaler or interrupts. The first two solutions have some weaknesses so it
is more recommended to use prescalers or interrupts.

microcontrôleur
q Le prédiviseur
USINGest un diviseur
A PRESCALER
PIC :
IN TIMERd’événements
OPERATION situé AVANT l’entrée de comptage du timer0
A prescaler is an electronic device used to reduce frequency by a predetermined factor. In order to generate one
pulse on its output, it is necessary to bring 1, 2 , 4 or more pulses on its input. Most microcontrollers have one or
more prescalers built in and their division rate may be changed from within the program. The prescaler is used when
it is necessary to measure longer periods of time. If one prescaler is shared by timer and watchdog timer, it cannot
be used by both of them simultaneously.

6
● Calcul du temps mis par le Timer pour faire
lever son drapeau :

T =T quartz × Valeur du pré-compteur fixe × Valeur du pré-compteur réglable × Nombre d'impulsions à compter

A.  Z UGARI USING INTERRUPT IN TIMER OPERATION Filière:GM2 66

If the timer register consists of 8 bits, the largest number it can store is 255. As for 16-bit registers it is the number 8
65.535. If this number is exceeded, the timer will be automatically reset and counting will start at zero again. This
condition is called an overflow. If enabled from within the program, the overflow can cause an interrupt, which gives
completely new possibilities. For example, the state of registers used for counting seconds, minutes or days can be
changed in an interrupt routine. The whole process (except for interrupt routine) is automatically performed behind
the scenes, which enables the main circuits of the microcontroller to operate normally.
Le Timer Méthodes de configuration
q Quelque soit l'horloge choisie, on peut la passer dans un diviseur de fréquence
programmable (prescaler) dont le rapport est fixés par les bits PS0, PS1 et PS2 du registre
OPTION_REG.

v L'affectation ou non du prédiviseur se fait à


l'aide du bit PSA du registre
OPTION_REG
ü PSA = 0 on utilise le prédiviseur
ü PSA = 1 pas de prédiviseur (affecté au
chien de garde)

A.  Z UGARI Filière:GM2 67
OPTION REGISTER Note: When the prescaler is assigned to
PTION register is a readable and writable the WDT (PSA = ’1’), TMR0 has a 1:1
which contains various control bits to configure prescaler assignment.
R0/WDT prescaler, the external INT interrupt,
and the weak pull-ups on PORTB.
Le Timer0 Méthodes de configuration
TER 2-2: OPTION REGISTER (ADDRESS 81h)
OPTION REGISTER (ADDRESS 81h)
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit 7 bit 0

§ Bit 7 : RBPU (Register B Pull Up): Mis à zéro (actif à l’état bas) valide les résistances de
bit 7 RBPU: PORTB Pull-up Enable bit
pull-up présentes,
1 = PORTB à l’intérieur
pull-ups du boîtier, sur les lignes du port B.
are disabled
§ Bit 06 =: PORTB
INTEDG (INTerrupt
pull-ups EDGe):Détermine
are enabled le front
by individual port latch du signal d’horloge sur lequel on
values
bit 6 INTEDG: Interrupt Edge Select bit
veut1 =que soit prise en compte une demande d’interruption provenant de l’extérieur
Interrupt on rising edge of RB0/INT pin
(commande appliquée
0 = Interrupt sur
on falling la pin
edge 6 : RB0/INT).
of RB0/INT pin Car on peut faire agir une telle demande soit
bit 5
à l’apparition d’un front montant (passage de zéro à 1), soit à l’apparition d’un front
T0CS: TMR0 Clock Source Select bit
1 = Transition on RA4/T0CKI pin
descendant (passage
0 = Internal de 1cycle
instruction à zéro).
clock (CLKOUT)
bit 4 § Bit T0SE:
5 : T0CS
TMR0 (Timer zero Select
Source Edge ClockbitSource): Sert à choisir la provenance du signal qu’on
1 = Increment on high-to-low transition on RA4/T0CKI pin
souhaite utiliser comme
0 = Increment clocktransition
on low-to-high pour piloter l’horlogepininterne. Il existe deux choix possibles
on RA4/T0CKI
bit 3 :soitPSA:
utiliser l’horloge
Prescaler internebitutilisant le quartz pilote du microcontrôleur et fournissant un
Assignment
signal
1 = dont la fréquence
Prescaler is assignedest celle
to the WDT du quartz divisée par 4, soit utiliser un signal externe
0 = Prescaler is assigned to the Timer0 module
bit 2-0 prélevé sur laPrescaler
PS2:PS0: pin RA4Rate (bit4Select
du portA).
bits
Bit
A.   Value
Z UGARI TMR0 Rate WDT Rate Filière:GM2 68
000 1 : 2 1 : 1
001 1 : 4 1 : 2
010 1 : 8 1 : 4
011 1 : 16 1 : 8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 64
Le Timer0 Méthodes de configuration
0 = le timer est piloté par l’horloge interne
1 = le timer est piloté par un signal externe.
§ Bit 4 : T0SE (Timer zero Signal Edge): Sert à déterminer si l’horloge doit avancer sur front
montant ou sur front descendant.
0=l’horloge avance sur front montant
1 = l’horloge avance sur front descendant (
§ Bit 3 : PSA (Pre-Scaler Assignment): Sert à affecter le prédiviseur soit au timer TMR0 soit
au Watch-Dog.
0 = le prédiviseur est affecté au timer TMR0
1= le prédiviseur est affecté au Watch-Dog.
§ Bits 2–1–0: PS2 –PS1 –PS0 (Pre-Scalerrate): Ces trois bits servent à programmer le facteur
de division qu’on veut assigner au prédiviseur dans le but d’avoir des signaux plus lents.

A.  Z UGARI Filière:GM2 69
Bits 2 – 1 – 0 : PS2 – PS1 – PS0 (Pre-Scaler rate)
Ces trois bits servent à programmer le facteur de division
qu’on veut assigner au prédiviseur dans le but d’avoir
des signaux plus lents.
Le Timer0 Méthodes de configuration
A remarquer que le facteur de division n’est pas le même
selon que le pré diviseur soit affecté au TMR0 (timer)
v A remarquer que le facteur de division n’est pas le même selon que le prédiviseur soit
ou au Watch-Dog (chien de garde) :
affecté au TMR0 (timer) ou au Watch-Dog (chien de garde) :
Facteur de division
PS2 PS1 PS0
Pour le TMR0 Pour le Watch-Dog
0 0 0 2 1
0 0 1 4 2
0 1 0 8 4
0 1 1 16 8
1 0 0 32 16
1 0 1 64 32
1 1 0 128 64
1 1 1 256 128
A.  Z UGARI Filière:GM2 70
Pour écrire dans ce registre on utilise soit l’instruction BSF,bit
Soit l’instruction BCF,bit.
Méthodes
Méthodes
Le Timer0 dede configuration
configuration
Méthodes de configuration
● Modification du nombre d'impulsions à compter
● Modification
2. Modification du
du nombre
nombre d'impulsions
d'impulsions à compter à compter
ü Si le compteur démarre démarre
à 0, il mettra
Si leSi le compteur
compteur démarre àà0,0,beaucoup
mettradebeaucoup
ililmettra temps à atteindre sa valeur
beaucoup
maximale. de temps à atteindresa savaleur
valeur maximale.
maximale.
de temps à atteindre
ü Pour réduire le temps de comptage, on peut donc charger une valeur initiale non
 Pour Pour réduire le temps de comptage, on peut
nulle dansréduire le temps de comptage, on peut
le compteur.
ü Exemple donc donc
: Valeur charger
charger
initiale une
égaleune valeurinitiale
valeur
à 250 initiale non
non nulle
nulle
dans dans le compteur.
le compteur.
 Exemple : Valeur initiale égale à 250
 Exemple
Chargement : Valeur
du compteur initiale
à une valeur initiale égale
de 250 à 250
Chargement
Chargement du compteur
du compteur à uneà une valeur
valeur initiale
initiale dede 250
250

250 250 251 251 252252 253


253 254
254 255
255 00

→impulsions
→6 6 impulsions
7 7
A.  Z UGARI Filière:GM2 71
● Composition du Timer0
 Le pré-diviseur peut prendre une valeur parmi la
Le Timer0 liste suivante : 1, 2,
Méthodes de 4, 8, 16, 32, 64, 128 ou
configuration
256
q Composition du Timer0
ü Le prédiviseur

128 ou 256
La valeur initiale peut prendre n'importe quelle
peut prendre une valeur parmi la liste suivante : 1, 2, 4, 8, 16, 32, 64,

valeur entière comprise entre 0 et 255.


ü La valeur initiale peut prendre n'importe quelle valeur entière comprise entre 0 et 255.

A.  Z UGARI Filière:GM2 72

10
R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE
bit 7

bit 7 RBPU: PORTB Pull-up Enable bit


Le Timer0 Méthodes de configuration 1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual po
bit 6 INTEDG: Interrupt Edge Select bit
1 = Interrupt on rising edge of RB0/INT pin
q Pour Calculer la valeur initial qui doit être charger dans le Timer0 utilisant
0 = Interrupt la formule
on falling edge of RB0/INT pin
suivante: bit 5 T0CS: TMR0 Clock Source Select bit
1 = Transition on RA4/T0CKI pin
0 = Internal instruction cycle clock (CLKOUT)
Valeur initiale =255-(T*fréquencequartz)/(Valeur du précompteur fixe *Valeur du prédiviseur)
bit 4 T0SE: TMR0 Source Edge Select bit
1 = Increment on high-to-low transition on RA4/T
0 = Increment on low-to-high transition on RA4/T
v Remarque: la valeur initiale doit être positive et un nombrebitentier
3 PSA: Prescaler Assignment bit
1 = Prescaler is assigned to the WDT
Exemple : 0 = Prescaler is assigned to the Timer0 module
-Calculer les valeurs du prescaler et du compteur nécessaire pour
bit 2-0 obtenir unePrescaler
PS2:PS0: temporisation de
Rate Select bits
10 ms. Sachant que le PIC est doté d'un quartz de 4 MHz Bit Value TMR0 Rate WDT Rate
000 1:2 1:1
001 1:4 1:2
Valeur initiale =255-(10^10-3*4106)/(4*64)=98,75=99 010
011
1:8
1 : 16
1:4
1:8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 128 1 : 64
111 1 : 256 1 : 128
A.  Z UGARI Filière:GM2 73

Legend:
R = Readable bit W = Writable bit
- n = Value at POR ’1’ = Bit is set
Le Timer0

A.  Z UGARI Filière:GM2 74
 ‫ﺍﻟﺤﺮﺍﺳﺔ؟‬ ‫ﻛﻠﺐ‬ ‫ﻣﺆﻗﺖ‬ ‫ﺇﺳﺘﺨﺪﺍﻡ‬ ‫ﻳﺘﻢ‬ 
 ‫ﺗﻨﻔﻴﺬ‬ ‫ﻓﻲ‬ ‫ﻋﺎﻟﻖ‬ ‫ﺍﻟﻤﺘﺤﻜﻢ‬ ‫ﻳﻜﻮﻥ‬ ‫ﻋﻨﺪﻣﺎ‬ ‫ﺃﻭ‬ ‫ﻣﻬﺎﻣﻪ‬ ‫ﺃﺩﺍﻩ‬ ‫ﻋﻠﻰ‬ ‫ﻗﺎﺩﺭ‬ ‫ﻏﻴﺮ‬ ‫ﺍﻟﻤﺘﺤﻜﻢ‬ ‫ﻓﻴﻬﺎ‬ ‫ﻳﻜﻮﻥ‬ ‫ﺣﺎﻻﺕ‬ ‫ﻓﻲ‬ ‫ﺪﻡ‬
 ‫ﻫﺬﻩ‬ ‫ﻣﻌﺎﻟﺠﺔ‬ ‫ﻳﺴﺘﻄﻴﻊ‬ ‫ﺍﻟﺤﺮﺍﺳﺔ‬ ‫ﻛﻠﺐ‬ ‫ﻣﺆﻗﺖ‬ ‫ﺃﻥ‬ ‫ﺣﻴﺚ‬ .‫ﻓﻴﻬﺎ‬ ‫ﻋﺎﻟﻘﺎ‬ ‫ﻳﻜﻮﻥ‬ ‫ﺣﻴﺚ‬ ‫ﻻﻧﻬﺎﺋﻴﺔ‬ ‫ﺣﻠﻘﺔ‬ ‫ﺩﺧﻮﻝ‬ ‫ﺃﻭ‬  ‫ﻣﺎ‬
  .‫ﺍﻟﻤﺘﺤﻜﻢ‬ ‫ﺗﺸﻐﻴﻞ‬ ‫ﺑﺈﻋﺎﺩﺓ‬ ‫ﺎﻛﻞ‬

 ‫ﺍﻟﺤﺮﺍﺳﺔ؟‬ ‫ﻛﻠﺐ‬ ‫ﻣﺆﻗﺖ‬ ‫ﻳﻌﻤﻞ‬ 

Chien de garde

qLe chien de garde est un dispositif matériel et logiciel qui permet de


provoquer un RESET du CPU si le programme ne tourne pas normalement.

qLe PIC16F84 est muni d’un circuit interne qui assure cette fonction sans
qu’il soit besoin de composants extérieurs.

qCe système appelé chien de garde, il utilise le timer interne qui par
conséquent ne peut plus dans ce cas être utilisé pour une autre tâche.
Lorsque le registre TMR0 atteint 255 un RESET est appliqué, il faut donc
éviter qu’il n’atteigne jamais cette valeur en le mettant à zéro
périodiquement par le programme.

A.  Z UGARI Filière:GM2 75
Mode Sommeil

q Lorsque le PIC n'a rien à faire, ce mode est utilisé pour limiter sa consommation : le PIC est mis en
sommeil jusqu'à son réveil . Ce mode est principalement utilisé pour les systèmes embarqués
fonctionnant sur pile.

q La mise en sommeil est réalisée grâce à l'instruction sleep. Les séquences suivantes sont exécutée :
• Le chien de garde est remis à 0 (équivalent à clrwdt)
• L'oscillateur est arrêté ; le PIC n'exécute plus d'instruction

q Trois événements permettent de sortir le PIC du sommeil :


• Application d'un niveau 0 sur l'entrée MCLR (broche numéro 4).
• Activation du chien de garde. Le programme reprend à l'instruction suivant le sleep.
• Apparition d'une interruption (RB0/INT, RB ou EEPROM).

A.  Z UGARI Filière:GM2 76
Donc pour commencer ?que dois-je avoir?
Un ordinateur

La maitrise de langage
Câble USB

5
Microcontrôleur
Programmateur

A.  Z UGARI Filière:GM2 77
Mise en œuvre
q L’utilisation et la mise en œuvre très simple des PICs les a rendus extrêmement populaire.
q Pour faire fonctionner le PIC, il suffit de:
ü Alimenter le circuit par ses deux broches VDD et VSS,
ü fixer sa vitesse de fonctionnement à l’aide d’un quartz,
ü d'élaborer un petit système pour permettre de réinitialiser le microcontrôleur sans avoir à
couper l’alimentation.

q Il suffit ensuite d’écrire le programme en langage assembleur ou en C sur un


ordinateur grâce au logiciel MPLAB ou MikroC de MICROCHIP puis de le
compiler pour le transformer en langage machine et le transférer dans le PIC
grâce à un programmateur.
A.  Z UGARI Filière:GM2 78
A.  Z UGARI Filière:GM2 79
q Les éléments essentiels du PIC 16F877 sont :
Ø Une mémoire programme de type EEPROM flash de 8K mots de 14 bits,
Ø Une RAM donnée de 368 octets,
Ø Une mémoire EEPROM de 256 octets,
Ø 33 Ports Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie.
A (6 bits), B (8 bits), C (8 bits), D (8 bits), E (3 bits).
Ø Convertisseur Analogiques numériques 10 bits à 58 canaux
Ø USART, Port série universel, mode asynchrone (RS232) et mode synchrone
Ø SSP, Port série synchrone supportant I2C
Ø Trois TIMERS avec leurs Prescalers, TMR0, TMR1, TMR2
Ø Deux modules de comparaison et Capture CCP1 et CCP2
Ø 2 modules pour PWM avec une résolution de 10 bits.
Ø Un chien de garde,
Ø 13 sources d'interruption,
Ø Générateur d'horloge, à quartz (jusqu’ à 20 MHz) ou à Oscillateur RC
Ø Fonctionnement en mode sleep pour réduction de la consommation,
Ø Programmation par mode ICSP (In Circuit Serial Programming) 12V ou 5V,
Ø Possibilité́ aux applications utilisateur d’accéder à la mémoire programme,
Ø Tension de fonctionnement de 2 à 5V,
Ø Jeux de 35 instructions
A.  Z UGARI Filière:GM2 80
Liaison série
q Le PIC16F877A intègre trois ports de communications :
Ø un port synchrone série « SSP » avec les protocoles « SPI » et « I2C » ;
Ø un port de communication parallèle « PSP » 8 bits ;
Ø un port asynchrone série universel « USART ».
C’est à ce dernier que nous allons nous intéresser.
q La liaison série USART (Universal Synchronous Asynchronous Receiver Transmitter ) est le mode le plus
rependu pour communiquer (et aussi le plus vieux).
qUne liaison série permet de transmettre des données sur un
nombre limité de fils.
q Sur le microcontrôleur PIC16F877A, la liaison série
asynchrone peut être mise en œuvre à l’aide des pins RxD et
TxD. Elle est réalisée par un USART :
§ RxD, signal de réception de l’USART
§ TxD, signal de transmission de l’USART
1ère étape : Configuration de la transmission
2ième étape : Envoyer et recevoir des données

A.  Z UGARI Filière:GM2 81
Convertisseur Analogiques Numériques
q CAN : Dans les microcontrôleurs, les voix de conversion analogique/numérique sont souvent
multiplexées. Ceci signifie que la fréquence maximale de conversion analogique numérique est divisée
par le nombre de voies utilisées.
q Très souvent, il faut configuré les entrées de conversion en « entrée analogique » car celles-ci peuvent
aussi être utilisée en entrée numérique.

A.  Z UGARI Filière:GM2 82
Jeu d’instruction

q Les instructions contenues dans la mémoire programme sont une suite de mots binaires
décodés puis exécutés par le microprocesseur, appelée langage machine. Ces codes sont
difficilement compréhensibles par le programmateur. C’est la raison pour laquelle ils sont
traduits en différents mots faisant partis du langage assembleur.
q Le jeu d'instructions est l'ensemble des instructions machines qu'un processeur
d'ordinateur peut exécuter. ces instructions machines permettent d'effectuer des opérations
élémentaires (addition, et logique…) ou plus complexes (division, passage en mode basse
consommation…). le jeu d'instructions définit quelles sont les instructions supportées par le
processeur.
q l’intérêt des microcontrôleurs PIC réside dans le jeu d’instruction et les modes d’adressage
considérablement réduits par rapport à d’autres structures programmables.
q Ainsi, contrairement à de nombreux circuits mettant en jeu une centaine d ’instructions
différentes, les PIC voient leur nombre d’instructions limitées à 33 ou 35.

A.  Z UGARI Filière:GM2 83
A.  Z UGARI Filière:GM2 84
Résumé
q En résumé, lorsqu’on décide de développer un nouveau produit à base de microcontrôleur,
puisque l’offre est très vaste, plusieurs paramètres vont orienter notre choix vers un produit
plutôt qu’un autre :
Øle prix : il y a de très grands écarts de prix entre les produits, liés par exemple à la taille et
au type de mémoire, ainsi qu’à la nature et la quantité de périphériques.
Øles périphériques : on peut se demander si toutes les fonctions décrites dans le cahier des
charge seront réalisées par le microcontrôleur ou s’il faudra ajouter des périphériques
externes.
Øtaille des espaces mémoire: l’espace mémoire programme sera-t-il suffisant pour
l’application ?
Øconsommation : déterminant pour des produits destinés à fonctionner sur batterie
Øoutils de développement : peut-on développer en langage évolué ? Existe-t-il un
environnement de développement intègré (éditeur, assembleur, compilateur, simulateur
/debugger) ?
Øexpérience/savoir faire

A.  Z UGARI Filière:GM2 85
Résumé
• Le microprocesseur est donc une association entre le matériel (hardware) et le logiciel
(software).
• Il est donc nécessaire d'avoir un programme pour que le processeur serve à quelque
chose. Le programme est un ensemble logique convenablement ordonné d'opérations
élémentaires que le microprocesseur sait exécuter. Le programme est toujours rangé
dans la mémoire de l'ordinateur.
• le microprocesseur doit aller chercher les instructions au fur et à mesure pour les
exécuter. Certaines instructions impliquent des calculs, d'où la présence d'une UAL
(Unité Arithmétique et logique) dans les processeurs

A.  Z UGARI Filière:GM2 86