You are on page 1of 145

Le PIC 18F4520 et sa programmation en C

Informatique industrielle : le PIC 18F4520 et sa programmation en C

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 1

Le PIC 18F4520 et sa programmation en C

SO M M A I R E
Chapitre 1 : Architecture Gnrale dun Systme Microprocesseur..........................................6 1+1Le ,at-riel : .ard/are++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0
1.1.2.1 Les types de processeur............................................................................7 1.1.2.2 Le micro-ordinateur ................................................................................8 1.1.2.3Les automates industriels...........................................................................8 1.1.2.4Les systmes embarqus............................................................................9 1.1.3.1Unit arit mtique et lo!ique" #nstruction" $e!istre d%&tat........................................9 1.1.3.2La mmoire pro!ramme ' le (ompteur )ro!ramme )(..........................................1* 1.1.3.3Les re!istres de donnes" la mmoire de donnes................................................11 1.1.3.4Les re!istres pointeurs.............................................................................12 1.1.3.+,r!anisation du plan mmoire....................................................................13 1.1.3.+.1-rc itecture de type .on /eumann '........................................................13 1.1.3.+.2-rc itecture de type 0ard1ard '.............................................................14 1.1.2.1)aramtres p ysiques..............................................................................12 1.1.2.23moires cac es...................................................................................12 1.1.2.2.1(ac e #nstruction 4ou antmmoire5 '.......................................................12 1.1.2.2.2(ac e 6onnes...............................................................................17 1.1.2.37tructure 7uperscalaire............................................................................17 1.1.2.47tructure )ipeline..................................................................................18 1.1.2.+branc ements prdicti8s...........................................................................18 1.1.7.17c ma simpli8i du c9ur du microprocesseur (#7(............................................18 1.1.7.2#nstructions simples et comple:es ' microcode..................................................19 1.1.7.3)rincipe des $#7(.................................................................................19 1.1.7.4&:emples de $#7( '...............................................................................2*

1+2Le Logi1iel+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++20
1.2.2.1 (as du micro-ordinateur..........................................................................21 1.2.2.2(as d%un automate cible...........................................................................21 1.2.3.13odle de )ro!rammation........................................................................22 1.2.3.27tructure d%une instruction assembleur...........................................................22

Chapitre 2 : Structure interne et plan mmoire du !C 1"#$%2&...............................................26 2+1Introdu1tion : qu2est 1e qu2un mi1ro1ontr3leur 4++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++20
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 2

Le PIC 18F4520 et sa programmation en C

2+2Les diff-rentes familles de PIC++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++20 2+56tru1ture interne+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++28 2+4)rganisation du plan m-moire+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++50


2.4.+.1$etour sur la pile systme.........................................................................33

2+57egistres internes 8 registre d2-tat+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++54 2+96-quen1ement d2une instru1tion++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++55 Chapitre ' : (a pro)rammation du !C 1"#$%2&.........................................................................'* 5+1L e langage assem#leur++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++58 5+2 Les diff-rents modes d2adressage : 1f+ do1 1onstru1teur p+98++++++++++++++++++++++++++++++++++++++++++++++++++5: 5+5Le ;eu d2instru1tion :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++41 5+46tru1ture d2un programme+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++45 Chapitre $ : (es entres+sorties ,-. du !C 1"#$%2&.................................................................$% 4+1 L es entr-es < sorties : prin1ipe g-n-ral+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++49
4.1.2.1Les entres sorties parallles......................................................................42 4.1.2.2Les entres sorties sries..........................................................................42 4.1.2.3Les entres sorties analo!iques....................................................................42 4.1.2.4Les entres sorties de compta!e...................................................................47

4+2Fon1tionnement en entr-es ou en sorties+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++40


4.2.+.17c ma interne et 8onctionnement d;un port #<, '...............................................+* 4.2.+.27c ma qui=alent et 8onctionnement '..........................................................+*

4+5Interfa=age a>e1 le PIC++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++52


4.3.1.1)rincipe de base...................................................................................+2 4.3.1.2 >tude des L&6s du ?#@ )#(6& 3 2 )LU7......................................................+3 4.3.1.3 (omment connecter plusieurs L& 6s sur une mAme sortie du )#( B............................+3 4.3.1.3.1(onne:ion en srie '..........................................................................+3 4.3.1.3.2(onne:ion en parallle '......................................................................+3 4.3.1.3.3&n utilisant un transistor ' ...................................................................+4 4.3.1.3.4&n utilisant un circuit spcialis '............................................................+4 4.3.2.1 )rincipe de base...................................................................................+4 4.3.2.2&tude du ?#@ )#(6& 3 2 )LU7..................................................................++

Chapitre % : Gestion des temporisations cres par pro)ramme.................................................%6 5+1Pro#l-matique++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++50 5+2Cal1ul du temps mis par une fon1tion+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++50 5+5Le r3le du 1ompilateur+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++5: 5+4!tilisation de ,PL&?6I,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++5:
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 5

Le PIC 18F4520 et sa programmation en C

Chapitre 6 : (es moteurs pas pas.................................................................................................6' 9+1 Les diff-rents t(pes de 1ommandes++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++94 9+2 Les diff-rents t(pes de moteurs et leurs 1ommandes++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++95 9+5 @tude dAune 1arte de 1ommande de moteur pas B pas+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++90 Chapitre * : (es ,imers...................................................................................................................*1 0+1Prin1ipe de fon1tionnement des "imers+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02 0+2 Le "imer 0 du PIC 18F4520 en modes 8 #its et 1ompteur de temps++++++++++++++++++++++++++++++++++++++++04
7.2.2.1 slection de l; orlo!e.............................................................................72 7.2.2.2Le pr-compteur 4prescaler5.......................................................................77 7.2.2.3 7ync ronisation...................................................................................77 7.2.2.4Les re!istres du timer*............................................................................77 7.2.3.1@emporisation ma: a=ec un @imer * 4en mode 8 bits5...........................................78

0+5Le "imer 1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++80


7.3.2.1 7lection de l; orlo!e............................................................................81 7.3.2.2Le pr-compteur...................................................................................82 7.3.2.3 La sync ronisation................................................................................82 7.3.2.4Les re!istres du timer1............................................................................82

0+4Le "imer 2++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++85


7.4.2.17lection de l;entre...............................................................................82 7.4.2.2Le pr-compteur ...................................................................................82 7.4.2.3La sync ronisation.................................................................................82 7.4.2.4Les re!istres du @imer 2...........................................................................82

0+5 Les fon1tions parti1uliCres des "imers 0D 1 et 5++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++8:


7.+.1.17lection de l;entre...............................................................................89 7.+.1.2le pr-compteur....................................................................................9* 7.+.1.37ync ronisation....................................................................................9* 7.+.2.17lection de l;entre...............................................................................9* 7.+.2.2Le pr-compteur...................................................................................91 7.+.2.37ync ronisation....................................................................................91

0+9"emporisation r-ellement pr-1ise++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:2 Chapitre " : (es !nterruptions......................................................................................................../% 8+1G-n-ralit- sur les interruptions++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:9 8+2Les interruptions sur le PIC 18F4520++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:9 Chapitre / : (a liaison srie .S2'20 1tilisation de l231SA.,...................................................1&/ :+1G-n-ralit-s+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++110
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 4

Le PIC 18F4520 et sa programmation en C

:+2Prin1ipe de transmission++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++111 :+5Interfa1es pE(siques+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++119 :+4L2interfa1e 76252++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++119 :+5,ise en Fu>re de la liaison s-rie a>e1 le PIC 18F4520++++++++++++++++++++++++++++++++++++++++++++++++++++++++++11:
9.+.4.1Les re!istres @ C$&D et $($&D................................................................12+ 9.+.4.2Les re!istres #/@(,/ et )#&1 .................................................................12+ 9.+.4.3Le re!istre )#$1..................................................................................12+ 9.+.4.4Le re!istre #)$1..................................................................................12+ 9.+.4.+Les re!istres 7)E$D0'7)E$DL" le bit E$D0 4du re!istre @ C7@-5 et le bit E$D12 4du re!istre E - U6(,/5....................................................................................12+ 9.+.4.2Les re!istres de contrFle et d%tat................................................................129

:+9EGemple de 1onfiguration de la liaison s-rie+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++150 :+0 EGemple dAun programme ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++151 Chapitre 1& : (es a44icheurs cristau5 li6uide 7(C89................................................................1'' 10+1 G-n-ralit-s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++154 10+2 &ffi1Eeur LC' 6EIH) ,1952+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++150
1*.2.1.1La mmoire.....................................................................................138 1*.2.1.2La mmoire d%a88ic a!e.........................................................................138 1*.2.1.3La mmoire du !nrateur de caractres 4(D $ - 35.........................................138 1*.2.4.13ode 8 bits......................................................................................144 1*.2.4.23ode 4 bits......................................................................................144

10+5 Le ;eu de 1ommandes standard+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++145

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 5

Le PIC 18F4520 et sa programmation en C

Chapitre 1

Architecture Gnrale dun Systme Microprocesseur

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 9

Le PIC 18F4520 et sa programmation en C

1.1 (e Matriel : :ard;are


1.1.1 Architecture )nrale d2un systme

"out s(stCme B #ase de mi1ropro1esseur peut Itre repr-sent- par le s1E-ma 1i dessous :

CP! : Central Pro1essor !nit !n s(stCme est 1ara1t-ris- par : Le t(pe de CP! : PentiumD 98010D Po/er PCD ,i1ro1ontr3leur %,ono1Eip* +++ Les fr-quen1es dAEorloge+ Les 1apa1it-s m-moires 7&, et 7),+ Le nom#re et la nature des dispositifs dAentr-es sorties+ La taille des #us de donn-es %8D 19D 52D 94* La taille des #us dAadresse %19D 24D 52D 94*+ Le t(pe des #us dAeGtension : PCID PC,D G94D G:9D J,ED 6C6ID &GP Les s(stCmes dAeGploitation utilis-s : ,6')6D Kindo/sD LinuGD !LIMD )6: 1.1.2 1.1.2.1 (es types de systmes Les types de processeur

Il eGiste sur le mar1E- deuG t(pes de pro1esseurs+ Les CISC : Complex Instruction Set Computer Peu de registres internesD $eu dAinstru1tions trCs 1omplet+ PentiumD H9 %&,'* ,otorola 980GG+ Les RISC : Reduced Instruction Set Computer ?eau1oup de registres internesD $eu dAinstru1tions trCs r-duit+ Intel et .P : P9+ ,otorola I?, et &pple : Po/er PC+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 0

Le PIC 18F4520 et sa programmation en C

1.1.2.2

Le micro-ordinateur.

!n mi1ro ordinateur est 1onstruit autour dAune ,)L)C&7"E qui 1omprend tout les -l-ments indiqu-s 1i dessus+ Les m-moires et les dispositifs dAentr-es sorties sont 1N#l-s sur la mIme 1arte de 1ir1uit imprimque le mi1ropro1esseur+ Elle dispose de 1onne1teurs dAeGtensions qui permettent de #ran1Eer tout les p-ripE-riques du mar1E- %-1ranD 1la>ierD disquesD imprimantesD sourisD liaison 76252D !6?D 7-seauG KL&LD L&LD ,odem FaG*+ Les s(stCmes dAeGploitation sont : Kindo/s MPD Jista ou Kindo/s 0 ainsi que GL!<LinuG pour les 1ompati#les I?, PC+ !LIM pour les stations de tra>ail industrielles+ Ces mi1ro ordinateurs sont des ma1Eines de #ureau utilis-es pour le d->eloppement et non pour le 1ontr3le de pro1essus industriel %manque de fia#ilit- dans un en>ironnement s->Cre*+ 1.1.2.3 Les automates industriels. !n automate industriel 1omprend les mImes -l-ments quAun mi1ro ordinateur mais il est modulaire et 1onstruit autour dAun C.&66I6 et dAun F)L' de P&LIE7 sui>ant le s1E-ma 1i dessous+

Le 1ENssis m-1aniqueD les alimentations et les 1artes -le1troniques sont pr->us pour r-sister B des am#ian1es industrielles s->Cres+ 6ui>ant la 1ompleGit- de lAappli1ationD il peut ( a>oir une ou plusieurs ,)L)C&7"E CP!D une ou plusieurs 1artes m-moiresD une ou plusieurs 1artes I<) %Input )utput*+ Le #us de fond de panier est 1ommun B toutes les 1artes : il est g-r- par un ,aOtre situ- en g-n-ral sur une 1arte CP!+ CEaque 1arte doit respe1ter la norme du #us sur lequel elle est install-e+ Il est possi#le de m-langer des 1artes de diff-rents 1onstru1teurs sur le mIme #us+ )n trou>e sur le mar1E- : des mi1ro ordinateurs de t(pe I?, PC %ils sont dur1is*+ des s(stCmes au #us J,E %Jersatil ,odule Europ*+ des s(stCmes au #us G94<G:9 %Gespa1*+ des &utomates Constru1teurs : "-l-m-1aniqueD 6iemensD Lero( &utomation et1+++
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 8

Le PIC 18F4520 et sa programmation en C

Les s(stCmes dAeGploitation sont essentiellement !LIM et des no(auG temps r-el 1omme )6:D P6osD J7"MD JGKorPs pour les ma1Eines ou>ertes+ Les automates 1onstru1teurs disposent de logi1iels propri-taires+ Les appli1ations prin1ipales de 1e t(pe de ma1Eines sont le 1ontr3le de pro1essus industriels sp-1ifiques %automatismesD ro#otiqueD r-gulation et1+++* 1.1.2.4 Les systmes embar u!s. )n trou>e de plus en plus dA-le1tronique dans les produits grand pu#li1 : ma1Eine B la>erD t-l-pEoneD t-l->isionD radioD 1ompa1t disqueD automo#ile et1+++ "ous 1es s(stCmes ont #esoin de 1omposants programma#les trCs #on mar1E- r-alisant une fon1tion #ien pr-1ise+ CAest le domaine des ,IC7)C)L"7)LE!7 %,)L)C.IP*+ Le ,IC7)C)L"7QLE!7 %,C! : ,i1ro1ontr3leur !nit* est un 1omposant -le1tronique qui 1omprend sur une mIme pu1e de sili1ium tous les -l-ments 1onstituant un s(stCmeD B sa>oir le CP!D la 7&,D la 7), et les I<)+ Les 1apa1it-s m-moires disponi#les sont trCs fai#les %1P B 259P*+ Le CP! peut Itre de t(pe CI6C ou 7I6C+ Ils sont produits en trCs grand nom#re pour r-duire les 1oRts de produ1tion+ 1.1.' Architecture interne d2un microprocesseur C!SC

"out mi1ropro1esseur est 1onstruit autour dAune ou plusieurs unit-s de 1al1ul &L! %&ritEmetique Logi1 !nit*D et dAun ensem#le de registres plus ou moins nom#reuG sui>ant la puissan1e d-sir-e+ lA&L! ainsi que les registres peu>ent utiliser des mots de 8D 19 52 ou 94 #its+ 1.1.3.1 "nit! arit#m!ti ue et lo$i ue% Instruction% Re$istre d&'tat. !ne !nit- &ritEm-tique et Logique % &L! * r-alise des op-rations de 1al1ul sur des oprandes organiss en mots de n bits. La taille des op-randes SnS d-pend de la 1apa1it- de traitement du mi1ro+ )n trou>e des mi1ropro1esseurs qui traitent de mots de 8D 19D 52 ou 94 #its+ LAinstru1tion B eG-1uter est elle aussi 1od-e en #inaire+ La taille du mot instruction d-pend de la 1ompleGit- du ;eu dAinstru1tion du mi1ropro1esseur : elle est sou>ent un multiple de 8 #its+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page :

Le PIC 18F4520 et sa programmation en C

Les instru1tions sont eG-1ut-es au r(tEme d2une Eorloge issue d2un #lo1 logique de 1ommande %ou s-quen1eur* qui fournit -galement les signauG de s(n1Eronisation internes ou eGternes Le r-sultat des instru1tions est rang- la plupart du temps dans un mot de taille identique auG op-randes sour1es : )n parle dAop-rande destination+ !n registre interne au mi1ropro1esseur indique la nature du r-sultat+ 6ui>ant le t(pe de mi1ro 1ontroleur utilis-D il peut sAappeler Registre Code Condition (CCR) ou registre S()("S pour la famille des PIC de Microchip. Il indique si le r-sultat est nulD positifD sAil ( a eu d-#ordement et1+++

Les >aleurs des #its de 1e registre sont mises B ;our lors de lAeG-1ution de 1Eaque instru1tion+ Elle sont utilis-es lors de test de #ran1Eement 1onditionnel+ 1.1.3.2 La m!moire pro$ramme : le Compteur *ro$ramme *C. La suite des op-rations -l-mentaires B effe1tuer par le mi1ro est 1ontenue dans une m-moire programme+ Celle 1i doit Itre 1Earg-e du 1ode #inaire de 1Eaque instru1tion+ CEaque mot de m #itsD 1onstituant une instru1tionD est eGtrait de 1ette m-moire en utilisant un registre 1ompteur #inaire : le Compteur Programme PC+ Le nom#re de #its de 1e 1ompteur est -gal au nom#re de #its dAadresse n-1essaires pour a11-der B la m-moire programme+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 10

Le PIC 18F4520 et sa programmation en C

Pour eG-1uter lAinstru1tion sui>anteD le 1ompteur programme PC est in1r-ment- d2 une unit- : % 1D 2 ou plusieurs adresses m-moiresD en fon1tion de la taille des mots instru1tions*+ Lors dAun #ran1Eement B une adresseD un m-1anisme analogue B un 1Eargement parallCle de 1ompteur est r-alis-+ EGemples : TP Famille ,otorola Nom 980: 98000 98040 Registres Internes 8 #its 8<19<52 #its 8<19<52 #its Bus de donnes 8 #its 19 #its 52 #its Bus d' dresse 19 #its 24 #its 52 #its

1.1.3.3 Les re$istres de donn!es% la m!moire de donn!es. 'ans 1Eaque mi1ropro1esseur il eGiste des registres internes sp-1ialis-s qui 1ontiennent des donn-es de 1al1ul+ La taille de 1es registres est li-e B la taille des donn-es que peut manipuler lA&L!+ 'ans une ar1Eite1ture CI6C le nom#re de 1es registres est limit- : 2 registres 8 #its pour le 980: : lAa11umulateur & et ? 8 registres 52 #its pour le 98000+ : registre '0 B '0 "oute op-ration aritEm-tique ou logique utilise sou>ent un de 1es registres soit en op-rande sour1e soit en op-rande destination+ Les op-randes sour1es peu>ent aussi pro>enir dAune m-moire de donn-es eGterne au mi1ropro1esseur+ Le r-sultat de 1Eaque op-rationD lAop-rande destinationD est rang- soit dans un registre interne du mi1ropro1esseurD soit dans une m-moire de donn-esD sui>ant la nature de 1Eaque instru1tion+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 11

Le PIC 18F4520 et sa programmation en C

CAest le mode dAadressage de lAinstru1tion qui indique lA&dresse Effe1ti>e %&E* des op-randesD m-moire ou registre+ EGemple : U V MW X

Possi#ilit-s de mode dAadressage: !ource " ,-moire 7egistre 7egistre 7egistre et1+++ !ource # ,-moire ,-moire 7egistre 7egistre $estination % ,-moire ,-moire ,-moire 7egistre

Pour un mi1ropro1esseur donn- toutes les 1om#inaisons dA&E ne sont pas possi#les pour toutes les instru1tions+ Il faut se reporter B la do1umentation te1Enique du 1onstru1teur qui pr-1ise quels sont les modes dAadressage effe1tifs de 1Eaque instru1tion+ & 1Eaque instru1tion le CC7 %ou registre 6"&"!6* est mis B ;our+ 1.1.3.4 Les re$istres pointeurs. Les programmes gCrent sou>ent des ta#leauG de donn-es en m-moire+ Pour a11-der B un -l-ment du ta#leau il suffit de 1onnaOtre lAadresse m-moire du premier -l-ment : 1Aest le r3le des pointeurs dA&dresses+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 12

Le PIC 18F4520 et sa programmation en C

'ans une ar1Eite1ture CI6C le nom#re de 1es registres est limit- : 2 pointeurs 8 #its pour le 980: : 7egistres M et X 8 pointeurs 52 #its pour le 98000+ : 7egistres &0 B &0 1.1.3.+ ,r$anisation du plan m!moire. Il eGiste 2 t(pes de plan m-moire : ar1Eite1ture de t(pe Jon Leumann ar1Eite1ture de t(pe .ard/ard 1+1+5+5+1 &r1Eite1ture de t(pe Jon Leumann : 'ans une ar1Eite1ture de 1e t(pe le mIme plan m-moire 1ontient B la fois le programme et les donn-es : il faut don1 un dispositif d2aiguillage qui en>oie les donn-es issues de la m-moire soit >ers l2entr-e Y op-rande Z de l2 &L! soit >ers les entr-es de donn-es de l2 &L!+ 6i le format des donn-es est de n #its %par eGemple : 8 #its* alors les instru1tions seront 1od-es sur un multiple de n #its %par eGemple : 19D 24 ou 52 #its*+ )n trou>e 1e t(pe d2ar1Eite1ture 1Ee[ ,otorola %1as des Tp 980: et 9800 et des ,C! 98.C11*

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 15

Le PIC 18F4520 et sa programmation en C

1+1+5+5+2 &r1Eite1ture de t(pe .ard/ard : 'ans 1e t(pe d2ar1Eite1ture le plan m-moire de programme et le plan m-moire de donn-es sont s-par-s+ Ils possCdent don1 1Ea1un un #us d2adresse dont le nom#re de #its d-pend de la 1apa1itrespe1ti>e de 1Eaque plan et le format des donn-es peut Itre diff-rent du format des instru1tions+ C2est le 1as des ,C! : !&' de !&Microelectronic : 4P o1tets de m-moire de programme %12 #its d2adresses internes* 259 o1tets de m-moire de donn-es %8 #its d2adresses internes*

PIC 19F800 de ,IC7)C.IP : 8P mots de m-moire de programme %organis- en mots de 14 #its* 512 o1tets de m-moire de donn-es %512M8* !C 1"#$%2& de M!C.-C:! : '2< octets de mmoire de pro)ramme 7instructions codes sur 2 ou $ octets9 166$ octets de mmoire de donnes 72%6 5 6 = 12"9
- .,IR C/)*I(R' 2

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 14

Le PIC 18F4520 et sa programmation en C

1.1.$

S6uencement d2une instruction

Le s1E-ma 1i dessous r-sume le s-quen1ement dAune instru1tion :

)n 1onstate sur 1e s1E-ma quAil faut 1inq 1(1les -l-mentaires dAEorloge pour eG-1uter une instru1tion+ 1.1.% Schma complet d2un microprocesseur

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 15

Le PIC 18F4520 et sa programmation en C

1.1.6

Amlioration des per4ormances

1.1.0.1 *aramtres p#ysi ues. Les paramCtres que lAon peut am-liorer sont : la fr-quen1e dAEorloge+ la taille et le nom#re des registres internes+ la taille des #us de donn-es+ la taille des #us dAadresse et1+++ 1.1.0.2 1!moires cac#es. LAa11Cs auG m-moires eGternes est sou>ent lent par rapport B la fr-quen1e du mi1ropro1esseur+ 1+1+9+2+1 Ca1Ee Instru1tion %ou ant-m-moire* : !n programme est sou>ent 1onstitu- de #ou1les eG-1ut-es un grand nom#re de fois+ !n 1a1Ee instru1tion est une m-moire %7&, statique* trCs rapideD de fai#le temps dAa11Cs adapt-e B la >itesse du mi1ro+ Elle 1ontient les derniCres instru1tions utilis-es par le mi1ro+ Elle est implant-e soit B proGimit- du mi1roD soit sur la pu1e de sili1ium elle mIme+ )n parle de 1a1Ee eGterne ou interne+ 6a taille est petite : de quelques Po1tets dans les mi1ros de #as de gamme ;usqu2B 1,o sur les mi1ro plus puissants+ Lors du 1(1le Eorloge de re1Eer1Ee dAune dAinstru1tionD une logique interne au mi1ro lan1e en parallCle une ou>erture dans la m-moire 1a1Ee et dans la m-moire eGterne+ 'euG 1as peu>ent alors se produire : la pro1Eaine instru1tion est dans le 1a1Ee: le mi1ro eG-1ute 1ette instru1tionD et a#andonne lAa11Cs eGterne+ la pro1Eaine instru1tion nAest pas dans le 1a1Ee: le mi1ro 1Eer1Ee son instru1tion dans la m-moire eGterne et a#andonne lAa11Cs 1a1Ee+ La m-moire 1a1Ee est mise B ;our par re1opie de la m-moire eGterne+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 19

Le PIC 18F4520 et sa programmation en C

1+1+9+2+2 Ca1Ee 'onn-es Le prin1ipe dAune m-moire 1a1Ee de donn-es est identique B 1elui de la m-moire 1a1Ee instru1tion+ Elle agit sur les derniCres donn-es utilis-es par le pro1esseur+ 1.1.0.3 Structure Superscalaire. Les instru1tions eG-1ut-es par un pro1esseur sont trCs >ari-es: instru1tions logiques % E"D )!D L)LD '-1alages et1+++* instru1tions aritEm-tiques en >irgules fiGes+ instru1tions aritEm-tiques en >irgules flottantes+ 1al1uls dAadresse et1+++ !ne unit- aritEm-tique et logique qui eG-1ute tous 1es t(pes dAinstru1tions est 1ompleGe et lente 1ar peu optimis-e+ )n peut don1 multiplier les &L! et on arri>e B la stru1ture sui>ante:

&outes ces units fonctionnent en parall(le.

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 10

Le PIC 18F4520 et sa programmation en C

1.1.0.4 Structure *ipeline 'ans un paragrapEe pr-1-dentD nous a>ons >u que lAeG-1ution dAune instru1tion n-1essitait 1inq 1(1les dAEorloge+ Comme 1es 1inq 1(1les sont ind-pendantsD on peut imaginer la stru1ture 1i dessous :

)n retrou>e 1ette stru1ture Y pipeline Z dans l2ar1Eite1ture des mi1ro1ontr3leurs PIC+


"ne instruction est ex!cut!e en un cycle mac#ine.

1.1.0.+ branc#ements pr!dicti2s Lors des #ran1Eements 1onditionnelsD il est possi#le de gagner du temps en eG-1utant en parallCle le #ran1Eement et le test : En effetD un programme r-alise des milliers de #ou1les quand le r-sultat du test est >raiD et ne sort quAune seule fois si le test est fauG+ 1.1.* Comparaison C!SC + .!SC

1.1.3.1 Sc#!ma simpli2i! du c4ur du microprocesseur CISC.

LAunit- dAinstru1tion lit les 1odes en m-moire 1entraleD les d-1ode puis les transmet B lAunitdAeG-1ution+ LAunit- dAeG-1ution eG-1ute 1Eaque instru1tion+ LAunit- de gestion des #us 1ontr3le les a11Cs auG #us dAadresseD de donn-es et de 1ontr3le+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 18

Le PIC 18F4520 et sa programmation en C

1.1.3.2 Instructions simples et complexes : microcode - Instruction Simple !ne instru1tion simple entre registres %E"D )!D '-1alageD &''I"I)L* peut dire1tement Itre r-alis-e par une &L! 1N#l-e+ CAest trCs rapide+ - Instruction Complexe !ne instru1tion 1ompleGe a>e1 la m-moire %in1r-mentation du 1ontenu dAune m-moireD addition de m-moire B m-moireD modes dAadressage 1ompleGes et1+++* ne peut plus Itre 1N#l-e : le nom#re de 1ir1uits serait trop important+ Elle est fra1tionn-e en un nom#re restreint de mi1roinstru1tions qui sont eG-1ut-es s-quentiellement+ Ce mi1ro1ode est ins1rit dans le sili1ium+ &utour de 1e mi1ro1ode sont install-s des 1ir1uits logiques qui organisent lAeG-1ution s-quentielle des mi1ro instru1tions+ Il faut plusieurs 1(1les dAEorloge pour eG-1uter une instru1tion 1ompleGe+ - )5anta$es Les instru1tions sont puissantesD le programme dAappli1ation est 1ourt+ Il faut moins de m-moire 1entrale+ -Incon5!nients Les temps dAeG-1utions de 1Eaque instru1tion sont trCs >aria#les : Pro#lCme de "emps 7-el+ LAanal(se du mi1ro1ode ralentit le pro1esseur+ Le mi1ro1ode o11upe #eau1oup de pla1e sur la pu1e de sili1ium+ !n fai#le nom#re dAinstru1tions 1ompleGes est r-ellement utilis-+ Le pro1esseur utilise #eau1oup dAinstru1tions de 1Eargement de registres B m-moire+ 1.1.3.3 *rincipe des RISC. Id-es de #ase : faire des 1Eoses simples mais rapidement supprimer le mi1ro1ode : toutes les instru1tions sont 1N#l-es+ %un c)cle d'horloge par instruction* 1onstruire un ;eu dAinstru1tion de taille fiGe+ %simplification de l'unit d'instruction* r-duire le nom#re des instru1tions 1ompleGes a>e1 la m-moire+ %ne garder *ue +, $ !&,R- BR NC. a/ec la mmoire* rempla1er une instru1tion 1ompleGe par une suite dAinstru1tions simples 1N#l-es+ %la puissance de traitement est dans le compilateur* augmenter 1onsid-ra#lement le nom#re de registres pour limiter les a11Cs 7&,+ %raliser les calculs comple0es de registres 1 registres* le format des instru1tions est sur trois op-randes+ % $$ $-!&2!,3RC-452!,3RC-46* utiliser au maGimum : les #ran1Eements pr-di1tifsD la stru1ture supers1alaireD les pipelinesD les
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 1:

Le PIC 18F4520 et sa programmation en C

1a1Ees Programmes et 'onn-es+ Conclusion 7 comparaison RI!C8CI!C 7


Jeu dinstructions Nombre de cycle par instruction Format des instructions Nombre de registres Nombre de Modes dadressage Compilateur Architecture RISC $duit Une Gi:e #mportant Gaible comple:e Architecture CISC (omple:e )lusieurs .ariable Gaible #mportant simple

1.1.3.4 'xemples de RISC : Le po6er *C En 1::1 &pple I?, et ,otorola ont d-1id- de 1onstruire une famille de pro1esseurs 7I6C : les Po/er PC dont les 1ara1t-ristiques sont les sui>antes : &r1Eite1ture 7I6C+ ?us 52<94 #its+ 6upers1alaire+ Pipeline+ Ca1Ees ,-moires+ .orloge de 20 B 150 ,.[+ La famille est 1ompos-e des pro1esseurs sui>ants : Po/er PC 901 : Po/er PC 905 : Po/er PC 920 : Po/er PC 950 : Les 1icrocontr7leurs *IC : Les ,C! PIC18F B ar1Eite1ture 7I6C utilisent des instru1tions 1od-es sur 19 ou 52 #itsD par 1ons-quentD 1Eaque 1ase m-moire de la m-moire de programme 1ontient en g-n-ral une seule instru1tion et un seul 1(1le ma1Eine suffit pour lire le 1ode 1omplet d2une instru1tion+ 'e plus les PIC utilisent une stru1ture de t(pe pipe line+ mi1ro ordinateurs personnels+ Idem 901 mais Lo/ Po/er %porta#les*+ 6tations de tra>ail+ 6er>eurs multipostes+

1.2 (e (o)iciel
1.2.1 Mise en route d2une machine : .3S3,

!n mi1ropro1esseur ne peut eG-1uter quAune suite dAinstru1tions quAil doit aller eGtraire de sa m-moire+ Cette suite dAinstru1tions est 1onstitu-e dAune suite dAo1tets ou de mots #inaires+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 20

Le PIC 18F4520 et sa programmation en C

& la mise sous tension dAune ma1EineD les m-moires 7&, sont >idesD seules les 7), 1onser>ent leur 1ontenu+ Il ( a tou;ours une 7), de ?))" dans une ma1EineD qui 1ontient la liste de premiCres instru1tions eG-1uta#les+ 1ac#ine sans dis ue ni r!seau : %1as des mi1ro1ontr3leurs* LAensem#le des programmes utilisateur doi>ent Itre en 7),+ Le 7E6E" peut se faire manuellement %a11Cs par une entr-e 7E6E"*D B la mise sous tension %Po/er )n 7eset* ou lors de la sortie du mode sommeil Y K&I" Z 1ac#ine a5ec dis ue : La 7), de #oot >ient 1Eer1Eer les programmes utilisateur sur le disque dur : il doit disposer dAun se1teur sp-1ial dAamor1e : se1teur de #oot+ Les fi1Eiers #inaires eG-1uta#lesD situ-s sur 1e se1teurD sont alors 1Earg-s en 7&, et lan1-s automatiquement+ 1ac#ine sur r!seau : La 7), de #oot >ient 1Eer1Eer dans un ser>eur sur le r-seau les programmes utilisateurs+ Les fi1Eiers #inaires eG-1uta#les sont alors 1Earg-s en 7&,D >ia le r-seauD et lan1-s automatiquement+ 1.2.2 1.2.2.1 (es systmes d2e5ploitation : dialo)ue oprateur. Cas du micro-ordinateur

Le mi1ro ordinateur dispose dAun -1ranD dAun 1la>ier et dAune souris : les logi1iels 1Earg-s au #oot gCrent tous 1es -l-ments ( 1ompris la 7&, et les disques+ Le s(stCme dAeGploitation a pour r3le de : lire les 1ommandes 1la>iers ou souris : anal(ser la s(ntaGe et lan1er le programme 1orrespondant+ 6i il ( a une erreurD donner un message+ g-rer lA-1ran et les p-ripE-riques : imprimanteD C' 7),D r-seau et1+++ g-rer les disques et leurs fi1Eiers : 1opierD 1r-erD d-truireD transf-rer et1+++ 1.2.2.2 Cas d&un automate cible. !n automate 1i#le a pour r3le de 1ontr3ler un pro1essus automatis-+ Il 1omporte une unit- 1entrale et des entr-es sorties industrielles+ En fon1tionnement normal il est entiCrement autonome+ Il ne 1omporte pas dA-1ran ni de 1la>ier+ Pour dialoguer a>e1 un tel s(stCme il faut a;outer un dispositif de dialogue eGterne : un terminal soit sur une liaison s-rieD soit une liaison parallCleD soit sur un r-seau+ Ce terminal 1omporte au moins un -1ran et un 1la>ier+ Le logi1iel em#arqu- dans lAautomate doit g-rerD B la mise sous tensionD la 1ommuni1ation >ers 1e terminal+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 21

Le PIC 18F4520 et sa programmation en C

Le terminal peut Itre : un terminal &C6II+ une 1onsole grapEique sur 7-seau+ un mi1ro ordinateur+ 'ans tous les 1as il doit 1omporter un logi1iel de 1ommuni1ation >ers la ma1Eine 1i#le+ La ma1Eine 1i#le peut elle aussi disposer de disques+

1.2.'

(2assem>leur.

LAassem#leur est le langage le plus pro1Ee de la ma1Eine : les registres internes et les adresses m-moires apparaissent dire1tement dans le ;eu dAinstru1tion+ 1.2.3.1 1odle de *ro$rammation. Le modCle de programmation dAun mi1ropro1esseur est une repr-sentation s1E-matique des registres a11essi#les B lAutilisateur+ )n trou>e trois familles de registres : les registres de donn-es+ les registres pointeurs dAadresse+ les registres de 1ontr3le+ 1.2.3.2 Structure d&une instruction assembleur !ne instru1tion en langage assem#leur est 1onstitu-e de quatre 1Eamps : &dresseD ,n-moniqueD )p-randes et Commentaire+ Le 1Eamp adresse repr-sente lAadresse dAimplantation m-moire+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 22

Le PIC 18F4520 et sa programmation en C

Le 1Eamp ,n-monique qui indique la nature de lAinstru1tion+ Le 1Eamp op-rande indique les donn-es et le mode dAadressage+ Pour utiliser 1e langage il faut 1onnaOtre : le modCle de programmation du mi1ropro1esseur : la liste et la fon1tion des registres internes+ la liste des instru1tions par groupe aritEm-tiqueD logiqueD #ran1EementD a11Cs B la m-moireD manipulation de #itsD et1+++ les modes dAadressage possi#les pour les op-randes sour1es et destination+ )5anta$es de ce lan$a$e programmes trCs 1ourts et trCs rapides+ optimisation du 1ode #inaire+ a11Cs fa1ile auG m-moires et auG entr-es sorties+ Incon5!nients de ce lan$a$e 1onnaissan1e interne du mi1ro eGig-e+ lourdeur et 1ompleGit- des instru1tions+ 1ode li- B une famille de pro1esseurs+ fon1tions matE-matiques diffi1iles B programmer+ "tilisation de ce lan$a$e appli1ations de petite taille trCs rapides+ dans les ,IC7)C)L"7)LE!7 o\ la taille m-moire est fai#le %1P B 10P*+ dans les programmes de pilotage de 1omposants p-ripE-riques+ 1.2.$ (es lan)a)es ?olus : @C@ 0AABA C

Les langages ->olu-s sont de plus en plus utilis-s+ Pas1al : Le SCS : Graf1et : $&J&: langage dAapprentissage a#andonn- dans les appli1ations industrielles+ langage de plus en plus utilis-+ langage de lAautomati1ien+ langage %nou>elle g-n-ration* pour les ,C! em#arqu-s

)5anta$es de ces lan$a$es fa1iles B mettre en Fu>re+ ind-pendants du mi1ropro1esseur+ permettent dA-1rire de grosses appli1ations modulaires+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 25

Le PIC 18F4520 et sa programmation en C

Incon5!nients de ces lan$a$es 1EaOne de 1ompilation lourde+ m-moire de tra>ail importante : minimum 52 B 94 P+ lenteur relati>e+ a11Cs auG entr-es sorties plus ou moins fa1iles+ n-1essite un poste de tra>ail puissant+ 1.2.% ChaDne de d?eloppement.

!n mi1ropro1esseur ne peut eG-1uter quAune suite dAinstru1tions #inaires eGtraites de la m-moire 1entrale+ !ne 1EaOne de d->eloppement permet de 1r-er sur disque des fi1Eiers #inaires eG-1uta#les B partir : des fi1Eiers sour1es 1r-es par lAutilisateur+ des #i#liotECques s(stCmes+ Elle 1omprend en g-n-ral un 1ompilateur et un -diteur de liens+

Le 1ompilateur transforme des fi1Eiers teGtes &6CII en fi1Eiers #inaires+ Ces fi1Eiers teGtes peu>ent Itre -1rits soit en langage assem#leur soit dans un langage ->olu- SCSD Pas1al ou autre+ "n compilateur cr!! des modules binaires relo$eables ui contiennent 7 le 1ode eG-1uta#le+ la liste des pro1-dures et des s(m#oles utilis-s mais non 1onnus dans 1Eaque module+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 24

Le PIC 18F4520 et sa programmation en C

"n !diteur de liens 8lin9er: 5a : 1Eer1Eer les modules s(stCmes utiles pour lAappli1ation+ 1Eer1Eer les s(m#oles non d-finis dans tous les modules de lAappli1ation+ pla1er #out B #out tous 1es modulesD pour 1r-er lAappli1ation finale+ *our ex!cuter cette application% il 2aut : 1Earger le module #inaire eG-1uta#le en 7&, soit : dire1tement B partir du disque+ %1as du mi1ro ordinateur autonome* par t-l-1Eargement sur la liaison entre le s(stCme de d->eloppement et la 1i#le+ %1as de la ma1Eine 1i#le* lan1er lAeG-1ution 'xemple :

Remar ue Certaines 1EaOnes de 1ompilation font un passage par des 1odes interm-diaires ind-pendant du mi1ropro1esseur et par lAassem#leur+

Il est ainsi plus fa1ile de porter des programmes sur des ma1Eines diff-rentes+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 25

Le PIC 18F4520 et sa programmation en C

Chapitre Chapitre Structure interne et plan mmoire du !IC 1"#$% &

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 29

Le PIC 18F4520 et sa programmation en C

2.1 !ntroduction : 6uestEce 6uun microcontrFleur G


!n ,IC7)C)L"7QLE!7 %,C! : ,i1ro1ontr3leur !nit* est un 1omposant -le1tronique qui 1omprend sur une mIme pu1e de sili1ium tous les -l-ments 1onstituant un s(stCme : !ne CP!D 'e la 7&, %m-moire de donn-e* !ne m-moire de programme : soit de la 7), en >ersion )"P ou !JP7), soit de plus en plus de la m-moire FL&6. %-qui>alent B E]P7),* 'es p-ripE-riques I<) ")7 'es liaisons s-ries !n C&L 'es temporisateurs %"I,E76* Et1^

2.2 (es di44rentes 4amilles de !C


Les ,C! PIC se 1ara1t-risent par o un premier nom#re qui indique la gamme du produit o 10D 12: #as de gamme o 14D19 : milieu de gamme o 18 : Eaut de gamme o une lettre qui pr-1ise la te1Enologie du 1omposant o C : 1ir1uit )"P %)ne "ime Programma#le* en C,)6 o F : m-moire FL&6. o le dernier nom#re qui 1orrespond auG interfa1es d2I<) et auG 1ara1t-ristiques du 1ir1uit : o le nom#re de #ro1Ees d2I<) o la taille m-moire de programme o les t(pes d2interfa1e %#us C&LD liaisons !6? ^+* 35emples : 19F84D 19F800D 18F2455D 18F4520

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 20

Le PIC 18F4520 et sa programmation en C

2.' Structure interne


2.'.1 rsentation du !C1"#$%2& :

Joir do1ument 1onstru1teur p 2 :

)n peut distinguer sur 1e s1E-ma : o L2alimentation : J'' %W5J* et Jss %0J* o Les #ornes du quart[ %os1illateur B quart[* : )6C1 et )6C2 o l2entr-e 7E6E" %,CL7 : ,aster CLea7* o Les diff-rents ports dAEntr-es<6orties : 7&GD 7?GD 7CGD 7'GD 7EG

2.'.2

Schma 4onctionnel

Le 18F4520 1omprend don1 : o o o o o o o _uatre "imers %1ompteurs* : !n 1on>ertisseur analogique num-rique %C&L* 10 #its 'euG modules de g-n-ration d2impulsion B p-riode r-gla#le %PK,* !n module de 1ommuni1ation s-rie s(n1Erone %,66P* !ne !6&7" !n module de 1ommuni1ation en Y port parallCle Z !n Y 1Eien de garde Z

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 28

Le PIC 18F4520 et sa programmation en C

Joi1i le s1E-ma de la stru1ture interne du 18F4520D issu de la datasEeet de ,i1ro1Eip :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 2:

Le PIC 18F4520 et sa programmation en C

2.$ -r)anisation du plan mmoire


2.$.1 Architecture du type :ar?ard

Le mi1ro1ontr3leur PIC18F4520 possCde une ar1Eite1ture de t(pe .ar>ard a>e1 5 plans m-moires s-par-s : o !ne m-moire de programme de 52 Po %m-moire FL&6.* o !ne m-moire de donn-es de 1994 o1tets %1559 W 128* o !ne pile de 51 ni>eauG

2.$.2

Mmoire de pro)ramme 7c4 doc p. %'9

La 1apa1it- de la m-moire de programme est de '2 <o 7<iloEoctets9+ CependantD 1Eaque instru1tion est 1od-e sur 16 >its %>oire 52 #its pour 1ertaines*D 1e qui signifie que 1Eaque instru1tion o11upera 2 octets %>oire 4 o1tets*+ &insiD la m-moire de programme ne pourra sto1Per que ;usquAB 19584 instru1tions au maGimum+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 50

Le PIC 18F4520 et sa programmation en C

2.$.'

Mmoire de donnes 7c4 doc p.619

La 1apa1it- totale de la m-moire de donn-e est de 166$ octets+ Elle 1omprend les registres internes pour l2utilisation des p-ripE-riques et 1%'6 octets de 7&, dAusage g-n-rale. ttention2 il e0iste une autre 9one de mmoire de donnes au sein du PIC5:;<=6>2 bien distincte de la R M (l'--PR,M) d'une capacit de 6=' octets2 et *ui peut ?tre utilise pour stoc@er des constantes2 codes !CII2 tableau0 de constantes2 etcA Le plan m-moire est d-1oup- en 16 Hones 7>an<9 identi6ues de 2%6 octets + Le s-le1tion de la [one est r-alis-e par 4 #its du registre ?67 %?anP 6ele1t 7egister*+ ?675D ?672D ?671 et ?670 1orrespondent respe1ti>ement auG #its d2adresse interne au ,C! a11D a10D a: et a8 %1f prin1ipe du d-1odage d2adresse*+ Les registres internes pour les fon1tions sp-1iales %registres g-n-rauG et 1onfiguration des p-ripE-riques ` 6F7 qui signifie 6pe1ial Fun1tion 7egisters* se situent auG adresses Eautes+ La figure 5 9 de la page 91 de la do1umentation du PIC18F4520 montre les diff-rents 1odes quAil est n-1essaire de 1Earger dans le registre ?67 pour s-le1tionner les diff-rentes pages m-moire+ ,ais pourquoi ,i1ro1Eip nous 1omplique la >ie a>e1 des pages m-moires 4 Par1e que 1ela permet de r-duire la taille du 1ode sto1P- en m-moire de programme et 1ela optimise les performan1es du mi1ro 1ontr3leur+ En effetD au lieu dAutiliser les 12 #its n-1essaires pour pointer un registre parmi lAensem#le de la m-moire de donn-esD on utilise que les 8 #its de poids fai#les %permettant de s-le1tionner un registre dans une page m-moire de 259 o1tets*D 1on1at-n-s a>e1 les 4 #its du registre ?67 %permettant de s-le1tionner une page m-moire*+ &insiD lAinstru1tion qui utilise un registre de donn-e Y -1onomise Z 4 #its %1e qui permet de 1oder les instru1tions que sur 19 #its au total*+ 'e plusD le fait de tra>ailler sur 8 #its permet de s-le1tionner un registre en un seul 1(1le+ LAin1on>-nient de 1e s(stCme est quAil faut sAassurer que la #onne page m-moire soit s-le1tionn-e %B lAaide du registre ?67* a>ant de faire des op-rationsD sinon lAinstru1tion sera eG-1ut-e a>e1 une autre donn-e que 1elle initialement pr->ue+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 51

Le PIC 18F4520 et sa programmation en C

2.$.$

(a pile systme

Le PIC18F4520 possCde une pile LIF) %Last In First )ut* de 21 >its 1omportant '1 ni?eau5D ind-pendante de la m-moire de programme et de la m-moire de donn-e+ Le r3le de 1ette m-moire 7&, est de conser?er ladresse de retour lors dun appel un sousE pro)ramme+ rincipe : o +e contenu du compteur de programme PC est sau/egard (empil) dans la pile lors dBun appel 1 un sous programme (C ++) ou lors dBune interruption. o +a pile est dpile lors dBun retour dBun sous programme ou apr(s lBe0cution dBune interruption. Remar ue : Le pointeur de pile %6ta1P Pointer* est a11essi#le %registre 6"HP"7*+ )ttention : La gestion de la pile se fait automatiquement+ Il eGiste par ailleurs des instru1tions pour empiler et d-piler Y B la main Z %P!6. et P)P*+ Il ( a un indi1ateur pour indiquer un d-#ordement de la pile %#it 6"HF!L du registre 6"HP"7*+ -n ne peut im>ri6uer 6ue '1 ni?eau5 de sousEpro)rammes.

2.$.%

(e compteur de pro)ramme

Le 1ompteur de programme appel- aussi 1ompteur ordinal est un 1ompteur s(n1Erone de 21 >its B 1Eargement parallCleD il peut don1 adresser la totalit- de l2espa1e m-moire de programme+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 52

Le PIC 18F4520 et sa programmation en C

Il est 1onstitu- de 5 parties : !ne partie #asse de 8 #its %PCL* dont l2image se retrou>e en m-moire de donn-e B l2adresse FF:E+ Le registre PCL 1ontient don1 les #its 0 B 0 de PC+ Cette partie est a11essi#le en le1ture et en -1riture+ !ne partie Eaute de 8 #its PC. dont le 1ontenu 1orrespond auG #its 8 B 15 de PC+ Cette partie nAest pas dire1tement a11essi#le+ La mise B ;our %ou la le1ture* de PC. se fait B tra>ers le registre PCL&". qui se situe en m-moire de donn-e B l2adresse FF&E+ Les #its de poids les plus forts sont sto1P-s dans le registre PC!+ Ce registre 1ontient don1 les 5 #its de poids forts de PC %#its 19 B 20*+ Cette partie nAest pas dire1tement a11essi#le+ La mise B ;our %ou la le1ture* de PC! se fait B tra>ers le registre PCL&"! qui se situe en m-moire de donn-e B l2adresse FF?E+

ttention 7 Le #it de poids le plus fai#le de PCL est fiG- B 0 et le 1ompteur de programme est in1r-ment- par pas de 2+ En effetD 1Eaque instru1tion -tant 1od-e sur 2 o1tetsD il est n-1essaire de pointer seulement le premier o1tet de 1Eaque instru1tion qui se situent auG adresses paires %0000ED 0002ED 0004ED 0009ED et1*+ 2.4.+.1 Retour sur la pile systme La pile s(stCme permet don1 de 1onser>er les adresses de retour B 1Eaque appel dAun sous programme %51 ni>eauG au maGimum*+ Ces adresses %programme* -tant 1od-es sur 21 #itsD la pile peut don1 sto1Per 51 G 21 #its+ 6eule lAadresse situ-e au dessus de la pile %"op of 6ta1P* est a11essi#le+ 'e la mIme maniCre que pour le 1ompteur de programme %PC*D 1es 21 #its doi>ent Itre r-partis dans 5 registres de 8 #its %")6L pour les 8 #its de poids fai#lesD ")6. pour les 8 #its de poids Y mo(en ZD et ")6! pour les 5 #its de poids les plus forts*+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 55

Le PIC 18F4520 et sa programmation en C

2.% .e)istres internes I re)istre dtat


2.%.1 Accumulateur J

L2a11umulateur K %registre de tra>ail : KorP* sert B sto1Per temporairement la donn-e sur laquelle >a tra>ailler l2instru1tion en 1ours de d-roulement %en sour1e ou en destination*+ Ce registre est don1 a11essi#le en le1ture ou en -1ritureD il se situe B lAadresse FE8E+

2.%.2

.e)istre S,A,1S

Le registre d2-tat %6"&"!6 7egister* ou CC7 indique le r-sultat de l2op-ration aritEm-tique ou logique de l2&L!+ Il se situe B lAadresse F'8E+ Il est utilis- pour les tests et les #ran1Eements 1onditionnels+

L %Legati>e* : 1e #it est utilis- pour les op-rations aritEm-tiques sign-es+ Il indique si le r-sultat est n-gatif+ %1 V r-sultat n-gatif* )J %)>erflo/* : 1e #it est utilis- pour les op-rations aritEm-tiques sign-es+ Il indique un d-#ordement sur 0 #its qui a pour effet de 1Eanger le #it de poids le plus fort %utilis- pour le signe*+ U %U-ro* : passe B 1 si le r-sultat de la derniCre op-ration logique ou aritEm-tique >aut 0+ &ttention U n2est positionn- que pour 1ertaines instru1tions %1f liste des instru1tions ta#leau 24 2 p+200 du do1ument 1onstru1teur* 'C %'igit Carr(* : a1tif B l2-tat Eaut pour une additionD a1tif B l2-tat #as pour une soustra1tion+ Il est utilis- lorsqu2on tra>aille en ?C' %sur 4 #its a* et indique un report %retenue V 1arr(* du #it 5 >ers le #it 4+ C %Carr(* : a1tif B l2-tat Eaut pour une addition %1arr(*D a1tif B l2-tat #as pour une soustra1tion %<#orro/*+ Il est a1tif lorsqu2une retenue apparaOt sur le ,6?+ Lote : la soustra1tion 1orrespond B une addition du 1ompl-ment B 2 du se1ond op-rande+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 54

Le PIC 18F4520 et sa programmation en C

2.%.'

.e)istre ointeur

Le mi1ro1ontr3leur PIC possCde trois registres pointeurs d2adresse F67 %File 6ele1t 7egister*D F670D F671 et F672 asso1i-s 1Ea1un B un 2Cme registre IL'F %IL'ire1t File*D respe1ti>ement IL'F0D IL'F1 et IL'F2+ CEaque registre F67G est en fait 1ompos- de 2 registres de 8 #its : F67G. et F67GL IL'FG n2est pas un registre pE(siqueD il n2eGiste que pour a11-der B la donn-e point-e par le registre pointeur d2adresse F67G.:F67GL+ En lisant le registre IL'FGD on trou>e le 1ontenu de la m-moire point-e+ F67G est le registre pointeur Pour a11-der B la donn-e 1ontenue dans une 1ase m-moireD il suffit d2-1rire dans le registre F67G l2adresse de 1ette 1ase m-moire+ 'ans la mesure o\ il est n-1essaire dAa>oir 12 #its pour pointer une 1ase m-moire de donn-eD les 8 #its de poids fai#le sont dans F67GL et les 4 #its de poids forts sont dans F67G.+

2.6 S6uencement dune instruction


2.6.1 (horlo)e :

Le ,C! PIC18F4520 peut utiliser plusieurs t(pes d2EorlogesD 1Eaque t(pe -tant s-le1tionngrN1e auG #its F)6C1D F)6C2D F)6C5 et F)6C4 du registre de 1onfiguration C)LFIG1. %1f do1ument 1onstru1teur p+25 et p+24:* Le 1N#lage de l2os1illateur est d-taill- dans la do1umentation 1onstru1teur+

2.6.2

Chrono)ramme de 4onctionnement

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 55

Le PIC 18F4520 et sa programmation en C

L2Eorloge )6C1 est di>is-e en quatre pour 1r-er 4 signauG d2Eorloge _1 B _4 en quadrature+ Le 1(1le d2instru1tion est di>is- en quatre 1(1les _1 B _4+ Le 1Eargement de l2instru1tion se fait pendant 4 1(1les d2Eorloge soit un 1(1le ma1Eine o L2instru1tion est m-moris-e durant _1 o Elle est d-1od-e et eG-1ut-e pendant _2 et _5 o L2op-rande est -1rite B destination pendant _4+ GrN1e B la stru1ture Y Pipeline Z %1f 1Eap 1 b 1+9+4+*D l2instru1tion 1Earg-e pr-1-demment est eG-1ut-e et simultan-ment une nou>elle instru1tion est 1Earg-e dans le registre d2instru1tion+ En 1on1lusionD un 1(1le ma1Eine est -gal B 4 1(1les d2Eorloge du quart[ et sa1Eant que la plupart des instru1tions s2eG-1utent en un 1(1le ma1EineD on peut en d-duire :
(e nom>re doprations par seconde 7ou instructions par seconde9 est )ale #osc+$ 'xemple :

6oit un quart[ de fr-quen1e 20 ,.[D le ,C! PIC 18F4520 peut don1 r-aliser 5 ,IP6 MIP! 7 Million dBInstructions Per !econd .

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 59

Le PIC 18F4520 et sa programmation en C

' Chapitre '

Chapitre ' (a pro)rammation du !IC 1"#$% &

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 50

Le PIC 18F4520 et sa programmation en C

'.1 ( e lan)a)e assem>leur


Le d->eloppement d2un programme informatique peut Itre fait en langage ma1Eine %assem#leur* ou en langage ->olu- %langage C*+ !n s(stCme de d->eloppement 1omporte tou;ours au minimum un assem#leur et un ou des 1ompilateurs adapt-s au langage ->olu-+ L2assem#leur traduit les instru1tions -1rites en utilisant les mn-moniques du langage ma1Eine en 1ode #inaire eG-1uta#le par le ,C!+ La suite des mn-moniques s2appelle le listing ou 1ode sour1e %fi1Eier teGte GGG+asm* Le 1ode #inaire s2appelle l2o#;et ou l2eG-1uta#le %fi1Eier #inaire GGG+EeG* Il est possi#le de faire 1oEa#iter les 2 langages en ins-rant par eGemple de l2assem#leur dans du C+ '.1.1 35emple :

6oit l2instru1tion sui>ante : ,)JLK 0G& Cette instru1tion >eut dire : 1Earger l2a11umulateur K a>e1 la donn-e qui est i1i un Y litt-ral Z 1Aest B dire une >aleurD & %en EeGad-1imal*+ ,)JLK est l2a#r->iation de ,)Je Literal to K+ '.1.2 Structure dune instruction en lan)a)e assem>leur

!ne instru1tion est 1onstitu-e de 4 1Eamps : Champ dadresse dinstruction : il 1ontient l2adresse o\ se trou>e l2instru1tion dans la m-moire de programme+ Cette adresse est don1 1od-e sur 21 #itsD 12est le 1ontenu du PC a>ant l2eG-1ution de l2instru1tion+ Cette adresse n2est pas -1rite dans le fi1Eier sour1eD on utilise des -tiquettes ou label Champ mnmoni6ue ou 1ode instru1tion : il 1omporte un s(m#ole qui repr-sente %sous forme mn-monique* l2instru1tion ou une dire1ti>e d2assem#lage+ Champ oprande : il est 1onstitu- d2 1 ou 2 op-randes en sour1e et<ou en destination en fon1tion des instru1tions+ L2op-rande peut Itre une adresse %ou un registre* ou une >aleur %nom#re*+ Certaines instru1tions n2ont pas d2op-rande Joir Y modes d2adressage Z Champ commentaire : il 1ommen1e par un point >irgule aprCs le 1Eamp op-rande ou en d-#ut de ligne+ EGemple : Champ dBadresse Champ mnmoni*ue 0G200 &''LK Champ oprande 5 Champ commentaire c additionne 5 au 1ontenu de K c soit KVKW5

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 58

Le PIC 18F4520 et sa programmation en C

'.2

(es di44rents modes dadressa)e : c4. doc constructeur p.6"

)n appelle &dresse Effe1ti>e %&E*D l2adresse qui est dire1tement manipul-e par l2instru1tion+ CAest le mode d2adressa)e de l2instruction qui indique l2Adresse 344ecti?e %&E* des op-randesD m-moire ou registre+ '.2.1 Adressa)e immdiat :

L2oprande est la ?aleur B utiliser par l2instru1tion+ L2op1ode est sui>i par l2op-rande et ne fait appel B au1une adresse+ 35emple : ,)JLK 0G58 c 1Earge la >aleur EeGad-1imal 58 dans l2a11umulateur K

6our1e : litt-ral '.2.2

'estination : K

Adressa)e direct

L2oprande est ladresse de la ?aleur B utiliser par l2instru1tion+ Le 1ode op-ratoire est sui>i d2un o1tet non sign- qui est l2&E de l2op-rande B traiter+ 35emple : ,)JF 0G58D K c 1Earge la donn-e situ-e B l2adresse 0G58 dans l2a11umulateur K 'estination : K

6our1e : m-moire B l2adresse 0G58

Ce ta#leau illustre le 1ontenu des registres et<ou des m-moires 7&, ABAK, l2eG-1ution de l2instru1tion et A .3S l2eG-1ution de l2instru1tion : ,)JF 0G58DK ABAK, K V 0G00 c 0G58 V 0GF5 A .3S K V 0GF5 c 0G58 V 0GF5

'.2.1

Adressa)e indirect

L2adresse de l2op-rande est -1rite a>e1 un registre pointeur d2adresse+ L2adressage indire1t utilise lAun des 1ouples de registres IL'FG et F67G+ 35emple : ,)JLK 0G5& ,)JKF 0G20 c 1Earge la >aleur EeGad-1imale 5& dans la m-moire B l2adresse 0G20 ,)JLK 0G20 ,)JKF F670 c initialisation du registre pointeur F670D F670 1ontient l2adresse 0G20 ,)JF IL'F0D K c 1Earge le 1ontenu de la m-moire point-e par F670 dans K 6our1e destination
Page 5:

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Le PIC 18F4520 et sa programmation en C

Ce ta#leau illustre le 1ontenu des registres et<ou des m-moires 7&, ABAK, l2eG-1ution de l2instru1tion et A .3S l2eG-1ution de l2instru1tion : ,)JLK 0G5& ,)JKF 0G20 ,)JLK 0G20 ,)JKF F670 ,)JF IL'F0DK '.2.2 ABAK, K V 0G00 c 0G20 V 0G00 K V 0G5& c 0G20 V0G00 K V 0G5& K V 0G20 c F670 V 0G00 K V 0G20 c IL'F0 V 0G5& A .3S K V 0G5& c 0G20 V 0G00 K V 0G5& c 0G20 V 0G5& K V 0G20 J L &52& M #S.& L &52& M !K8#&L &5'A J L &5'A

Adressa)e implicite ou inhrent

L2instru1tion ne possCde pas d2op-rande+ L2op1ode 1ontient toutes les informations n-1essaires B l2eG-1ution de l2instru1tion et ne fait appel B au1une adresse+ 35emples : L)P K&I" CL7K'" 7E"!7L '.2.' Adressa)e relati4 :

Ce mode d2adressage s2applique auG op-rations de #ran1Eement et de saut C&LL et G)")+ Il permet de faire eG-1uter des instru1tions pla1-es dans une autre portion de l2espa1e m-moire de programme+ Il modifie le 1ontenu du PC sa1Eant que lors de l2eG-1ution d2une instru1tion le PC pointe sur l2instru1tion sui>ante+ 35emple : #ou 'ECF6U G)") '.2.$ 0G20D1 #ou c d-1r-mente le registre B l2d 20E et saute l2instru1tion sui>ante si le r-sultat est nul c #ran1Ee B bou

Manipulation de >its

Ce mode permet de modifier un #it dans un registre+ L2instru1tion possCde 2 op-randes : L2adresse du registre La position %Le* du #it+ 35emple : ?CL P)7"&D4 '.2.% c met B 0 le #it 4 du registre P)7"&

,est de >its et >ranchement

Ce mode permet de tester la >aleur d2un #it d2une donn-e et d2effe1tuer ou non le #ran1Eement en fon1tion de l2-tat de 1e #it+ L2instru1tion possCde 2 op-randes :
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 40

Le PIC 18F4520 et sa programmation en C

L2adresse ou le nom du registre La position %Le* ou le nom du #it+ 0G20D1 0G20D4 #ou c in1r-mente le registre B l2d 20 c test le #it 4 de 1e registreD si 1e #it est B 1 on sort de la #ou1le c sinon on re1ommen1e

35emple : #ou ILCF ?"F66 G)")

'.' (e Neu dinstruction :


Les instru1tions sont 1od-es sur 19 #its %>oire 52 #its pour 1ertaines* et s2eG-1utent en 1 1(1le ma1Eine >oire 2 ou 5 1(1les ma1Eines pour les instru1tions de saut et de #ran1Eement+ Le ;eu d2instru1tion est d-taill- dans la do1umentation 1onstru1teur au paragrapEe 24+0 B partir de la page 290+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 41

Le PIC 18F4520 et sa programmation en C

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 42

Le PIC 18F4520 et sa programmation en C

)n distingue 5 t(pes d2instru1tions : Les instru1tions orient-es o1tets des registres Y FILE Z: ,)JKF f c CL7F f c 'ECF f c et1^ Les instru1tions orient-es #it des registres : ?CF fD# c ?"F66 fD# c et1 Les instru1tions B adressage imm-diat %litt-ral op-ration* et instru1tions de 1ontr3le : ,)JLK P G)") P 6LEEP

'.$ Structure dun pro)ramme


'.$.1 35emple

;********************************************************************* ;* Nom du fichier: exemple.ASM ;* Rfrence: P18F45 !.inc ;* Proce""eur: P#$18F45 ! ;* $ompil%&eur: MP'A( 8.)! ;* '%*o: #+,1-./ii101P.023 ;************************************************************ 4include 5p18F45 !.inc6 4define RAM 1 !x 1 F3$ e7u !x)F ;**********8ec&eur re"e&*************************************** or9 !x!! .o&o de* ;**********pro9r%mme princip%l********************************** de* mo8l: F3$ mo8:f RAM 1 *ou incf"; RAM 1 9o&o *ou fin 9o&o fin /N3 '.$.2 8irecti?es dassem>la)e 7ou pseudoEinstructions9

Les dire1ti>es d2assem#lage ne sont utiles qu2au logi1iel d2assem#lage c elles ne font pas partie du programme+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 45

Le PIC 18F4520 et sa programmation en C

EGemple : or) &5&& c pr-1ise B l2assem#leur o\ sont implant-s les 1odes ma1Eines Goto de> c i1i il s2agit du >e1teur 7E6E"+ &prCs un 7E6E" c le ,C! d-marre B l2adresse 0G000 D B 1ette adresse se trou>e un saut in1onditionnel B l2adresse Y de# Z qui est le d-#ut du programme+ '.$.' (es assi)nations

!ne assignation se 1omporte 1omme une simple su#stitution+ !ne -tiquette a>e1 assignation sera don1 automatiquement rempla1-e lors de l2assem#lage par sa >aleur+ 35emple : #8C e6u &5'# c indique B l2assem#leur que le s(m#ole F'C est -qui>alent au nom#re 5F en EeGa

'.$.$

(es 4ichiers O include P

La dire1ti>e Y f in1lude Z permet d2introduire dans le programme les assignations 1ontenues dans le fi1Eier P18F4520+in1 c 1Aest B dire toutes les 1onstantes relati>es au ,C!+ (outes les adresses des re$istres du *IC 1;<4+2= sont d!2inies dans ce 2ic#ier. 35emple : '.$.% Qinclude Rp1"#$%2&.incS

(es d4initions

!ne d-finition Y f defineZ fon1tionne 1omme une assignation+ )n utilise une assignation pour une >aleur+ Les d-finitions permettent de rempla1er un teGte plus 1omplet ou le r-sultat d2un 1al1ul+ EGemple : Qde4ine .AM21 &521 M indi6ue 6ue lti6uette .AM21 dsi)ne la mmoire 7ou re)ister ou 2ile: ladresse &521.

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 44

Le PIC 18F4520 et sa programmation en C

Chapitre $

(es entres*sorties +OR du !IC 1"#$% &

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 45

Le PIC 18F4520 et sa programmation en C

$.1
$.1.1

( es entres + sorties : principe )nral


Kotion dentres sorties

)n 1onsidCre 1omme une entr-e toute information allant du milieu eGt-rieur >ers le mi1ropro1esseur+ )n 1onsidCre 1omme une sortie toute information allant du mi1ropro1esseur >ers le milieu eGt-rieur+ Pour g-rer 1es entr-es sorties on utilise des 1omposants sp-1ialis-s dit 1omposants p-ripE-riques+ 'ans le 1as des mi1ro1ontr3leursD les p-ripE-riques sont internes c on dispose don1 de 1ellules d2entr-es sorties+ "ous 1es 1omposants ou 1es 1ellules se 1omportent >is B >is du mi1ropro1esseur 1omme des m-moires a11essi#les en le1ture pour les entr-es et en -1riture pour les sorties+ 'ans le 1as d2un ,C!D la stru1ture interne des 1es 1omposants est une suite de registres+ Plusieurs lignes peu>ent Itre regroup-es en P)7" d2entr-es sorties+ $.1.2 (es di44rents types d3ntres+Sorties

)n distingue plusieurs familles de 1omposants dAentr-es<sorties: 4.1.2.1 Les entr!es sorties parallles. Le mi1ropro1esseur doit pou>oir lire en parallCle des mots de 8 ou 19 #its pro>enant du monde eGt-rieur+ Ces mots repr-sentent lA-tat des 1apteurs tout ou rien %")7* lorsquAil sAagit dAentr-es de donn-es+ Ces mots repr-sentent lA-tat des a1tionneurs tout ou rien %")7* lorsquAil sAagit de sorties de donn-es+ !n affi1Eeur LC' est g-r- par des mots de 8 #its %liaison parallCle* asso1i-e B un #us de 1ontr3le %entr-es et sorties ")7*+ 4.1.2.2 Les entr!es sorties s!ries. Pour faire 1ommuniquer B distan1e des s(stCmes informatiquesD on limite le nom#re de fils de 1onneGion+ Les donn-es #inaires ne peu>ent plus Itre transmises en parallCles mais sous forme s-rieD les #its les uns B la suite des autres sur un fil+ CAest le 1as des liaisons s-ries de t(pe 76252 et !6? ou des r-seauG %,odem*+ 4.1.2.3 Les entr!es sorties analo$i ues. 'e nom#reuG pro1essus industriels n-1essitent des grandeurs de 1ommande analogiques+ Ces grandeurs %>itesseD positionD temp-ratureD pression et1+++* sont 1on>erties soit en 1ourant soit en
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 49

Le PIC 18F4520 et sa programmation en C

tension+ )n utilise alors des Con>ertisseurs Lum-riques &nalogiques %CL&* et des Con>ertisseurs &nalogiques Lum-riques+ 4.1.2.4 Les entr!es sorties de compta$e. Les entr-es de 1omptage permettent de 1ompter des o#;ets ou des impulsions issues des 1apteurs de position de t(pe in1r-mentauG+ Les sorties de 1omptage permettent de g-n-rer des signauG 1arr-s de fr-quen1e et de rapport 1(1lique >aria#les %sorties PK,* pour la 1ommande de moteurs B 1ourant 1ontinu ou d2alimentation B d-1oupage+

$.2 #onctionnement en entres ou en sorties


$.2.1 rsentation des ports du MC1 1"#$%2&

Le 18F4520 possCde 5 ports diff-rents : le port & %8 #ro1Ees* le port ? %8 #ro1Ees* le port C %8 #ro1Ees* le port ' %8 #ro1Ees* le port E %4 #ro1Ees*

Les #ro1Ees de 1Eaque port sont num-rot-es de 0 B n+ Les #ro1Ees de ports sont d-sign-es par un P %ou 7 1omme register* sui>i de la lettre du port %de & B E* et du num-ro n de #ro1Ee+ &insiD la #ro1Ee 0 du port & est d-sign-e par P&0 %ou 7&0*D la #ro1Ee 4 du port ? par P?4 %ou 7?4*D et1^ Remar*ue : tout 1omme pour la num-rotation des #its d2un registreD la 5e #ro1Ee du port ? porte le num-ro 4 %et non pas 5*+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 40

Le PIC 18F4520 et sa programmation en C

$.2.2

rincipe de 4onctionnement :

CEaque port est asso1i- B 5 registres : Le registre de dire1tion de donn-es appel- "7I6 pour le PIC %,.!S comme ,rans4ert !nput Set*+ -0emple 7 "7I6& pour port &+ "7I6? pour port ?+ Et1^++ Ce sont des registres de 8 #its Le #it 0 1orrespond B la #ro1Ee 0 du P)7" 1orrespondant au registre Le #it 1 1orrespond B la #ro1Ee 1 du P)7" 1orrespondant au registre Le #it 2 1orrespond B la #ro1Ee 2 du P)7" 1orrespondant au registre Et1 ^

Si le >it est 1 T c2est une entre 7! comme !nput9 Si le >it est & T c2est une sortie 7- comme -utput9
(e re)istre de donne appel- -., pour le PIC+ -0emple 7 P)7"& pour port &+ P)7"? pour port ?+ Et1^++ Ce sont des registres de 8 #its Cas du PIC 18F4520

Si cest une entre T U(ecture du re)istre


6i 12est une sortie T g@1riture du registre (e re)istre tampon de donne en sortie appel- (A, pour le PIC+ Ces registres ont pour fon1tion dA->iter 1ertains pro#lCmes qui peu>ent apparaOtre lorsque plusieurs op-rations dA-1riture<le1ture des ports dAentr-es<sorties sont effe1tu-es su11essi>ement+

Remar*ues 7 1+ L2intensit- maGimale que peut fournir une #ro1Ee en sortie est de 25m&D 1e qui permet de 1onne1ter dire1tement sur la #ro1Ee une LE' a>e1 une r-sistan1e+ 2+ &u 7E6E" toutes les I<) sont en entr-es+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 48

Le PIC 18F4520 et sa programmation en C

$.2.'

Schma structurel O 6ui?alent P dun 3+S dun port. ;onctionnement 7 6i "7I6&0 B 0 : sortie 6i "7I6&0 B 1 : entr-e et don1 la sortie est en .aute Imp-dan1e a

$.2.$

Structure dun port d23+S 7document constructeur pa)e 1&%9

CEaque #ro1Ee dAentr-e<sortie est 1onstitu-e entre autres de deuG #as1ules ' sur front et dAune #as1ule ' sur ni>eau+ LAune des deuG #as1ule ' sur front %"7I6 Lat1E* permet de g-rer la 1onfiguration de la #ro1Ee en entr-e ou en sortie+ La se1onde permet dAappliquer un ni>eau Eaut ou #as en sortie %dans le 1as o\ la #ro1Ee est 1onfigur-e en sortie*+ EnfinD la #as1ule ' sur ni>eau permet de sAassurer que le ni>eau appliqu- B la #ro1Ee 1onfigur-e en entr-e est sta#le durant le temps n-1essaire B la le1ture de la #ro1Ee+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 4:

Le PIC 18F4520 et sa programmation en C

$.2.%

#onctionnement en entre :

4.2.+.1 Sc#!ma interne et 2onctionnement d>un port I?, : La partie 1orrespondant B la sortie %partie gris-e* est mise en -tat de Eaute imp-dan1eD le s1E-ma dAune #ro1Ee 1onfigur-e en entr-e se r-duit don1 B la partie non gris-e : ,.!S5.n 1 : lors de l2-1riture dans le registreD le front montant du signal Y K7 "7I6 Z %g-n-r- par lAEorloge interne _4* permet de pla1er la sortie de le #as1ule ' Y "7I6 Lat1E Z B 1+ &insiD le tampon 5 -tats dont la sortie est 1onne1t-e B la #ro1Ee dAentr-e<sortie est B lA-tat de Eaute imp-dan1eD 1e qui 1orrespond B une sortie d-1onne1t-e+

4.2.+.2 Sc#!ma ! ui5alent et 2onctionnement : En supposant l2entr-e 1onstitu-e d2un #outon poussoir a>e1 une r-sistan1e de rappelD on o#tient don1 le s1E-ma -qui>alent sui>ant :

La sortie de la porte E" %!5* sera l2image de l2-tat de l2entr-e %61*+ Lors d2une op-ration de LEC"!7ED a1tif B l2-tat EautD l2-tat de l2entr-e sera m-moris-e dans une #as1ule ' et pr-sente sur le #us de donn-es internes du ,C! 18F4520 %sortie P)7"&*

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 50

Le PIC 18F4520 et sa programmation en C

$.2.6

#onctionnement en sortie :

La 1onfiguration de la #ro1Ee en sortie est r-alis-e de la maniCre sui>ante : Y 'ata ?us Z V 0 puis un front des1endant est appliqu- B Y K7 "7I6 Z ` la sortie du #uffer 5 -tats B droite du s1E-ma est >alid-e+ 6i on souEaite mettre 1ette sortie B 0 : Y 'ata ?us Z V 0 puis un front des1endant est appliqu- B Y K7 L&" or Port Z ` la sortie de la #as1ule ' Y 'ata Lat1E Z passe B 0 Vilan : )n con4i)ure la #ro1Ee respe1ti>ement en entr-e ou en sortie en mettant le #it ,.!S5.n B 1 ou 0 %G V &D ?D CD ' ou E et n V 0D 1D 2D 5D 4D 5D 9D 0* En entre0 on lit l2tat appli6u B la #ro1Ee en lisant le #it -.,5.n En sortie0 on met la #ro1Ee B 0 ou B 1 en cri?ant dans le registre (A,5.n

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 51

Le PIC 18F4520 et sa programmation en C

$.' !nter4aWa)e a?ec le !C


$.'.1 Conne5ion de (38s au !C

4.3.1.1 *rincipe de base Il eGiste 2 maniCres de 1onne1ter une LE' au PIC :


PIC
'1

PIC
71 LE' GL'

sortie 1

sortie 2

72

'2 JC C LE'

Les deuG maniCres sont -qui>alentesD seul l2-tat logique sera diff-rent pour allumer la LE'+ 'ans le premier 1as : !n -tat logique VAS -teindra la LE' !n -tat logique :A1, allumera la LE' 'ans le deuGiCme 1as : !n -tat logique :A1, -teindra la LE' !n -tat logique VAS allumera la LE' Calcul de la ?aleur de la rsistance raNouter dans le premier cas 7.19: En -1ri>ant la loi des ,aillesD on trou>e : J). V 71hI W J'1 'on1 71 V %J). J'1* < I J). V tension B l2-tat :A1, de sortie+

.(potECses : )n utilise une led de 1ourant nominal 20 m&D que nous alimenterons B 10m& pour une dur-e de >ie plus longue+ J' %tension auG #ornes de la led* V 2J+ Le PIC est aliment- en J11 V 5J 71 V %J). J'1* < I V % 4D5 8 2 * < 0D01 V 250 i noter7 les tensions J). et J)L d-li>r-es par le PIC sont fournies dans la do1 1onstru1teur page 559+ Calcul de la ?aleur de la rsistance dans le deu5ime cas 7.29 : En -1ri>ant la loi des ,aillesD on trou>e : JCC V 72hI W J'2 W J)L 'on1 72 V % JCC J'2 J)L * < I J)L V tension B l2-tat VAS de sortie+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 52

Le PIC 18F4520 et sa programmation en C

En prenant les mImes E(potECses que 1i dessus nous trou>ons : 72 V % JCC 4.3.1.2 J'2 J)L * < I V % 5 8 2 8 0D9 * < 0D01 V 240 i

@tude des L'As du BI( *ICA'1 2 *L"S

_uatre LE's sont 1onne1t-es sur le port ? %7?0D 7?1D 7?2D 7?5* sui>ant le prin1ipe : Elles sont don1 a1ti>es %allum-es* pour un ni>eau :A1, en sortie du PIC+ La r-sistan1e est de 400 i+ Le 1ourant 1ir1ulant dans la LE' est don1 de l2ordre de ^+ m&+ !n 1a>alier %$9* permet de d-1onne1ter 1es LE's+

4.3.1.3

Comment connecter plusieurs L'As sur une mCme sortie du *IC D

)n d-sire par eGemple r-aliser un affi1Eeur g-ant dont 1Eaque segment est 1onstitu- de plusieurs LE's+ 4+5+1+5+1 ConneGion en s-rie : Le 1ourant tra>ersant une LE' sera le mIme que 1elui tra>ersant plusieurs LE's+ Ce n2est don1 pas le 1ourant qui risque de nous poser des pro#lCmesD mais la tension+ 6i le PIC est aliment- en 5JD 2 LE's a>e1 un Jd de 2J %>aleur d-pendant de la LE' utilis-e* peu>ent Itre 1ommand-es mais 5 LE's ne pourront ;amais Itre pilot-es ensem#les+ 4+5+1+5+2 ConneGion en parallCle :
PIC
'1

sortie 1

71 '1 71

LE' GL' LE' GL'

I1iD 1e n2est pas la tension qui importe mais le 1ourant maGimum d-li>r- B l2-tat haut %I).* par la sortie du PIC+ %I). ,&M V 25m&*

6i le PIC est aliment- en 5JD 2 LE's 1onsommant 1Ea1une 10 m& peu>ent Itre 1ommand-es+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 55

Le PIC 18F4520 et sa programmation en C

,ais 5 LE's ne pourront ;amais Itre pilot-es ensem#les+ 4+5+1+5+5 En utilisant un transistor : 8imensionnement de la rsistance .1 : Le transistor est i1i un transistor LPL %par eGemple un 2L2222*+ Le 1ourant dans les LE's est fiG- B 10 m& 1e qui impose le 1ourant IC B 10 m&+ La tension J' est tou;ours de 2J+ En -1ri>ant la loi des maillesD on trou>e : JCC V 71hI W J' W J' W JCE
PIC sortie 1
72 _1 LPL G?' JC C

71 7 E62

'1 LE'

'2 LE'

JCE V tension 1olle1teur<-metteur du transistor B l2-tat Passant V en>iron 0D2J Le 1al1ul de la r-sistan1e 71 donne : 71 V % JCC 8 J' 8 J' 8 JCE * < I

8imensionnement de la rsistance .2 : Le j du transistor >ariant de 100 B 500 et en utilisant un 1oeffi1ient de sursaturation de 10D nous o#tenons un 1ourant I? de 1m&+ Ce 1ourant est tout B fait 1oE-rent 1ompte tenu des 25 m& que peut d-li>rer la sortie du PIC+ La loi des mailles nous donne J). V 7? h I? W J?E %J?E V 0D0J*

'on1 7? V %J). 8 J?E* < I? V %4D5 0D0* < %1h10 k* V 5D9 Pi Com>ien de (38s pou?ons nous connecter G &>e1 une tension de 12J et des LE's a>e1 Jd V 2J et 1ompte tenu du JCE non nulD >ous pourre[ 1onne1ter ;usqu2B 5 LE's+ %&>e1 des LE's a(ant un J' plus fai#leD >ous pourre[ peut Itre en 1onne1ter 9 ^* 7emarque : Le PIC pou>ant d-li>rer #eau1oup plus que les 1m& demanddans le 1as pr-1-dentD le transistor LPL %2L2222* pourra lui aussi d-li>rer plus de 1ourant+ Jous pou>e[ faire un montage de 1e t(pe : & >os 1al1uls a 4+5+1+5+4 En utilisant un 1ir1uit sp-1ialis- : Par eGemple un 1ir1uit !LL2005+ Ce 1ir1uit se pr-sente sous la forme d2un 1omposant 'IP B 19 #ro1Ees+ Il est 1ompati#le ""L+ Il permet de 1onne1ter 0 groupes de LE' diff-rents+ $.'.2 4.3.2.1 Conne5ion dun >outon poussoir : *rincipe de base

Il eGiste 2 t(pes de montage possi#les :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 54

Le PIC 18F4520 et sa programmation en C


JC C

JC C

PIC
72

PIC Entr-e 1

Entr-e 1
71

GL'

GL'

Le premier montage est #eau1oup plus utilis- que le deuGiCme+ Lous ne d-1rirons que 1elui 1i+ #onctionnement :
JC C

PIC Entr-e 1
71

interrupteur ou?ert : Le PIC re1onnaOt un Y 0 Z logique+ La #ro1Ee du PIC est B la masse+ !nterrupteur 4erm : Le PIC re1onnaOt un Y 1 Z logique

GL'

Xuelle ?aleur de rsistance utiliser G !ne r-sistan1e de tirage est g-n-ralement 1omprise entre 1Pi et 100PiD et on utilise g-n-ralement 10Pi+ 4.3.2.2 'tude du BI( *ICA'1 2 *L"S Le HI" propose 2 #outons 1onne1t-s sur 7&4 et 7?0+ Les #outons poussoir sont 1onne1t-s B la masse a>e1 une r-sistan1e de tirage de 4D0Pi

.emar6ue : Le 1onstru1teur de la 1arte ,i1ro1Eip a ra;out- une r-sistan1e de 400 i entre l2interrupteur et le PIC+ Le #ut de 1ette r-sistan1e est de prot-ger le PIC d2une mau>aise programmation+ En effetD si >ous pla1e[ la #ro1Ee 7?0 en sortie en pr-sentant un 1 logique %en sortie* et que l2interrupteur est ferm-D >ous pro>oque[ un %;oli* 1ourt 1ir1uit+ La r-sistan1e de 400 i permet de limiter le 1ourant 1onsommpar la sortie 7?0 et don1 empI1Eer la destru1tion de 1elle 1i+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 55

Le PIC 18F4520 et sa programmation en C

Chapitre %

Gestion des temporisations cres par pro)ramme

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 59

Le PIC 18F4520 et sa programmation en C

%.1

ro>lmati6ue

Pour lAinstantD nous a>ons fait les temporisations en C a>e1 des fon1tions : "P1
>oid tempo %>oid* l uns19 ic for %iV0c i m 45000c iWW*c n

"P1
>oid tempo %>oid* l uns19 i V 0c do l iWW c n /Eile %im45000* c n

"P1
>oid tempo %>oid* l uns19 i V 0c /Eile %im45000* l iWW c n n

"P2
>oid tempo %uns19 t* l uns19 ic for %iV0c i m tc iWW*c n

Lous a>ons >u qu2a>e1 une >aleur de 45000 nous a>ons en>iron un temps de 0D5s+ Il est impossi#le de 1onnaitre le temps mis par une fon1tion sans regarder sa tradu1tion du programme en assem#leur+

EME,PLE : Programme en C >oid tempo %>oid* l uns8 ic for %iV0c i m 254c iWW*c n >oid main %>oid* l tempo%*c n

"radu1tion en assem#leur
i tempo m001 E_! 0G00 G)") main CL7F iD0 ,)JLK 254 CPF6L" iD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L 7C&LL tempo 6LEEP 7E6E" EL'

m002 main

%.2 Calcul du temps mis par une 4onction


Comprhension du pro)ramme Programme en assem#leur
i tempo m001 E_! 0G00 G)") main CL7F iD0 ,)JLK 254 CPF6L" iD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L 7C&LL tempo 6LEEP 7E6E" EL'

m002 main

La Jaria#le i est sau>egard-e dans la m-moire B l2adresse 0G00+ !ne fois dans la fon1tion mainD on rentre dans la fon1tion tempo (RC ++ tempo)+ Le 1ompilateur effa1e la >aria#le i+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 50

Le PIC 18F4520 et sa programmation en C

)n rentre ensuite dans une #ou1le :


m001 ,)JLK 254 CPF6L" iD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L

m002

_ue fait la #ou1le 4 1+ )n 1Earge 254 dans / : M-B(J 2%$ 2+ )n test si la >aria#le i est inf-rieure B / : C #S(, i0& 5+ 6i la >aria#le i est inf-rieure B /D lAinstru1tion qui suit imm-diatement %V.A m&&2* est ignor-e+ &lors on in1r-mente i : !KC# i010& Et on remonte au d-#ut de la #ou1le : V.A m&&1 4+ 6i i V 254D lAinstru1tion V.A m&&2 est eG-1ut-e et on sort de la fon1tion a>e1 l2instru1tion :
.3,1.K

Programme en assem#leur tempo m001 CL7F iD0 ,)JLK 254 CPF6L" iD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L 7C&LL tempo 6LEEP 7E6E" EL'

"emps de 1(1le 1 1(1le 1 1(1le 2 1(1les ou 1 1(1le 2 1(1les 1 1(1le 2 1(1les 2 1(1les 2 1(1les La #ou1le est faite 254 fois % pour iV0D pour i C5 A pour i C6=D) +a boucle est commence une 6==E ;,I! mais elle passe par la ligne BR m>>6

m002 main

Les temps de 1(1le sont >isualisa#le dans la do1umentation du PIC B la page 200 + "emps de la temporisation : 5 1(1les % lignes 7C&LL tempo et CL7F iD0* W 254 h 9 1(1les % lignes ,)JLK 254D CPF6L" iD0D ILCF iD1D0 et ?7& m001* W 1 h 4 1(1les % lignes ,)JLK 254D CPF6L" iD0D ?7& m002* W 2 1(1les % ligne 7E"!7L*

Soit 1%'' cycles


Le temps dAune instru1tion est -gal B 4 temps de 1(1le du quart[+ Lotre quart[ est B 4,.[ don1 notre temps de 1(1le est de 1us % fos1 <4*+

6oit 1555 os

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 58

Le PIC 18F4520 et sa programmation en C

%.' (e rFle du compilateur


Le 1ompilateur ;oue un grand r3le sur le programme g-n-r- en assem#leur et don1 sur le temps mis par une fon1tion+ 'ans les deuG programmes en C 1i dessousD nous a>ons modifi- la >aleur maG de i D et le programme en assem#leur se trou>e 1Eang-+ 6i on ne fait pas attention au programme g-n-r- en assem#leur nous nous attendons B a>oir : !n temps de 1555 os a>e1 une >aleur de #ou1le de 254 + !n temps de 155: os a>e1 une >aleur de #ou1le de 255+ En effet le 1ompilateurD >o(ant un mo(en de 1ompresser le 1ode en1ore plusD ne traduit pas le programme de la mIme maniCre+
>oid tempo %>oid* l uns8 ic for %iV0 Mi n >oid main %>oid* l tempo%*c n i E_! 0G00 G)") main tempo m001 CL7F iD0 ILF6LU iDKD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L 7C&LL tempo 6LEEP 7E6E" EL' tempo m001 >oid tempo %>oid* l uns8 ic for %iV0 Mi n >oid main %>oid* l tempo%*c n i E_! 0G00 G)") main CL7F iD0 ,)JLK 254 CPF6L" iD0 ?7& m002 ILCF iD1D0 ?7& m001 7E"!7L 7C&LL tempo 6LEEP 7E6E" EL'

R 2%%c iWW*c

R 2%$c iWW*c

m002 main

m002 main

,emps L 12"'Ys

,emps L 1%''Ys

&>e1 une >aleur de 255D le temps est plus 1ourt quAa>e1 une >aleur de 254 +

(e pro>lme se compli6ue lors6uon utilise des ?aria>les de type uns16 ...

%.$ 1tilisation de M (AVS!M


Le logi1iel ,PL&?6I, peut nous aider B 1onnaOtre le temps d2eG-1ution d2une fon1tion ou d2un #out de programme et don1 de notre temporisation+ Pour lan1er 1e logi1ielD aller dans le menu 'e#ugger < 6ele1t "ool < ,PL&? 6I, + Ce logi1iel n2a pas #esoin du HI" pour fon1tionner+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 5:

Le PIC 18F4520 et sa programmation en C

'ans un premier tempsD mettre un Y #reaP point Z %point d2arrIt* sur l2instru1tion sui>ant la temporisation+

'ans un deuGiCme tempsD >alider la fon1tion Y stop/at1E Z B l2aide du menu Y 'e#ugger Z+

Pour fiGer la fr-quen1e du quart[D entrer dans la fenItre Y 6etting Z du menu Y 'e#ugger Z +

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 90

Le PIC 18F4520 et sa programmation en C

6imuler >otre programme en pas B pas+ &rrIte[ >ous aprCs la premiCre instru1tion+ Le s(stCme a d-;B eG-1ut- trois 1(1les +

Est 1e 1oE-rent 4 6i on regarde le 1ode assem#leur du programmeD on peut 1ompter le nom#re de 1(1les ma1Eine+

Calcul : G)") 0G12 CL7F P)7"&D &CCE66 2 1(1les 1 1(1le

&ppu(er sur U-roD pour remettre le 1ompteur de temps B U-roD a>ant de lan1er le "empo+

Lan1er la temporisation en 1ontinuD la simulation s2arrItera automatiquement au point d2arrIt+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 91

Le PIC 18F4520 et sa programmation en C

Kous retrou?ons ainsi les 1%'' cycles calculs prcdemment0 raison de 1Ys par cycle0 on o>tient donc une temporisation de 1%'' Ys soit 10%'' ms.

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 92

Le PIC 18F4520 et sa programmation en C

Chapitre ,

(es moteurs pas pas

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 95

Le PIC 18F4520 et sa programmation en C

)n a l2Ea#itude de repr-senter le fon1tionnement d2un moteur pas B pasD a>e1 une #oussole dans un 1Eamp magn-tique pou>ant prendre 4 positions+ 6ui>ant le prin1ipe que deuG p3les de signe 1ontraires s2attirentD si on pla1e une #oussole dans un 1Eamp magn-tiqueD le 6ud de la #oussole sera attir- >ers le p3le Lord+

6.1
6.1.1

(es di44rents types de commandes


Commande en pas entier

6i nous imposons les 1(1les Lord 6ud sui>antsD la #oussole tourne+

La #oussole fait don1 4 pas par tour+ 6.1.2 Commande en pas entier + 4ort couple

'ans 1e t(pe de 1ommande les deuG 1Eamps magn-tiques fon1tionnent ensem#le pour 1r-er un 1Eamp magn-tique plus fort+

La #oussole fait aussi 4 pas par tour mais le 1ouple est #eau1oup plus fort+ 6.1.' Commande en demiEpas

6i on inter1ale les 1ommandesD on arri>e B faire une 1ommande en demi pas+ Cette 1ommande am-liore la pr-1ision du moteurD mais fournit une 1ommande a>e1 une alternan1e de fort 1oupleD puis de fai#le 1ouple+

La #oussole fait don1 8 pas par tour+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 94

Le PIC 18F4520 et sa programmation en C

6.2

(es di44rents types de moteurs et leurs commandes

Les moteurs pas B pas possCdent 4D 9 ou 8 fils+ Le t(pe de moteurs est re1onnaissa#le par le nom#re de fils sortant de la 1ar1asse+ $ 4ils : 1e sont des moteurs >ipolaires 6 4ils %ou 5*: Ce sont des moteurs unipolaires " 4ils : 1e sont des moteurs hy>ridesD 1Aest B dire qu2ils peu>ent Itre 1ommand-s 1omme des moteurs #ipolaires ou unipolaires+ 6.2.1 (es di44rents types de moteur

,oteur E(#ride : Le moteur E(#ride peut don1 Itre 1ommand- en moteur : !nipolaireD en 1onne1tant en s-rie les 2 #o#ines+ ?ipolaireD en 1onne1tant en parallCle les 2 #o#ines+

6.2.2

Commande des moteurs unipolaires

La 1ommande des moteurs unipolaires se fait a>e1 4 interrupteurs %4 transistors en g-n-ral*+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 95

Le PIC 18F4520 et sa programmation en C

6.2.'

Commande des moteurs >ipolaires

Il faut un Ea1Eeur 4 1adrans par enroulement+

En fermant deuG interrupteurs oppos-s le 1ourant passe dans un sens et g-nCre un 1Eamp magn-tique+

En fermant les deuG autres interrupteursD le 1ourant passe dans l2autre sens et g-nCre un 1Eamp magn-tique dans l2autre sens+

Remar*ue 7 Il eGiste des 1ir1uits int-gr-s r-alisant des Ea1Eeurs 1omplets: L2:2 < L2:5< L2:5< L9205 < L2:8 + Le 1ir1uit L2:8 peut Itre asso1i- au 1ir1uit L2:0 pour 1ommander fa1ilement un moteur pas B pas+ 6.2.$ A?anta)es et incon?nients des di44rents moteurs Cir1uits de 1ommande : !nipolaire : 4 transistors ?ipolaire : 8 transistors La 1ommande #ipolaire demande don1 plus d2-le1tronique +

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 99

Le PIC 18F4520 et sa programmation en C

Puissan1e : 'ans un moteur unipolaireD seule la moiti- de la #o#ine est a1ti>e B 1Eaque pEase 'ans un moteur #ipolaireD toute la #o#ine est a1ti>e+ Pour un mIme poidsD le moteur #ipolaire sera don1 plus puissant+

6.2.%

Kom>re de pas d2un moteur pas pas

Le prin1ipe eGpos- au d-#ut de 1e 1ours 1orrespond B un moteur pas B pas de 4 pas+ Les moteurs industriels sont 1onstruits de maniCre B a>oir plus de pas %48 pas c 200 pas*+ Le nom#re de pas est o#ligatoirement un multiple de 4+ Pour faire 10 pasD il faudra mettre une su11ession de 10 1ommandes+ 6ur un moteur de 200 pasD nous aurons fait 1<20 de tour+ Les 1onstru1teurs ne donnent pas le nom#re de pas d2un moteur pas B pas mais ils eGpriment l2angle en e+ EGemples : 0D5e ` 48 pas 15e ` 24 pas 1D8e ` 200 pas 5D9e ` 100 pas

6.'

Ztude d2une carte de commande de moteur pas pas

En "P d2informatique industrielle B l2I!"1 de Greno#leD les -tudiants disposent d2une 1arte permettant de 1ommander 4 LE' et un moteur pas B pas+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 90

Le PIC 18F4520 et sa programmation en C

Le moteur pas B pas est du t(pe unipolaire %il ( a 9 fils qui sortent de 1elui 1i*+ Compte tenu de la 1ouleur des fils %#lan1D #lan1D #runD #leuD rougeD ;aune* il est fa1ile d2imaginer que les fils #lan1s sont les points milieu+ En regardant de plus prCsD on distingue deuG paquets de trois fils : p !n #lan1D un rougeD un #run p !n #lan1D un #leuD un ;aune )n peut en d-duire que le moteur est 1onstitu- 1omme 1e1i+

Le moteur pas B pas ne pou>ant pas Itre 1ommand- dire1tement par le PIC %B 1ause du fort 1ourant dans les pEases du moteur*D il a -t- a;out- un #uffer de t(pe !LL2005+ Ce 1omposant est en fait 1onstitu- de 0 #uffers ind-pendants+ !ne diode de roue li#re est pr-sente dire1tement dans le 1omposant pour 1Eaque #uffer+ 'e plusD 1e 1omposant est 1ompati#le ""L<C,)6 en entr-e et peut d-li>rer 500m& par #uffer+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 98

Le PIC 18F4520 et sa programmation en C

Le s1E-ma -qui>alent de la 1arte est : !n ni>eau Eaut en entr-e de l2!LL2005 ferme l2interrupteur+ !n ni>eau #as en entr-e de l2!LL2005 ou>re l2interrupteur+

'ans le 1as de la 1ommande en pas entier %fai#le 1ouple* il faut fermer les interrupteurs a>e1 un 1ertain ordre :

Interrupteur Interrupteur B Interrupteur C Interrupteur $

#erm )u>ert )u>ert )u>ert

)u>ert )u>ert )u>ert #erm

)u>ert #erm )u>ert )u>ert

)u>ert )u>ert #erm )u>ert

'ans le 1as de la 1ommande en pas entier %fort 1ouple* il faut fermer les interrupteurs a>e1 un 1ertain ordre :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 9:

Le PIC 18F4520 et sa programmation en C

Interrupteur Interrupteur B Interrupteur C Interrupteur $

#erm )u>ert )u>ert #erm

)u>ert #erm )u>ert #erm

)u>ert #erm #erm )u>ert

#erm )u>ert #erm )u>ert

Compte tenu du 1N#lage du moteur sur la 1arte nous a>ons : La #ro1Ee 7'4 du PIC 1ommande l2interrupteur ?+ %#run* La #ro1Ee 7'5 du PIC 1ommande l2interrupteur '+ %;aune* La #ro1Ee 7'9 du PIC 1ommande l2interrupteur C+ %#leu* La #ro1Ee 7'0 du PIC 1ommande l2interrupteur &+ %rouge* Pour faire la 1ommande en pas entier %fai#le 1ouple* et faire tourner le moteur dans un sensD il faut appliquer les 1odes sui>ants : R$F (fil rouge) 1 0 0 0 R$' (fil bleu) 0 1 0 0 R$= (fil Gaune) 0 0 0 1 R$< (fil brun) 0 0 1 0

Pour faire tourner le moteur dans un sensD il faut donner au port' la su11ession de 1odes : 0G8MD 0G4MD 0G1MD 0G2M+ Le moteur >a eG-1uter 4 pas %sur les 48 pour faire un tour*+ Pour 1ontinuer B faire a>an1er le moteurD >ous de>e[ remettre le 1ode )G8M et ainsi de suite+ &""EL"I)L 'E LE P&6 PE7'7E 'E P&6 ++++ Par eGempleD pour faire 10 pasD en fon1tion de l2endroit ou >ous >ous Ites arrIt-D >ous de>e[ mettre la su11ession de 1ode : 0G8MD 0G4MD 0G1MD 0G2M+ 0G8MD 0G4MD 0G1MD 0G2M+ 0G8MD 0G4M )u 0G4MD 0G1MD 0G2M+ 0G8MD 0G4MD 0G1MD 0G2M+ 0G8MD 0G4MD 0G1M )u 0G1MD 0G2M+ 0G8MD 0G4MD 0G1MD 0G2M+ 0G8MD 0G4MD 0G1MD 0G2M+ )u 0G2M+ 0G8MD 0G4MD 0G1MD 0G2M+ 0G8MD 0G4MD 0G1MD 0G2MD 0G8M+ Pour faire tourner le moteur dans l2autre sensD il faut donner au port' la su11ession de 1odes : 0G2MD 0G1MD 0G4MD 0G8M puis de nou>eau 0G2MD 0G1MD 0G4M +++ 'euG questions peu>ent se poser+ : _uand on fait la su11ession de pas : 0G8MD 0G4MD 0G1MD 0G2M o\ se pla1e le moteur sur son aGe 4 Rponse 7 Pour un moteur B 48 pasD sur un des 12 pas 1orrespondant au 1ode 0G8M _uand on fait la su11ession de pas : 0G8MD 0G4MD 0G1MD 0G2MD 1omment sa>oir dans quel sens se d-pla1e le moteur %sens Eoraire sens antiEoraire* 4 Pour r-pondre B 1ette questionD il faut essa(er sur le moteur+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 00

Le PIC 18F4520 et sa programmation en C

5 0

Chapitre -

(es +imers

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 01

Le PIC 18F4520 et sa programmation en C

*.1

rincipe de 4onctionnement des ,imers

"ous les mi1ro1ontr3leurs ont un ou plusieurs "imers pour g-rer le temps+ Le PIC 19F800 possCde 5 "imers: le "imer 0D le "imer 1D le "imer 2+ (e !C 1"#$%2& possde $ ,imers : le "imer 0D le "imer 1D le "imer 2 et le "imer 5+ 1n ,imer est un circuit priphri6ue %in1lut dans la PIC* lan1- par le programme et qui 1ompte un nom#re pr-d-fini dAimpulsions du quart[+ Ces impulsions peu>ent pro>enir : 'u quart[ 1aden=ant le mi1ro1ontr3leur : on parle alors d2un fon1tionnement en 1ompteur de temps+ '2une entr-e ")7 du pi1 %eGemple 7&4 pour le "imer0D 7C0 pour le "imer 1* on parle alors d2un fon1tionnement en 1ompteur d2->-nement eGt-rieur+ _uand 1e nom#re dAimpulsion est atteintD un drapeau %flag en anglais* se l?e+ !ne interruption peut Itre -galement g-n-r-e %1f+ 1Eapitre sur les interruptions*+ Les "imers ont presque tous le mIme fon1tionnement : Ils ont tous un compteur %1ounter en anglais*D un prEcompteur %pres1aler en anglais*D et parfois un postEcompteur L2Eorloge du mi1ro1ontr3leur est pr- di>is-e %en anglais Pres1aler* pour o#tenir une fr-quen1e plus lente+ La sortie du pr- 1ompteur attaque ensuite un 1ompteur+ 'ans le 1as des PICD l2Eorloge du quart[ n2est pas dire1tement 1onne1t-e au pr- 1ompteur mais passe par un di>iseur par 4+

)n rCgle le 1ompteur B une ?aleur initiale et on attend qu2il atteigne une ?aleur 4inale+ Lorsque le 1ompteur atteint 1ette >aleur finaleD un indi1ateur %flag en anglais* de>ient a1tif+ Le temps mis par le 1ompteur pour faire le>er le flag est -gal B :
&= 1 ; *uart9 Jaleur du pr- 1ompteur fiGe Jaleur du pr- 1ompteur r-gla#le Lom#re dAimpulsions B 1ompter

Certains "imers utilisent pour le 1ompteur le prin1ipe des compteursD dAautres 1euG des dcompteurs.

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 02

Le PIC 18F4520 et sa programmation en C

*.1.1

les compteurs :

Il en eGiste deuG t(pes: Ceu5 6ui partent d2une ?aleur prd4inie pour arri?er la ?aleur ma5. C2est le cas des ,imer &0 1 et ' du !C1"#$%2&+ Le "imer 0 peut Itre utilis- en mode 8 #its %la >aleur maG est alors 0GFF*D mais -galement en mode 19 #its pour o#tenir des temps plus longs %>aleur maG 0GFFFF*+ 'ans le 1as du "imer 1 et 5D la >aleur maG est 0GFFFF+ CAest un "imer 19 #its+

'ans le 1as du ,imer & en mode " >itsD la formule du temps de>ient :
&= 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le 259 Jaleur initiale

'ans le 1as du ,imer 1 ou du ,imer & en mode 16 >its9D la formule du temps de>ient :
&= 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le 95559 Jaleur initiale

Ceu5 6ui partent de & pour arri?er une ?aleur prd4inie. Cest le cas du ,imer2 du !C1"#$%2&+ La >aleur maG est 0GFF +C2 est un "imer 8 #its+

'ans le 1as du ,imer 2D la formule du temps de>ient :


&= 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le Jaleur d-finie

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 05

Le PIC 18F4520 et sa programmation en C

*.1.2

(es dcompteurs

)n fiGe une >aleur de d-part et on d-1ompte ;usquAa [-ro+ Ce t(pe de "I,E7 est utilis- dans les mi1ro1ontr3leurs 6"9 de 6" ,i1roele1troni1+

*.2
*.2.1

(e ,imer & du !C 1"#$%2& en modes " >its et compteur de temps


(e principe de 4onctionnement du ,imer en compteur de temps

Lous a>ons >u que le "imer0 est #as- sur le prin1ipe :

Remar*ue 7 Le pr- 1ompteur ne peut prendre que des >aleurs dis1rCtes %1D 2D 4D 8D 19D 52D 94D 128D 259*+ Calcul du temps ma5imum : )n doit prendre la >aleur de pr- 1omptage maGimale et faire partir le 1ompteur B partir de 0+
&= 1 ; *uart9 4 259 2590

&>e1 un quart[ de 4,.[

&=

1 =95D559 ms 4000000 4 259 2590

our calculer un temps de 1&ms : Pour trou>er les >aleurs B mettre dans le pr- 1ompteur et dans le 1ompteurD il nous faut r-soudre lA-quation sui>ante :
10 ms = 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le 259 Jaleur initiale 10 ms ; *uart9 4
Page 04

soit Jaleur du pr- 1ompteur r-gla#le Jaleur B 1ompter =

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Le PIC 18F4520 et sa programmation en C

&>e1 un quart[ de 4 ,.[D on o#tient la formule sui>ante :

Jaleur du pr- 1ompteur r-gla#le Jaleur B 1ompter =10 000


Jous a>e[ deuG in1onnues et une formuleD il faut imposer une des deuG >aria#les et trou>er lAautre+ Il est pr-f-ra#le de fiGer le pr- 1ompteur puisqu2il ne peut prendre que des >aleurs dis1rCtes+ Jaleur B 1ompter 10 000 5 000 2 500 1 250 925 512D5 159D25 08 D125 5:D0925 Lom#re d2impulsions B 1ompter
Jaleur entiCre 1omprise entre 0 et 255

Pr- 1ompteur 1 2 4 8 19 52 94 128 259

Jaleur initiale B fiGer V %259 8 nom#re d2impulsions B 1ompter*

Impossi#le Impossi#le Impossi#le Impossi#le Impossi#le Impossi#le 159 08 5:

100 108 210

)n remarque quAil est possi#le de prendre trois 1ouples de >aleurs+ (e6uel prendreCC G Pour le sa>oirD il faut faire le 1al1ul de la tempo r-elle et prendre le 1ouple de >aleur qui sAappro1Ee le plus de 10ms "V 1<4 000 000 < %4 h 94 h 159 * V : :84 us "V 1<4 000 000 < %4 h 128 h 08 * V : :84 us "V 1<4 000 000 < %4 h 259 h 5:* V : :84 us )n peut prendre n2importe quel 1ouple de >aleur+ &u1un 1ouple de >aleur n2est parfait+ En rCgle g-n-raleD on 1Eoisit le 1ouple a(ant le plus fai#le pr- 1ompteur parmi tous les 1ouples possi#les+ *.2.2 (e timer& en .el

Le "imer 0 est l-gCrement plus 1ompleGe que 1e que nous a>ons d-1rit dans le 1Eapitre pr-1-dent+ La figure sui>ante r-1apitule son fon1tionnement+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 05

Le PIC 18F4520 et sa programmation en C

3.2.2.1

s!lection de l>#orlo$e

Le timer0 possCde deuG sour1es d2Eorloges : 6oit l2Eorloge du PIC %en g-n-ral un quart[* di>is-e par 4+ 6oit a>e1 une Eorloge eGterne 1onne1t-e sur la #ro1Ee 7&4 < "0CHI+ %l2-tude du 1ompteur programm- en 1ompteur d2->-nement sera >u un peu plus tard* Le 1EoiG entre 1es deuG Eorloges se fait B l2aide du #it "0C6+ Pour Itre 1onforme B nos eGpli1ations du 1Eapitre pr-1-dentD nous de>ons mettre "06C B 0 pour >alider l2Eorloge du PIC %_uart[*+ ?it "06C V 0 Remar*ue 7 Compte tenu du fait que nous n2utilisons pas l2entr-e 7&4D on peut mettre n2importe quelle >aleur dans le #it "06E+ En effetD le #it "06E permet de s-le1tionner le front %montant ou des1endant* du signal eGterne pour in1r-menter le "imer0+ ?it "06E quel1onque

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 09

Le PIC 18F4520 et sa programmation en C

3.2.2.2 Le pr!-compteur 8prescaler: Le #it P6& permet dAutiliser le pr- 1ompteur+


H (learin! t e ) 7 - bit assi!ns t e prescaler to t e @imer* module I 4doc constructeur pa!e 12+5

En pla=ant un 0 dans le #it P6& >ous >alide[ le pr- 1ompteur du "imer0D en pla=ant un 1 >ous passe[ outre le pr- 1ompteur %il nA( a don1 pas de pr- di>ision dans 1e 1as lB*+ Note 7 la figure 55H5 montrant le schma bloc du &imer> prsente donc une erreur au ni/eau du multiple0eur 6 /ers 5 contrIl par le bit P! (in/ersion du > et du 5). 3.2.2.3 Sync#ronisation

Le signal sortant du multipleGeur est ensuite s(n1Eronis- a>e1 l2Eorloge du pi1+ Cette s(n1Eronisation est utile uniquement si on utilise une Eorloge eGterne+ En effetD s(n1Eroniser une Eorloge a>e1 elle mIme n2a au1un sens a 3.2.2.4 Les re$istres du timer= "ous les registres ou les #its utilis-s pour le "imer 0 sont indiqu-s page 125 de la datasEeet du PIC+

Il ( a don1 1inq registres qui nous int-ressent : ",70L : 1Aest le registre de 1omptage utilis- en mode 8 #its+ CAest don1 dans 1e registre que nous allons rentrer la >aleur de d-part de notre 1ompteur+ ",70. : #its de poids forts du registre de 1omptage en mode 19 #its IL"C)L seuls les #its 0D 9D 5 et 2 sont utiles pour le "imer 0 %1e sont les seuls non gris-s* 'ans 1e 1EapitreD nous ne nous int-resserons quAau #it 2 appel- "0IF et qui 1orrespond au flag permettant de tester la fin du 1omptage+ Les #its 0D 9 et 5 seront >us lors du 1Eapitre sur les interruptions+ "0C)L : 'ans 1e registre 1Eaque #it a un r3le diff-rent+ (e re)istre ,&C-K La page 125 de la do1umentation du PIC nous informe sur l2utilisation des diff-rents #its :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 00

Le PIC 18F4520 et sa programmation en C

*.2.'

35emple de pro)ramme a?ec le ,!M3. &.

3.2.3.1 (emporisation max a5ec un (imer = 8en mode ; bits: -0emple 5 7 Faire 1lignoter une LE' 1onne1t-e sur 7?1 a>e1 une temporisation maGimum 1r--e par le "imer0+ 'ans le 1Eapitre pr-1-dentD nous a>ons trou>- un temps de 95D559 ms pour une >aleur initiale du 1ompteur de [-ro et un pr- 1ompteur de 259D a>e1 un quart[ de 4 ,.[+ >oid tempoqtimer0 % >oid * << tempo de '=2=D'ms a/ec le timer> l "0C)L V 0GC0c << configuration du timer> 7:bits2 prHdi/iseur 1 6=' ",70L V 0c << initialisation du registre de comptage ",70IF V 0c << initialisation du drapeau li au timer> /Eile % ",70IF VV 0 *c << attente de la le/e du drapeau n >oid main % >oid * l "7I6?+1 V 0c << RB5 configur en sortie /Eile % 1 * << boucle infinie l L&"?+1 V aL&"?+1c << on change l'tat de RB5 tempoqtimer0%*c << tempo de '=2=D' ms n n
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 08

Le PIC 18F4520 et sa programmation en C

-0emple 6 7 ,Ime o#;e1tif mais a>e1 une temporisation de 10 ms a>e1 le "imer 0+ >oid tempoqtimer0 % >oid * << tempo de 5>ms a/ec le timer> l "0C)L V 0GC5c << configuration du timer> 7:bits2 prHdi/iseur 1 '< ",70L V 100c << initialisation du registre de comptage ",70IF V 0c << initialisation du drapeau li au timer> /Eile % ",70IF VV 0 *c << attente de la le/e du drapeau n >oid main % >oid * l "7I6?+1 V 0c << RB5 configur en sortie /Eile % 1 * << boucle infinie l L&"?+1 V aL&"?+1c << on change l'tat de RB5 tempoqtimer0%*c << tempo de 5> ms n n

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 0:

Le PIC 18F4520 et sa programmation en C

*.' (e ,imer 1
*.'.1 rincipe de 4onctionnement du timer1 en compteur de temps

Le "imer 1 fon1tionne sur le mIme prin1ipe que le "imer 0+ Il peut Itre utilis- en "imer ou en 1ompteur+ Lous nous int-resserons pour lAinstant au mode "imer+ _uelles sont les diff-ren1es a>e1 le timer 0 4 le pr- 1ompteur ne peut prendre que quatre >aleurs : 1D 2D 4 ou 8+ le 1ompteur est un 1ompteur 19 #its+

Calcul du temps ma5imum )n doit prendre la >aleur de pr- 1omptage maG et faire partir le 1ompteur B partir de 0 :
&= 1 ; *uart9 a>e1 un quart[ de 4 ,.[ 4 8 95559 0
&= 1 = 0D524288s 4000000 4 8 95559 0

Pour 1al1uler un temps de M msD il faut re1Eer1Eer le 1ouple pr- 1ompteurh1ompteur le plus performant+ 6i plusieurs 1ouples sont possi#lesD la solution idoine sera o#tenue a>e1 un pr1ompteur le plus petit possi#le+ A,,3K,!-K Pour le "imer 0 en mode 8 #itsD pour trou>er la >aleur de ",70 il fallait faire ",70 V 259 nom#re B 1ompter+ Pour le "imer 1D il faut pro1-der de la mIme maniCre+ ,ais la >aleur trou>-e est sur 19 #its+ LAo1tet de poids fort sera mis dans le registre ",71. et lAo1tet de poids fai#le dans ",71L+ 35emple : Calcul pour un temps de &0%s a>e1 un quart[ de 4 ,.[ Pour trou>er les >aleurs B mettre dans le pr- 1ompteur et dans le 1ompteurD il nous faut r-soudre lA-quation :
0D5 s= 1 4000000 4 Jaleur du pr- 1ompteur r-gla#le 95559 Jaleur initiale

)n trou>e un pr- di>iseur de 8 et une >aleur initiale de 5059 soit 0G0?'C+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 80

Le PIC 18F4520 et sa programmation en C

*.'.2

(e ,imer 1 en .el

La figure sui>ante r-1apitule son fon1tionnement :

3.3.2.1

S!lection de l>#orlo$e

Le "imer1 possCde deuG sour1es d2Eorloge : 6oit l2Eorloge du PIC %en g-n-ral un quart[* di>is-e par 4+ 6oit a>e1 une Eorloge eGterne 1onne1t-e sur la #ro1Ee 7C0 <"1CHI ou les #ro1Ees 7C) et 7C1 + Lous >errons dans un futur 1Eapitre 1omment utiliser 1ette #ro1Ee+

Le 1EoiG entre 1es deuG Eorloges se fait B l2aide du #it ,M.1CS+ Pour Itre 1onforme B nos eGpli1ations du 1Eapitre pr-1-dentD nous mettons ",71C6 B 0 pour >alider l2Eorloge du PIC %_uart[*+ ?it ",71C6 V 0 .emar6ue : Compte tenu que nous n2utilisons pas l2entr-e 7C0D on peut mettre n2importe quelle >aleur dans le #it "1)6CEL+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 81

Le PIC 18F4520 et sa programmation en C

?it "1)6CEL quel1onque 3.3.2.2 Le pr!-compteur Le pr- 1ompteur est automatiquement >alid-+ Le 1EoiG du pr- 1ompteur est fait a>e1 les #its "1CHP61 et "1CHP6)+ 3.3.2.3 La sync#ronisation

'ans le 1as du "imer 0D le signal sortant du multipleGeur -tait ensuite s(n1Eronis- a>e1 l2Eorloge du PIC+ Cette s(n1Eronisation -tait utile uniquement si on utilise une Eorloge eGterne+ 'ans le 1as du "imer 1D >ous pou>e[ 1Eoisir si >ous d-sire[ s(n1Eroniser >otre 1ompteur ou non+ 3.3.2.4 Les re$istres du timer1 "ous les registres ou les #its utilis-s pour le "imer 1 sont indiqu-s dans la datasEeet du PIC :

Il ( a don1 sept registres qui nous int-ressent : ,M.1( et ,M.1:D 1Aest dans 1es registres que nous allons rentrer la >aleur de d-part de notre 1ompteur+ !K,C-KD seuls les #its 9 et 0 sont utiles pour le "imer 1 %1e sont les seuls non gris-s*+ Ces #its seront >us lors du 1Eapitre sur les interruptions+ !31D seul le #it 0 est utile pour le "imer 1 %12est le seul non gris-* Ce #it sera >u lors du 1Eapitre sur les interruptions+ !.1D seul le #it 0 est utile pour le "imer 1 %12est le seul non gris-* Ce #it %,M.1!#* 1orrespond au 4la) permettant de tester la fin du 1omptage+ ,1C-K : 12est le registre de 1onfiguration du "I,E7 1+ ! .10 seul le #it 0 est utile pour le "imer 1 %12est le seul non gris-* Ce #it sera >u lors du 1Eapitre sur les interruptions+ Il ne nous reste plus quAun registre B 1onfigurer "1C)L : #it 0 V 7'19 permet de tra>ailler sur le registre de 1omptage dire1tement sur 19 #its #it 9 V "17!L
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 82

Le PIC 18F4520 et sa programmation en C

#its 5 et 4 permettent de s-le1tionner le pr- 1ompteur+ le #it 0 V ",71)L est le #it de mar1Ee<arrIt+ le #it 1 V ",71C6 permet de s-le1tionner l2Eorloge du quart[ plut3t que les entr-es de 1omptage+ le #it 2 V "16XLC est ignor- si ",71C6 est positionn- B 0+

*.'.'

35emple de pro)ramme

Faire 1lignoter la LE' 1onne1t-e sur 7?1 B une fr-quen1e de 1.[ %500ms B lA-tat allum-D 500 ms B lA-tat -teinte*+ La temporisation sera r-alis-e a>e1 le "imer 1+ 'ans le 1oursD nous a>ons trou>- une >aleur de 0G0?'C pour ",71. et ",71L+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 85

Le PIC 18F4520 et sa programmation en C

>oid tempoqtimer1 % >oid * << tempo de =>>ms a/ec le timer5 l "1C)L V 0G51c << configuration du timer5 ",71. V 0G0?c << initialisation du registre de comptage ",71L V 0G'Cc 88 initialisation du registre de comptage ",71IF V 0c << initialisation du drapeau li au timer5 /Eile % ",71IF VV 0 *c << attente de la le/e du drapeau n >oid main % >oid * l "7I6?+1 V 0c << RB5 configur en sortie /Eile % 1 * << boucle infinie l L&"?+1 V aL&"?+1c << on change l'tat de RB5 tempoqtimer1%*c << tempo de =>> ms n n

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 84

Le PIC 18F4520 et sa programmation en C

*.$ (e ,imer 2
*.$.1 rincipe de 4onctionnement du ,imer 2

Il est l-gCrement diff-rent des "imers 0D 1 et 5D puisque le d-#ut de 1omptage est o#ligatoirement 0G00 et que la fin de 1omptage est la >aleur B entrer+ Il possCde 1omme les trois autres "imer un pr- 1ompteur fiGeD dAun pr- 1ompteur >aria#le %5 >aleurs possi#les : 1D 4 et 19*+ CAest un 1ompteur 8 #its+

La formule permettant de 1al1uler la dur-e de la temporisation est :


&= 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le Jaleur d-finie

Pour une dur-e maGimale a>e1 un quart[ de 4,.[ :


&= 1 = 4D0:9 ms 4000000 4 19 259

LAoriginalit- de 1e "imer est de ne pas for1-ment faire le>er le flag B la fin dAun 1omptageD mais de pou>oir attendre plusieurs s-quen1es a>ant de le>er le flag+ Le nom#re de s-quen1es B 1ompter est B >alider dans le postEcompteur+ "outes les >aleurs entre 1 et 19 sont permises pour le post 1ompteur+ EGemple pour un post 1ompteur de 4 :

La temporisation maG est de :

",&M V 19 h 4D0:9 ms soit 95D559 ms

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 85

Le PIC 18F4520 et sa programmation en C

La formule permettant de 1al1uler la dur-e de la temporisation est :


& = Jaleur du post 1ompteur 1 ; *uart9 4 Jaleur du pr- 1ompteur r-gla#le Jaleur d-finie

*.$.2

(e ,imer 2 en rel

La figure sui>ante r-1apitule son fon1tionnement %page 154 de la do1 1onstru1teur* :

3.4.2.1 S!lection de l>entr!e. Le timer2 ne propose pas dAautre entr-e que Fos1<4+ 3.4.2.2 Le pr!-compteur. Le "imer2 ne propose que trois >aleurs pour le pr- 1ompteur %1D 4 et 19*+ 3.4.2.3 La sync#ronisation. LAEorloge pro>enant o#ligatoirement du quart[D il nAest pas n-1essaire de s(n1Eroniser le "imer+ 3.4.2.4 Les re$istres du (imer 2 Il ( a don1 1inq registres qui nous int-ressent %page 154 de la do1 1onstru1teur* :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 89

Le PIC 18F4520 et sa programmation en C

IL"C)L seuls les #its 9 et 0 sont utiles pour le "imer 2 %1e sont les seuls non gris-s*+ Ces #its seront >us lors du 1Eapitre sur les interruptions+ PIE1 : 6eul le #it 1 est utile pour le "imer 2 %12est le seul non gris-*+ Ce #it sera >u lors du 1Eapitre sur les interruptions+ PI71 : 6eul le #it 1 est utile pour le "imer 2 %12est le seul non gris-*+ Ce #it 1orrespond au flag permettant de tester la fin du 1omptage+ "2C)L : 12est le registre de 1onfiguration du "imer 2+ ",72 : 12est le registre de 1omptage du "imer 2+ P72 : Il faudra entrer dans 1e registre la >aleur maG de 1omptage %Jaleur d-finie*+

Il ne nous reste plus quAun registre B 1onfigurer : "2C)L

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 80

Le PIC 18F4520 et sa programmation en C

*.$.'

35emple de pro)ramme

Faire 1lignoter la led 1onne1t-e sur 7?1 B une fr-quen1e de 10 .[ %50ms B lA-tat allum-eD 50 ms B lA-tat -teinte*+ La temporisation sera r-alis-e a>e1 le "imer 2+ !ne mau>aise fa=on de programmer serait dA-1rire le programme de la mIme maniCre que pour les "imers 0 et 1+
>oid tempoqtimer2 % >oid * << tempo de =>ms a/ec le timer6 l P72 V 255c << Jaleur dfinie de fin de comptage "2C)L V 0G0Fc << configuration du timer6 ",72IF V 0c << initialisation du drapeau li au timer6 /Eile % ",72IF VV 0 *c << attente de la le/e du drapeau n >oid main % >oid * l "7I6?+1 V 0c << RB5 configur en sortie /Eile % 1 * << boucle infinie l L&"?+1 V aL&"?+1c << on change l'tat de RB5 tempoqtimer2%*c << tempo de => ms n n

Le timer2 part de [-ro pour 1ompter ;usquAB la donn-e pla1-e dans P72+ Lorsque le 1ompteur est -gal B P72D il est automatiquement re1Earg- B la >aleur initiale 0G00+ !ne programmation plus 1oE-rente serait don1 :
>oid tempoqtimer2 % >oid * << tempo de =>ms a/ec le timer6 l ",72IF V 0c << initialisation du drapeau li au timer6 /Eile % ",72IF VV 0 *c << attente de la le/e du drapeau n >oid main % >oid * l "7I6?+1 V 0c << RB5 configur en sortie P72 V 255c << Jaleur dfinie de fin de comptage "2C)L V 0G0Fc 88 configuration du timer6 /Eile % 1 * << boucle infinie l L&"?+1 V aL&"?+1c << on change l'tat de RB5 tempoqtimer2%*c << tempo de => ms n n

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 88

Le PIC 18F4520 et sa programmation en C

*.%

(es 4onctions particulires des ,imers &0 1 et '

Les "imers 0D 1 et 5 peu>ent Itre utilis-s en 1ompteur d2->-nements eGt-rieurs+ -0emples dButilisation 7 Compteur de piC1es dans une ma1Eine industrielle &ffi1Eage de la >itesse d2un >-Ei1ule

*.%.1

(e ,imer & en compteur d2?nement e5terne

3.+.1.1 S!lection de l>entr!e


Pour utiliser le "imer 0 en 1ompteur dA->-nement eGterne il faut appliquer le signal sur la #ro1Ee du PIC asso1i-e au "imer0D ligne 7&4<"0CHI+ Pour pou>oir utiliser 1ette #ro1Ee en entr-e dA->-nementD il faut en premier 1onne1ter la ligne 7&4<"0CHI en entr-e %agir sur "7I6&+4*+ 'ans un deuGiCme tempsD il faut faire en sorte que le 1ompteur ne soit pas in1r-ment- par les impulsions pro>enant du quart[ mais de la #ro1Ee 7&4<"0CHI+ Pour 1elaD >ous de>e[ mettre un 1 dans le #it "06C %1f do1 page 125*+

'ans un troisiCme tempsD >ous de>e[ 1Eoisir le front du signal qui in1r-mentera le "I,E7+ Pour 1elaD >ous de>e[ 1onfigurer le #it "06E : &>e1 "06E V 0D les fronts montant attaquant le "imer0 1orrespondent auG fronts montant de 7&4 < "0CHI+ &>e1 "06E V 1D les fronts montant attaquant le "imer0 1orrespondent auG fronts des1endant de 7&4 < "0CHI+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 8:

Le PIC 18F4520 et sa programmation en C

3.+.1.2 le pr!-compteur
Le pr- 1ompteur mar1Ee de la mIme maniCre que pour le "imer en 1ompteur de temps+

3.+.1.3 Sync#ronisation
Le "imer 0 fon1tionne o#ligatoirement en 1ompteur dA->-nement synchrone a>e1 lAEorloge du quart[ :

Ce1i impose deuG 1Eoses : Le "imer 0 ne peut pas g-n-rer dAinterruption en mode sommeil %6LEEP*+ En effetD dans 1e modeD le s(stCme arrIte lAEorloge du s(stCme+ !ne restri1tion sur la fr-quen1e maG du signal B appliquer sur la ligne 7&4 < ")CHI+ Il faut o#ligatoirement que le signal soit 2 fois plus lent que le signal du quart[ a>e1 un pr1ompteur de 1+

*.%.2

(e ,imer 1 en compteur d2?nement e5terne

3.+.2.1 S!lection de l>entr!e


La #ro1Ee du PIC asso1i-e au "imer 1 est la ligne 7C0<"1)6)< "15CHI %1f+ figure 12+1*+

Remar*ue 7 La ligne 7C1 < "1)6I est aussi asso1i-e au "imer 1D mais ne ;oue pas de r3le dans le 1omptage dA->-nements eGt-rieurs+ Compte tenu de la remarque 1i dessusD il faut d-1onne1ter la ligne 7C1 < "1)6I en in>alidant la porte logique in>erseuse+

?it "I)6CEL V 0

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :0

Le PIC 18F4520 et sa programmation en C

Comme pour le "imer 0D il faut in>alider lAEorloge du quart[ et >alider le "imer 1 1omme 1ompteur dA->-nement+ Ce1i est le r3le du #it ",71C6+

3.+.2.2 Le pr!-compteur
Le pr- 1ompteur mar1Ee de la mIme maniCre que pour le "imer en 1ompteur de temps+

3.+.2.3 Sync#ronisation
'euG options se pr-sentent : soit >ous mette[ le "imer en mode s(n1Erone ou en mode as(n1Erone B lAaide du #it "16XLC+ En mode s(n1EroneD >otre 1ompteur tra>aillera 1omme le "imer 0D a>e1 les deuG mImes restri1tions sur la fr-quen1e maG du signal et sur le mode sommeil+ En mode as(n1EroneD >otre 1ompteur fon1tionnera en mode sommeil+

*.%.'

,imer 1 a?ec un 6uartH

Il est possi#le de 1onne1ter un quart[ sur le "imer 1 et de 1ompter les impulsions de 1elui 1i pour g-n-rer des temps plus pr-1is 1omme par eGemple pour 1r-er une Eorloge de se1ondesD minutesD Eeures ou un 1EronomCtre+ our6uoi mettre un deu5ime 6uartH G La prin1ipale raison est l2utilisation en mode sommeil %6LEEP*+ 'ans 1e modeD le quart[ prin1ipal est inEi#-eD il est don1 impossi#le de faire une temporisation pour 1ompter du temps+ Le "imer 1 pou>ant tra>ailler en mode as(n1EroneD 1elui 1i est in1r-ment- par les impulsions du deuGiCme quart[+ En g-n-ral on prend un quart[ de 52P.[ %plus pr-1is-ment 52+098 P.[* que l2on di>ise par 52 098 pour a>oir des temporisations de 1s+ Remar*ue 7 52098 est un multiple de 2 %52098 V 2E15*+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :1

Le PIC 18F4520 et sa programmation en C

*.6 ,emporisation rellement prcise


*.6.1 ro>lmati6ue

7eprenons l2eGemple du 1lignotement dAune LE' a>e1 une "imer : -0emple 5 7 Faire 1lignoter une LE' 1onne1t-e sur 7?1 a>e1 une temporisation maGimum 1r--e par le "imer0+ Lous a>ons trou>- un temps de 95D559 ms pour une >aleur initiale du 1ompteur de [-ro et un pr- 1ompteur de 259D a>e1 un quart[ de 4 ,.[+

Lous a>ons >u dans le 1Eapitre pr-1-dent 1omment utiliser ,PL&?6I,+ 6imulons le programme 1i dessous et >-rifions a>e1 ,PL&?6I, la 1oE-ren1e de nos 1al1uls+ Pour 1elaD nous allons pla1er un point dAarrIt %#reaPpoint* sur la ligne L&"?+1V a L&"?+1 + Le programme >a don1 mesurer le temps d2une #ou1le+
Le r-sultat nous donne :

Lous a>ons appliqu- les 1onsignes du 1oursD alors pourquoi o#tenons nous un temps de 95548 Ts et pas de 95559 TsD soit une diff-ren1e de 12 Ts %erreur d2en>iron 0D02 r* 4

35plication : 7egardons la 1ompilation en assem#leur+ 'ans le programme prin1ipalD la #ou1le est 1ompil-e sous la forme :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :2

Le PIC 18F4520 et sa programmation en C

do l L&"?+1 V aL&"?+1c "empoq"imer0%*c n /Eile %1*c

?"G 0Gf8aD 0G1D &CCE66 7C&LL 0G4 ?7& 0G14

Le sous programme "empoq"imer0%* est 1ompil- sous la forme : >oid "empoq"imer0%>oid* l ",70L V 0c "0C)L V 0GC0c ",70IF V 0c /Eile %",70IF VV 0*c n
CL7F ",70LD &CCE66 ,)JLK 0G10 ?CF IL"C)LD 0G2D &CCE66 ?"F66 IL"C)LD 0G2D &CCE66 ?7& 0G0C 7E"!7L 0

Pour 1al1uler le temps de la temporisationD il faut a;outer le temps des diff-rentes instru1tions+
-0emple 6 7 1r-ation d2une temporisation de 10 ms a>e1 un "imer 0 :

&>e1 les 1odes trou>-s dans le 1EapitreD on a>ait d-;B >u quAon ne pou>ait o#tenit quAune temporisation de ::84Ts+ )r la simulation nous montre que nous o#tenons :::8 Ts+ 6oit une erreur infimeD mais une erreur+ *.6.2 Comment remdier au pro>lme.

En diminuant la >aleur initiale pr-sente dans le registre ",70L nous allons augmenter le temps total dAeG-1ution de la #ou1le+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :5

Le PIC 18F4520 et sa programmation en C

Lous o#tenons maintenant une temporisation trop longue %10091 Ts*+ &u lieu de diminuer la >aleur initiale de ",70LD nous allons ra;outer des fon1tions nop%*D nous pou>ons o#tenir une temporisation de 10000 Ts pr-1is-ment :

A?ec les ,imer10 ,imer2 et ,imer' les pro>lmes sontEils les m[mes G -ui \ Prene[ un eGemple et tester >ous mIme+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :4

Le PIC 18F4520 et sa programmation en C

Chapitre "

(es Interruptions

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :5

Le PIC 18F4520 et sa programmation en C

".1 Gnralit sur les interruptions


"rCs >iteD lorsque >ous aller sa>oir programmer des mi1ropro1esseursD >ous aller de>oir utiliser les interruptions+ "ous les 1ir1uits p-ripE-riques %"imer0D "imer1D "imer2^^* 1ontenus dans le PIC sont sus1epti#les de g-n-rer une interruption+ "rCs #ien^+mais 12est quoi une interruption 4 C2est un ->-nement eGt-rieur qui >a d-tourner le programme de son fon1tionnement normalD pour eG-1uter un programme dit d2interruption permettant de g-rer l2->-nement+ !ne fois le programme d2interruption finiD le s(stCme retourne dans le programme prin1ipal B l2instru1tion sui>ante +

_uand l2interruption se produit : Le mi1ro1ontr3leur finit l2instru1tion en 1ours %l2instru1tion en assem#leurD pas en C* 6au>egarde l2adresse sui>ante du programme prin1ipal 6au>egarde le 1onteGte %h* EG-1ute le programme li- au p-ripE-rique demandant l2interruption+ 7estitue le 1onteGte %h* 7etourne au programme prin1ipal B l2adresse sui>ante+

".2 (es interruptions sur le !C 1"#$%2&


".2.1 35emple de pro)ramme.

1ne 4ois nest pas coutume0 nous allons commencer par un e5emple dcriture dune interruption en lan)a)e C.

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :9

Le PIC 18F4520 et sa programmation en C

Lous allons essa(er de faire 1lignoter une LE' a>e1 temporisation g-r-e par le "imer0 en interruption+ La LE' restera allum-e ou -teinte pendant 95D559 ms %soit le temps maGimum possi#le a>e1 le "imer 0 et un quart[ de 4 ,.[*+ La LE' B faire 1lignoter sera 7?0+ Le programme en C sera :
fin1lude Sint18GGG+ES fpragma origin 0G8 interrupt Fon1tionqInterruption%>oid* l intqsa>eqregisters if % ",70IF * l ",70L V 0c ",70IF V 0c L&"?+0 Va L&"?+0c n intqrestoreqregisters << Restauration du conte0te n >oid main% >oid* l L&"? V 0G00c "7I6? V 0#11111110c << RB> en sortie2 le reste en entre "0C)L V 0GC0c ",70L V 0c ",70IE V 1c << autorisation des interruptions li-es au timer0 GIE V 1c << autorisation des interruptions %glo#al* /Eile %1*c << boucle infinie *ui ne fait rien n << :bits2 prHcompteur 1 6=' << !au/egarde du conte0te

& prioriD 1e n2est pas le programme prin1ipal qui fait 1ommuter la LE' 1onne1t-e sur 7?0 puisque le programme prin1ipal est une #ou1le infinie qui ne 1omporte au1une instru1tion : /Eile %1*c &>ant dAatteindre 1ette #ou1le infinieD il faut 1onfigurer le port ? et plus sp-1ialement la ligne 7?0 en sortie pour allumer la LE' : L&"? V 0G00c "7I6? V 0#11111110c

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :0

Le PIC 18F4520 et sa programmation en C

Il faut 1onfigurer le timer0 a>e1 un pres1alaire %pr- 1ompteur* r-gl- B 259 et ",70 B [-ro pour o#tenir le temps maGimum pour le "imer : "0C)L V 0GC0c ",70L V 0c Il faut 1onfigurer le "imer0 en interruption et don1 >alider le #it GIE et le #it "0IE : ",70IE V 1c GIE V 1c 8ans le sous pro)ramme dinterruption : )n sau>egarde le 1onteGte : intqsa>eqregisters )n regarde ensuite si l2interruption est due au "imer0 ou B une autre sour1e d2interruption+ Pour 1ela on anal(se l2-tat du #it ",70IF : if % ",70IF * l 6i l2interruption pro>ient du timer0D )n relan1e le timer0 : ",70L V 0c ",70IF V 0c )n 1Eange l2-tat de la ligne 7?0 : L&"?+0 V aL&"?+0c )n restitue le 1onteGte : intqrestoreqregisters

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page :8

Le PIC 18F4520 et sa programmation en C

".2.2

(es >its de ?alidation et les 4la)s associs

Le pi1 18F4520 dispose de 20 sour1es dAinterruptions+ Les 20 sour1es dAinterruptions ont toutes un #it permettant de les >alider indi>iduellement et un flag %#it* permettant de re1Eer1Eer dAo\ pro>ient lAinterruption+ Ces 40 #its sont a11essi#les dans les registres IL"C)LD IL"C)L5D PIE1D PIE2D PI71 et PI72 %page :5 B :: de la datasEeet du PIC*+ Par eGempleD pour le "imer0D le #it permettant de >alider l2interruption est ",70IE et le flag est ",70IF+ Ces deuG #its sont dans le registre IL"C)L+ 'Aune maniCre g-n-raleD il est trCs fa1ile de r-parer les #its permettant de >alider une interruptionD 1ar ils se finissent tous par les lettres !3 qui signifient Y !nterrupt 3na>le Z %&utorisation dAinterruption*+ 'e mIme pour les drapeau %flag* asso1i-sD ils se terminent tous par !# qui signifie Y !nterrupt #la) Z %drapeau dAinterruption*+ Compl-ter le ta#leau 1i dessous qui re1ense une partie des sour1es dAinterruptions :
p-ripE-rique nom du flag 1 2 5 4 5 9 0 8 : 10 11 12 14 15 "imer 0 "imer 1 "imer 2 IL"0 P)7"? C&L %1on>ertisseur analogique* !&7" %76252 r-1eption* !&7" %76252 transmission* Port parallCle %module 66P* "ransmission s-rie de t(pe I2C ou 6PI Collision de ?!6 E1riture dans la m-moire EEP7), ,odule CCP1 ,odule CCP2 ",70IF Flag nom du registre IL"C)L #it de >alidation nom du #it ",70IE nom du registre IL"C)L

&u resetD tous 1es #its sont pla1-s B [-ro %sauf le flag 7?IF* 1e qui implique qu2au1une interruption nAest >alid-e et qu2au1un flag nAest le>-+ %1f+ pages 94 B 99 1olonne Y Jalue on P)7 or ?)7 Z* :

%>alue on Po/er )n 7eset or ?ro/n out reset V >aleur aprCs la mise en mar1Ee de lAalimentation ou aprCs une perte su#stantielle dAalimentation du 1omposant+* Lous >errons le r3le des #its IL"2IP et IL"1IP au paragrapEe sui>ant+ GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page ::

Le PIC 18F4520 et sa programmation en C

".2.'

!nterruptions mas6ua>les ou non mas6ua>les

"outes 1es interruptions sont des interruptions masqua#les+ En effet le >it G!3 du registre !K,C-K %page :5 de la datasEeet* permet de >alider ou d2 in>alider toutes les interruptions+

&u resetD 1e #it est pla1- B 0D d->alidant ainsi toutes les interruptions+ )HD mais B quoi sert 1e #it Y IPEL Z 4 CAest 1e que nous allons >oir tout de suite a ".2.$ riorits des !nterruptions

Le PIC18F4520 possCde en r-alit- 1e quAon appelle 2 Y ni>eauG Z dAinterruptionD dont lAune est plus prioritaire que lAautre+ Il ( a don1 un >e1teur dAinterruption dit de Y Eaute priorit- Z %hi)hEpriority interrupt le?el* et un >e1teur dAinterruption dit de Y #asse priorit- Z %lo;Epriority interrupt le?el*+ Le s1E-ma : 1 de la page :2 r-sume le fon1tionnement des interruptions : Ce schma est

trs

important lors6ue ?ous pro)rammeH en interruptions \

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 100

Le PIC 18F4520 et sa programmation en C

82accord0 mais comment Wa marche G Par d-faut %au reset*D la gestion des priorit-s nAest pas >alid-e %#it IPEL V 0*D et dans 1e 1as lBD 1ela re>ient B nAa>oir dAun seul >e1teur dAinterruption B lAadresse 0G8+ Pour a>oir la possi#ilit- de g-rer 2 ni>eauG de priorit- dAinterruptionD il faut mettre le #it IPEL %Interrupt Priorit( ELa#le* B 1 :

En mettant IPEL V 1D on a don1 la possi#ilit- dAa>oir 2 ni>eauG de priorit-+ ,ais 1omment indiquer que telle ou telle sour1e dAinterruption doit Itre en Eaute ou #asse priorit- 4 CAest ;ustement le r3le des #its qui se terminent par les lettres ! %!nterrupt riorit(*D tel que ",70IP pour 1e qui 1on1erne le "imer0 par eGemple :

7emarque : Les #its dAInterrupt Priorit( nAont au1un effet quand IPEL V 0 +++ Prenons par eGemple un programme qui utilise les modules "imer0 et "imer1D tout les deuG en interruptions %1Ea1un dAeuG >a g-n-rer une interruption dCs quAil ( aura d-#ordement de leur 1ompteur*+ 6upposons que le 1ode B eG-1uter quand le "imer1 d-#orde est plus urgent que 1elui asso1i- au d-#ordement du "imer0+ Il faut don1 a11order une priorit le?e au ,imer1 et une priorit >asse au ,imer&+ 'ans 1e 1as lBD il faudra affe1ter les #its sui>ants : GIE. V 1 GIEL V 1 IPEL V 1 ",70IE V 1 ",71IE V 1 ",70IP V 0 ",71IP V 1 Jalidation des interruptions de priorit-s Eautes Jalidation des interruptions de priorit-s #asses Jalidation des priorit-s des interruptions Jalidation des interruptions li-es au "imer0 Jalidation des interruptions li-es au "imer1 &ffe1tation du "imer0 auG interruptions de priorit- #asse &ffe1tation du "imer0 auG interruptions de priorit- Eaute

Comment 1ela se traduit il sur le s1E-ma de la figure : 1 4

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 101

Le PIC 18F4520 et sa programmation en C

8ans cette con4i)urationD 1e s1E-ma peut se simplifier de la maniCre sui>ante :

6i le flag asso1i- au "imer1 se lC>e %",71IF V 1*D lAinterruption de priorit- Eaute est eG-1ut-eD et lAinterruption de priorit- #asse est dite masqu-eD 1Aest B dire que mIme si ",70IF passe B 1D lAinterruption de priorit- #asse ne sera pas g-n-r-+ 6i ",70IF passe B 1 a>ant ",71IFD 1Aest lAinterruption de priorit- #asse qui est alors eG-1ut-eD mais dans 1e 1as lBD si ",71IF passe aussi B 1 pendant que lAinterruption de priorit- #asse est en 1ours dAeG-1utionD 1elle 1i est interrompue et lAinterruption de priorit- Eaute est alors eG-1ut-e+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 102

Le PIC 18F4520 et sa programmation en C

".2.%

1ne interruption peut elle interrompre une autre interruption G ]A 8Z 3K8S \

6i ! 3K L & %gestion des priorit-s in>alid-e*D lorsqu2une interruption se produitD le #it GIE est pla1automatiquement B [-roD interdisant ainsi une autre interruption+ 'on1 dans 1e 1as lBD une interruption ne peut pas en interrompre une autre+ Le #it GIE est repla1- B 1 par lAinstru1tion 7E"FIE %return from interrupt*+ Cette instru1tion est la derniCre du sous programme dAinterruption+ 6i ! 3K L 1 %gestion des priorit-s >alid-e*D le seul cas de 4i)ure o^ une interruption peut en interrompre une autre est le cas o^ une interruption de priorit haute se produit lors6u2une interruption de priorit >asse est en cours de traitement+ LorsquAune interruption de prioritrespe1ti>ement Eaute ou #asse se produitD le #it GIE. ou GIEL est pla1- automatiquement B [-roD interdisant ainsi une autre interruption de m[me ni?eau+ Les #its GIE. et<ou GIEL sont repla1-s B 1 par lAinstru1tion 7E"FIE %return from interrupt*+ Remar*ue 7 Peut on re>alider les interruptions dans une interruption en pla=ant le #it GIE B 1 4 La r-ponse est dans le manuel du CC8E B la page 50 :
/* IMPORTANT : GIEH/GIE or GIEL should normally NOT be set or cleared in the interrupt routine. GIEH/GIEL are AUTOMATICALLY cleared on interrupt entry by the CPU and set to 1 on exit (by RETFIE). Setting GIEH/GIEL to 1 inside the interrupt service routine will cause nested interrupts if an interrupt is pending. Too deep nesting may crash the program ! */

"radu1tion : L)L %pour les 1ommentairesD 1onsulter >otre tradu1teur*+ ".2.6 le ?ecteur d2interruption et le ni?eau d2interruption

Comme pour le resetD il eGiste une adresse >ers laquelle >a se diriger le s(stCme lorsquAil ( a une interruption %on lAappelle -galement ?ecteur d2interruption*+ Cette adresse est lAadresse &5&&&" pour le ?ecteur d2interruption de priorit haute0 et &5&&1" pour le ?ecteur d2interruption de priorit >asse + Il faut don1 pla1er les sous programmes dAinterruptions B 1es adresses %>oir figure 5 1 page 55*+

(es adresses des ?ecteurs d2interruption sont &5&&" et &5&1" 6ur le 1ompilateur CC8ED il faudra -1rire ;uste a>ant les sous programmes dAinterruptionD la s(ntaGe sui>ante en fon1tion des >e1teurs dAinterruptions utilis-s :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 105

Le PIC 18F4520 et sa programmation en C

Qpra)ma ori)in &5" et+ou Qpra)ma ori)in &51" Ces directi?es permettent d2indi6uer au prEcompilateur 6ue le code crit Nuste aprs doi?ent [tre placs au5 adresses mmoires mentionnes 7&5" et+ou &51"9. (e ni?eau d2interruption : Les PIC 19FGGG ne possCdent quAun ni>eau de priorit-+ Pour 1onnaitre le p-ripE-rique a(ant demand- une interruptionD >ous de>e[ tester les flags 1orrespondants %nous >errons un eGemple plus loin*+ Remar*ues 7 6ur un 98000 %mi1ro1ontr3leur pr-sent dans les premiers ordinateurs ,&C*D l2utilisateur disposait de 0 ni>eauG dAinterruptions+ 6ur un PCD il eGiste plus de 19 ni>eauG dAinterruptions+ Le 1la>ier est 1N#l- sur le ni>eau 5 ou 9D 1Aest pour 1ette raison que lorsque parfois >ous appu(e[ sur le 1la>ier rien ne se passe : Le PC est o11up- B r-pondre B une interruption plus prioritaire+ 6i on souEaite utiliser les 2 ni>eauG de priorit-D le 1ode B eG-1uter asso1i- B lAinterruption de priorit- Eaute ne peut 1omporter que trCs peu dAinstru1tions+ En effetD 1elui 1i se trou>e B lAadresse 0G8 alors que lAautre %priorit- #asse* se situe B lAadresse 0G18+ Il ne pourra don1 ( a>oir que 8 instru1tions pour ne pas Y d-#order Z sur lAadresse 0G18+ )n pourra B 1e moment lB faire appel B une fon1tion sto1P-e B la fin de la m-moire programme pour 1ontourner 1e pro#lCme %1Aest dAailleurs la m-tEode pr-1onis-e dans le manuel du 1ompilateur CC8E*+ ".2.* (a dclaration du sous pro)ramme d2interruption

En g-n-ralD une fon1tion en C sA-1rit S>oid nom du spg %>oid*S 6ur le 1ompilateur CC8ED un sous programme dAinterruption doit tou;ours 1ommen1er par interrupt -0emple 7 interrupt sousqprogrammeqinterruption % >oid *

our6uoi G Lous a>ons d-;B >u quAun sous programme se termine par 7E"!7L en assem#leur et quAun sous programme dAinterruption doit se finir par lAinstru1tion 7E"FIE+ Le fait dA-1rire IL"E77!P" en d-#ut de ligne permet de pla1er automatiquement lAinstru1tion 7E"FIE en fin de sous programme dAinterruption+ Rappel 7 Lorsque le s(stCme part en interruptionD le #it GIE %ou GIE. et GIEL* est pla1- B 0 pour interdire dAautres interruptions+ L2instru1tion 7E"FIE remet le #it GIE %ou GIE. et GIEL* B 1 pour re>alider les interruptionsD 1e que ne fait pas lAinstru1tion 7E"!7L+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 104

Le PIC 18F4520 et sa programmation en C

".2."

(es instructions int_sa?e_re)ister et int_restore_re)ister

Les instru1tions Y intqsa>eqregister Zet Y intqrestoreqregister Z permettent de sau>egarder le 1onteGte a>ant d2eG-1uter le programme d2interruption et de restituer le 1onteGte ;uste a>ant de re>enir dans le programme prin1ipal+ our6uoi sau?e)arder le conte5te G Lous proposons 1i dessous un programme en C et sa tradu1tion en assem#leur+ !n ->-nement arri>e et pro>oque une interruption+ Programme en C uns8 ic uns8 $c >oid main %>oid* l $V12c i V$ W 1c n Xuel est la pro>lmati6ue G :ypothse 1 : une interruption inter>ient au milieu lAinstru1tion en C AiV$W1A et plus sp-1ialement dans la ligne dAassem#leur : ILCF $D KD &CCE66+ Le registre K -tait don1 1Earg- par la >aleur 15D mais la >aria#le AiA nAa pas en1ore la >aleur 15+ :ypothse 2 : dans lAinterruptionD on d-sire a;outer 2 B la >aria#le "+ Le programme dAinterruption en C ainsi que sa tradu1tion en assem#leur donneraient : Langage C l uns8 "c " V " W2c n ,)JLK 0G2 &''KF "D FD &CCE66 &ssem#leur Z?nement "radu1tion du programme en &ssem#leur G)") main main ,)JLK 0G1 ,)JKF $D &CCE66 ILCF $D KD &CCE66 ,)JKF iD &CCE66 6LEEP 7E6E"

En sortant du sous programmeD le registre K possCde don1 la >aleur 2+ ro>lme : En re>enant dans le programme prin1ipalD le registre K possCde la >aleur 2 don1 AiA prendra la >aleur 2D au lieu de la >aleur 15+ Solution : &>ant dAeG-1uter le sous programme dAinterruption il faut sau>egarder le registre K dans une >aria#le pour pou>oir faire nAimporte quelle op-ration a>e1 le registre de tra>ail K dans le sous
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 105

Le PIC 18F4520 et sa programmation en C

programme dAinterruption+ Il faudra restituer la >aleur initiale du registre K ;uste a>ant de retourner eG-1uter le programme prin1ipal+ Remar ue : K nAest pas le seul registre sensi#le+ Il faut aussi sau>egarder le registre 6"&"!6+ En effetD 1e registre possCde entre autres les #its Car( et [-ro+ Le registre ?67 est -galement sau>egard-+ La tradu1tion des lignes intqsa>eqregisters et intqrestoreqregisters en assem#leur donne la s(ntaGe :
intqsa>eqregisters << KD 6"&"!6 et ?67 ,)JFF 6"&"!6D s>r6"&"!6 L)P ,)JFF ?67D s>r?67 L)P ,)JKF s>rK7EGD &CCE66 intqrestoreqregisters << KD 6"&"!6 et ?67 ,)JF s>rK7EGD KD &CCE66 ,)JFF s>r?67D ?67 L)P ,)JFF s>r6"&"!6D 6"&"!6 L)P

-n remar6ue 6ue le systme sau?e)arde en premier le re)istre S,A,1S0 puis le re)istre VS.0 pour ensuite sau?e)arder J. Ces lignes de 1odes sont 1onformes auG re1ommandations -non1-es par ,i1ro1Eip page 105 du datasEeet du pi1 18F4520+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 109

Le PIC 18F4520 et sa programmation en C

".2./

-^ mettre le pro)rammeG 3n tout d>ut de pro)ramme : A?ant le pro)ramme principal0 a?ant les sousEpro)rammes. Aprs les dclarations des ?aria>les et des 4onctions pour une plus )rande lisi>ilit de ?otre pro)ramme.

-0emple 5 7 ro)ramme en C
fin1lude Sint18MMM+.S

ro)ramme en assem>leur et commentaires Le 1ompilateur -1rit dans le >e1teur reset Y G)") 0G28 Z pour aller au programme prin1ipal :

fpragma origin 0G8 interrupt F1tqI"%>oid* l intqsa>eqregisters if % ",70IF * l ",70L V 0c ",70IF V 0c L&"?+0 Va L&"?+0c n intqrestoreqregisters n >oid main% >oid* l L&"? V 0G00c "7I6? V 0#11111110c "0C)L V 0GC0c ",70L V 0c ",70IE V 1c GIE V 1c /Eile %1*c n

Le 1ompilateur ren1ontre lAinstru1tion fpragma origin 8D le 1ompilateur saute alors trois 1ases pour 1ommen1er B mettre le sous programme dAinterruption B lAadresse 8 :

Le programme prin1ipal est -1rit ;uste aprCs :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 100

Le PIC 18F4520 et sa programmation en C

-0emple 6 7 Lorsque le programme d2interruption est pla1- aprCs le programme prin1ipalD la 1ompilation ne peut pas se r-aliser+ Le message dAerreur est: -rrorK5L %7M000Mtest.c 5N 7 ,/erlapping code (&he pointer to the ne0t free location in each code page can not be mo/ed bac@Oards (onl) forOards). &his also applies if locations Oas s@ipped b) an earlier Ppragma origin statement) EGpli1ations : ro)ramme en C
fin1lude Sint18GGG+ES >oid main% >oid* l L&"? V 0G00c "7I6? V 0#11111110c "0C)L V 0GC0c ",70L V 0c ",70IE V 1c GIE V 1c /Eile %1*c n fpragma origin 0G8 interrupt F1tqI"%>oid* l intqsa>eqregisters if % ",70IF * l ",70L V 0c ",70IF V 0c L&"?+0 Va L&"?+0c n intqrestoreqregisters n

ro)ramme en assem>leur et commentaires Le 1ompilateur -1rit dans le >e1teur reset Y G)") 0G4 Z pour aller au programme prin1ipalD 1elui 1i est -1rit imm-diatement aprCs :

(e compilateur ne peut pas crire le sous pro)ramme d2interruption l2adresse &5&&&"0 car cette adresse est dN occupe \

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 108

Le PIC 18F4520 et sa programmation en C

Chapitre .

(a liaison srie RS ' /tilisation de l0E/SAR+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 10:

Le PIC 18F4520 et sa programmation en C

/.1 Gnralits
/.1.1 ,ransmissions srie et parallle

La 1ommuni1ation entre deuG s(stCmes peut se faire soit de maniCre parallCleD soit de maniCre s-rie+ La 1ommuni1ation s-rie est trCs importante dans le domaine de la t-l-1ommuni1ation et plus g-n-ralement dans le transfert d2informations+ Contrairement au #us parallCle o\ plusieurs #its sont transmis simultan-mentD dans les #us s-rieD les #its sont en>o(-s les uns B la suite des autres+

Pour une 1ommuni1ation s-rieD le nom#re de fils mis en ;euG est au minimum de 2D soit : 1 signal de donn-e et une r-f-ren1e %1omme par eGemple la masse*+ 2 fils de donn-es %en mode diff-rentiel*+ Comme nous le >errons par la suiteD d2autres fils peu>ent Itre a;out-s+ Les 1ommuni1ations s-ries sont d-finies par 2 1ritCres : L2interfa1e %ou support* pE(sique de 1ommuni1ation %1N#leD 1onneGions*+ Le format de transfert des donn-es de 1ommuni1ation+ Celui 1i peut Itre de deuG t(pes : 6(n1Erone &s(n1Erone Lous ne >errons dans 1ette partie que les transmissions as(n1Erones que nous mettrons ensuite en Fu>re a>e1 le PIC+ CeuG 1i disposent -galement de liaisons de t(pe s(n1Erone %6PI ou I2C* qui permettent au PIC de 1ommuniquer a>e1 des 1omposants p-ripE-riques+ Les 1ommuni1ations as(n1Erones sont d-finies par plusieurs paramCtres : Les signauG de 1ommuni1ation La >itesse de transmission %ou #aud rate* Le format des donn-es Le mode de fon1tionnement %Full ou .alf 'upleG* Les interfa1es pE(siques de 1ommuni1ation peu>ent Itre di>ers+ Lous >errons notamment les interfa1es : 76252 %utilis-e notamment pour la 1ommuni1ation a>e1 les PC ` ports C),* 76485 %et 76422* utilis-es dans les appli1ations o\ les pertur#ations sont importantes+ %utilis-es a>e1 les automates programma#les*
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 110

Le PIC 18F4520 et sa programmation en C

/.2
/.2.1

rincipe de transmission
rincipe de la transmission asynchrone

'ans une 1ommuni1ation s-rieD les #its sont en>o(-s les uns B la suite des autres sur la ligne en commenWant par le >it de poids 4ai>le+ La transmission s2appuie don1 sur le prin1ipe des registres B d-1alage+

"out 1omposant p-ripE-rique d2entr-e < sortie s-rie 1omprend un registre de 8 #its qui re=oit les 1odes &6CII B transmettre+ 'ans les liaisons as(n1EronesD il n2( a pas d2Eorloge qui est transmise entre les 1omposants qui 1ommuniquent ensem#le+ Pour que le r-1epteur puisse d-te1ter le d-#ut et la fin de la transmissionD le 1omposant p-ripE-rique a;oute au mot de 8 #itsD un >it de S,A., 7`&9+ s la fin des 8 #itsD la plupart des 1omposants en>oient un :Cme #it qui peut ser>ir par eGemple de #it de parit- ou de #it 6")P sui>i d2un deuGiCme >it S,- 7`19+ Ce mot de 11 #its est transmis au registre B d-1alage qui assure la transmission en 1ommen=ant par le #it de poids fai#le+ /.2.2 .e)istres de contrFle et dtat

&fin de 1onfigurer la liaison s-rie et de >-rifier que la transmission s2est #ien effe1tu-eD on dispose de registres de 1ontr3le et d2-tat+ Le registre de 1ontr3le permet de : FiGer le format de transmission %0 ou 8 #its* FiGer le fa1teur de di>ision de l2Eorloge FiGer le test de paritFiGer le nom#re de #its 6")P Pr-1iser le fon1tionnement en interruption

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 111

Le PIC 18F4520 et sa programmation en C

Le registre d2-tat permet quant B lui de sa>oir : 6i une transmission est en 1ours 6i une r-1eption est en 1ours L2-tat des lignes de 1ontr3le L2-tat des interruptions /.2.' rincipe de la rception asynchrone

'ans la r-1eption as(n1EroneD il n2( a pas de transmission de l2Eorloge+ Il faut don1 que l2Eorloge du 1omposant de r-1eption fon1tionne B la mIme fr-quen1e que l2Eorloge du 1omposant qui -met+ Pour pou>oir lire une donn-eD il faudra un signal qui indique un d-#ut de transmission+ Ce sera le r3le du #it de 6"&7"+ s l2-tat de repos %1Aest B dire lorsqu2on n2en>oie au1une donn-eD l2-tat logique de la liaison s-rie est t12+ Le #it de 6"&7" est don1 tout naturellement B l2-tat t02+ Le prin1ipe est le sui>ant : Le r-1epteur attend le premier front des1endant de la ligne de donn-es pour se s(n1Eroniser+ &prCs une demi p-riode d2EorlogeD il >ient tester le #it+ L2int-rIt est de pou>oir sa>oir s2il s2agit d2un >rai #it de 6"&7" %si le signal est tou;ours B t02* ou alors si on a eu du #ruit sur la ligne qui aurait pro>oqu- un fauG #it de 6"&7" %si le #it est remont- Bt12*+ EnsuiteD on -1Eantillonne le nom#re de #its de donn-es %d-fini dans la 1onfiguration de la liaison s-rie* B 1Eaque p-riode d2Eorloge+ EnfinD on teste le ou les #its 6")P 6i le #it est B t12D on a #ien un #it 6")P+ 6i le #it est B t02D on a un mau>ais #it 6")P+ )n parle d2une erreur d2en1adrement+

Le nom#re de #its 6")P est g-n-ralement de 1 ou 2+ 'es logi1iels 1omme lA.(per"erminal peu>ent permettre de s-le1tionner un #it 6")P de 1D5+ /.2.$ 35emple de transmission dun si)nal

)n souEaite en>o(er le 1ode 0G52D sur 8 #itsD sans parit- a>e1 1 #it 6")P+ 7emarque : 0G52 V 0#00110010
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 112

Le PIC 18F4520 et sa programmation en C

/.2.%

Si)nau5 de communication entre les deu5 6uipements

Entre deuG -quipements reli-s par une liaison s-rieD on dispose au minimum de deuG fils+ En pratiqueD on en a plus+ 6ur la figure 1i dessousD on o#ser>e un ensem#le de signauG qui peu>ent Itre -1Eang-s %le nom et le sens de transfert de 1Ea1une des lignes est donn- par rapport B lA-quipement 1* :

)n peut grouper 1es signauG en plusieurs groupes : 'es signauG de transmission de donn-es et dAEorloge "M' %transmit data* : 'onn-es dans un sens 7M' %re1ei>e data* : 'onn-es dans lAautre sens Ces deuG signauG sont les signauG de #ase pour pou>oir en>o(er des donn-es+ "MC %transmit 1lo1P* : .orloge de transmission 7MC %re1ei>e 1lo1P* : .orloge de r-1eption 'es signauG de 1ontr3le de fluG de transmission 7"6 %request to send* : 'emande B -mettre C"6 %1lear to send* : PrIt B re1e>oir Ces signauG peu>ent Itre utiles pour g-rer lA-1Eange du fluG de donn-es+ LotammentD il permet dAindiquer si lA-quipement destinataire est prIt B re1e>oir+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 115

Le PIC 18F4520 et sa programmation en C

'es signauG de pr-sen1e '"7 %data terminal read(* : Equipement 1 prIt '67 %data set read(* : Equipement 2 prIt 'C' %data 1arrier dete1t* : Pr-sen1e de la porteuse de transmission 'es r-f-ren1es de potentiels

L+?+: Ces signauG sont rarement tous utilis-s et pas for1-ment pour la fon1tion qui -tait pr->ue+ /.2.6 Bitesse de transmission des donnes

@tant donn- quAil nA( a pas dAEorloge 1ommune entre les -quipements qui 1ommuniquent >ia une liaison s-rieD il faut que lA-metteur et le r-1epteur en>oient les #its B la mIme >itesse+ La >itesse de transmission des donn-es est eGprim-e par le >aud rate+ Il sAagit du nom#re de #its maGimum en>o(- sur la liaison s-rie en une se1onde+ Les >itesses les plus utilis-es sont : 1200 #auds %ou #its<se1onde* 2400 #auds 4800 #auds :900 #auds 1:200 #auds 58400 #auds 50900 #auds 115200 #auds

Cette >aleur dA-1Eange est toutefois toute tE-orique 1ar elle suppose que lA-metteur et le r-1epteur sont tou;ours prIts B re1e>oir et B -mettre+ Cette >itesse est programma#le grN1e au p-ripE-rique de liaison s-rie pr-sent dans le mi1ro1ontr3leur+ /.2.* (e contrFle de 4lu5

Le r3le du 1ontr3le de fluG est de permettre dA->iter de perdre des informations pendant la transmission+ Il eGiste diff-rents t(pes de 1ontr3le de fluG : ContrFle a?ant la transmission )n peut >-rifier a>ant dAen>o(er des donn-es que les deuG -quipements sont prIts B 1ommuniquer+ CAest le r3le des lignes '"7D '67 et 'C'+ 6i une de 1es lignes de>ient ina1ti>eD il faut Itre 1apa#le de pou>oir le d-te1ter+ Cette te1Enique permet don1 de >-rifier que les 1omposants sont #ien 1onne1t-s+ ContrFle matriel pendant la transmission Il est possi#le de 1ontr3ler le fluG de donn-es entre deuG 1ara1tCres par deuG lignes de Y EandsEaPe Z %poign-e de main en fran=ais*+ Ces lignes sont 7"6 et C"6+ Le prin1ipe de fon1tionnement est le sui>ant :
Page 114

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Le PIC 18F4520 et sa programmation en C

LA-metteur informe le r-1epteur quAil est prIt B en>o(er une donn-e en agissant sur 7"6 et en le mettant B lA-tat #as+ Le r-1epteur informe lA-metteur quAil est prIt B re1e>oir en mettant la patte C"6 B lA-tat #as+ La transmission de>ient effe1ti>e+ Cette te1Enique permet dA->iter dAen>o(er des donn-es quand le r-1epteur nAest pas prIt et don1 permet dA->iter la perte dAinformation+ ContrFle lo)iciels pendant la transmission Il est -galement possi#le de 1ontr3ler la transmission B lAaide de deuG 1odes &6CII Y M)L Z et Y M)FF Z : M)FF %C"7L 6* : demande lAarrIt de la transmission M)L %C"7L _* : demande le d-part dAune transmission arit

/.2."

Le mot transmis peut Itre sui>i ou non dAun #it de parit- qui sert B d-te1ter les erreurs ->entuelles de transmission+ Il eGiste deuG t(pes de parit-s : arit paire : le #it a;out- B la donn-e est positionn- de telle fa=on que le nom#re des -tats Y 1 Z soit paire sur lAensem#le donn- W #it de parit-+ e0emple 7 soit la donn-e 11001011 1ontenant 5 -tats Y 1 ZD le #it de parit- paire est positionn- B Y 1 ZD ramenant ainsi le nom#re de Y 1 Z B 9+ arit impaire : le #it a;out- B la donn-e est positionn- de telle fa=on que le nom#re des -tats Y 1 Z soit impaire sur lAensem#le donn- W #it de parit-+ e0emple 7 soit la donn-e 11001001 1ontenant 5 -tats Y 1 ZD le #it de parit- paire est positionn- B Y 0 ZD laissant ainsi un nom#re de Y 1 Z impaire+

Les deuG -quipements 1al1ulent 1Ea1un de leur 13t- la parit-+ Le r-1epteur >-rifie que le #it de parit- re=u %et 1al1ul- par l2-metteur* est #ien 1elui qui est 1al1ul- et indique une erreur ->entuelle+ Conclusion : our 6ue deu5 6uipements puissent chan)er des donnes0 il 4aut 6u2ils soient con4i)urs pour 6ue : (a ?itesse de communication 7>aud rate9 soit le m[me des deu5 cFts. (e nom>re de >its de donnes soit identi6ue (e nom>re de >its S,- soit identi6ue (e type de contrFle de 4lu5 choisit soit le m[me (a parit soit la m[me

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 115

Le PIC 18F4520 et sa programmation en C

/.' !nter4aces physi6ues


Il eGiste diff-rentes interfa1es pE(siques pour la liaison s-rie : .S2'2 : Interfa1e de liaison s-rie pr-sente sur les PCs %ports C),*+ .S$22 : Interfa1e mieuG immunis-e >is B >is du #ruit+ .S$"% : Identique B la 76422 mais d->elopp-e pour pou>oir 1onne1ter plus de deuG appareils sur le mIme #us+ Le 1EoiG dAune interfa1e d-pend : de la >itesse de transmission souEait-e de la longueur du 1N#le du nom#re dA-quipements que lAon souEaite 1onne1ter de lAimmunit- >is B >is des parasites Lous ne nous int-resserons i1i quAB la liaison s-rie .S 2'2+

/.$ (inter4ace .S2'2


/.$.1 Ki?eau5 de tension

&fin de pou>oir >-Ei1uler des signauG par liaison s-rie sur plusieurs mCtresD il est n-1essaire dAamplifier la tension du signal en>o(-+ Les 0 5J %>oir moins* que lAon trou>e g-n-ralement en sortie des mi1ro1ontr3leurs est insuffisant pour transmettre les informations loin+ En effetD sous lAeffet de lAimp-dan1e de la ligne %indu1tan1es et 1apa1it-s parasites*D le signal est att-nu-+ (e schma ciEdessous modlise une li)ne et donne une ide de l2tat du si)nal l2entre et la sortie.

&fin de pou>oir en>o(er les signauG plus loinD la liaison s-rie 76252 transmet les informations sous des ni>eauG de tension plus -le>-s+ 1n ni?eau lo)i6ue >as 7&B9 sera transmis l2aide d2une tension de 12B. 1n ni?eau lo)i6ue haut 7%B9 sera transmis l2aide d2une tension de E12B. Il ( a don1 !KB3.S!-K 83S K!B3A1a (-G!X13 et A8A ,A,!-K =12B 3,E12B

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 119

Le PIC 18F4520 et sa programmation en C

Chrono)rammes :

/.$.2

(e composant e5terne

LAinterfa=age est sou>ent r-alis- a>e1 le 1omposant MAa 2'2 %1onstru1teur ,&MI,*+

Il est 1apa#le de g-n-rer B partir dAune alimentation J11 de 5JD les tensions W12J et 12J+ &>e1 une telle tensionD il est possi#le de 1ommuniquer a>e1 une liaison s-rie 76252 B :900 #auds ;usquAB 12m+ Plus la distan1e sera grandeD moins la >itesse de transmission sera rapide 1ar les att-nuations et les d-formations des signauG seront plus importantes+ La 1arte PIC'E,2W utilis-e en "P intCgre d-;B 1e 1omposant :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 110

Le PIC 18F4520 et sa programmation en C

/.$.'

(es connecteurs

La 1onneGion se fait au;ourdAEui g-n-ralement sur des 1onne1teurs '?:+ Le s1E-ma de 1onneGion est donn- 1i dessous :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 118

Le PIC 18F4520 et sa programmation en C

/.% Mise en bu?re de la liaison srie a?ec le !C 1"#$%2&.


/.%.1 Gnralits

Le PIC 18F4520 est 1apa#le de mettre en Fu>re quatre t(pes de liaison s-rie %6PID I2CD!&7" utilis- en mode s(n1Erone ou as(n1Erone*+ Les liaisons s-rie de t(pe 6PI ou I2C sont g-r-es par le p-ripE-rique ,66P et ne seront pas -tudi-es i1i+ Lous nous int-ressons i1i qu2B la liaison s-rie as(n1Erone utilisant le p-ripE-rique interne appellAE!6&7" pour EnEan1ed !ni>ersal 6(n1Eronous &s(n1Eronous 7e1ei>er "ransmitter %Y @metteur 7-1epteur !ni>ersel 6(n1Erone &s(n1Erone renfor1- ZD le terme Arenfor1-A indiquant la pr-sen1e de fon1tionnalit-s suppl-mentaires par rapport au module !6&7" pr-sent dans les modCles 19FGGG*+ Ce p-ripE-rique repose sur des registres B d-1alages qui permettront dAen>o(er et de re1e>oir les donn-es+ Ils sont au nom#re de deuG %un pour lA-missionD lAautre pour la r-1eption*D 1e qui autorise tE-oriquement le PIC B en>o(er et re1e>oir des donn-es simultan-ment+ Comme nous lAa>ons >u pr-1-demment pour utiliser la liaison s-rie as(n1EroneD il est n-1essaire de 1onfigurer la >itesse de transmissionD le nom#re de #its de donn-esD la parit- ou le deuGiCme #it 6")P sAil ( a lieu+ Il faudra don1 mettre la #onne >aleur dans les registres de 1onfiguration de lAE!6&7"+ Il nous permettra -galement de sa>oir si une transmission est en 1oursD si elle sAest pass-e 1on>ena#lement ou #ien sAil ( a eu une erreur+ Ce sera le r3le du registre dA-tat+ EnfinD nous aurons des registres pour -1rire les donn-es B en>o(er ou lire les donn-es re=ues+ En outreD il dispose -galement de deuG pattes de 1onneGion qui permettront dAen>o(er un message %7C9* ou #ien de le re1e>oir %7C0*+ La 1onfiguration de 1es pins se fait de la maniCre indiqu-e 1i 1ontre :

6i lAon souEaite se 1onne1ter sur un PCD il faudra penser B utiliser un 1omposant %par eGemple un ,&M 252* pour g-n-rer un signal entre 12J et W12J+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 11:

Le PIC 18F4520 et sa programmation en C

Le HI" PIC'E,2 PL!6 propose le 1N#lage 1i dessous :

/.%.2

#onctionnement de la liaison srie en transmission

La figure 18 5 nous indique le fon1tionnement de lAE!6&7" en transmission :

Le module dAen>oi est #as- sur un registre B d-1alage %"67 7egister V Y "ransmit 6Eift 7egister Z*+ )n 1Earge la >aleur B transmettre sur 8 #its B l2aide du registre "M7EG+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 120

Le PIC 18F4520 et sa programmation en C

LA-1riture de "M7EG dans "67 met B A1A le drapeau "MIF+ Celui 1i est 1apa#le de g-n-rer une interruption si le #it "MIE est B A1A+ Le registre B d-1alage a;oute tout seul le #it de 6"&7" et de 6")P+ Remar ue : le fait que le drapeau "MIF passe B A1A n2indique pas que la donn-e a -t- transmiseD mais uniquement le fait que >ous a>e[ mis une donn-e dans le registre "M7EG+ Le drapeau Y "7," Z indique quand le registre B d-1alage est >ide+ CAest B dire quand le mot est 1omplCtement en>o(-+ Il est parfois plus ;udi1ieuG de tester le #it "7," que le #it "MIF+

La figure 18 4D nous donne les 1Eronogrammes des #its "7," et "MIF :

Pour en>o(er les donn-esD il faut 1onfigurer lAEorloge de transmission+ Ce1i se fait B lAaide du registre 6P?7G %1ompos- de 2 registres de 8 #its 6P?7G.:6P?7GL* qui di>ise la fr-quen1e de lAEorloge interne pour o#tenir la #onne >itesse de transmission+ La >alidation de 1ette Eorloge se fait par "MEL+ LAEorloge est la mIme pour les modules dAen>oi et de r-1eption+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 121

Le PIC 18F4520 et sa programmation en C

Les #its s-rialis-s sont en>o(-s >ers la patte de sortie 7C9<"M+ Cette patte B la dou#le fon1tion de ser>ir de patte dAE<6 standard ou de ser>ir 1omme sortie dAen>oi de la liaison s-rie+ La 1onfiguration entre 1es deuG modes de fon1tionnement se fait grN1e au #it 6PEL+ Remar*ue 7 Lorsque le #it 6PEL est -gal B A1AD les pattes 7C9<"M et 7C0<7M sont respe1ti>ement 1onfigur-s automatiquement en sortie et en entr-e+ Il est possi#le dAen>o(er un :Cme #it a>ant le #it de 6")P %par eGemple une parit- ou un deuGiCme #it 6")P*+ Il faut alors >alider "M: et ins1rire la donn-e du :Cme #it dans "M:' a>ant de pro1-der B une -mission+

/.%.'

#onctionnements de la liaison srie en rception

La figure 10+4 nous indique le fon1tionnement de l2E!6&7" en r-1eption. Le module de r-1eption est relati>ement similaire au module dA-mission+ Il est #as- sur un registre B d-1alage de 11 #its %un 6"&7"D 8 donn-esD un :Cme #it et un 6")P*+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 122

Le PIC 18F4520 et sa programmation en C

"out 1omme le module dA-missionD il dispose de lAEorloge %6P?7G.:6P?7GL*+

Il s1rute en permanen1e le signal qui arri>e sur la patte 7C0<7M+ Il faut don1 lB aussi indiquer que 1ette patte sert B la liaison s-rie grN1e B 6PEL+ La r-1eption ne sera >alid-e que lorsque le #it C7EL sera 1orre1tement 1onfigur-+

!ne fois le mot re=u 1orre1tementD le PIC sto1Pe les 8 #its de donn-es re=us dans le registre 7C7EG+ 6i on lui a >alid- un :Cme #it en r-1eption B lAaide de 7M:D il sto1Pera sa >aleur dans 7M:'+ En outreD la r-1eption dAune donn-e >alide le #it 7CIF+ )n peut alors g-n-rer une interruption si le #it 7CIE est B A1A+ Le module de r-1eption peut en outre g-n-rer des erreurs si la transmission sAest mal pass-e+ Il possCde notamment les #its )E77 %)>errun error* et FE77 %Framing error*+ Le fon1tionnement de 1es #its est d-1rit 1i dessous %eGtrait de la do1 du PIC19F800 qui possCde les mImes #its )E77 et FE77*+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 125

Le PIC 18F4520 et sa programmation en C

/.%.$

(es re)istres

,i1ro1Eip nous propose une liste de registres pour 1onfigurer l2E!6&7" en transmission et une liste pour 1onfigurer l2E!6&7" en r-1eption+ En regardant #ienD en transmission et en r-1eptionD nous utiliserons les mImes registres+ La seule diff-ren1e est le registre "M7EG et le registre 7C7EG +

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 124

Le PIC 18F4520 et sa programmation en C

E.+.4.1 Les re$istres (FR'G et RCR'G Jous pla1ere[ le mot B transmettre dans le registre "M7EG+ LorsquAun mot sera re=uD >ous pourre[ le lire dans le registre 7C7EG + E.+.4.2 Les re$istres IH(C,H et *I'1 Ces registres sont utilis-s pour g-rer la liaison 76 252 en interruption+ En transmissionD on utilisera les #its GIE<GIE. D PEIE<GIEL et "MIE + En r-1eptionD on utilisera les #its GIE<GIE. D PEIE<GIEL et 7CIE+ E.+.4.3 Le re$istre *IR1 Ce registre 1ontient les deuG flags %drapeauG* permettant de : '-te1ter qu2un mot est re=u : #it 7CIF '-te1ter qu2un mot a -t- pla1- dans le registre de transmission : #it "MIF + Remar*ue 7 il eGiste un autre Y flag Z pour la transmission : "7," + E.+.4.4 Le re$istre I*R1 Ce registre 1ontient les deuG #its permettant de d-finir la priorit- des interruptions li-es B la transmission %"MIP* et B la r-1eption %7CIP* dAun mot+
Rappel 7 1es deuG #its nAont dAeffet que si les 2 ni>eauG de priorit- dAinterruption sont >alid-s %IPEL V 1*+

E.+.4.+ Les re$istres S*IRG/:S*IRGL% le bit IRG/ 8du re$istre (FS(): et le bit IRG10 8du re$istre I)"AC,H: Les registres S V.G: et S V.G( permet de 1onfigurerD a>e1 le #it ?7G. et le #it ?7G19D la >itesse de transmission de la liaison s-rie+ Les formules sont donn-es par le ta#leau 18 1 :
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 125

Le PIC 18F4520 et sa programmation en C

Le #it ScKC L & permet de d-finir une liaison AsynchroneD le #it V.G16 L 1 permet de tra>ailler a>e1 le registre S V.G sur 16 >its 7S V.G::S V.G(9 %si V.G16 L &D seul le registre S V.G( sur " >its est utilis-*+ Par eGempleD pour une transmission B :900#audsD a>e1 un mi1ro1ontr3leur 1aden1- B 4,.[D nous o#tenons %6XLC doit for1-ment Itre -gal B 0*: A?ec les >its V.G16 L & et V.G: L & on trou>e aL 4osc +7>aud rate d 6$9 E1 N7 MV4000000 < %:900h 94* 1V 5D51 M ne peut prendre que des >aleurs entiCres+ Lous prendrons don1 pour M la >aleur 9+ L2impr-1ision sur M nous amCne une erreur sur la fr-quen1e de transmission+ ?aud rate r-el V Fos1 < % 94 % MW1** soit 8:28D5:+ L2erreur est don1 de 9D:: r %1al1ul %:900 8:2:*<:900**+ A?ec les >its V.G16 L & et V.G: L 1 on trou>e aL 4osc +7>aud rate d 169 E1 N7 MV 4000000 < %:900h 19* 1V 25+041 M ne peut prendre que des >aleurs entiCres+ Lous prendrons don1 pour M la >aleur 25+ L2impr-1ision sur M nous amCne une erreur sur la fr-quen1e de transmission+ ?aud rate r-el V Fos1 < % 19 % MW1* soit :915D58+ L2erreur est don1 de 0D19 r +

)n 1Eoisira la >aleur afin de minimiser lAerreur 1ommise sur la transmission+ .eureusementD ,i1ro1Eip a pris piti- de nous et nous a donn- des ta#leauG %pages 200 et 208 de la do1* permettant de trou>er rapidement les >aleurs B mettre dans 6P?7G.:6P?7GL et ?7G. en fon1tion : de la >aleur du d-#it de transmission %1200 P#audsD :900 P#auds^* de la fr-quen1e du quart[ du PIC de la >aleur du #it ?7G. de la >aleur du #it ?7G19 Remar*ue 7 la plupart du tempsD il sera suffisant de tra>ailler a>e1 un registre 6P?7G sur 8 #its %V.G16 L & et utilisation de S VG.( uniquement*+ En effetD la n-1essit- de tra>ailler sur 19 #its sAimpose uniquement pour o#tenir de fai#les >itesses de transmission a>e1 un quart[ de fr-quen1e -le>-e+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 129

Le PIC 18F4520 et sa programmation en C

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 120

Le PIC 18F4520 et sa programmation en C

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 128

Le PIC 18F4520 et sa programmation en C

E.+.4.0 Les re$istres de contr7le et d&!tat

Il nous reste plusieurs 1Eoses B 1onfigurer : CEoiG du t(pe de transmission &s(n1Erone ou s(n1Erone+ Le #it ScKC du registre ,aS,A permet de 1Eoisir le t(pe de fon1tionnement: A1A : mode s(n1Erone A0A : mode as(n1Erone Pour une 1ommuni1ation de t(pe .S2'2 nous prendrons le mode asynchrone+ Jalidation des lignes 7C9 et 7C0 1omme #ro1Ees d2entr-e < sortie asso1i-es B L2E!6&7" : #it S 3K du registre .CS,A A1A : port s-rie >alidA0A : port s-rie in>alidRemar*ue 7 le fait de 1onfigurer 1e #it B 1D pla1e automatiquement la ligne de transmission en sortie et la ligne de r-1eption en entr-e+ 6-le1tion du #aud rate pour le mode as(n1Erone %Permet de fiGer la >itesse de transmission en lien a>e1 le registre 6P?7G*+ ?it V.G: du registre ,aS,A A1A : mode .igE 6peed A0A : mode Lo/ 6peed ?its de mar1Ee arrIt+ La r-1eption est >alid-e en pla=ant un A1A dans le #it C.3K du registre .CS,A . La transmission est >alid-e en pla=ant un A1A dans le #it ,a3K du registre ,aS,A + "ransmission de 8 #its ou de : #its : Le #it ,a/ du registre ,aS,A permet de >alider une transmission de 8 #its ou de : #its A1A : transmission de : #its+ A0A : transmission de 8 #its+ En mode : #itsD il faut pla1er le :Cme #it dans le #it ,a/8 du registre ,aS,A. En mode 8 #itsD le #it ,a/8 peut prendre n2importe quelle >aleur. 7-1eption de 8 #its ou de : #its+ Le #it .a/ du registre .CS,A permet de >alider une r-1eption de 8#its ou de : #its A1A : r-1eption de : #its A0A : r-1eption de 8 #its
Page 12:

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Le PIC 18F4520 et sa programmation en C

En mode : #itsD le :Cme #it sera lu dans le #it .C/8 du registre .CS,A. En mode 8 #itsD le #it .C/8 ne sera pas utilis. Configuration de la r-1eption+ &''EL : Fon1tionne en mode as(n1Erone a>e1 : #its A1A : autorisation de la d-te1tion dAadresse A0A : in>alidation de la d-te1tion dAadresse 'ans la plupart du temps nous tra>aillerons dans un mode 8 #itsD don1 sans d-te1tion d2adresse+ Les #its d2-tat L2E!6&7" propose 5 #its d2-tat : ,.M, : @tat du registre B d-1alage dAen>oi A1A : 7egistre B d-1alage >ide A0A : 7egistre B d-1alage plein #3.. : 'rapeau de d-te1tion dAerreur dAen1adrement %Framing Error* A1A : Erreur dAen1adrement A0A : Pas dAerreur -3.. : 'rapeau de d-te1tion dA)>errun Error A1A : Erreur dA)>errun A0A : pas dAerreur )n nAutilisera pas le #it 6EL'? du registre "M6"& %on le laissera B [-ro*+ 'euG #its sont inutilis-s pour une transmission as(n1Erone+ Il s2agit du #it 5 du registre 7C6"& et du #it 0 du registre "M6"& +

/.6 35emple de con4i)uration de la liaison srie


)n souEaite par eGemple 1onfigurer la liaison s-rie pour une transmission de : 8 #its de donn-es 2 #its 6")P sans parit >itesse de transmission :1:200 #auds+ La fr-quen1e du quart[ du PIC est de 4 ,.[+ Solution : 7egistre S V.G )n >a don1 fiGer le #it ?7G. et la >aleur de 6P?7G+ Le ta#leau 18 5 pour ?7G.VA0AD nous donne un 6P?7G de 2 et une erreur de 8D51r+ Le ta#leau 18 5 pour ?7G.VA1AD nous donne un 6P?7G de 12 et une erreur de 0D19r+ CAest 1ette derniCre >aleur que nous allons 1onser>er+ V.G:L2120 S V.G de 12

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 150

Le PIC 18F4520 et sa programmation en C

7egistre ,aS,A C67C : A0A sans importan1e 1ar on est en mode as(n1Erone "M: : A1A transmission de : #its %le neu>iCme #it sera un #it de 6")P* "MEL : A1A &utorisation de la transmission 6XLC : A0A ,ode de fon1tionnement as(n1Erone 6EL'? : A0A ?7G. : A1A >oir 1i dessus "7," : A0A 1Aest un #it en le1ture seuleD don1 sans importante a "M:' : A1A le neu>iCme #it sert de #it de 6")P 6oit ,aS,A L &56% 7egistre .CS,A 6PEL : A1A >alidation de lAaffe1tation au port s-rie de 7C9 et 7C0 7M: : A1A r-1eption de : #its 67EL : A0A 6ans importan1e pour le mode as(n1Erone C7EL : A1A Jalidation de la r-1eption &''EL : A0A in>alidation de la d-te1tion dAadresse FE77 : A0A 1Aest un #it en le1ture seuleD don1 sans importante a )E77 : A0A 1Aest un #it en le1ture seuleD don1 sans importante a 7M:' : A0A 1Aest un #it en le1ture seuleD don1 sans importante a 6oit .CS,A L &58& Et VA18C-K L &5&&

/.*

35emple d2un pro)ramme

EGemple dAun programme qui >a en>o(er le 1ara1tCre A&A %1ode &6CII 0G41* a>e1 les 1ara1t-ristiques sui>antes : 8 #its de donn-es 2 #its 6")P sans parit >itesse de transmission :1:200 #auds+ La fr-quen1e du PIC est de 4 ,.[+ LAanal(se stru1tur-e du programme peut se pr-senter 1omme suit :

ILI"I&LI6E7 L& LI&I6)L 6E7IE ELJ)XE7 LE C&7&C"E7E A&A &""EL'7E L& FIL 'E L& "7&L6,I66I)L Le programme en langage C 1orrespondant :

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 151

Le PIC 18F4520 et sa programmation en C

fin1lude 18F4520+E >oid initqserie %>oid*c << fonction d'initialisation de la liaison srie

>oid main % >oid * l initqserie%*c << Initialisation de la liaison srie "M7EGV0G41c << -n/oi du caract(re ' ' sur la liaison srie /Eile %"7,"VV0*c << ttente de la fin de la transmission n >oid initqserie %>oid* << 5N6>> bauds2 : bits de donnes2 6 bits de !&,P2 sans parit l 6P?7GV12c << configuration de la /itesse de transmission "M6"&V0G95c << configuration de la transmission 7C6"&V0G'0c << configuration de la rception ?&!'C)L V 0G00 c 88 configuration du registre de contrIle de /itesse de transmission n

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 152

Le PIC 18F4520 et sa programmation en C

10 5

Chapitre 1&

(es a11icheurs cristau2 li3uide 4(C56

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 155

Le PIC 18F4520 et sa programmation en C

1&.1 Gnralits 1&.1.18escription


Les affi1Eeurs B 1ristauG liquides sont des modules 1ompa1ts intelligents qui n-1essitent peu de 1omposants eGternes pour un #on fon1tionnement+ Ils sont relati>ement #ons mar1E-s et sAutilisent a>e1 #eau1oup de fa1ilit-+ Ils sont pratiquement les seuls B Itre utilis-s sur les appareils B alimentation par piles du fait de leur fai#le 1onsommation en -le1tri1it-+ Il eGiste deuG grands t(pes dAaffi1Eeurs+ Les affi1Eeurs LC' qui affi1Eent des 1ara1tCres &6CII %figure 1*+ Les affi1Eeurs LC' grapEiques qui permettent dAaffi1Eer des images %figure 2*+ Le mode de 1ommande de 1es deuG affi1Eeurs diffCre 1ar dans le premier 1asD on en>erra des 1odes &6CII+ 'ans le se1ond 1asD on en>erra les donn-es piGel par piGel+ Lous ne nous int-resserons i1i quAau premier t(pe dAaffi1Eeurs+

&ffi1Eeur LC' standard

&ffi1Eeur LC' grapEique

Plusieurs affi1Eeurs sont disponi#les sur le mar1E- et ne diffCrent les uns des autresD non seulement par leurs dimensionsD %de 1 B 4 lignes de 9 B 80 1ara1tCres*D mais aussi par leurs 1ara1t-ristiques te1Eniques et leurs tension de ser>i1e+ Certains sont dot-s dAun r-tro -1lairage de lAaffi1Eage+ Cette fon1tion fait appel B des LE' mont-es derriCre lA-1ran du moduleD 1ependantD 1et -1lairage est gourmand en intensit- %250 m& maG+*+ L-anmoinsD le prin1ipe de pilotage de 1es affi1Eeurs est le mIme+ Il sont -galement le plus sou>ent inter1Eangea#les B 1ondition que leur tension de ser>i1e soit la mIme+

1&.1.2 rincipe des cristau5 li6uides


LAaffi1Eeur est 1onstitu- de deuG lames de >erreD distantes de 20 Tm en>ironD sur lesquelles sont dessin-es les mantisses formant les 1ara1tCres+ LAespa1e entre elles est rempli de 1ristal liquide normalement r-fl-1Eissant %pour les modCles r-fle1tifs*+ )n peut -galement leur a;outer une 1ou1Ee r-fl-1Eissante sur la fa1e arriCre+ LAappli1ation entre les deuG fa1es dAune tension alternati>e #asse fr-quen1e de quelques >olts %5 B 5 J* le rend a#sor#ant+ Les 1ara1tCres apparaissent som#res sur fond 1lair+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 154

Le PIC 18F4520 et sa programmation en C

CEaque 1ristal liquide repr-sente don1 un piGel+ Ces piGels sont alors group-s par #lo1 de 8 piGel de Eaut par 5 piGels de large qui ser>iront ensuite B affi1Eer un 1ara1tCre 1omme le montre la figure 1i dessous+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 155

Le PIC 18F4520 et sa programmation en C

Il eGiste diff-rents t(pes dAaffi1Eeurs : Les modCles r-fle1tifs qui nA-mettent pas de lumiCre et r-fl-1Eissent la lumiCre am#iante+ Ils ne peu>ent Itre utilis- quAa>e1 un #on -1lairage am#iant+ 6a lisi#ilit- augmente a>e1 lA-1lairage+

Les modCles transmissifs fon1tionnent diff-remment : normalement opaque au reposD le 1ristal liquide de>ient transparent lorsquAil est eG1it-+ Pour rendre un tel affi1Eeur lisi#leD il est n-1essaire de lA-1lairer par lAarriCreD 1omme 1Aest le 1as pour les modCles r-tro -1lair-s+

Les transfle1tifs qui sont -quip-s dAun miroir semi r-fl-1Eissant sur la fa1e arriCre+ Cela leur permet dAutiliser B la fois la lumiCre du ;our et dAItre r-tro -1lair-+

1&.1.' rincipe de 4onctionnement


!chma fonctionnel 7 Comme le montre le s1E-ma fon1tionnelD lAaffi1Eage 1omporte dAautres 1omposants que lAaffi1Eeur B 1ristauG liquides %LC'* seul+ !n 1ir1uit int-grde 1ommande sp-1ialis-D le 1ontr3leur +C$ est 1Earg- de la gestion du module+ Le S1ontr3leurS a plusieurs fon1tions+ Il sert B piloter lAaffi1Eeur LC' mais aussi B ser>ir dAinterfa1e a>e1 lAeGt-rieur+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 159

Le PIC 18F4520 et sa programmation en C

1&.1.$Conne5ions
Les 1onneGions B r-aliser sont simples puisque lAaffi1Eeur LC' dispose de peu de #ro1Ees+ )n trou>era : une alimentation un #us de donn-e %4 ou 8 #its* pour re1e>oir des informations ou en ren>o(er une patte de >alidation des donn-es 3na>le une patte de s-le1tion le1ture<-1riture .ead+Jrite un patte .e)ister Select %instru1tion<affi1Eage* qui permet de 1Eoisir si on en>oi une 1ommande B lAaffi1Eeur ou un 1ara1tCre B affi1Eer+ Il eGiste prin1ipalement deuG t(pes de #ro1Eages : 1 )2 5))4 5))9 0))8 : ) ) 10 11 ) ) 12 15 ) ) 14 1 ^8 '0++'0 :E 10 7<<K 11 76 12 Jl1 15 Jss 14 J11

73le des diff-rentes pattes : J11 : &limentation de lAaffi1Eeur %W5J* Jss : ,asse du montage Jo<Jl1 : 7-glage du 1ontraste %Jariation de la tension entre 0 et 5J* 76 : 7egister sele1t 7<<K : 7ead Krite E : Ena#le 'G : #it du #us de donn-e

1&.2 A44icheur (C8 S3!e- M16'2 1&.2.18escription


LAaffi1Eeur , 1952 1omporte 2 lignes de 19 1ara1tCres ins1rits dans une matri1e de 5 1olonnes de 8 points+ La plupart des 1ara1tCres nAutilisent que les 0 rang-es sup-rieures de la matri1e+ La rang-e inf-rieure est pr->ue pour la >isualisation dAun 1urseur+ LAaffi1Eeur proprement dit est implant- sur
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 150

Le PIC 18F4520 et sa programmation en C

un 1ir1uit imprim- au dos duquel sont soud-s deuG 1ir1uits int-gr-s JL6I et quelques 1omposants dis1rets+ LA-le1tronique est 1ompati#le C ,)6 et ""L+ 6es entr-es sont prot-g-es par des diodes+ La m-moire 7&, interne d2affi1Eage se 1ompose de 2G40 o1tets+ LAaffi1Eeur permet d2affi1Eer 2G19 o1tets soit 52 1ara1tCres+ Le 1ara1tCre B affi1Eer est rang- dans la 7&, par son 1ode &6CII+ 1=.2.1.1 La m!moire LAaffi1Eeur possCde deuG t(pe de m-moireD la '' 7&, et la CG 7&,+ La '' 7&, est la m-moire dAaffi1Eage et la CG 7&, est la m-moire du g-n-rateur de 1ara1tCres+ 1=.2.1.2 La m!moire d&a22ic#a$e La '' 7&, est la m-moire qui sto1Pe les 1ara1tCres a1tuellement affi1E- B lA-1ran+ Pour un affi1Eeur de 2 lignes de 19 1ara1tCresD les adresses sont d-finies de la fa=on sui>ante : (i)ne .aut ?as Bisi>le !n?isi>le 00.++++++++++0F. 10.++++++++++20. 40.++++++++++4F. 50.++++++++++90.

LAadresse 00. 1orrespond B la ligne du Eaut B gau1EeD 0FE B droite+ LAadresse 40E 1orrespond B la ligne du #as B gau1EeD 4FE B droite+ La [one in>isi#le 1orrespond B la m-moire de lAaffi1Eeur %48 1ara1tCres*+ LorsquAun 1ara1tCre est ins1rit B lAadresse 20ED le 1ara1tCre sui>ant apparaOt B la ligne sui>ante+ 00E 40E #en[tre da44icha)e _ 20E 90E

!n 1urseur permet de pointer la 1ase m-moire ou l2on -1rit ou lit

Adresses de la 7&, d2affi1Eage 1=.2.1.3 La m!moire du $!n!rateur de caractres 8CG R)1:

Le g-n-rateur de 1ara1tCre est quelque 1Eose de trCs utile+ Il permet la 1r-ation dAun maGimum de 8 1ara1tCres ou s(m#oles 5G0+ !ne fois programm-sD les nou>eauG 1ara1tCres peu>ent Itre a11-d-s 1omme sAils -taient dans le ;eu de 1ara1tCres 1lassiqueD sto1P-s en 7),+ La CG 7&, utilise des mots de 8 #its de largeD mais seul les 5 #its de poids fai#le apparaissent sur le LC'+ &insi '4 repr-sente le point le plus B gau1Ee et '0 le point le plus B droite+ Par eGempleD 1Earger un o1tet de la CG 7&, B 1FE fait apparaOtre tous les points de 1ette rang-e+ CEarger un o1tet B 00E -teint tous 1es points+ Les 8 lignes dAun 1ara1tCre doi>ent Itre programm-es dans la CG 7&,+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 158

Le PIC 18F4520 et sa programmation en C

La CG 7&, peut Itre utilis-e pour 1r-er des 1ara1tCres en >id-o in>ers-eD des 1ara1tCres a>e1 des a11entsD et1+ La limitation dAun total de 8 1ara1tCres peut Itre 1ontourn-e en utilisant une #i#liotECque de 8 s(m#oles r-sidant dans le s(stCme E3te+ !n maGimum de 8 1ara1tCres peut Itre affi1E- B la fois+ La CG 7&, peut Itre re1Earg-e p-riodiquement en fon1tion des #esoins+ 6i un 1ara1tCre de la CG 7&, qui est a1tuellement sur lAaffi1Eeur est 1Eang-D alors le 1Eangement est imm-diatement apparent sur lAaffi1Eeur+

1&.2.2(e Neu de caractres standard


Les affi1Eeurs utilisent tous le mIme t(pe de 1ontr3leur qui permet dAaffi1Eer lAensem#le des 1ara1tCres &6CIID ainsi que quelques s(m#oles et un ;eu de 1ara1tCres ;aponais st(lis-s+ Les 1ara1tCres a11entu-s fran=ais ne font pas parti du ;eu de 1es 1ontr3leurs+ Fort EeureusementD on peut tout de mIme affi1Eer tous les 1ara1tCres d-sir-s grN1e B des 1ara1tCres d-finissa#les par lAutilisateur+ CeuG 1i sont au nom#re de Euit et 1orrespondent auG 1ara1tCres de 0 B 0+ LAaffi1Eeur est en mesure dAaffi1Eer 200 1ara1tCres : de 00. B 00. : 8 1ara1tCres d-finissa#les par lAutilisateur de 20. B 0F. : :9 1ara1tCres &6CII eG1ept- le 1ara1tCre u qui est rempla1- par le signe v de &0. B 'F. : 94 1ara1tCres ;aponais %alpEa#et Pana* E0. B FF. : 52 1ara1tCres sp-1iauG %a11entD lettres gre1quesD +++*

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 15:

Le PIC 18F4520 et sa programmation en C

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 140

Le PIC 18F4520 et sa programmation en C

'e plusD lAaffi1Eage est 1apa#le de traiter dAautres 1ommandes telles que : LAeGtin1tion de lAaffi1Eage Le positionnement du 1urseur Le d-pla1ement des 1ara1tCres sur lAaffi1Eage Le 1EoiG du 1ara1tCre B red-finir Le 1EoiG du sens du d-pla1ement du 1urseur ou de lAaffi1Eage Le 1lignotement des 1ara1tCres ou du 1urseur +++

1&.2.' rincipe de 4onctionnement


Pour 1ommuniquer a>e1 lAaffi1EeurD il faudra : Lui indiquer sAil sAagit dAune entr-e ou dAune sortie Lui indiquer si 1Aest un 1ara1tCre B affi1Eer ou une 1ommande B eG-1uter 'onner la >aleur Jalider lAen>oi

Le ta#leau 1i dessous indique les diff-rents modes dA-1Eange entre un mi1ropro1esseur et un affi1Eeur en fon1tion de lA-tat des lignes 76 et 7<<K+ .S & & 1 1 .++J &1tion de lAaffi1Eeur & Contr3le a11Cs en -1riture pour 1onfigurer l2affi1Eeur et pointer la 7&, d2affi1Eage 1 Contr3le a11Cs en le1ture pour lire l2o11upation de l2affi1Eeur %#it 0* et l2adresse d2affi1Eage & @1riture dans la 7&, d2affi1Eage 1 Le1ture de la 7&, d2affi1Eage

Le prin1ipe de fon1tionnement est simple : Pour enregistrer un 1ara1tCre dans la m-moire dAaffi1EageD il suffit de le positionner sur le #us de donn-e %1od- en &6CII*D de mettre 76 au ni>eau Eaut %1ara1tCre*D 7<<K au ni>eau #as %-1riture*D et de pro>oquer un front des1endant sur lAentr-e de >alidation de lAaffi1Eeur %E*+ Il faut respe1ter un timing pr-1is pour lAen>oi des donn-es et le positionnement des diff-rents signauG+ 'ans le 1as 1ontraireD lAaffi1Eeur peut ne pas 1omprendre lAinstru1tion+ Les timings de la page sui>ante indiquent les diff-rents temps B respe1ter+ 'e mImeD les affi1Eeurs mettent un 1ertain temps B eG-1uter les 1ommandes quAon lui en>oi+ A,,3K,!-K: Aprs cha6ue action sur l2a44icheur0 il 4aut ?ri4ier 6ue celuiEci est en mesure de traiter l2in4ormation sui?ante. Si l2on tente d2crire des donnes ou d2en?oyer une commande l2a44icheur pendant 6ue ce dernier est en cours de traitement des donnes ou d2une commande prcdentes0 le systme peut se planter0 l2a44icha)e s2a44oler et les deu5 circuits int)rs ?oir leurs tempratures au)menter >rutalement \

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 141

Le PIC 18F4520 et sa programmation en C

our cela deu5 solutions sont possi>les: Gnrer des temporisations 6ui permettent l2a44icheur d2e5cuter les instructions pr?ues. C2est la solution la plus simple. (ire l2adresse de la position du curseur 7.SL&0 .++JL19 et tester l2indicateur 4la) @Vusy@ 7V#9. (ors6ue V#L1 l2a44icha)e est en cours et lors6ue V#L&0 l2a44icha)e est termin.

1&.2.$ Commande d2un a44icheur (C8 'euG modes de fon1tionnement de lAaffi1Eeur sont disponi#les : le mode 4 #its et le mode 8 #itsD modes que lAon 1Eoisira B lAinitialisation de lAaffi1Eeur %>oir plus #as*+
GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand* Page 142

Le PIC 18F4520 et sa programmation en C

1=.2.4.1

1ode ; bits

'ans 1e mode 8 #itsD les donn-es sont en>o(-es B lAaffi1Eeur sur les #ro1Ees 8& B 8*+ )n pla1e la ligne .S B 0 ou B 1 selon que lAon d-sire transmettre une 1ommande ou une donn-e+ Il faut aussi pla1er la ligne .+J B 0 pour indiquer B lAaffi1Eeur que lAon d-sire effe1tuer une -1riture+ Il reste B en>o(er une impulsion dAau moins 450 ns sur lAentr-e 3D pour indiquer que des donn-es >alides sont pr-sentes sur les #ro1Ees 8& B 8*+ LAaffi1Eeur lira la donn-e sur le front des1endant de 1ette entr-e+ 6i on d-sire au 1ontraire effe1tuer une le1tureD la pro1-dure est identiqueD mais on pla1e 1ette fois la ligne .+J B 1 pour demander une le1ture+ Les donn-es seront >alides sur les lignes '0 B '0 lors de lA-tat Eaut de la ligne 3+ 1=.2.4.2 1ode 4 bits

Il peutD dans 1ertains 1asD Itre n-1essaire de diminuer le nom#re de fils utilis-s pour 1ommander lAaffi1EeurD 1ommeD par eGemple lorsquAon dispose de trCs peu de #ro1Ees dAentr-es sorties disponi#les sur un mi1ro1ontr3leur+ 'ans 1e 1asD on peut utiliser le mode quatre #its de lAaffi1Eeur LC'+ 'ans 1e modeD seuls les 4 #its de poids fort %8$ B 8** de lAaffi1Eeur sont utilis-es pour transmettre les donn-es et les lire+ Les 4 #its de poids fai#le %8& B 8'* sont alors 1onne1t-s B la masse+ )n a don1 #esoinD Eors alimentationD de sept fils pour 1ommander lAaffi1Eeur+ Les donn-es sont alors -1rites ou lues en en>o(ant s-quentiellement les quatre #its de poids forts sui>i des quatre #its de poids fai#les+ !ne impulsion positi>e dAau moins 450 ns doit Itre en>o(-e sur la ligne E pour >alider 1Eaque demi o1tet ou ni##le+ 'ans les deuG modesD on peutD aprCs 1Eaque a1tion sur lAaffi1EeurD >-rifier que 1elui 1i est en mesure de traiter lAinformation sui>ante+ Pour 1elaD il faut demander une le1ture en mode 1ommandeD et tester le flag ?us( V#+ Lorsque ?FV0D lAaffi1Eeur est prCs B re1e>oir une nou>elle 1ommande ou donn-e+ Il se peut quAon dispose en1ore de moins de #ro1Ees disponi#les dans lAappli1ation en>isag-e+ 'ans 1e 1asD on peut alors relier la ligne .+J B la masse de fa=on B for1er lAaffi1Eeur en -1riture+ )n a alors #esoinD Eors alimentationD de seulement siG fils en mode 4 #itsD et diG fils en mode 8 #itsD pour 1ommander lAaffi1EeurD mais on ne peut alors plus relire lAaffi1Eeur+ Ce1i nAest pas gInant dans la mesure o\ on sait 1e quAon a -1rit sur lAaffi1EeurD mais on ne peut alors plus relire le flag ?us(+ Il faut alors utiliser des temporisations aprCs 1Eaque -1riture sur lAaffi1Eeur+ )n perd alors un peu en temps dAaffi1EageD mais on gagne une #ro1Ee dAentr-e sortie+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 145

Le PIC 18F4520 et sa programmation en C

1&.' (e Neu de commandes standard


Code !nstructions .S .+ 8* 86 8% 8$ 8' 82 81 8& J 8escription 8ure

Clear 'ispla(

Effa1e lAensem#le de la m-moire de donn-e sans tou1Eer au 1D94 1 g-n-rateur de 1ara1tCres+ ms 7amCne le 1urseur en position Y Eome ZD B lAadresse 00+ 7amCne le 1urseur en position Y Eome ZD B lAadresse 00+ 6i lAaffi1Eage -tait d-1al-D il est 1D94 M remis B sa position dAorigine : ms lAadresse 00 se trou>e B nou>eau en Eaut B gau1Ee+

7eturn Eome

Entr( mode set

'-finit le sens de d-pla1ement du 1urseur aprCs lAapparition dAun 1ara1tCre %>ers la gau1Ee si 1 I<' 6 I<'V1D >ers la droite si I<'V0* et 40 Ts si lAaffi1Eage a11ompagne le 1urseur dans son d-pla1ement ou non %6*+ ' C ,et lAaffi1Eage en ou Eors fon1tion lAaffi1Eage %'*D le ? 1urseur %C*D le 1lignotement du 1urseur %?*+ 40 Ts

'ispla( on<off 1ontrol

Cursor and displa( sEift

1 6<C

7< M L

'epla1e le 1urseur %6<CV1* ou lAaffi1Eage %6<CV0* dAune M position >ers la gau1Ee %7<LV1* 40 Ts ou la droite %7<LV0* sans 1Eanger la '' 7&,+ '-finit la taille de lAinterfa1e %'LV0 pour mode 4 #itsD 'LV1 pour mode 8 #its*D le nom#re de lignes %LLV0 pour 1 ligneD LV1 M 40 Ts pour 2 ou 4 lignes*D et la taille des fontes %FV0 pour des 1ara1tCres 5G0D FV1 pour des 1ara1tCres 5G10*+

Fun1tion set

1 'L L

6et CG 7&, address

'-finit lAadresse de la CG 7&,+ Les donn-es de la CG 7&, 1 &5 &4 &5 &2 &1 &0 40 Ts sont en>o(-es aprCs 1ette 1ommande+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 144

Le PIC 18F4520 et sa programmation en C

6et '' 7&, address

'-finit lAadresse de la '' 7&,+ Les donn-es de la '' 7&, 1 &9 &5 &4 &5 &2 &1 &0 40 Ts sont en>o(-es aprCs 1ette 1ommande+

7ead #us( flag 0 w address Krite data to CG or '' 7&, 7ead data

Lit le flag #us( %?F*D et lAadresse de la position du 1urseur+ ?F 1 ?F &9 &5 &4 &5 &2 &1 &0 1 Ts >aut 0 si lAaffi1Eeur a11epte une instru1tionD 1 sAil est o11up0 '0 '9 '5 '4 '5 '2 '1 '0 1 '0 '9 '5 '4 '5 '2 '1 '0 E1rit des donn-es dans la '' 7&, ou la CG 7&,+ Lit les donn-es de la '' 7&, ou de la CG 7&,+ 40 Ts 40 Ts

1 1

&prCs a>oir d-fini le sens de d-pla1ementD les 1ara1tCres apparaissent au dessus du 1urseur %quAil soit >isualis- ou non*+ )n peut d-pla1er le 1urseur en utilisant la 1ommande Y Set 88 .AM address Z+ !n d-filement des 1ara1tCres est aussi possi#leD il suffit pour 1ela dAen>o(er la 1ommande 00. %I<'V1D 6V1*D sans ou#lier de positionner .S B 0+ ,ais il faut faire attention 1ar un d-1alage de lAaffi1Eage d-1ale -galement les adresses de lAaffi1Eeur de sorte que lAeGtrIme gau1Ee de la ligne sup-rieure ne soit plus adressa#le B lAadresse 00+ La 1ommande Y .eturn home Z permet de repositionner les adresses de lAaffi1Eage+

GEii1 I!"1 Greno#le !$F %$L &mal#erti P& 'egr(se ) 'eleage ' Fre( $P Guiramand*

Page 145

You might also like