Académique Documents
Professionnel Documents
Culture Documents
EMBARQUEE
Microcontrôleur
Pr: A. Zugari
é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é?
qVous appelez votre ami avec votre téléphone portable pour signaler que vous serez en
retard
qVous prenez votre voiture et la voix du calculateur vous dit que vous n'avez pas mis
votre ceinture
A.
Z UGARI Filière:GM2 3
I. Introduction :Qu'est-ce qu'un système embarqué?
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
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
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.
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.
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??
A.
Z UGARI Filière:GM2 14
V. 3. Différentes Familles des PICs
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
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.
A.
Z UGARI Filière:GM2 18
VI. Etudes de PIC 16F 84
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 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
A.
Z UGARI Filière:GM2 23
VI.2.1. Deux mémoires
qLe 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.
qDans 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).
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.
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).
qLe registre EEADR EEprom ADRess ( h'09' ) :Registre de 8 bits qui contient l'adresse de la donnée se
trouvant dans l'EEPROM.
qLe 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 .
qLe 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
qLe 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
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
A.
Z UGARI Filière:GM2 33
1. Brochage
• Le PIC 16F84 est un circuit intégré de 18 broches.
A.
Z UGARI Filière:GM2 34
1. Brochage
qL’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
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
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.
• 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)
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
§ La configuration de direction pour chaque bit du port est déterminée avec le registre TRISA.
ü 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.
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.
A.
Z UGARI Filière:GM2 47
Mécanisme des interruptions
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
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
Ø 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 :
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
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
qOn 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 ...
qOn 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 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).
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
qLe 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).
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.
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. ModificationdeExemple : 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
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
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.
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
→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,
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
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
qLe PIC16F84 est muni d’un circuit interne qui assure cette fonction sans
qu’il soit besoin de composants extérieurs.
qCe 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
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.
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