46
 Master Sciences de l'information et des Systèmes Université  Paul Cézanne Travaux Pratiques de  Microcontrôleu r Julien Marot  [email protected] Marc Allain [email protected] 

enonce_MSIS

Embed Size (px)

Citation preview

Page 2: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 2/46

Formation au développement d'applications en Assembleur et C sur un microcontrôleur Mircrohip PIC 18F4!" enutlisant l'environnement MP#A$ I%& et le compilateur C18

Table des matières

1. Avant de commencer.....................................................................................................................1

2. Le Matériel.....................................................................................................................................1!1 #e (it PIC%&M ! Plus et PIC 18F4!"1!! MP#A$ Inte)rated %evelopment &nvironment1!* #e pro)rammateur PIC+,A-, Plus!

3. Gestion de vos fichiers...................................................................................................................2

4. TP n°1 !nitiation " MPLA# !$%............................................................................................... 341 Pro)ramme . Interrupteur /*4! 0dition et Compilation du pro)ramme 4

4* +imulation44 Pro)rammation du microcontrôleur 4 Pro)ramme . Cli)notant /8

&. TP n°2 %crit're d('n driver )o'r L*$.................................................................................. 111 #es a22icheurs #C%11! Fonctions de )estion 1!* 0crire une chaine de caract3res1

+. TP n°3 !nterr')tions et Péri)héri,'es....................................................................................1-1 Pro)ramme . Cli)notant / avec interruption1! Chronom3tre 18* 5énérer un si)nal rectan)ulaire avec un module P6M 174 tilisation du module de conversion A9% !" 5estion d'interruptions multiples!"

-. TP n°4 !nitiation " la )rorammation en lanae *..............................................................221 Introduction : assembleur et compilateur C!!! 5énération d'un si)nal carré !** 0dition et Compilation du pro)ramme !44 +imulation et pro)rammation du micro;contrôleur  ! Applications!

/. TP n°& Gestion de Péri)héri,'es et !nterr')tions.................................................................2-81 Communication série : -+!*! !8! Applications!7

0. TP n°+ Pannea' d(affichae l'mine'....................................................................................3171 5estion de l'a22icheur #C%*17! 5estion de l'&&P-<M **7* Panneau d'a22icha)e *4

1. TP n°- tation ervice............................................................................................................ 3+1"1 Automate de Pompe*1"! Communication avec l'automate de caisse*

Page 3: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 3/46

Page 4: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 4/46

Page 5: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 5/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

1. Avant de commencer

Ces séances de travau= prati>ues ?,P@ sont destinées illustrer les notions >ui vous ont été présentées en coursPour celaB vous aure concevoir et tester un certain nombre de pro)rammes soit en lan)a)e assembleur soit enlan)a)e C

Po'r cha,'e tche ,'e vo's a're5 " réaliser6 nous vous invitons enre)istrer votre pro)ramme sous un nom particulier pour )arder une sauve)arde de travail Pour 2aciliter le débo)a)e et assurer la maintenance et la portabilité devos codesB il est primordial >ue vous commencie par rédi)er un al)ori)rammeB >ue vous commentie clairement votre

 pro)ramme et >ue vous pensie le rendre le plus clair possible ?ex : en choisissant des noms appropriés pour leslabels@

*oncernant l(éval'ation de votre travailB nous vous demanderons de nous présenter le pro)rammecorrespondant cha>ue tDche >ue vous aure pro)rammer sur le simulateur ou sur le Eit de démonstration  ?cf  plus

 bas@ ous corri)erons é)alement vos codes en portant une attention particuli3re la lisibilité ?pense donc au=commentaires G@ &n2inB vous devre é)alement nous rendre les al)ori)rammes >ui correspondent au= codes

2. Le Matériel2.1. Le 7it P!*$%M 2 Pl's et P!* 1/84&2

#e Eit PIC%&M ! Plus est un Eit simple >ui permet de mettre en évidence les capacités de di22érents micro;contrôleurs du 2abricant Microchip travers divers périphéri>ues et accessoires reproduits sur le schéma de la 2i)ure 1

#e micro;contrôleur utilisé est le PIC18F4!" de Microchip C'est un micro;contrôleur 8 bits disposant d'unemémoire de pro)ramme de *! (oB de 1* octets de -AM ?-andom Access MemorH@B d'une &&P-<M ?&lectricallH&rasable Pro)rammable -ead <nlH MemorH@ de ! octets et de * entrées9sorties

ne part importante de la di22iculté pour pro)rammer un micro;contrôleur réside dans l'ac>uisitiond'in2ormations Pour ac>uérir cette compétenceB nous vous invitons vous ré2érer 2ré>uemment la documentationtechni>ue du micro;contrôleurB ainsi >u' la documentation techni>ue de la carte d'évaluationB c2 les documentationsélectroni>ues

M1 +I+ 1 !"119!"1!

 &i+ure $, -e it P#C/0M ) Plus1 Péri23ériues et 4ccessoires

Microcontrôleur #C%

Contrôles-A1'''-A*

%onnées

-%"'''-%*

#&%s

-$"'''-$*

$uer 

-C!

-+!*!

-CB -C

Poussoirs

-A4B -$"

&ntrée Analo)i>ue

-A "

-eset MC#-  

IC%-$B

-$$us I!C

-C4B -C5#n Circuit /e6u++er7

5-iuid Crystal /is2lay7

Capteur de

,empérature

-C*

Page 6: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 6/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

2.2. MPLA# !nterated $evelo)ment %nvironment

MP#A$ I%& est un environnement )ratuit de pro)rammation pour les micro;contrôleurs de la 2amilleMicrochip #environnement int3)re un éditeur dassembleurB un débo)ueur complet ainsi >ue tous les outils permettantde )érer les pro)rammateurs de composants #a possibilité dinté)rer un compilateur C dans lenvironnement dedéveloppement MP#A$ sinscrit directement dans la politi>ue du service >ui est dutiliser des lan)a)es de

 pro)rammation évolués dans les développements en électroni>ue

2.3. Le )rorammate'r P!*TA9T Pl's

Il permet de trans2érer le pro)ramme directement de MP#A$ dans le micro;contrôleur via le port série ?-+!*!@d'un PC

3. Gestion de vos fichiersPour chacun des binômesB un compte utilisateur a éré créé Pour ne pas oublier votre nom d'utilisateur et votre

mot de passe vous pouve le noter ci;dessous Attention indos 2aire la déi22érence entre les maKuscules et lesminuscules

 om d'utilisateur :

Mot de passe :

Avec votre compte vous ave droit un espace de stocEa)e sur le serveur Cette espace de sotcEa)e apparaitdans . Poste de Travail  / sous le nom de . voir le nom / C'est ici >ue vous deve stocEer tous vos documents a2in>u'ils vous soient disponibles sur toutes les machines de ,P

 #l vous est fortement conseillé de 6ien ran+er vos documents tout au lon+ des séances. 2our c3acun des TP1 fa8tes unré2ertoire associé ex, t29 2our le t2 n:9. Puis 2our c3aue uestion si c'est nécessaire fa8tes des sous ré2eroires

uestion( 2ar exem2le.

 -es documentations tec3niues nécessaires au TP sont dis2oni6les ;l'adresse,e,3tt2,<<===.lsis.or+<master<index.232>es2ace?etudiant$Adoc$*9

M1 +I+ ! !"119!"1!

Page 7: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 7/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

4. TP n°1 !nitiation " MPLA# !$%#e but de ce ,P est de se 2amiliariser avec la suite lo)icielle . MP#A$ Inte)rated %evelopment &nvironment /

?v@ de Microchip a2in de pouvoir utiliser les 2onctions de bases de cet outil développement savoir : créer un proKetBéditer et compiler un pro)ramme en assembleurB simuler son 2onctionnement et en2in pro)rammer le microcontrôleur?LC@ #es di22érentes 2onctions sont e=pli>uées travers deu= pro)rammes >ui vous sont donnés

4.1. Proramme : !nterr')te'r ;

#e pro)ramme . Interrupteur / boucle lin2ini sur les tDches ci;dessous a2in de reproduire le 2onctionnementdun interrupteur

 – TBc3e $ , lire létat du bouton poussoir +!B broche -A4 – TBc3e ) , si le bouton est appuHéB on allume la diode électro;luminescente ?#&%@ #1B broche -$"B sinon on

léteint

<n notera >ue les boutons poussoirs sont branchés au microcontrôleur en lo)i>ue né)ative #'état . boutonappuHé / correspond donc un " lo)i>ue #es #&% sont cDblées en lo)i>ue positiveB elles s'allument pour un 1 lo)i>ue#e 2onctionnement demandé peut tre reproduit par l'al)ori)ramme ci;dessous

#'al)ori)ramme peut se traduire en assembleur de la mani3re suivante :

LIST P=18F4520#include <P18F4520.inc>#include <CONFIG.inc>

 /éfinition du C utilisé1 des constantes s2écifiues au C et des 2aramètres de confi+uration encodés lors de la 2ro+rammation.

or !"0000"  4dresse de dé2art a2rès un reset du C. ini clr$ PO%T&

'o(l) *"00000000"'o()$ T%IS&clr$ PO%T+'o(l) *"00010000"'o()$ T%IS+

 #nitialisation , Demise ; zéro des 6ascules / des différents 2orts utilisés etconfi+uration des entrées<sorties.

*oucle *$,c PO%T+-4

oo eeindre*,$ PO%T&-0oo *oucle

eeindre *c$ PO%T&-0oo *oucle

N/

 Eoucle infini , 4llume ou éteint la -0/ en fonction de lFétat du 6outon 2oussoir.

To't a' lon des trava' )rati,'es6 no's vo's demandons d(établir 'n lossaire desdifférentes instr'ctions rencontrées avec le'r e)lication en fran<ais. *e lossaire vo's sera

très 'tile )o'r les différents )rorammes ,'e vo's sere5 amener " réaliser.

M1 +I+ * !"119!"1!

 &i+ure ), 4l+ori+ramme du 2ro+ramme G #nterru2teur H

-A4 N "S) a22uyé

-$" N 1 4llum er -$

-$" N " 0te indre -$

oui non

Initialisation du LC

 ASM 

Page 8: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 8/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

4.2. =dition et *om)ilation d' )roramme

Cette partie permet d'apprendre créer un proKet MP#A$B saisir un pro)ramme en assembleur et le compiler

4.2.1. $émarrae

 – Avant de commencerB créer le répertoire t2$  puis dans ce répertoire créer nouveau un répertoire

interru2teur. – Copier dans ce dernier répertoire les 2ichiers P$%&()*.inc et CIJ&#K.inc – #ancer la suite lo)icielle MP#A$ I%& partir de licône >ui se trouve sur votre bureau

4.2.2. *réation d>'n no'vea' )ro?et avec : Pro?ect @i5ard ;

 – Cli>uer sur Project LL Project izard N – Cli>uer sur Suivant L puis sélectionner PIC18F4!" dans le menu déroulant /evice – Cli>uer sur Suivant L puis sélectionner . Microc3i2 MP4SM Toolsuite / et G MP4SM 4ssem6ler / a2in de

 pouvoir pro)rammer en Assembleur – Cli>uer sur Suivant L puis dans le champ . Project Jame H saisir le nom du proKet ?e= : interrupteur@ et

dans le champ . Project /irectory H aller chercher laide du bouton . Ero=se HB le dossier créé au début :

t2$<interru2teur  – Cli>uer sur +uivant O et aKouter les 2ichiers  P$%&()*.inc et CIJ&#K.inc au proKet laide du bouton. 4dd H LL

 – Cli>uer sur Suivant L puis sur Terminer 

4.2.3. =dition d' )roramme

Créer un nouveau 2ichier dans le proKetB &ile LL 4dd Je= &iles to ProjectN 

#enre)istrer dans le répertoire proKet avec le=tension asm ?e= : 2ro+.asm@

MP#A$ &ditor  se lance

+aisir le pro)ramme . Interrupteur / et enre)istrer

Penser aKouter des commentaires au pro)ramme pour montrer >ue vous ave bien compris les di22érentes

instructions ne li)ne de commentaire commence par . O /

4.2.4. *om)ilation

 – Cli>uer sur  Project LL Euild 4ll N  ou sur licône de la barre de menu ou encore Ctrl&$*  pourcompiler le proKet complet &rreurs et arnin)s sont si)nalés dans la 2entre Iut2ut  ainsi >ue le résultat dela compilation EU#-/ SUCC00/0/ ou EU#-/ &4#-0/.

 0n dou6leQcliuant sur une erreur ou un =arnin+ dans la fenRtre Iut2ut1 vous serez amener directement ; la

M1 +I+ 4 !"119!"1!

 &i+ure 9, MP-4E #/01 Mode 0dition

ors2aceArchitecture etcontenu du proKet

Iut2ut Inter2aceMP#A$ %éveloppeur 

 0ditor &dition des 2ichiersde pro)rammeBde con2i)urationB

Page 9: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 9/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

li+ne concernée dans votre 2ro+ramme.

4.3. im'lation

Avant denvoHer un pro)ramme au LCB vous pouve tester son 2onctionnement dans le simulateur ?%ebu))er@MP#A$ +IM Pour lancer le simulateurB cli>uer sur  /e6u++er LL Select Tool LL MP-4E S#M  ne nouvelle barredoutils est aKoutée ainsi >uun on)let . MP-4E S#M H dans la 2entre <utput #e simulateur 2onctionne selon trois

modes :

 – le mode Ste2 Ey Ste2 >ui permet de 2aire une e=écution pas pas du pro)ramme ?vous tes alors lhorlo)edu LC@

 – le mode  4nimate >ui e=écute automati>uement le pro)ramme mais une vitesse réduite pour >ue lon puisse suivre l'é=écution

 – le mode Dun oQ le pro)ramme est e=écuté automati>uement la vitesse du PC

%ans les deu= premiers modesB nous obtenons des résultats au 2ur et mesure de la simulation alors >ue dans ledernierB les résultats ne sont visibles >ue lors>ue la simulation est stoppée %ans ce para)rapheB nous nous intéressonsau= modes 4nimate et Ste2 Ey Ste2 car ils nous permettent de voir >uelle est lin2luence des entrées sur les sorties

#e ré)la)e de la 2ré>uence de loscillateur utilisé se 2ait dans /e6u++er LL Settin+s N %ans notre cas cest 4

Mh

4.3.1. %ntrées tim'l's

Comme son nom lindi>ue cette 2onctionnalité permet de prévoir les événements d'entrées de mani3ressHnchrones ?les dates sont connues avant la simulation@ et asHnchrones ?les événements sont déclenchés durant lasimulation par lutilisateur@ #es di22érents événements sont enre)istrés dans une table ?6orEbooE@ Pour en créer uneBcli>uer sur /e6u++er LL Stimulus LL Je= or6oo 

%ans le cadre du proKet . interrupteur / on souhaite créer les événements suivants :

 –   t N "B initialisation de -A4 1 ?bouton +! relDché@B –   t N 1" cHclesB on appuie sur +! ?-A4 N "@B –   t N ! cHclesB on relDche le bouton ?-A4 N 1@ –  on veut é)alement pouvoir inverser létat de -A4 >uand on le souhaite

#on)let . Pin < De+ister 4ctions H de la 2entre . Stimulus H permet la saisie des événements en pro)rammantleurs dates darrivée ?événements sHnchrones@

%émarche de création dévénements sHnchrones :

 –  AKouter une colonne -A4 au tableau dévénement ?bouton . Clic 3ere to 4dd Si+nals H@ –  -echercher -A4 dans la liste . 4vaila6le Si+nals H et laKouter la liste . Selected Si+nals H –  -emplir la table dévénement ?,imeB -A4@ avec ?"B1@ ?1"B"@ ?!B1@ –  Choisir cyc ?cHcle@ comme base de temps dans menu . Time Units H –  &nre)istrer la table ?bouton . Save or6oo H@

#on)let . 4sync3 H de la 2entre . Stimulus H  permet de pré;pro)rammer des boutons ?colonne . &ire H@ la)énération dévénement ?événements asHnchrones@

%émarche de création dévénement asHnchrone :

 –  +aisir -A4 dans la colonne . Pin<S&D H de la premi3re li)ne –  #e menu de la colonne . 4ction H propose cin> tHpes daction :

 – Set i+3 : -A4 N 1 – Set -o= : -A4 N " – To++le : -A4 N -A4 – Pulse i+3 : -A4 N

 – Pulse -o= : -A4 N –  Choisir . To++le H pour inverser -A4 –  &nre)istrer la table ?bouton . Save or6oo H@

M1 +I+ !"119!"1!

la lar)eur de limpulsion est ré)lée dans lescolonnes . idt3 H et . Units H

Page 10: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 10/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 –  Appli>uer léchéancier dévénement ?bouton . 422ly H@

 42rès c3aue c3an+ement dans lFéc3éancier dFévénement1 cliuer sur G 422ly H afin ue ces c3an+ements soient 2ris en com2te 2ar la simulation.

4.3.2. orties @atch Loic AnalB5er

A2in de suivre et de visualiser les résultats de simulationB MP#A$ +IM int3)re divers outils dont : –  #a 2entre . atc3 H ?menu ie= LL atc3@ >ui a22iche le contenu des di22érents re)istres du LC et des

di22érentes variables du pro)ramme #a sélection et la validation des re)istres et variables a22icher se 2ait travers les deu= menus déroulants et les deu= boutons . 4dd S&D H et . 4dd Sym6ol H n clic droit sur undes éléments observés permet lacc3s la boRte de dialo)ue . Pro2erties H  a2in de ré)ler le 2ormatda22icha)e de lélément ?e= : Se=B $inarHB +in)le $itB @ mais aussi de sauve)arderB e=porterB letableau . atc3 / Il est aussi possible de 2aire )lisser des éléments de la 2entre . 0ditor H vers la 2entre. atc3 H

 –   #a 2entre . -o+ic 4nalyzer H permet la22icha)e des éléments lo)i>ues ?1 bit@ en 2onction du . Time Ease H #e choi= des éléments a22icher se 2ait laide du bouton . C3annels H

Pour le proKet . interrupteur /B on souhaite a22icher :

 –  les re)istres ,-I+A et ,-I+$ sous 2orme he=adécimale –  les re)istres P<-,AB P<-,$ et   sous 2orme binaire –  les bits -A4 et -$"

Con2i)urer correctement les 2entres . atc3 H et . -o+ic 4nalyzser H

M1 +I+ !"119!"1!

 &i+ure , Stimulus Sync3rones et 4sync3rone

%éclencher 

Page 11: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 11/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

4.3.3. im'lation d' )roramme en mode Animate

Maintenant >ue les entrées et sorties de la simulation sont con2i)uréesB on peut lancer la simulation Avant touteschosesB a2in dinitialiser le LCB il est nécessaire de22ectuer un . Deset H en cli>uant sur le bouton  puis cli>uer surle bouton . 4nimate H  et observer les 2entres . atc3 H et . -o+ic 4nalyzer H. 

Arrter lanimation laide du bouton B 2aire un nouveau . Deset HB relancer lanimationB ouvrir lon)let. 4sync3 H de la 2entre . Stimulus HB a)ir sur -A4 et observer les résultats

Tous pouve é)alement 2aire avancer le pro)ramme pas pas ?mode . +tep $H +tep /@ avec le bouton . Ste2 #nto H  <n notera >ue les boutons . Ste2 Iver H  et . Ste2 Iut H  permettent respectivement une e=écution pas pas avec une e=écution automati>ue des sous;pro)rammes et une e=écution Kus>u la 2in des sous;pro)rammes

4.4. Prorammation d' microcontrCle'r

Cette phase consiste envoHer le code he=adécimal du pro)ramme dans le LC ne 2ois le pro)ramme compiléavec succ3sB le code he=adécimal du pro)ramme se trouve dans le 2ichier avec l'e=tension 3ex ?e= : 2ro+.3ex@ Tous

 pouve visualiser le 2ichier avec la 2entre . Pro+ram Memory H du menu . ie= H #e code de trouve sous l'on)let. I2code ex H

$émarche de transfert : –  Connecter le pro)rammateur PIC+,A-, Plus sur le port série du PC et au secteur 

 –  Placer le LC sur le pro)rammateur DAttention a' sens EF

 –  %ans MP#A$B sous le menu Pro+rammer L Select Pro+rammer  chosir . $  P#CST4DT Plus H n nouvelon)let est alors aKouté la 2entre . Iut2ut H

 –  Con2i)urer le port C<M sur le>uel est connecté le pro)rammateur ?C<M1@B menu  Pro+rammer L Settin+s...

 –   Activer le pro)rammateurB menu  Pro+rammer L 0na6le Pro+rammer B une nouvelle barre d'outils estaKoutée

 –  &nvoHer votre pro)rammeB menu  Pro+rammer L Pro+ram ou en cli>uant sur  1 le trans2ert est terminélors>ue la #&% Kaune 4ctivate du pro)rammateur est éteinte et >ue le messa)e . Pro+rammin+<erification

com2leted successfully H apparaRt dans la 2entre Iut2ut.

M1 +I+ !"119!"1!

 &i+ure (, MP-4E #/01 Mode Simulation

 0ditor #a 2l3che vertesHmbolise le Pro+ramCounter 

atc3A22icha)e de létatcourantdes re)istres et variables

 -o+ic 4nalyzer 5raphe dévolutionde bits

Page 12: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 12/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 –  %ésactiver le pro)rammateurB menu Pro+rammer L /isa6le Pro+rammer 

 –  Placer le LC sur la carte PIC%&M ! Plus ?Attention a' sens G@ mettre la carte sous tension et Ua marche

Lors des )hases de mani)'lation d' microcontrCle'r6 vérifier ,'e la carte P!*$%M 2 Pl's ne soit )as so'stension et fates attention a' )attes6 elles sont frailes.

4.&. Proramme : *linotant ;

4.&.1. AnalBse et com)réhension d' )roramme#e pro)ramme ci;apr3s 2ait cli)noter la #&% #1B broche -$"B une 2ré>uence denviron 1S #état de la #&%

chan)e donc toutes les ""ms

LIST P=18F4520#include <P18F4520.inc>#include <CONFIG.inc>

 /éfinition du C utilisé1 des constantes s2écifiues au C et des 2aramètres de confi+uration encodés lors de la 2ro+rammation.

or !"0000"  4dresse de dé2art a2rès un reset du C.  /cl3r3ion de (3ri3*le,

C&LOC 0001 6 12 6 1

N/C

 -es varia6les t$ et t) sont ran+ées dans la 6an * de laram 5adresse *x**7 et ont 2our taille un octet. 

Inii3li,3ionIni clr$ PO%T&

'o(l) !"00"'o()$ T%IS&

 Demise ; zéro des 6ascules / du 2ort E et définition du 2ort E en sortie. 

Pror3''e Princi73l*oucle 'o(l) !"80"

or)$ PO%T&c3ll e'7o250',c3ll e'7o250',oo *oucle

 Eoucle infini ,

 4llume et éteint la -0/ toutes les (**ms. 

Sou,7ror3''ee'7o250',

'o(l) 10'o()$ 1

co'71 dc$,n 1reurn'o(l) 20'o()$ 2

co'72 dc$,n 2oo co'71oo co'72

N/

Sous 2ro+ramme de tem2orisation D" com)léterFIn réalise deux 6oucles im6riuées ui G occu2e H le

 C durant environ )(* ms. 

M1 +I+ 8 !"119!"1!

 &i+ure V, MP-4E #/01 Code 3exadécimal du 2ro+ramme

Page 13: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 13/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 Comprendre le pro)ramme . cli)notant / et réaliser l'al)ori)ramme associé

 &=pli>uer lutilité de xor=f  dans le pro)ramme principal ?utiliser une table de vérité@

 Calculer les valeurs dinitialisation t1" et t!" pour >ue le sous pro)ramme de temporisation se=écute en !" msV 1 ms #e nombre de cHcle re>uis par cha>ue instruction est donné dans le Keu dinstruction

  Créer un nouveau proKet dans MP#A$ et le sauver dans le répertoire t2$<cli+no puis saisir le pro)ramme précédent en remplaUant t1" et t!" par leur valeur ?pour in2ormer le compilateur de la base dans la>uelle la valeurest écrite on préc3de la valeur de la premi3re lettre de la baseB ainsi 17! en décimal sécrit d17!B hC" enhe=adécimal ou encore b11"""""" en binaire@

 Compiler votre pro)ramme et passer la partie simulation

 JFou6liez 2as de co2ier les fic3iers P$%&()*.inc et CIJ&#K.inc dans le ré2ertoire t2$<cli+no. 

4.&.2. im'lation

Tous pouve simuler le pro)ramme de la mme mani3re >ue le pro)ramme . interru2teur / mais vous vousapercevre tr3s vite >ue cest tr3s lon) du 2ait de lanimation et de la temporisation ?Tous pouve tout de mme le 2aire

 pour bien comprendre mais en initialisant t1" et t!" * et par e=emple@ ous allons donc 2aire les simulations enmode Dun1 e=écution automati>ue

Pour notre pro)rammeB nous navons besoin daucun événement dentrée mais si besoin avait été on aurait pusaisir un échéancier comme précédemment &n mode . Dun H le pro)ramme se=écute donc de 2aUon automati>ue et nesarrte >ue lors>uil rencontre un point darrt ou la 2in du pro)ramme Il 2aut donc placer correctement les pointsdarrt a2in de valider le 2onctionnement de notre pro)ramme Pour observer la durée de la temporisation il 2aut doncmettre un point darrt sur la li)ne dappel du sous pro)ramme de temporisation et un autre sur la li)ne suivante PouraKouter un point darrt B double cli>uer sur la li)ne du pro)ramme oQ vous le souhaiteB ou alors utiliser le menu /e6u++er LL Erea2oints disponible depuis la touche &)

 ous allons suivre le=écution du pro)ramme laide de la 2entre . Simulator Trace H disponible dans le menu. ie= H ous allons nous intéresser plus particuli3rement la colonne . Time H Tous pouve chan)er lunité detemps de cette colonne par un clic droit menu . /is2lay Time H #ors>ue vous a22iche le temps en toutesautres unités >ue cHcleB la valeur a22ichée dépend de la 2ré>uence de loscillateur du LC

 –  #ancer la simulationB bouton –  <bserver la 2entre . Simulator Trace H lors>ue la simulation sarrte au premier point darrt et noter le

temps dappel de la temporisation ?e= : t i N !"*"* cHcles@ –  -elancer la simulationB bouton –  oter nouveau le temps de la 2entre . Simulator Trace H ?e= : t2  N """! cHcles@

Tous pouve alors calculer la durée de la temporisation d N t 2   W ti N !"!77 cHcles soit !"B!77 ms avec unoscillateur 4 MS tiliser cette méthode pour valider vos initialisations de t1" et t!"

M1 +I+ 7 !"119!"1!

 &i+ure W, Placement des 2oints d'arrRt 

Page 14: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 14/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 ne 2ois les simulations terminées trans2érer le pro)ramme dans le microcontôleur

M1 +I+ 1" !"119!"1!

 &i+ure %, Simulator Trace aux différents 2oints d'arrRt 

$reaEpoint call tem2o)(*ms $reaEpoint +oto 6oucle

Page 15: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 15/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

&. TP n°2 %crit're d('n driver )o'r L*$#'obKecti2 de ce ,P est d'écrire et de tester un ensemble de 2onctions assembleurs pour communi>uer avec un

a22icheur #C% #a premi3re partie de ce ,P est réalisée en simulation a2in d'écrire les di22érentes 2onctions nécessairesau bon 2onctionnement de l'a22icheur

&.1. Les affiche'rs L*$#es a22icheurs cristau= li>uides )énéralement appelés #C% ?#i>uid CrHstal %isplaH@ sont des modules

compacts >ui nécessitent peu de composants pour leur mise en oeuvre Plusieurs a22icheurs sont disponibles sur lemarchéB ils se di22érencient les uns des autres par leurs dimensions ?de 1 4 li)nes de 8" caract3res@ Certains sonté)alement dotés de 2onctions de rétroéclaira)e #'a22icheur du Eit PIC%&M ! Plus est un a22icheur 1 X ! c'est dire !li)nes de 1 caract3res avec des caract3res de X8 pi=els

Pour communi>uer avec l'e=térieur tout a22icheur besoin d'un circuit spécialisé de )estion appelé . contrôleurd'a22icha)e /B il en e=iste di22érents mod3les sur le marché mais ils ont tous le mme 2onctionnement #a carted'évaluation est é>uipée du mod3le S%448" de +SA-P #e contrôleur sert donc d'inter2ace entre le microcontrôleuret l'a22icheur ?c2 2i)ure 7@ #e but du driver est de )érer le bus C<,-<# a2in >ue le contrôleur d'a22icha)e comprennele bus %A,A et a22iche ce >ue l'on souhaite sur l'écran #C%

 &i+ure X, Communication avec l'affic3eur -C/

#e contrôleur d'a22icha)e peut recevoir deu= tHpes d'in2ormation sur le bus %A,AB un ordre ?e=: e22acer l'écran@

ou une donnée ?e=: le caract3re A@ <rdres ou données sont envoHés sur le bus %A,A sous 2orme d'octets ?8 bits@ Mais pour ne pas utiliser toutes les broches de sorties d'un microcontrôleur pour communi>uer avec un #C%B les contrôleursd'a22icha)e 2onctionnent é)alement en 4 bitsB un nombre codé sur 4 bits s'appelle un >uartet &n mode 4 bitsB un octet estenvoHé en deu= 2ois : le >uartet de poids 2ort puis le >uartet de poids 2aible

#e bus C<,-<# est constitué de trois li)nes : –  #a li)ne 9 D9eister electF >ui permet au contrôleur d'a22icha)e de savoir si le contenu du bus %A,A

est un ordre ou une donnée n niveau bas indi>uera un ordre et un niveau haut une donnée –  #a li)ne 9@ D9ead @riteF in2orme le contrôleur si on vient lire ou écrire dans sa mémoireB un niveau bas

correpondant une action d'écriture –  #a li)ne % D%nableF >ui in2orme le contrôleur d'a22icha)e >u'un >uartet ?mode 4 bits@ ou un octet ?mode 8

 bits@ est disponible Cette li)ne est active sur 2ront descendant &lle réalise la sHncronisation entre lemicrocontrôleur et l'a22icheur

#es conne=ions entre le contrôleur d'a22icha)e et le microcontrôleur sont re)roupées dans le tableau 1

%'apr3s le tableau 1 >uel est le mode de 2onctionnement du contrôleur d'a22icha)e Y

M1 +I+ 11 !"119!"1!

Contôleur d'a22icha)e

 /W%*U 

#C%1 X !

C<M 1

+&5 4"

LC

 P#C$%&()* C<,-<# *

%A,A 4 ou 8

Page 16: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 16/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

$us

C<,-<#

Contrôleur Microcontrôleur 

-+ -A*

-6 -A!

& -A1

%A,A

%$ -%*

%$ -%!

%$ -%1

%$4 -%"

 0xtrait de P#C/0M ) Plus User's Kuide 52 $%7

Ta6leau $, Connexion entre le contr!leur d'afffic3a+e et le microcontr!leur 

 4ttention , In a Po=erQon Deset1 D4( and D49,D4* are confi+ured as analo+ in2uts and read as Y*F. D4 isconfi+ured as a di+ital in2ut... 5cf datas3eet 2))7

&.2. 8onctions de estion

&.2.1. Transfert d('n octet#'écriture d'un ordre ou d'une donnée en mode 4 bits se 2ait selon la sé>uence reproduite en 2i)ure  1"B l'octet

trans2érer étant b b b b4 b* b! b1 b" avec b bit de poids 2ort

 – Phase I : -6N" et &N" -+ et %$4 sont positionnés la valeur souhaitée : >uartet de poids 2ort ?M+$@ – Phase II : &N1 – Phase III : &N"B le >uartet trans2éré ?poids 2ort@ est pris en compte par le contrôleur lors du 2ront descendant – Phase IT : %$4 sont positionnés la valeur souhaitée : >uartet de poids 2aible ?#+$@ – Phase T : &N1 – Phase TI : &N"B le >uartet trans2éré ?poids 2aible@ est pris en compte par le contrôleur lors du 2ront

descendant

-éaliser l'al)ori)ramme et écrire la 2onction . lcd?ecrire?uartet  / >ui )én3re la sé>uence ITB TB TI sans tenircompte de l'état de -+ pour l'instantB & étant déK initialisé " #e >uartet écrire est stocEé dans les 4 bits de poids2aible du re)istre de travail . 6 / #a li)ne & restant l'état haut durant ! cHcles Tous pourre utiliser lesinstructions no21 6sf1 6cf1 mov=f1 andl= ?c2 datasheet@ ,ester cette 2onction avec le simulateur de MP#A$

 

 ous allons maintenant écrire la 2onction . lcd?ecrire?octet  / ?c'est dire la sé>uence I TI@ en utilisant bienévidemment la 2onction . lcd?ecrire?uartet  / <n ne tient touKours pas compte de l'état de -+ et & étant initialisé " #'octet complet trans2érer se trouve dans le re)istre .   / et sera sauve)ardé dans la variable .  lcd?d6 / stocEéeen ram #'instruction s=a2f  pourrait vous tre utile 0crire et tester cette 2onction en simulation

#es 2onctions d'écriture sont maintenant >uasiment terminées Il reste )érer l'état li)ne de la li)ne -+B il su22it

 pour cela d'aKouter une instruction avant l'appel de la 2onction . lcd?ecrire?octet  / -éaliser les al)ori)rammes etécrire les deu= 2onctions . lcd?ecrire?ordre / et . lcd?ecrire?donnee /

M1 +I+ 1! !"119!"1!

 &i+ure $*, Transfert d'un octet en mode 6its

Page 17: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 17/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

&.2.2. Lect're de l(état d' contrCle'r d(affichae

#ors>ue >ue l'on demande au contrôleur d'é=écuter une action ?ordre ou commande@B ce dernier met un certaintemps la réaliser +i une nouvelle action lui est demandée alors >ue la précédente n'est pas encore terminéeB elle nesera pas prise en compte Pour résoudre ce probl3me il est nécessaire de savoir si le contrôleur est disponible <n ne vadonc plus . écrire / mais . lire / dans le contrôleur

 – Phase I : -6N1 et -+ N "B il s'a)it d'une instruction ?ordre@ de lecture et &N" – Phase II : & passe 1 pour demander le >uartet de poids 2ort – Phase III : <n vient lire la valeur du >uartet M+$ sur %$%$4 – Phase IT : & passe " pour si)naler la 2in de la lecture du premier >uartet – Phase T : & repasse 1 pour demander le >uartet de poids 2aible – Phase TI : <n vient lire la valeur du >uartet #+$ sur %$%$4 – Phase TII : & repasse " pour si)naler la 2in de la lecture du deu=i3me >uartet

 Jote , Pour venir lire /EW.../E il faut ue les 6roc3es D/9...D/* soient confi+urées en entrées. Mais il faut 2ense ; les remettre en sortie 2our la suite.

+ur la 2i)ure 1*B l'octet reUu est de la 2orme $F ACACAC4AC*AC!AC1AC" avec $F bit de poids 2ort $F >uisi)ni2ie Eusy &la+  vaut 1 si l'a22icheur est occupé #es bits AC 1 représentent l' 4ddress Counter c'est dire la valeurcourante du pointeur de -AM du contrôleur cette in2ormation doit tre lue mais ne nous est pas utileB elle ne sera donc

 pas mémorisée

-éaliser l'al)ori)ramme puis écrire la 2onction . lcd?dis2o / >ui boucle tant >ue le bit $F n'est pas é)al " C'est dire tant >ue l'a22icheur n'est pas prt e22ectuer une nouvelle action Au début de la 2onction mettre les broches-%*-%" en entrée et penser les remettre en sortie avant de >uitter celle;ciB )érer é)alement les li)nes -+ et -6Avant de lire le >uartet on attend ! cHcles ,ester ce sous;pro)ramme avec le simulateur

M1 +I+ 1* !"119!"1!

 &i+ure $$, -ecture de l'état de l'affic3eur en mode 6its

Page 18: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 18/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

&.2.3. Procéd're d(initialisation d' contrCle'r d(affichae

Zuand le contrôleur démarre on ne sait pas si il est positionné en 4 ou 8 bitsB comme le montre la procédured'intialisation reproduite en 2i)ure  1!B   il est donc nécessaire d'envoHer la commande de passa)e en mode 8 bits?Function +et 8;$it Inter2ace@ plusieurs 2ois pour >u'elle soit bien comprise Puis on demande le passa)e en 4 bits?Function +et 4;$it Inter2ace@

 &i+ure $), Procédure d'initialisation 6its du contr!leur d'affic3a+e5extrait de la datas3eet du /W%*U 7

&n analHsant la procédure on remar>ue >u'il H a trois temporisations ?O1msB O4B1ms et O1""Ls@ Pour simpli2ierle code nous allons écrire deu= 2onctions de temporisationB une d'environ ms ?1 N X*@ et une autre d'environ 1""Ls

&n vous inspirant de la temporisation réalisée au ,P n[1 -éaliser les al)ori)rammes puis écrire les 2onctions

M1 +I+ 14 !"119!"1!

Page 19: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 19/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

. tem2o?(ms / et . tem2os?$**us / et les valider par simulation Si 6esoin est vous 2ouvez créer des varia6les enmémoire.

#a derni3re partie de la procédure consiste ré)ler les caractéristi>ues de l'écran %ans notre cas nous prendrons:

 –  N 1 pour 2onctionner sur deu= li)nes –

F N " r3)le la taille des caract3res ?X8 dots@ – I9% N 1 a2in >ue le curseur se déplace vers la droite apr3s avoir a22iché un caract3re

-éaliser l'al)ori)ramme puis écrire la 2onction . lcd?init  / >ui réalise cette procédureB pense utiliser les2onctions >ue vous ave déK créées Inté)rer l'intialisation des ports dans . lcd?init  / Talider la procédure parsimulation

&.2.4. #asc'lement entre les lines

#e contrôleur d'a22icha)e dispose d'une mémoire %%-AM représentant l'a22icheur %ans notre cas la taille de lamémoire utilisée est de ! li)nes de 1 octets chacune Pour chan)er de li)neB il su22it de venir positionner l' 4ddressCounter  au début de li)ne souhaitée

 &i+ure $9, //D4M du contr!leur 

&n utilisant vos di22érentes 2onctions écrire les 2onctions . lcd?l$ / et . lcd?l) / permettant de choisir la li)nesur la>uelle on souhaite écrire

0crire la 2onction . lcd?cls / >ui e22ace tout l'écran ?c2 2i)ure 1!@

Modi2ier la 2onction . lcd?ecrire?octet  / a2in d'attendre >ue le contrôleur est pris en compte l'action

&.2.&. Tests des différentes fonctionsToil nous sommes maintenant prt utiliser l'a22icheur #C% Pour 2aciliter l'utilisation des 2onctions >ue vous

vene de créer il est conseillé de toutes les mettre dans un 2ichier . lcd.asm / a2in de pouvoir les inclure dans vos 2uturs pro)rammes #'utilisation de ce 2ichier par la suite est tr3s simpleB il su22it de taper la commande . Zinclude lcd.asm / l'endroit de votre pro)ramme oQ vous souhaite inté)rer vos 2onctions et de dé2inir les variables . lcd?d61 ... / au débutde votre pro)ramme #e 2ichier . lcd.asm / doit se trouver dans le mme répertoire >ue votre pro)ramme

0crire le pro)ramme >ui reproduit l'écran ci;dessous sur l'a22icheur

I n $ o

I n d u ,

Si vous ta2er G movl= '#' H le re+istre G H sera c3ar+é avec le code ascii du caractère #.

M1 +I+ 1 !"119!"1!

Page 20: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 20/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

&.3. =crire 'ne chaine de caractères

#a méthode >ui nous a permis de tester les 2onctions de )estion de l'a22icheur n'est pas des plus e22icace car il estnécessaire de retaper le mme code pour chacun des caract3res ous allons donc écrire une 2onction >ui a22iche unechaine de caract3res compl3te #a chaine de caract3res est stocEée dans la mémoire pro)ramme Pour stocEer unechaRne en mémoire pro)rammeB il su22it d'utiliser la directive . d6 / comme dans l'e=emple suivant :

...or !"0000"oo '3in

c! d* 9:icroconroleur9-";0" ecrire en ''oire 7ror3''e

'3in no7...

#a chaRne . Microcontroleur  / est stocEée dans la mémoire pro)rammeB elle se termine par le caract3re . [* /#e label . c3 / pointe vers le premier caract3re de la chaRneB c'est donc l'adresse de début de la chaine %ans la mémoire

 pro)ramme du PIC 18F4!"B les adresses sont codées sur !1 bits donc * octets Comme nous disposons d'unmicrocontrôleur 8 bits nous utiliserons les directives . UPP0D5c371 #K5c371 -I5c37 / pour obtenir respectivementl'octet de poids le plus 2ortB de poids intermédiaire et de poids 2aible

Pour lire dans la mémoire pro)rammeB il 2aut tout d'abord initialiser le pointeur d'adresse de mémoire pro)ramme . TE-PTD / avec l'adresse de l'octet lire Pour lire un octet on utilse l'instruction . TE-D/ / >ui trans23rele contenu de la mémoire dans le re)istre . T4-E4T  /

Consulter la datas3eet du 2ic 2W9QWV et 29*(.

Con2i)urer correctement l'instruction . TE-D/ /

-éaliser l'al)ori)ramme de la 2onction . lcd?ecrire?c3aine /

0crire et tester cette 2onction

 -'affic3eur -C/ ne 2eut affic3er ue $V caractères 2ar li+ne...

M1 +I+ 1 !"119!"1!

Page 21: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 21/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

+. TP n°3 !nterr')tions et Péri)héri,'esCe troisi3me ,P est divisé en >uatre parties durant les>uelles vous apprendre )érer les interruptions et

di22érents modules du micro;contrôleur en lan)a)e Assembleur et dans un pro)ramme uni>ue

+.1. Proramme : *linotant ; avec interr')tion

 ous devons maintenant 2aire cli)noter la led #1B broche -$"B une 2ré>uence de !S sans mobiliser lemicrocontrôleur Il n'est donc plus >uestion d'utiliser une temporisation pour compter le temps ?c2 ,P n[1@ ous allonsdemander un module e=terne : le ,IM&-"B de compter le temps et de si)naler la 2in du compta)e au microcontôleur

 par une interruption dite interruption de débordement #a 2i)ure  14 montre le si)nal de sortie du ,IM&-" et lesinterruptions de débordement associées #e ,IM&-" compte Kus>u' la valeur max  en T secondes ,outes les TsecondesB l'état de la led #1 est inversé

 &i+ure $, #nterru2tion de dé6ordement du T#M0D*

,rouverB en utilisant la datasheetB l'e=pression de la valeur max et de la période de compta)e T  en 2onction de lacon2i)uration du ,IM&-" ?cf datas3eet 2$)9@

Zu'elle est la con2i)uration pour une période de compta)e T  d'environ 1s Y

Zuels sont les bits intialiser pour activer l'interruption du ,IM&-" Y

&=pli>uer la con2i)uration du re)istre ,"C<

#'énoncé demande de 2aire cli)noter la led une 2ré>uence de !S donc une période de compta)e de 1s Avec lacon2i)uration choisi précédemmentB on a une interruption toutes les ?1\t @sB si on souhaite mesuer le temps précisementcette erreur de t  seconde n'est pas né)li)eable

Pour compenser cette erreur décala)eB l'idée est d'initialiser les re)istres ,M-"S ,M-"# a2in >ue le compta)ene commence pas " mais une valeur min permettant d'annuler t  comme le montre la 2i)ure 1

 &i+ure $(, #nterru2tion de dé6ordement du T#M0D*

Calculer la valeur min pour avoir une 2ré>uence de compta)e de 1s e=catement

-éaliser l'al)ori)ramme du pro)ramme demandéB écrire et tester ce pro)ramme

+.2. *hronomètre

 ous allons maintenant réaliser un chornom3tre simpli2ié en utilisant le ,IM&-"B l'a22icheur #C% et le bouton

+!B broche -A4 #e temps doit s'a22icher sur le #C% sous le 2ormat :

M1 +I+ 1 !"119!"1!

 ASM 

ma=

,

Interruptions de débordement

"

ma=

,;t

Interruptions de débordement

"min

Page 22: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 22/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

' ' , ,

#e 2onctionnement souhaité est le suivant :

 –  ] la mise sous tensionB le chronom3tre est initialisé . 0000 /

 –  n premier appui sur +! déclenche le chronom3treB le temps évolue sur l'a22icheur #C%

 –  n deu=i3me appui sur +! arrte le chronom3treB le temps écoulé est a22iché sur le #C%

 –  n troisi3me appui sur +! réinitialise le chronom3tre

#es nombres représentant les minutes et les secondes seront respectivement stocEés dans les octects M#J  et S0C #e temps est mesuré par l'interruption de débordement du ,IM&-" Comme il a été vu au ,P précédentB l'a22icheur#C% ne comprend >ue des caract3res ?code A+CII@B on ne peut donc pas directement lui envoHer les octects M#J  etS0C  puis>ue ceu= sont des nombres

Caractère " 1 ! * 4 8 7

Code 4SC##

48?"=*"@

47?"=*1@

"?"=*!@

1?"=**@

!?"=*4@

*?"=*@

4?"=*@

?"=*@

?"=*8@

?"=*7@

Ta6leau ), Code 4SC## des c3iffres

-éaliser l'al)ori)ramme puis écrire le code de la 2onction . lcd?ecrire?nom6re  / >ui a22iche sur le #C% lenombre contenu dans JE sachant >ue ce nombre est compris entre "" et 77 Il 2aut donc a22icher le chi22re desdiaines puis le chi22re des unités ? JE est un octect ; déclarer1 vous 2ouvez tester cette fonction en simulation@

-éaliser l'al)ori)ramme puis écrire le code de la routine d'interruption et de l'interruption de débordement du,IM&-"

#e bouton poussoir +! permet l'utilisateur d'a)ir sur l'état chronom3tre %'apr3s le 2onctionnement décrit ci;dessusB 'n appui sur le bouton chan)e l'état du chronom3tre

-éaliser l'al)ori)ramme et écrire la 2onction . 6outon?a22ui / >ui détecte un appui sur le bouton +!B l'appuiétant détecté lors>ue l'utilisateur relDche le bouton

-éaliser l'al)ori)ramme du chronom3tre puis écrire le pro)ramme principal

,rans2érer votre pro)ramme et chronometre;vousG

+.3. Générer 'n sinal rectan'laire avec 'n mod'le P@M&n partant du pro)ramme précédentB on souhaite maintenant aKouter une 2onctionnalité : cha>ue appui sur le

 bouton poussoir +* connecté -$"B on souhaite activer le transducteur piéo;électri>ue ?pendant la durée de l'appui@#e transducteur piéo;électri>ue peut tre commandé )rDce la broche -C! du micro;contrôleur

n transducteur piéo;électri>ue est un composant électroni>ue constitué dune lamelle de matériau piéo;électri>ue Cette lamelle est dé2ormée si une tension alternative est appli>uée au= bornes du transducteur piéo;électri>ue

M1 +I+ 18 !"119!"1!

Page 23: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 23/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 &i+ure $V, -e transducteur 2iézoQélectriue

#e mouvement de la lamelle dans lair )én3re un son #a 2ré>uence du son émis est directement lié la natureet la 2ré>uence du si)nal appli>ué au= bornes du transducteur piéo;électri>ue

+ur la carte dévaluation PIC%&M ! PlusB le transducteur piéo;électri>ue peut tre commandé )rDce la broche -C! du micro;contrôleur #e monta)e électroni>ue utilisé pour commander le transducteur piéo;électri>ue permet de lalimenter avec une tension bipolaire ?\TB ;T@

Pour )énérer un sonB on doit donc )énérer un si)nal rectan)ulaire ?)rDce au module P6M@ >ue l'on appli>uera

au transducteur piéo;électri>ue si l'utilisateur appuie sur le bouton poussoir +* Il 2audra initialiser tous les modulesnécessaires la )énération d'un si)nal rectan)ulaire ?module CCP1B ,IM&-!@ ?voir p17 du . dataQs3eet H@ etinitialiser le PIDTC  ] partir du pro)ramme précédentB apporter les modi2ications nécessaires :

lors de l'initialisation ,

 –  Con2i)urer le P<-,C en entrée e=cepté la broche -C! en sortieB –   Con2i)urer le module P6MB placer la valeur "=8" dans le re)istre P-! ?2i=e la 2ré>uence du si)nal

rectan)ulaire@B ré)ler le dutH time ?rapport cHcli>ue@ "B on placera la valeur "="" dans le re)istreCCP1C<B

 –  Activer le ,IM&-!B placé le . 2ostscaler  / 1:1B placé le . 2rescaler H 4B

dans le 2ro+ramme 2rinci2al : on testera la valeur sur la broche -$"B

 –  %ans le cas oQ -$" est l'état haut on activera le transducteur piéo;électri>ue en a)issant sur le re)istreCCP1C<B

 –  %ans le cas oQ -$" est l'état bas on désactivera le transducteur piéo;électri>ue en a)issant sur le re)istreCCP1C<B

 –  %ans le cas oQ la valeur sur la broche -$" est é)ale la derni3re valeur ac>uise on ne 2era rien

 Attention : -e /uty Time est le tem2s 2endant leuel le si+nal est ; lFétat 3aut. #l faut ada2ter ce tem2s en fonction dela fréuence du si+nal +énéré 2our +arder un ra22ort cycliue é+ale ; *1(. Pour cela lisez la documentation tec3niueet trouver la relation uFil doit exister entre les valeurs des re+istres PD) et CCPD$-,CCP$CIJ\(,L 2our ue lera22ort cycliue reste é+ale ; *.(.

 %onner la relation >uil doit e=ister entre les valeurs des re)istres P-! et CCP-1#:CCP1C<^:4O pour >ue lerapport cHcli>ue reste é)ale " et proposer un partie de pro)ramme ?le plus simple possible@ en lan)a)eAssembleur >ui permet dadapter le rapport cHcli>ue ?contrôlé par les re)istres CCP-1#:CCP1C<^:4O@ en2onction de la 2ré>uence ?contrôlée par le re)istre P-!@ du si)nal )énéré

 -éaliser l'al)ori)ramme du pro)ramme demandéB

 0crire le pro)ramme sur ordinateur avec MP#A$B simuler son 2onctionnement et le valider sur la carted'évaluation

 /ans un 2remier tem2s1 modifier le 2ro+ramme 2récédent 2our uFil +énère un si+nal rectan+ulaire 5en utilisant lemodule PM7 sur la 6roc3e DC). Puis vous 2rendrez en com2te la +estion du 6outon DE*. 0n sé2arant les deux 2ro6lèmes1 la difficulté est réduite.

+.4. Htilisation d' mod'le de conversion AI$

<n souhaite maintenant pouvoir 2aire varier la tonalité du son émis par le transducteur piéo;électri>ue Pour

M1 +I+ 17 !"119!"1!

Page 24: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 24/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

celaB on va 2aire varier la 2ré>uence ?contrôlée par le re)istre P-!@ du si)nal rectan)ulaire )énéré dans la partie précédente Pour 2aire varier la 2ré>uence du si)nalB on va utiliser le potentiom3tre -1 ] cha>ue 2ois >ue l'on activerale transducteur piéo;électri>ueB on va mesurer la tension sur la broche -A" en utilisant le module de conversion A9%Bon utilisera la valeur de la tension sur la broche -A" pour déterminer la 2ré>uence du si)nal rectan)ulaire #esmodi2ications portées au pro)ramme sont les suivantesB

lors de l'initialisation1

 –  con2i)urer le P<-,A de mani3re ce >ue la broche -A" soit en entréeB –  activer le module de conversion A9% ?voir pa)e !! du . datas3eet H@B –  initialiser les re)istres A%C<"B A%C<1 ?les autres re)istres sont correctement con2i)urés par dé2aut@B

dans le 2ro+ramme 2rinci2al1

 –  réaliser une ac>uisition de la valeur de la tension sur la broche -A" en réalisant une conversion A9%B –  modi2ier la valeur du re)istre P-! ?2ré>uence du si)nal )énéré@ en utilisant les bits de poids 2orts du

résultat de la conversion A9%B –  aKuster le rapport cHcli>ue pour >u'il reste é)ale "

 -éaliser l'al)ori)ramme du pro)ramme demandéB 0crire le pro)ramme sur ordinateur avec MP#A$B simuler son 2onctionnement et le valider sur la carte

d'évaluation

+.&. Gestion d(interr')tions m'lti)les

<n souhaite maintenant >ue le micro;contrôleur )3re par interruption l'appui sur le bouton poussoir Ainsi cha>ue appui sur le bouton poussoir +*B on souhaite activer ou désactiver le transducteur piéo;électri>ue Zuand letransducteur piéo;électri>ue sera activéB le pro)ramme principal réalisera une ac>uisition de la tension sur la broche-A" et mettra Kour la 2ré>uence et le rapport cHcli>ue du si)nal rectan)ulaire Zuand le transducteur piéo;électri>uene sera pas activéB le pro)ramme principal ne réalisera aucune opération Pour )érer les appuis sur le bouton poussoir+*B on utilisera l'interruption I," ] partir du pro)ramme précédentB il 2audra modi2ier :

 –  la con2i)uration des interruptions pour prendre en compte la nouvelle interruption I,"B –  simpli2ier le pro)ramme principal en trans2érant une partie du code vers la routine d'interruption

 -éaliser l'al)ori)ramme du pro)ramme demandéB

 0crire le pro)ramme sur ordinateur avec MP#A$B simuler son 2onctionnement et le valider sur la carted'évaluation

M1 +I+ !" !"119!"1!

Page 25: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 25/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

-. TP n°4 !nitiation " la )rorammation en lanae *

-.1. !ntrod'ction assemble'r et com)ilate'r *

#'obKecti2 de cette séance est de vous initier la  2ro+rammation en lan+a+e C d'un micro;contrôleur Par

rapport l'assembleurB le recours un lan)a)e de . haut niveau / tel >ue le C s'est notablement développé en prati>uecar il permet de simpli2ier l'écriture des codes ainsi >ue leurs portabilités et leurs maintenabilités otammentB vous pourre écrire des instructions du tHpe . if5xy7 / ou . tem2 *x)W / pour e22ectuer un test d'é)alité ou unea22ectation #e code >ue vous écrire devra tre écrit en C standard A+I #a compilation des instructions C se 2era parle compilateur C18 >ui permet de )énérer du code pour la 2amille des PIC 18____ Comme l'assembleurB lecompilateur traduit des instructions interprétables pour un opérateur humain en un code machine e=écutable par le PICComme nous le verronsB l'écriture et la compilation de vos pro)rammes sources C se 2era dans l'environnementMP#A$ Comme pour le développement de codes en assembleurB MP#A$ sera donc l'environnement >ui vous

 permettra d'écrireB de compiler et de débo)uer vos sources C ?cf B section * de ce ,P@

<n notera >ueB dans le cadre d'un mRme proKetB il est possible de développer des parties en C

et des parties en assembleur %3s lorsB la construction d'un code mac3ine exécuta6le est illustré parle dia)ramme de la 2i)ure 1 %ans cet e=empleB un code source en assembleur et deu= codessources en C ont été écrits Pour cha>ue sourceB l'assemble'r  ?MPA+M6I@ ou lecom)ilate'r?MCC18@ est utilisé pour )énérer des fic3iers o6jets ? file$.o1...1file9.o@ #e 2ichier obKet

 file9.o est ensuite utilisé avec un 2ichier pré;compilé e=istant file.o de mani3re 2ormer un 2ichierde librairie li6$.li6 FinalementB les 2ichiers obKets restants sont utilisés avec le 2ichier de librairie

 par l'édite'r de lien ?MP#I(@ pour créer un e=écutable out2ut.3ex ote bien é)alement le 2ichier scri2t.lr  ?cf.B 2i)ure 1@ >ui permet de con2i)urer correctement l'éditeur de lien

 pour le micro;contrôleur utilisé

-.2. Génération d('n sinal carré

Pour vous 2amiliariser avec la pro)rammation en C du micro;contrôleurB le  2remier 2rojet sera de reprendre le pro)ramme de cli)notement d'une #&% >ue vous avie écrit en assembleur #e source C ci;apr3s 2ait cli)noter la #&%

M1 +I+ !1 !"119!"1!

 &i+ure $W, /ia+ramme de construction d'un exécuta6le

*om)ilate'r *Assemble'r

8ichiers )réJcom)ilés

scri)t deconfi'ration del(édite'r de lien

Page 26: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 26/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

#1B broche -$"B une 2ré>uence de 1S #état de la #&% chan)e donc toutes les ""ms

+u!or6 ================================================ /e,cri7ion 6 Pror3''e de nr3ion d"un ,in3l c3rr ,ur le 7or %&0? de 7riode de 1 ,

================================================

 0nQtRte du 2ro+ramme

/ireci(e, 3u 7r7roce,,eur $ic!ier d"en@e 7our le PIC184020#include <718$4520.!> $ic!ier d"en@e 7our le, $oncion, de e'7o#include <del3A,.!>

/,3ci(3ion du B3c!/o#7r3'3 con$i B/T = OFF

 &ic3iers d'enQtRte 2our le P#C$%()*?p1824!"h@  et 2our l'utilisation des fonctions de tem2orisation ?delaHsh@

 /irective G 2ra+ma H de désactivationdu atchdo)

Pror3''e Princi73l(oid '3inDE

/cl3r3ion de, (3ri3*le, loc3le,

12 Periode d"o,cill3ion en N* de cAcle,TP /e'iPeriode = +%G:NT

Con$iur3ion du 7or&T%IS& = 000 PO%T& en ,oriePO%T& = 000 %+H du PO%T& Con$i. %&0%& en 'ode IO nu'eriJue

+/CON1 = 00F

 /éclaration et affectation de la varia6ledéfinissant le nom6re de cyclesnécessaire ; une demiQ2érioded'oscillation ?" com)léter@

Confi+uration du 2ort E

> &oucle T3nKue 6 On *oucle ind$inie'en...)!ile1DE

*3,cule'en du *i 0 du PO%T&PO%T& = PO%T& 001 ili,3ion d"une $oncion de del3A,.!FONCTION+%G:NTDM

> Fin de *oucle T3nKueM

 Eoucle 2ermanente de c3an+ementd'état de DE*QL 6asculement de DE*QL a22el ; la fonction de tem2orisation5cf. delaHsh 7 2ermettant d'attendre(**ms ?" com)léter@

 Comprendre le pro)ramme ci;dessus %é2inir le tHpe de la variable /emiPeriode

 %éduire du 2ichier d'en;tte . delays.3 H la 2onction utiliser pour une temporisation telle >ue la période soit de1ms %éduise;en é)alement l'ar)ument associé

 Passer la section suivante pour créer un proKet pour ce codeB pour le compiler et pour e22ectuer la simulation

-.3. =dition et *om)ilation d' )roramme

Cette partie permet d'apprendre créer un proKet MP#A$B saisir un pro)ramme en C et le compiler

-.3.1. $émarrae

 –  Avant de commencerB créer le répertoire . t2 »  puis dans ce répertoire créer nouveau un répertoire

. cli+notement?C H. –  Copie dans ce répertoire les 2ichier . delays.3 H et . $%f()*.lr  /.

M1 +I+ !! !"119!"1!

Page 27: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 27/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 –  #ancer la suite lo)icielle MP#A$ I%& partir de licône >ui se trouve sur votre bureau

-.3.2. *réation d>'n no'vea' )ro?et en 'tilisant l>assistant : Pro?ect @i5ard K ;

 – Cli>uer sur Project LL Project izard N – Cli>uer sur Suivant L puis sélectionner . P#C$%&()* H dans le menu déroulant . /evice H – Cli>uer sur Suivant L puis sélectionner . Microc3i2 C$% Toolsuite H a2in de pouvoir développer en C

 – Cli>uer sur Suivant L puis dans le champ . Project Jame H saisir le nom du proKet ?e= : cli)notant`C@ etdans le champ . Project /irectory H aller chercher laide du bouton . Ero=se HB le dossier créé au début :. t2<cli+notant?C H

 – Cli>uer de' fois sur +uivant O et aKouter . $%f()*.lr  / au proKet laide du bouton 4dd LL – Cli>uer sur Suivant L puis sur Terminer 

-.3.3. *onfi'rer les o)tions de com)ilation et d(édition de lien

 –  Cli>uer sur ProjectLEuild I2tions...LProject  et cli>uer sur l'on)let . Keneral H Téri2ie >ue les cheminsde . #nclude Pat3 H et de . -i6rary Pat3 H sont correctement positionnés en utilisant l'option . Ero=se H

 –  %ans l'on)let MP#I( #inEerB cli>uer sur l'option . Su22ress CI/Qfile +eneration H Cli>uer sur I] 

-.3.4. =dition d' )roramme

 –  Créer un nouveau 2ichier dans le proKetB &ile LL 4dd Je= &iles to ProjectN  –  #enre)istrer dans le répertoire proKet avec le=tension c ?e= : cli+notant?C.c@ –  MP#A$ &ditor se lance –  +aisir le pro)ramme et enre)istrer

 Penser ; ajouter des commentaires au 2ro+ramme 2our montrer ue vous avez 6ien com2ris les différentesinstructions.

-.3.&. *om)ilation

#a compilation et l'édition de lien se 2ait en cli>uant sur l'icône de la barre de menu Comme en assembleurBles erreurs et arnin)s sont si)nalés dans la 2entre . Iut2ut H  ainsi >ue le résultat de la compilation  EU#-/SUCC00/0/ ou EU#-/ &4#-0/.

  0n dou6leQcliuant sur une erreur ou un =arnin+ dans la fenRtre G Iut2ut H1 vous serez amenerdirectement ; la li+ne concernée dans votre 2ro+ramme.

-.4. im'lation et )rorammation d' microJcontrCle'r

#es procédures de simulation et de trans2ert du code e=écutable sur le micro;contrôleur ne di223rent pas de celles>ue vous ave pu mettre en oeuvre pour le développement en assembleur cf  l'énoncé du premier ,P

 &22ectue la simulation du )énérateur de si)nal carré donné ci;avant dans l'énoncé

-.&. A))lications

-.&.1. *henillard sans interr')tion

<n souhaite créer un chenillard moti2 variable n moti2 étant dé2ini par une sé>uence d'éclaira)e des #&%comme par e=emple "="1B "="!B "="4B "="8B cette sé>uence est répétée l'in2ini

 %onner l'al)ori)ramme du chenillard dé2ini par la sé>uence de moti2 "="1B "="!B "="4B "="8 Cha>ue moti2devra rester allumé pendant un temps de "" ms

 Pour définir la séuence de motifs1 vous 2rendrez soin de déclarer un ta6leau de unsi+ned c3ar car ce ty2e corres2ond

; un format % 6its ui 2ourra directement Rtre affecté sur le PIDT E 5cf.1 MP#A$ C18 C C<MPI#&- US0DFSKU#/01 2a+e $$7.

M1 +I+ !* !"119!"1!

Page 28: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 28/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 0crire et tester ce pro)ramme

-.&.2. *henillard m'lti)le sans interr')tions

<n souhaite aKouter un second moti2 distinct au chenillard de mani3re permettre le choi= de la sé>uence <n prendra par e=emple comme seconde sé>uence "="1B "="!B "="4B "="8B "="4B "="! #a sé>uence considérée sera

sélectionnée par une variable dans la 2onction principale ?ieB la 2onction main57@ #e moti2 a22icher l'intérieur de lasé>uence considérée sera retourné par une 2onction appelée valeur?c3enillard57 dont vous dé2inire les entrées et lessorties

 %onner l'al)ori)ramme du chenillard dé2ini par le couple de sé>uences "="1B "="!B "="4B "="8 et "="1B"="!B "="4B "="8B "="4B "="!

0crire et tester ce pro)ramme

-.&.3. *henillard m'lti)le et estion des interr')tions

#'obKecti2 de ce dernier e=ercice est de permettre de chan)er ré)uli3rement le moti2 du chenillard en utilisantles interruptions )énérées par le ,IM&-" ne des di22icultés consiste alors con2i)urer correctement le ,IM&-" de

mani3re permettre de )énérer les interruptions périodi>uement<n donne ci;arp3s les éléments du code source pour ce 2aire

Con$iur3ion de, inerru7ion,- c$. ,ecion, e 11 du d33,!ee e le $ic!ier !e3der 718!4520.!

3ci(e l"inerru7ion 7our le TI:%0INTCON = +L%

Pl3ce l"inerru7ion TI:%0 en 7riorie !3ueINTCON2 = +L%

+ci(e l3 e,ion de, 7riorie, 7our le, inerru7ion,%CON*i,.IPN = +L%

$$3ce le rei,re T:%0T:%0 = +L% $$3ce le rei,re T:%0LT:%0L = +L%

+ci(e le TI:%0 e con$iure l3 (3leur du 7re,c3lerT0CON = +L%

+ci(e le, inerru7ion,INTCON*i,.GI = +L%

Confi+uration dumicroQcontr!leur

 2our la +estiond'interru2tion etconfi+uration duT#M0D* 2our 5 àcompléter  7.

#'obKecti2 est alors de déclencher une interruption cha>ue 2ois >ue le ,IM&-" est en . over2lo /B cetteinterruption commandant le chan)ement de moti2 du chenillard A toutes 2ins utilesB on rappelle >ue le lan)a)e C ne

 permet pas directement de traiter les interruptions puis>u'il ne laisse pas l'utilisateur le contrôle des adresses du pro)ramme ?é>uivalent du or+  en assembleur@ A la place une directive Z2ra+ma a donc été inté)rée au compilateur :

 –  #es directives#7r3'3 code 'onQ7ro = R(oid 'onQ7ro(oidD

Ecode C ...M

#7r3'3 code

2orcent le compilateur placer le code C   l'adresse @ ?cf.B MP#A$ C18 C C<MPI#&- +&-+5I%&B pa)e !" et !7@

M1 +I+ !4 !"119!"1!

Page 29: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 29/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 –  #a directive#7r3'3 inerru7 '3Q$oncion

déclare ma?fonction comme la 2onction de traitement des interruptions prioritaires ?adresse "=18@

 – #a directive#7r3'3 inerru7lo) '3Q$oncion

déclare ma_fonction comme la 2onction de traitement des interruptions non prioritaires ?adresse "="8@

 Da22el , un exem2le de 2ro+ramme C avec interru2tion est dis2oni6le dans le cours.

 %onner l'al)ori)ramme du chenillard dé2ini par le couple de sé>uences "="1B "="!B "="4B "="8 et "="1B"="!B "="4B "="8B "="4B "="!B le chan)ement de sé>uence étant commandé par interruption du ,IM&-" par

 période de 4 secondesB appro=imativement

 0crire et tester ce pro)ramme

M1 +I+ ! !"119!"1!

Page 30: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 30/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

/. TP n°& Gestion de Péri)héri,'es et !nterr')tions

/.1. *omm'nication série 9232

#e module . &nhanced niversal +Hnchronous -eceiver ,ransmitter / ?&+A-,@ est le module du Pic18F4!"

 permettant une communication série de tHpe -+!*! Ce tHpe de conne=ion étant é)alement disponible sur un PC ousutiliserons le pro)ramme . hHperterminal / de 6indos pour dialo)uer avec le LC

-+!*! est une norme >ui standardise les communications séries #a transmission de données pouvant se 2aire sur ou 8 bitsB avec ou sans contrôle de paritéB celle;ci pouvant tre )érées de 2aUons paire ou impaire ne trame -+!*!commence par un bit de start  et se termine par un ou deu= bits de sto2 #a 2i)ure suivante illustre une des con2i)urations

 possibles #a vitesse de trans2ert pouvant é)alement varier d'une application l'autre #a vitesse se mesure en $auds?nombre de sHmbole transmis par seconde@ ne conne=ion -+!*! est asHnchrone car entre l'émetteur et le récepteurB ilH a seulement les li)nes de données -= et ,= ?pas de li)ne d'horlo)e@

 ous utiliserons la con2i)uration suivante :

 –  Titesse : 7"" $auds –  ,aille des données : 8 bitsB –  Parité : AucuneB –  $it de +top : 1

+ur un PC le port série est appelé C<M_B avec _ le numéro du port

/.1.1. L(hB)erterminal

#'hHperterminal est un pro)ramme livré avec 6indos >ui permet de se connecter des hôtes distants?ordinateursB sites telnetB oscilloscopeB @ l'aide d'un modemB d'un cDble null;modem ?liaison série@ ou d'uneconne=ion ,CP9IP A cha>ue 2ois >u'un caract3re est saisiB il est envoHé sur le support de communicationB tout caract3rereUu est a22iché

#'hHperterminal est accessible dans le menu  /émarrer L Tous les 2ro+rammes L 4ccessoires LCommunications L y2erterminal  ?6in _P@ ou alors via la commande . 3y2erterm H dans menu /émarrer L 0xécuter #ors>u'il s'ouvreB il vous demande de con2i)urer la conne=ion :

 –  saisir un nom ?e=, Pic@ et cli>uer sur I]1 –  con2i)urer le tHpe de conne=ionB )énéralement CIM$ et cli>uer sur I]1 –  con2i)urer les propriétés de la conne=ion ?7"" $audsB 8 bitsB aucune paritéB 1 bit de stopB pas de contrôle

de 2lu=@ et cli>uer sur I]1 –  enre)istrer la conne=ion dans votre répertoire pour ne pas avoir la recréer ?menu  &ic3ier L 0nre+ister

 sous ...@

/.1.2. Proramme : echo ;

#e pro)ramme . echo / renvoie sur la liaison série tout octet reUu sur celle;ciB l'envoi et la réception des octets

est réalisé sans interruption

M1 +I+ ! !"119!"1!

 &i+ure $X, Trame DS)9)1 W 6its1 2arité1 ) 6its de sto2

 b b b4 b* b! b1 b" par stp stpstr 

 &i+ure $%, Communication PCQC 

Picdem ! Plus PC

LCInter2ace M4^ )9 )

#iaison

série ";T

PortCI M 

SHperterminal-+!*!

Page 31: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 31/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 ✗ Con2i)uration du module . &+A-, /

#es re)istres initialiser sontB

 –  $A%C<B '$aud -ate Control -e)ister' >ui initialise la vitesse via le re)istre +P$-5S:+P$-5 dont lavaleur est calculée en utilisant les tableau= reproduits en pa)e !";!"8 du datasheet $A%C< autorise

é)alement les interruptionsB la réceptionB  –  -C+,AB '-ecieve +tatus And Control -e)ister' pour con2i)urer la réception –  ,_+,AB ',ransmit +tatus And Control -e)ister' pour con2i)urer l'émission

 ✗  _mission et Déce2tion

#'octet reUu est placé dans le re)istre -C-&5 ? Decieve De+ister @ et l'octet envoHer est placer dans ,_-&5?Transmit De+ister @

Mme lors>ue >ue les interruptions sont interditesB on peut utiliser les 2la)s pour connaRtre l'état ?vide ou plein@des re)istres -C-&5 et ,_-&5 #es 2la)s se trouvent dans le re)istre PI-1 ? Peri23eral #nterru2t Deuest &la+ De+ister  1@

Pour savoir si un octet est disponibleB il su22it simplement de re)arder le 2la) associé -C-&5 ?réception d'unoctet@

#a procédure d'émission est représentée par le schéma blocB ci;dessous ?e=trait du datac3eet @

#ors>u'un octet est placé dans ,_-&5B il est . coupé / dans ,+- ?Transmit S3ift De+ister @ >ui comme son noml'indi>ue e22ectue un décala)e la vitesse imposée par +P$-5S:+P$-5 <n notera >ue l'état de ,_-&5 est visibledans ,_IF et >ue l'in2ormation de transmission en cours se situe dans ,-M, #e schéma bloc de la réception se trouveen pa)e !1* du . datas3eet H

 tiliser le datac3eet  pour initialiser les re)istres $A%C<B -C+,A et ,_+,A? Pour ré+ler $ 6it de sto21 le6it S0J/E du re+istre T^ST4 doit Rtre ; *@

 0crire et tester le pro)ramme . echo /B utiliser le cDble série du pro)rammateur pour communi>uer avec la carteLC

/.2. A))lications

/.2.1. *henillard " motif variable

<n souhaite créer un chenillard moti2 variable n moti2 étant dé2ini par une sé>uence d'éclaira)e des #&%comme par e=emple '""""'B '"""1'B '""1"'B '"1""'B '1"""'B cette sé>uence est répétée l'in2ini

#e chan)ement de sé>uence se 2ait par l'envoi du numéro de la sé>uence par liaison -+!*! l'aide del'hHperterminal Ainsi la saisie de 1 au clavier Kouera la sé>uence 1B etc. #e code A+CII des chi22res du pavé numéri>ue

M1 +I+ ! !"119!"1!

 &i+ure )*, Sc3éma 6loc du module d'émission

Page 32: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 32/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

étant :

Caractère " 1 ! * 4 8 7

Code 4SC##

48?"=*"@

47?"=*1@

"?"=*!@

1?"=**@

!?"=*4@

*?"=*@

4?"=*@

?"=*@

?"=*8@

?"=*7@

Ta6leau 9, Code 4SC## des c3iffres

,outes les ""msB l'état des #&% est modi2ié en utilisant une 2onction de delays.h #e chan)ement de sé>uenceest )éré sur interruption de réception ?&+A-,@B >uand un octet est reUu par le LCB il le renvoi pour l'a22icher dansl'hHperterminal +i la sé>uence demandé n'e=iste pasB le LC renvoi 'Y' au PC et ne modi2ie pas le choi= de sé>uence

 0crire et tester ce pro)ramme

 Jote , -a valeur du c3iffre associé au code 4SC## 2eut Rtre o6tenue 2ar une soustraction. 0n C1 le 2remier élément duta6leau est *. Une matrice est un ta6leau de ta6leau.

/.2.2. $evinette

#e pro)ramme . %evinette / est un Keu entre le LC et vousB les communications se 2aisant via  le PC?hHperterminal@ #e principe est simpleB le LC choisi un nombre entre " et ! et doit vous le 2aire deviner en un tempsdonnéB 1 min #e temps restant est visible sur les 4 #&%s ?1 led correspondant !s@ +i vous trouve le nombre choisiavant 1 minB le LC vous donne le temps >ue vous ave mis en secondesB sinon il vous in2orme >ue vous ave perdu etvous donne la réponseB puis le Keu recommence

 ✗ Fonctions de communications :

0crire et tester les 2onctions de communications ?-+!*!@ suivantes :

 com?init  >ui initialise les re)istres de l'&+A-,

 com?recieve >ui attend l'arrivée d'un octet et le renvoie

 com?transmit  >ui permet d'envoHer un octet vers le PC

 com?strin+?transmit  >ui envoie une chaRne de caract3res ?tableau d'octets@ au PC com?strin+?receive >ui permet de recevoir une chaRne de caract3re envoHée par le PCB cette 2onction reUoit en

 param3tre l'adresse du tableau ?chaRne@ oQ l'on veut stocEer la chaRne reUue ?#a 2in de la saisie dans l'hHperterminal peut tre si)nalée par l'appui sur la touche &ntrée@

 /ans l'3y2erterminal1 le caractère '[n' 2ermet de 2asser ; la li+ne suivante 5touc3e CTD-0ntrée7 et '[r' de faire unretour c3ariot1 retour en dé6ut de li+ne 5touc3e 0ntrée7. Une c3a8ne se termine 2ar le caractère '[*'.

 ✗  &onction de +énération G aléatoire H du nom6re ,

Cette 2onction doit renvoHer le nombre mHst3re Pour cela elle incrémente un entier n codé sur 8 octets ?de tHpeunsi)ned char@ tant >u'aucune donnée n'est reUue sur la liaison série Zuand n N !B si on aKoute 1 on a n N ! >ui

se code sur 7 bits mais comme n est sur 8 bitsB on aura n N " 0crire cette 2onction

 ✗  &onctions de +estion du tem2s

#e temps ma=imal pour trouver la solution est dé2init dans le pro)ramme principal ?main@ #e temps restant estune variable )lobale ?commune toutes les 2onctions@ <n mesure le temps avec le ,IM&- "

0crire les 2onctions :

 timer?init >ui initialise les re)istres du timerB des interruptionsB

 timer?+o >ui lance le décompte et les interruptionsB

 timer?sto2 >ui arrte le décompte et les interruptionsB

 timer?interru2t  >ui décrémente le temps et met Kour les #&% ?une #&% correspond ! secondes restantes@

 ✗  Pro+ramme com2let 

M1 +I+ !8 !"119!"1!

Page 33: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 33/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

#ors>ue le pro)ramme démarreB le LC envoie un messa)e au Koueur en lui demandant d'appuHer sur une touche pour commencerB ce >ui permet de )énérer le nombre mHst3re %3s l'appui le chrono est lancéB lors>ue une propositionest 2aireB le LC in2orme le Koueur du 2ait >ue le nombre mHst3re est supérieur ou in2érieur sa proposition +i le KoueurtrouveB il est in2ormé de son temps sinon le nombre mHst3re lui est donné A la 2in d'une partie le pro)ramme se relance

 0crire et tester le pro)ramme . devine /B la conversion d'une chaRne de caract3re en entier peut se 2aire avec la2onction atoi de la biblioth3>ue stdli6.3, il H a é)alement la 2onction inverse itoa

 -e tem2s 2eut se terminer lorsue le C est en attente d'une saisie du joueur. -e jeu se joue avec le 2avé numériue duclavier1 tout a22ui sur une autre touc3e 2eut faire 6u++er le 2ro+ramme. Si vous avez le tem2s1 vous 2ouvez détecter leserreurs de saisie et demander une nouvelle saisie.

M1 +I+ !7 !"119!"1!

Page 34: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 34/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

0. TP n°+ Pannea' d(affichae l'mine'A2in de permettre la secrétaire de la 2ormation de vous di22use plus 2acilement divers messa)es nous allons

réaliser un sHst3me d'a22icha)e partir de l'a22icheur #C% de la carte #'a22icha)e se 2ait sur deu= li)nes : –  #e titre du messa)e sur la premi3re li)neB il est centré et ne doit pas dépasser 1 caract3res –  #e corps du messa)e >ui dé2ile en boucle sur la seconde li)ne

Pour mettre Kour le titre et9ou le corps du messa)e la secrétaire utilisera .  3y2erterminal / ?liaison rs!*!@B elleaura aussi la possibilité de désactivé l'a22icheur #e messa)e ainsi >ue l'état de l'a22icheur .  actif / et . inactif / devronttre sauve)ardé mme en cas de coupure de courant

0.1. Gestion de l(affiche'r L*$

0.1.1. *onversion des fonctions de bas nivea' d' driver en *

%ans le ,P n[*B nous avons écris le driver de l'a22icheur en assembleurB il n'est donc pas directement utilisabledans un pro)ramme C #e compilateur MCC18 permet l'inté)ration de code assembleur dans le code C en utilisant lesdirectives . ?asm / et . ?endasm / Contrairement au compilateur MPA+M6IB le compilateur C ne connait pas lesoptions par de2aut des intructions ?c2 Keu d'instructions@ il 2aut donc raKouter toutes les options votre code assembleurAinsi la 2onction lcd`ecrire`>uartet deviendra :

(oid lcdQecrireQJu3rec!3r JDEB%G=JQ3,'

3ndl) 00F*c$ PO%T/--0*c$ PO%T/-2-0*c$ PO%T/-1-0*c$ PO%T/-0-0

...

Qend3,'M

 Compléter la 2onction . void lcd?ecrire?uartet5 c3ar  7 /

 +ur le mme principe écrire . void lcd?dis2o5void7 /

 ous avons maintenant codé les deu= 2onctions de base pour la )estion du lcdB les autres 2onctions vont trerecodées en C

0crire la 2onction . void lcd?ecrire?octet5c3ar lcd?d67 / %ans MCC18 l'instruction s=a2f  est remplacée par la2onction S=a2f. Pour inverser les >uartets M+$ et #+$ de . = /B il su22it d'écrire . S=a2f 5D0K1*1*7O /

0crire les 2onctions . void lcd?ecrire?ordre5c3ar o7 / et . void lcd?ecrire?donnee 5c3ar d7 /

0crire les 2onctions . void lcd?cls5void7 /B . void lcd?l$5void7 / et . void lcd?l)5void7 /

0crire les 2onctions . void lcd?init5void7 / en utilisant la biblioth3>ue . delays.3 / pour les temporisationsCréer la 2onction . void lcd?curseur?2osition5c3ar l1 c3ar 27 / >ui permet de positionner le curseur d'a22icha)e

la . 2 /i3me position de la li)ne . l  / ?c2 2i)ureB pa)e @

,ester ses 2onctions sur la carte d'évaluation

0.1.2. *réation de fonctions de ha't nivea'

#e lan)a)e C nous permet d'écrire tr3s simplement des 2onctions plus évoluées pour la )estion de l'a22icheur

0crire la 2onction . void lcd?lcls5c3ar l7 / >ui e22ace la li)ne . l  /

0crire la 2onction . void lcd?ecrire?c3aine5c3ar ̀ c37 / >ui a22iche une chaine de caract3re sur la li)ne active

0crire la 2onction . void lcd?ecrire?c3aine?centre5c3ar `c31 c3ar l7 / >ui a22iche une chaine de caract3re en la

centrant sur la li)ne . l  /B selon le principe ci dessous; Cas d'une chaine de lon)ueur paire :

M1 +I+ *" !"119!"1!

Page 35: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 35/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

C + I N

; Cas d'une chaine de lon)ueur impaire : ?plus d'espace droite@C + I N S

,ester ses 2onctions sur la carte

0.1.3. *réation de la libraire : affiche'rlcd ; ous disposons maintenant d'un ensemble de 2onctions de )estion du #C% a2in de les utiliser et de pouvoir les

di22user plus 2acilement nous allons les re)rouper dans une librairie >ue l'on nomera . a22icheurlcd / ne librairie?2ichier lib@ est en 2ait une compilation de 2ichier obKets #es 2ichiers obKets contiennent entre autres la liste des nomsde 2onctions ou les éti>uettes ?pour A+M@ ainsi >ue leur code machine ?coda)e binaireB ces 2ichiers ne sont paséditables@ #es 2ichiers obKets ?o@ sont obtenus apr3s compilation de votre code dans MP#A$

Créer un nouveau proKet sous MP#A$ comme pour 2aire un pro)ramme classi>ue

%ans le 2ichier source . coller / vos 2onctions de )estion de l'a22icheur avec les di22érents . Zinclude /

CompilerB une erreur vous in2orme >ue la 2onction . main / n'est pas dé2inieB c'est normal G

%ans votre répertoire proKetB un 2ichier obKet du mme nom >ue votre pro)ramme a été créé C'est ce 2ichier >uenous allons maintenant convertir en librairie l'aide de l'utilitaire de )estion de biblioth3>ue MP#I$ MP#I$ est un

 pro)ramme 2onctionnant en mode console sous %<+ avec les options suivantes :

c Création contenant un ou plusieurs 2ichiers obKets

#iste le contenu de la libraire

d &22ace un obKet de la librairie

r -emplace un obKet e=istant dans la librairie

&=trait un membre de la librairie

#a sHnta=e d'utilisation de MP#I$ est :

:PLI& EcdrM no'Qli*r3irie li,e de $ic!ier, o*e,?

<uvrir une 2entre dos ? Menu démarrer B 0xécuter1 cmd @

+e positionner dans le répertoire oQ vous souhaiter créer la librairieB dans l'e=emple /,[t2s[t2V[ ?commande %<+cd : chan)e directorH@

Créer la librairie en utilisant la commande MP#I$ 9c a22icheurlcdlib votre?fic3ier?o6jet.Un exem2le de création est re2roduit en fi+ure )$.

C6;/ocu'en, 3nd Sein,;Fl3(ien>/6/6;>cd 7,;7/6;7,;7>/6;7,;7>'7li* c 3$$ic!eurlcd.li* /6;7,;7;li*;lcdli*.o

:PLI& 4.12- Li*r3ri3nCo7Ari! cD 200U :icroc!i7 Tec!noloA Inc.rror, 6 0/6;7,;7>

 &i+ure )$, Création d'une li6rairie avec MP-#E

Pour utiliser une librairie il 2aut soit lui associer un 2ichier d'entte ?h@ dans le>uel se trouve les prototHpes devos 2onctions soit déclarer les prototHpes dans votre pro)ramme #e 2ichier d'entte étant simplement un 2ichier te=terenomer . affic3eurlcd.3 /

Créer le 2ichier . affic3eurlcd.3 / dans le mme répertoire >ue . affic3eurlcd.li6 /

 ✗  #nclure la li6rairie dans un 2rojet 

+i l'on souhaite utiliser notre biblioth3>ue comme une biblioth3>ue déK installée ?avec

M1 +I+ *1 !"119!"1!

Page 36: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 36/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

Zinclude\affic3eurlcd.3L avec MP#A$B il est necesaire de modi2ier la variable d'environnement  MCC?include et demodi2ier le 2ichier d'édition de liens ?lEr@ %ans le cadre des travau= prati>ues nous n'utilerons pas cette méthode

#a procédure suivre pour utiliser la biblioth3>ue est la suivante : – %ans votre répertoire proKetB copier;coller les 2ichiers . affic3eurlcd.li6 / et . a22icheurlcdh / – AKouter le 2ichier . affic3eurlcd.li6 / au dossier . -i6rary &iles / de votre proKet –

Insérer la directive . Zinclude affic3eurlcd.3 / au début de votre pro)ramme

,ester votre librairie

0.2. Gestion de l(%%P9M

#a mémoire &&P-<M ?&lectricallH;&rasable Pro)rammable -ead;<nlH MemorH ou mémoire morte e22aUableélectri>uement et pro)rammable@ ?aussi appelée &!P-<M ou &P-<M@ est un tHpe de mémoire morte C'est direutilisée pour enre)istrer des in2ormations >ui ne doivent pas tre perdues lors>ue l'appareil >ui les contient n'est plusalimenté en électricité ,outes les in2ormations nécessaires la lecture est l'écriture dans l'&&P-<M interne setrouvent dans la datasheet pa)es 8* 8 #e PIC 18F4!" dispose de ! octets de mémoire &&P-<M interne >ui sontréparties de la mani3re suivante :

 – l'état du panneau ?1 octet@ – le titre du messa)e ?1 octets : 1 caract3res \ le caract3re 'f"' de 2in de chaine@ – le corps du messa)e ?!* octets : !* caract3res \ le caract3re 'f"'@

0crire les 2onctions . c3ar ee2rom?lire5c3ar ad7 / et .void ee2rom?ecrire5c3ar data1 c3ar ad @ / >ui permettentrespectivement de lire et d'écrire l'adresse . ad  / de l'&&P-<M #'adresse mémoire varie entre *x** et *x&& 

 /ans la fonction d'écriture l'interdiction des interru2tions est nécessaire seulement si celleQci ont été activée et on nedoit 2as uitter cette 2rocédure tant ue l'enre+istrement dans la mémoire n'est 2as terminé. ous 2ouvez tester les fonctions d'écriture et de lecture dans l'00PDIM avec le simulateur de MP-4E ; condition de désactiver l'attente de fin d'écriture... 4ller dans le menu ie= L 00PDIM en dou6le cliuant sur un es2ace mémoire vous 2ouvez le

modifier.

Pour notre panneau d'a22icha)eB nous allons venir lire la chaine ?li)ne 1@ ou une partie de la chaine ?li)ne !@ dansl'&&P-<M Pour cela vous alle écrie la 2onction . void ee2rom?lire?c3aine5 c3ar `c31 c3ar len1 c3ar ad7 / Cette2onction copie dans la chaine . ch / le contenu de l'&&P-<M partir de l'adresse .  ad / Kus>u' ce >ue le caract3re '[*'soit rencontrer ou >ue la chaine . c3 / soit de lon)eur . len /

Zuel sont les pla)es d'adresse en &&P-<M de l'état de l'a22icheurB le titre et le corps du messa)e Y

0crire la 2onction ee2rom?lire?c3aine. +imuler cette 2onction avec MP#A$+IM

0.3. Pannea' d(affichae

0.3.1. Pannea' " messae fie

0crire un pro)ramme >ui a22iche le titre du messa)e sur la premi3re puis 2ait dé2iler en continu le corps dumessa)e sur la seconde li)ne: le corps du messa)e commence apparaRtre sur la droite de l'écranB puis dé2ile vers la)auche Zuand la derni3re lettre du corps du messa)e sort de la )auche de l'écranB le dé2ilement recommence %ansce pro)rammeB vous deve é)alement )érer l'état du panneau : si l'état vaut "B le te=te ne dé2ile pas et gSors +ervicegest a22iché sur le panneauB si l'état vaut 1B le corps du messa)e dé2ile #a vitesse de dé2ilement est de ""ms9caract3re #ors>ue l'a22icheur est en service la led connectée -$" est alluméeB en hors service elle cli)note une 2ré>uence de 1 S

Tous pouve pro)rammer l'&&P-<M interne du LC via MP#A$ a2in d'initialiser le te=te a22icher Tous pouve initialiser vous mme le te=te a22icher dans l'&&P-<M en respectant les pla)es mémoiresB les valeurs et lecaract3res '[*'   ou alors importer directement le 2ichier . t2V?ee2rom.mc3 / >ui vous est 2ourni #ors de la

 pro)rammation du LCB l'&&P-<M le sera é)alement

,ester ce pro)ramme sur la carteB penser essaHer le cas oQ le panneau est acti2 et celui oQ il est hors service

M1 +I+ *! !"119!"1!

Page 37: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 37/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

0.3.2. Pannea' " messae variable

#e pro)ramme >ue vous vene d'écrire est tr3s utile pour di22user un messa)e mais peu prati>ues &n e22etB si cha>ue 2ois >ue la secrétaire veut modi2ier le messa)e elle doit prendre un pro)rammateur et repro)rammer l'&&P-<MBelle ne voudra pas l'utiliser : c'est compli>uéB Ua prend du tempsB il 2aut sortir le microcontrôleur du panneau

Pour ré)ler ce probl3me vous alle mettre en place un sHst3me de mise Kour distance en utilisant le protocole-+!*! comme vous l'ave dans le ,P n[ Tia hHperterminal la secrétaire acc3dera une inter2ace d'administration >ui

lui permettra de modi2ier l'état du panneauB le titre et le corps du messa)e#e pro)ramme va donc a22icher en continu le messa)e et basculer en mode mise Kour lors>ue la commande sera

reUue #es di22érentes commandes et la procédure de mise Kour sont dé2inis dans l'al)ori)ramme 2i)rue !!  pa)esuivante

Compléter le pro)ammme précédent pour inté)rer l'inter2ace d'administration Commente bien ce pro)rammea2in d'e=pli>uer ce >ue vous 2aRtes et pour>uoi

 Penser ; +érer la taille maximale des c3aines et le carctère '[*' en cas de dé2assement de la taille maximale en informéla secrétaire 53y2erterminal7.

 &i+ure )), 4l+ori+ramme de l'interface d'administration du 2anneau

#'application réalisée ici est tr3s proche d'un cas d'utilisation réelle si ce n'est >ue l'a22icheur aurait peut tre plusde li)nes #a di22érence maKeure serait dans l'interace d'administration elle ne serait pas réalisée avec hHperterminalBmais avec un pro)ramme spécial en CB C\\B etc >ui serait écrit avec des boRtes de dialo)ues beaucoup plus conviales

 pour la secrétaire

M1 +I+ ** !"119!"1!

Taleur dans-C-&5 Y

-C-&5N'd' -C-&5N'e' -C-&5N's' -C-&5N'u'

Mettre le panneauhors service Mettre le panneau

en service

-envoHer l'état du panneauet le cont enu du titre et du

corps du messa)edans hHperterminal

Mettre le panneauhors service

A22icher . Mise Kour /sur le panneau

-écupérer le nouveautitre du messa)e

-écupérer le nouveau

corps du messa)e

A22icher dans hHperterminalB>ue la commande a été e22ectuée

Page 38: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 38/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

1. TP n°- tation ervice%ans ce ,P nous allons réaliser de la mani3re la plus réaliste possible le pro)ramme de commande d'un automate

de pompe essence

1.1. A'tomate de Pom)e

#e bouton poussoir connecté -$" représente la poi)née de distribution de carburant #ors>ue le bouton estappuHéB la distribution est en coursB le moteur de la pompe est alors est alors activé ?led -$* éclairée@ n débitm3tremesure le débit de carburant a2in de calculer le volumeB il donne une impulsion cha>ue centilitre versé IciB il serasimulé par le timer " >ui e22ectura une impulsion toute les 1 ms environ

0crire un premier pro)ramme >ui initialise les entrées sorties utiliséesB le timer "B autorise les interruptions puis l'in2ini é=écute :

'oeur 7o'7e 3rr@d*i'Vre 3rr@3n Jue Poine +ccroc!e $3ire$in $3ire'oeur 7o'7e 3ci(

d*i'Vre 3ci(3n Jue Poine /croc!e $3ire$in $3ire

 Pour tester ce 2ro+ramme lors d'une interru2tion1 inverser l'état de DC) afin d'envoyer un si+nal d'environ (* z sur letransducteur 2iézoQélectriue.

 ous allons maintenant inté)ré au pro)ramme les calculs de volume et de pri= #e volume est compté encentilitres de " 7777 cl Il peut donc tre stocEer dans une variable de tHpe entier ?1 bits@ #e pri= du litre est 2i=é 1B"8B un centilitre vaut donc 1B"8 centime d'euro #e pri= ma=imun peut atteindre 1"8B"" #e pri= sera donc unnombre de centi3mes de centimes variant entre " et 1"787!B il doit tre codé sur entier lon) ?*! bits@

Cha>ue interruption du timer " correspond un centrilitre versé #e sous pro)ramme d'interruption incrémentrele volume ?\1cl@ et le pri= en centi3me de centime ?\1"8c@ <n aurait é)alement pu calculé le pri= en multipliant levolume par le pri= au litre mais cela aurait nécessité des multiplicationsB plus lon)ues e22ectuer >ue les additions

Modi2ier votre pro)ramme pour inté)rer ces calculsB puis assure;vous en simulation >ue le volume et le pri=évoluent correctement

#'a22icheur #C% va nous permettre ?via la librairie écrite au ,P n[@ d'a22icher le pri= et le volume lors>ue ladistribution est en cours #e volume est un entier compris entre " et 7777 et nous voulons l'a22icher l'écran sous la2orme décimale :

^ m O ^ c O B ^ d O ^ u O loQ ^ m OB B ^ u O représentent respectivement le chi22re des milliersB centaintesB diaines et unités+i on e22ectue la division euclidienne de la variable volume par 1"""B ^ m O est le >uotient et lereste représente centainesB diainesB unités

 0n C1 le uotient de la division euclidienne est donnée 2as l'o2érateur < et le reste 2ar b.

AKouter ces calculs au pro)ramme précédentB et le simuler Téri2ier l'e=actitude des di22érents chi22res a22icherPuis en utilisant les points d'arrtB mesurer la durée d'é=écution du code de calcul des chi22res a22icher

Pour accélérer les calculsB nous allons utiliser l'al)orithme suivantB donné ici pour le chi22re ^mO #es calculsétant e22ectué dans la variable vol  a2in de ne pas modi2ier la variable volume

' = 0(ol = (olu'e3n Jue (ol >= 1000 $3ire

' = ' W 1(ol = (ol X 1000

$in $3ire

M1 +I+ *4 !"119!"1!

Page 39: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 39/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

Apr3s avoir bien compris cet al)orithmeB remplacer toutes les divisions de votre pro)ramme par ces boucles?2onction : deu= valeurs sont retourner e22ectuer un passa)e par adresse pour l'une des deu= @ +imuler le2onctionnement et mesurer la durée d'é=écution Attention G #a durée dépend du chi22re déterminer Faites desessais avec le volume 1 puis avec les valeurs >ui donneront la plus )rande durée Avons nous )a)né beaucoup detemps Y

#e pri= et le volume sont a22ichés de la mani3re suivante :

G 3 o l e 1 - 0 8 l

- l A A A - A A

<n calcule le pri= a22icher de la mme 2aUon >ue le volume Zuel est le premier chi22re a22icher Y 0crire lecode corresspondant au calcul des HHHBHH

#ors>ue >ue le client raccroche la poi)néeB la pompe est blo>uée tant >ue celui;ci n'a pas paHé #a validation du paiement étant reUue de l'automate de caisse Pour l'instant un appui sur -A4 validera la paiement et permettra au clientsuivant de se servir en carburant Inté)rer é)alement la contrainte >ue le volume ne doit pas dépasser pas 7777clB sinonla pompe s'arrte et attends le paiement

0crire et tester ce pro)ramme sur la carte

1.2. *omm'nication avec l(a'tomate de caisse

5énéralement une station service est constituée de plusieurs pompes <n ne peut donc pas utiliser une conne=ionde tHpe -+!*! pour communi>uer avec l'automate de caisse ou alors il 2autB cha>ue clientB aller brancher le cDble surla bonne pompe Seuresement il e=iste d'autres mani3res de communi>uer a2in de mettre plusieurs entités en réseau#e PIC 18F4!" int3)re un module M++P de communication série ?Master +Hnchronous +erial Port@ >ui )3re entreautre le protocole IC >ue nous allons utiliser

1.2.1. Le b's !*

IC ?pour Inter Inte)rated Circuit $us@ est le nom du bus histori>ueB développé par Philips pour les applicationsde domoti>ue et délectroni>ue domesti>ue au début des années 178"B notamment pour permettre de relier 2acilement

un microprocesseur les di22érents circuits dune télévision . moderne / #e bus IC est un bus série sHnchrone constituéde deu= li)nes : +erial %ata #ine ?+%A@ et +erial ClocE #ine ?+C#@ >ui assurent la communication entre di22érentsmodules

 &i+ure )9, 4rc3itecture #C 

 

#e module >ui demande le trans2ert de données et >ui )én3re lhorlo)e est le maRtreB le module >ui répond est unesclave n mme sHst3me peut disposer de plusieurs maRtresB on le nomme alors multimaRtre %ans ce casB il 2autarbitrer la discussion entre les di22érents modules ous ne verrons ici seulement le cas d'un seul maRtre avec plusieursesclaves #e bus IC travaille une vitesse de 1"" Ebits9s en mode standard et 4"" Ebits9s en mode rapide #es li)nes+%A et +C# sont bidirectionnelles Au reposB elles sont au niveau haut

#e 2ormat d'une trame standard est reproduit dans le tableau 4 n trans2ert tHpe IC est reproduit en 2i)ure !

+ Adresse -6 A %onnee A %onnee A P

Ta6leau , Trame #C 

 –  : bit de startB est la condition de départ : +%A passe de létat haut létat bas pendant >ue +C# est auniveau haut ?c2 2i)ure !4@

 – Adresse : représente celle du module la>uelle on veut s jadresserB elle est composée de bitsAAA4A*A!A1A"B AAA4A* sont 2i=és par lIC commitee A!A1A" sont libres pour nous permettre de

M1 +I+ * !"119!"1!

+%A+%A+C#

Maitreémetteur1 réce2teur 

&scalve németteur1 réce2teur 

&sclave 1émetteur1 réce2teur 

Page 40: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 40/46

Page 41: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 41/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

Pour stopper une transmissionB en mode lecture le maRtre nac>uitte pas le dernier mot transmis et )én3re un bitde stop &n mode écritureB si lesclave nac>uitte pas le dernier motB le maRtre )én3re le bit de stop #es données ne sontvalides >ue sur un niveau haut de +C# ne e=tension de l'IC permet d'avoir plus de périphéri>ues en codant l'adressesur 1" bitsB nous ne verrons pas ce cas dans ce tp

 &i+ure )V, Connexions ; collecteur ouvert 

+ur un bus ICB le pic peut tre soit maRtre soit esclave %ans notre application >ui Kouent les rôles de maRtre etd'esclave Y Justi2ier votre réponse

1.2.2. =chane entre les a'tomates de caisse et de )om)es

#es tableau= suivants représentent les échan)es entre les automates :

  Messa+e

&n attente de client 'c'

%istribution en cours 'o'%istribution terminéeB attente de validation du paiement 'aHHHHH'

Ta6leau (, Communication 4utomate de 2om2e vers caisse

  Messa+e

Talidation du paiement 'v'

Ta6leau V, Communication 4utomate de caisse vers 2om2e

: HHHHH sont les chi22res du montant paHer

1.2.3. Le b's !* et l(a'tomate de caisse

 ous allons commencer par étudier le pro)ramme de l'automate de caisse Ce pro)ramme permet viahHperterminam de communi>uer avec les pompes Pour connaRtre le statut d'une pompeB il su22it de saisir son numérodans hHperterminal l'aide du pavé numéri>ue ous nous intéressons seulement la partie IC du pro)ramme dans le,P

&=pli>uerB commenter les 2onctions de l'automate de caisse reproduite dans le tableau

 ] partir de ces 2onctions de )estion du busB écrire les 2onctions de communication . void i)c?master?to?slave5c3ar adresse1 c3ar donnee 7 / et . c3ar i)c?slave?to?master5 c3ar adresse 7 / réalisant respectivement le trans2ertd'un octet du maRtre vers l'esclave et de l'esclave vers le maRtre

 -es c3rono+rammes 2a+e $X) et $X9 de la datas3eet 2ourraient vous Rtre utile.

 Zuelles modi2ications 2aut;il apporter au= 2onctions >ue vous vene d'écrire pour >u'elles soient utilisables dansle cas de la station service Y

M1 +I+ * !"119!"1!

Page 42: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 42/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

(oid i2cQ'3,erQini (oid DET%ISC*i,.T%ISC=1T%ISC*i,.T%ISC4=1SSPCON1=0*00101000SSPST+T*i,.S:P=1

SSP+//=SSPCON2=0M

(oid i2cQ'3,erQ,3rQ*i (oid DESSPCON1*i,.SSPN=1SSPCON2*i,.SN=1)!ileSSPCON2*i,.SNDM

(oid i2cQ'3,erQre,3rQ*i (oid DESSPCON2*i,.%SN=1)!ileSSPCON2*i,.SND

M

(oid i2cQ'3,erQ,o7Q*i (oid DESSPCON2*i,.PN=1)!ileSSPCON2*i,.PNDSSPCON1*i,.SSPN=0M

(oid i2cQ'3,erQ3cY (oid DESSPCON2*i,.+C/T=0SSPCON2*i,.+CN=1)!ileSSPCON2*i,.+CNDM

(oid i2cQ'3,erQn3cY (oid DESSPCON2*i,.+C/T=1SSPCON2*i,.+CN=1)!ileSSPCON2*i,.+CNDM

c!3r i2cQ'3,erQecrire c!3r oce DESSP&F=oce)!ileSSPST+T*i,.%QBDreurn SSPCON2*i,.+CST+TM

c!3r i2cQ'3,erQlire (oid DESSPCON2*i,.%CN=1)!ileSSPCON2*i,.%CNDreurn SSP&FM

Ta6leau W, &onction #C 4utomate de Caisse

1.2.4. Le b's !* et l(a'tomate de )om)e

Intéressons nous maintenant au pro)ramme d'un automate de pompeB la pompe étant intérro)é par l'automate decaisse #'adresse de l'automate de pompe sur le bus IC est codée sur bits et correspond au code A+CII du numero dela pompe Ainsi l'adresse de la pompe n[1 sera "=*1 >ui se code bien sur bits #a pla)e d'adresse est de "=*1 "=*8#'adresse doit tre stocEée dans les bits de poids 2ort du re)istre correspondantB le bit " de ce re)istre restant éro #esli)nes +C# et +%A sont connectées respectivement au= broches -C* et -C4B broches >ui doivent tre con2i)urées enentrée ous utiliserons le mode de 2onctionnement standard et sans interruptions de bits de +tart et de +top

C'est l'automate de caisse >ui va venir demander l'automate de pompe la somme encaisser #ors>ue

l'automate de caisse veut 2aire une demandeB il envoi sur le bus l'adresse de la pompe intérro)ée ?mode lecture@ +il'automate de pompe reconnaRt son adresse et le 2la) ++PIF se l3ve +i les interruptions ont été autorisée le pro)ramme

 passe alors la routine associée

#'automate de pompe 2onctionnant en mode esclave il est donc nécessaire d'utiliser les interruptions car sinonB le pro)ramme va passer son temps surveiller le bus et ne pourra pas e22ectuer la distribution de carburant %'autant plus

>ue la demande de l'automate de caisse peut intervenir n'importe >uand ?ous utiliserons les messa)es reproduits entableau @

M1 +I+ *8 !"119!"1!

$it de

+tart

$it de

+topAc>uittement du récpeteur si ce n'est

 pas la 2in du trans2ertAc>uittement de

l'esclave

A

A

A" %

%

%

"-6

Page 43: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 43/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

Compléter la 2onction d'initialisation ?ci;apr3s@ du module M++P pour l'utilisation en mode IC dans le cas d'unautomate de pompe &=pli>uer vos initialisations

(oid i2cQ,l3(eQini(oidDET%ISC*i,.T%ISC = ...

T%ISC*i,.T%ISC4 = ...SSPCON1 = ... CP=1 ...SSPCON2=0SSPST+T=0SSPST+T*i,.S:P = ...SSP+// = ...IP%1*i,.SSPIP = 1... = ...... = ...M

&n utilisant la datasheet du picB >uels sont les bits initialiser pour autoriser l'interruption du module IC Y-aKouter ces initialisations la 2onction . void i)c?slave?init5 void 7 /

&n re)ardant la datasheet on s'aperUoit >uand mode esclaveB il H'a * bits >ui permettent de connDitre l'état de lacommunication IC ,out le reste étant )érer par le module M++P et donc transparent pour nous Ceu= sont les bits-`6B %`A et $F du re)istre ++P+,A,

Zuelles sont les in2ormations >ue nous donnent chacun de ces bits Y

#'étude des chrono)rammes pa)e 1 et 1 de la datasheet montrent les di22érentes con2i)urations possibles deces bits lors d'une interruption du module IC :

 /?4 D? E& Point de vue Ma8tre Point de vue 0sclave

" " 1

1 " 1" 1 "

1 1 "

1 " " Mode lecture : le maRtre a )énéré unAC( si)ni2iant la 2in de la lecture

Fin de l'envoiB ce cas n'est pas obli)erd'tre traiter dans le pro)ramme

Ta6leau %, #C1 esclave1 interru2tion MSSP , /ifférentes confi+urations 2ossi6les

 Compléter le tableau 8 &n 2onction de la con2i)uration de . %`AB -`6B $F /B e=pli>uer ce >ue veut le mettreet ce >ue doit 2aire l'esclave

#ors d'une re>ute de lectureB le module IC esclave du PIC 2orce +C# " pour empcher >ue le maRtrereprenne le contrôle du bus avant >u'il est pu préparer la donnée transmettre ne 2ois >ue la donnée transmettre est

 prtre il 2aut repositionner le bit C(P du re)istre ++PC<1 1 a2in de relDcher l'horlo)e <n parle de clocE stretch

 Erratum Microchip Mode IC : /ans la datas3eet du P#C$%&()*1 il est dit ue dans le cas d'une lecture du ma8tre1 laréce2tion de l'octet d'adresse ne 2ositionne 2as le 6it E&1 or ce n'est 2as le cas Tenez com2te de cette erreur dansl'écriture de votre routine d'interru2tion #C.

 Inté)rer les 2onctions IC au pro)ramme de l'automate de pompe et tester son 2onctionnement #e pro)ramme del'automate de caisse vous est 2ournit #ise la partie suivante avant de tester votre pro)ramme sur la carte

1.2.&. *onneion !* entre de' cartes P!*$%M 2 Pl's

Comme on peut le voir sur la 2i)ure !B la partie phHsi>ue d'un bus IC est réalisée par trois li)nes électri>ues : lamasse ?5%@B les données ?+%A@ et l'horlo)e ?+C#@ Comme les composants connectés sont de tHpes collecteur ouvert

M1 +I+ *7 !"119!"1!

Page 44: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 44/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

ou drain ouvertB les li)nes +%A et +C# doivent tre maintenues l'état haut par une résistance Ces résistances sontdites de . pull;up / et sont caculées en 2onction du nombre de composantsB de la lon)ueurs du bus ?c2 documentationIC de Phillips@

%ans le cas des cartes PIC%&M ! PlusB chacune d'entre elle a déK ses résistances puis>u'elles disposent d'uncapteur de température et d'une &&P-<M IC %onc si on connecte directement deu= cartes ensembleB on se retrouveavec les deu= résistances en parall3le sur cha>ue li)ne ?le courant est donc multiplié par !@ et on a deu= 2ois le mmecomposant sur le bus ?cela ne serait pas )rave si les composants n'avait pas la mme adresseB hors les deu= cartes sontidenti>ues@ Pour vos testsB vous deve donc utiliser le microcontrôleur pour le>uel le support a été modi2ié : les broches-C*B -C4 et 5% ont été remplaUées par des 2ils connectés une autre carte PIC%&M ! Plus

 &i+ure )W, Connexion en #C de deux cartes P#C/0M ) Plus

 /ans le 2ro+ramme de caisse1 si vous ta2er le caractère 't' dans 3y2erterminal1 la tem2erature sera affic3ée en utilisantle ca2teur TCW connecté au 6us ; l'adresse *x/ ! 

-édi)er un petit bilan sur l'ensemble des travau= prati>ues : Zu'est ce >ui vous a pluB dépluB ennuHé Y Zu'avevous apprisB retenu Y k'a t'il des choses améliorer pour les 2uturs étudiants Y

M1 +I+ 4" !"119!"1!

PIC

      !      4      #      !            

      ,      C      1      4

+%A

+C#

5%

PIC%&M ! Plus ; I

5%

-C* -C4

PIC

      !      4      #      !            

      ,      C      1      4

+%A

+C#

5%

PIC%&M ! Plus ; II

5%

-C* -C4

- - \ T

- - \ T

Page 45: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 45/46

Travaux Pratiues de Microcontr!leur " P#C $%&()*

 Notes

M1 +I+ 41 !"119!"1!

Page 46: enonce_MSIS

8/13/2019 enonce_MSIS

http://slidepdf.com/reader/full/enoncemsis 46/46