Vous êtes sur la page 1sur 150

Informatique Industrielle

Informatique Industrielle
Intcrvcnants :
Marc Allain - marc.allain@fresnel.fr
Julien Marot - julien.marot@fresnel.fr
Micro-contrleurs Microchip
Cours Master SIS
2
Coordonnes

Marc A!!ain [Matre de confrence]


marc.allain@fresnel.fr
Equipe physique et traitement dima!e"
#nstitut $resnel" %ureau &'(

Ju!icn Marnt [Matre de confrence]


julien.marot@fresnel.fr
Equipe )roupe *i!nau+ Multidimensionnels
#nstitut $resnel" %ureau &,-
Nntc . les intervenants sont sur le domaine Universitaire de St-Jrme.
3
Organisation de l'enseignement
Cnntcnu hnrairc :

20 h dc cnurs + 10 h dc TD [Julien Marot] /10+ ,h0


1rsentation de linformatique industrielle" des syst2mes micro-
pro!ramms /architecture" principes !nrau+" ...0. 3tude dun micro-
contr4leur Microchip 1#5 '6$7(&8. 1ro!rammation en lan!a!e
Assem%leur et lan!a!e 5.

35 h dc travaux pratiqucs [Allain 9 Marot] /'&+ 7h0


Mise en pratique des connaissances sur la carte de dmonstration
1#5:EM& plus. ;tilisation du micro-contr4leur Microchip 1#5 '6$7(&8.
!
Mcrci d'trc a !'hcurc cn cnurs / TP !
4
Contrle des connaissances
Vnus tcs principa!cmcnt va!us sur !a basc dcs TP (15 pnints/20)
/'0 A<ant toute chose" <ous de<e= rdi!er un a!gnrigrammc"
/&0 les pro!rammes crits doi<ent >tre cnmmcnts"
/,0 vriIicatinn dcs prngrammcs en simulation et sur carte dessai"
/70 chaquc tudiant scra nnt individuc!!cmcnt ? nous <aluerons la participation de
chacun au sein dun %in4me constitu.
!
Examcn (5 pnints/20) . contr4le des connaissances a<ec poly de cours" sans
calculatrice" sur les notions <ues en cours /e+ercices inclus0 et en @1.
5
Boite outils

Lcs diIIrcntcs bascs dc numrntatinn


/binaire, octal, dcimal, hexadcimal0

Cnnvcrsinns ct npratinns sur !cs nnmbrcs binaircs

Nntinns d'!cctrnniquc numriquc


/fonctions logiques combinatoires et squentielles0

Nntinn dc prngrammatinn
/algorigramme, concept de variable, fonction" etc.0
6
Objectifs du cours
L'nb|cctiI dc cc cnurs est de <ous rendre capa%le de choisir" de pro!rammer"
dutiliser un micro-contr4leur et plus !nralement de <ous transmettre une culture
des syst2mes micro-pro!ramms.

Notions darchitecture [des syst2mes micro-pro!ramms]

!lments constitutifs [dun syst2me micro-pro!ramm]

"onctionnement [dun syst2me micro-pro!ramm]

!lments de choix [dun syst2me micro-pro!ramm]

5onnaissances des diffrents types dinstruction

Aotion dinterruption

1ro!rammation en Assem%leur

1ro!rammation en lan!a!e 5
Nnn ddi a un micrncnntr!cur
Ddi a un micrncnntr!cur
7
P!an
Prscntatinn dc !'inInrmatiquc industric!!c ct dcs systcmcs micrn-prngramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res au microcontr4leur /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
8
L'informatique industrielle est une branche de
l'informatique applique qui couvre l'ensemble des
techniques de conception et de programmation, de
systmes informatiss vocation industrielle, qui ne
sont pas des ordinateurs.
!"ource # $i%ipdia&
L'informatique industrielle
Source : Ascom S.A.
9
L'informatique industrielle
Dnmaincs d'app!icatinns :
Alarme" automo%ile" a<iation" instrumentation" mdicale" tlphonie mo%ile"
terminau+ de paiement pour carte %ancaire ...
Imae !ournie par Microchip
"#
L'informatique industrielle
App!icatinns :

Automates" ro%otique"

Mesures de !randeurs physiques"

*yst2mes temps-rel"

*yst2mes em%arqus.
Source : Ascom S.A.
""
Les diffrents systmes !rogrammables

Lcs circuits spcia!iss nu A5IC (App!icatinn 5pcciIic Intcgratcd Circuit) :


Ces circuits spcialiss sont des circuits spcialiss d2s leur conception pour une application
donne.
Excmp!cs . :*1 /#igital Signal $rocessing0" co-processeur arithmtique" processeur ,-:"
contr4leur de %us" ...
Avantages :

@r2s rapide

5onsommation moindre

Fptimis pour une application


Inconvnients :

$ai%le modularit

1ossi%ilit d<olution limit

5oGt
Source : $e%as Instruments
Source : &'i(ia
"2
Les diffrents systmes !rogrammables
Lcs systcmcs cn !ngiquc prngrammc ct/nu cn !ngiquc prngrammab!c snnt cnnnus snus !a
dsignatinn dc PLD /programmable logic device, circuit logique programmable0

FPGA /field-programmable gate arra%, rseau de portes programmables in-situ0"

PAL /programmable arra% logic, rseau logique programmable0"

...
Avantages :

$orte modularit

Bapidit
Inconvnients :

Mise en oeu<re plus comple+e

5oGts de d<eloppement le<


'n circuit logique programmable, ou rseau logique programmable, est un circuit intgr logique qui
peut (tre reprogramm aprs sa fabrication. )l est compos de nombreuses cellules logiques
lmentaires pouvant (tre librement assembl. !$i%ipdia&
Source : Altera Source : Altera
"3
Les diffrents systmes !rogrammables

Lcs systcmcs micrn-prngramms :


Ces micro-contr4leurs sont typiquement des syst2mes micro-pro!ramms.
;n micrn-cnntr!cur est un .
*ircuit intgr comprenant essentiellement un microprocesseur, ses mmoires, et
des lments personnaliss selon l'application. !+rr(t fran,ais du -. septembre
-//0 relatif la terminologie des composants lectroniques.&
Avantages :

Mise en oeu<re simple

5oGts de d<eloppement rduits


Inconvnients :

1lus lent

;tilisation sous optimale


Micro-contrleur Microchip
)I*"6+69# en ,o-tier .I/2#
;n micro-contr4leur contient un microprocesseur.
"4
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architccturc dcs micrn-cnntr!curs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
"5
"eu# ty!es de !rocesseurs

CI5C . &omplex 'nstruction Set &omputer

RI5C . (educed 'nstruction Set &omputer


)rand nom%re dinstructions"
@ype de processeur le plus rpandu
Aom%re dinstructions rduit
/slection des instructions pour une e+cution plus rapide0
:coda!e des instructions plus rapide
"6
$%olution et Loi de &oore
Intc! 8086 /'H-60
architecture interne 'I %its
%us 'I %its
frquence dhorlo!e 7"--E'8 Mh=
,H 888 transistors" !ra<s en ,Jm
8",,E8"-( M#1*
Intc! Pcntium 4 Nnrthwnnd C /&88&0
architecture interne ,& %its
frquence dKhorlo!e &"7E,"7 )h=
/%us processeur . &88Mh=0
plus de 7& millions de transistors" !ra<s en 8"', Jm
7(8 M#1*
Source : Intel
Source : Intel
Source : 0i1ip2(ia
"7
$%olution et Loi de &oore
Source : 0i1ip2(ia
Intc! Pcntium 4 Nnrthwnnd C /&88&0
architecture interne ,& %its
frquence dKhorlo!e &"7E,"7 )h=
$rquence de %us. 8"& )L=
plus de 7& millions de transistors" !ra<s en 8"', Jm
7(8 M#1*
Intc! Cnrc i7 Gu!Itnwn /&8''0
architecture interne I7 %its
7EI coeurs
frquence dhorlo!e ,"7I )h=
$rquence de %us. ,"& )L=
$rquence de transfert des donnes &(.I )%Esec.
'"'- Milliards de transistors" !ra<s en ,&nm
I888 M#1*
M@he OallP .
limite industrielle et physique"
&8 nm
performance E Datt consomm
"8
Les structures des systmes micro'!rogramms

Lcs diIIrcnts bus d'un systcmc micrn-prngramms


DIinitinn : ;n %us permet de faire transiter /liaison srieEparall2le0 des
informations codes en %inaire entre deu+ points. @ypiquement les informations
sont re!roups en mots . octet /6 %its0" Oord /'I %its0 ou dou%le Oord /,& %its0.
5aractristiques dun %us.

nom%res de li!nes"

frquence de transfert.
'n bus est un 1eu de lignes partages pour l2change de mots numriques.
!3rait de l2lectronique, 4aul 5oro6it7 8 $infield 5ill&
"9
Issu (e la (ocumentation techni3ue
(u )I*"6+628

Unidircctinnnc!
8

Largcur du bus

Bidircctinnnc!
2#
(tructures des systmes micro'!rogramms
I! cxistc 3 Typcs dc bus :

Bus dc dnnncs . permet de transfrer entre composants des donnes"


cx. . rsultat dune opration, valeur dune variable, etc.

Bus d'adrcsscs . permet de transfrer entre composants des adresses"


cx. . adresse dune case mmoire, etc.

Bus dc cnntr!c . permet lchan!e entre les composants dinformations de


contr4le [%us rarement reprsent sur les schmas].
cx. . priphrique pr)t*occup, erreur*excution russie, etc.
DIinitinn : ;ne adrcssc est un nom%re %inaire qui indique un emplacement dans
une =one mmoire
2"
(tructures des systmes micro'!rogramms

5tructurc dc Harvard
La diIIrcncc se situe au ni<eau de la sparation ou non des mmoires pro!rammes et donnes.
Ca structure de Lar<ard permet de transfrer donnes et instruction simultanment" ce qui
permet un !ain de performances.
4%traits (u cours intitul2 5/es
s7st8mes micro-proramm2s9

5tructurc dc Vnn Ncumann


22
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
Prscntatinn dcs diIIrcnts !mcnts d'un micrn-cnntr!cur, !mcnts dc chnix
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
23
(a%oir lire le sc)ma
bloc d*un micro'
contrleur
Issu (e la (ocumentation techni3ue (u
)I*"6+628
?
24
(a%oir lire le sc)ma
bloc d*un micro'
contrleur
RAM /Bandom Access Mem.0
mmoire rapide qui permet
de stoc+er temporairement
des donnes.
ROM /Bead Fnly Memory0
mmoire , lecture seule,
programme , vie.
EEPROM
/Elec. Erasa%le 1ro!ramma%le
Bead Fnly Memory0
mmoire lente qui permet de
stoc+er des donnes m)me
apr-s coupure de l.alim.
Lcs mmnircs :
25
(a%oir lire le sc)ma
bloc d*un micro'
contrleur

PC /1ro!ram 5ounter0

Rcgistrc/case mmoire0

ALU

Mu!tip!cxcur

Dcndcur d'instructinns

hnr!ngc

5tack (pi!c)
LIFO (Last In First Out)
FIFO (First In First Out)
26
(a%oir lire le sc)ma
bloc d*un micro'
contrleur

Rcgistrc /case mmoire0

ALU

PC /1ro!ram 5ounter0

Mu!tip!cxcur

Dcndcur d'instructinns

hnr!ngc

5tack (pi!c)
LIFO (Last In First Out)
FIFO (First In First Out)
Issu (e la (ocumentation
techni3ue (u )I*"6+628
27
(a%oir lire le sc)ma
bloc d*un micro'
contrleur

Pnrts d'cntrcs/snrtics

U5ART
/;ni<ersal *ynchronous Asynch.
Becei<er@ransmitter0
interface de communication srie,

CCP /5aptureE5ompareE1DM0
/odulation en largeur dimpulsions,

Timcr

Cnmparatcur

CAN/CNA

RIrcncc dc tcnsinn

Mndu!c HF

Liaisnn U5B, ...


28
Les lments de c)oi#
Architccturc :

AC; /6" 'I" ,&" I7 %its0

*tructure du processeur /Lar<ard" Qon Aeumann0

@ype de processeur /B#*5" 5#*50

@aille des mmoires pro!ramme et donne

Aom%re de ports dKentreEsortie


Fnnctinnna!its :

$onctions analogiques . 5AA" 5AA" 5omparateur" ...

$onctions de timing . @imer" Datchdo!" ...

$onctions de communication . ;AB@ /5ommunication


srie0" ;*R" #&5" ...

$acilit de pro!rammation . #n-5ircuit *erial


1ro!rammin!" *elf 1ro!rammin!" ...
Misc cn ncuvrc, maintcnancc :

5oGt de d<eloppement . outils de d<eloppement"


formation" ...

*ui<i du micro-contr4leur . production sui<ie"


disponi%ilit" composant o%sol2te" ...
Caractristiqucs !cctriqucs :

$rquence dKhorlo!e

@ensions dKalimentation

5onsommation dKner!ie" modes fai%le


consommation dKner!ie" ...
Caractristiqucs physiqucs :

@ype de %otier . :#C" 1C55" ...


Source : Microchip
29
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Rappc!s sur !cs nnmbrcs binaircs ct !cs diIIrcnts cndagcs
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
3#
Binaire+ octal+ dcimal et )e#adcimal
Fn rappelle tout da%ord les diffrentes %ases qui nous seront utiles .
le binairc /%ase &0 est constitu de & chiffres .
0, 1
lncta! /%ase 60" est constitu de 6 chiffres .
0, 1, 2, 3, 4, 5, 6, 7
le dcima! /%ase '80" est constitu de '8 chiffres .
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
lhcxadcima! /%ase 'I0" est constitu de 'I chiffres .
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Rcmarquc . pour connatre la %ase associe S un nom%re" on le note entre parenth2se a<ec en
indice une lettre %"o"d ou h selon quil sa!it dun coda!e %inaire" octal" dcimal ou
he+adcimal. 1ar e+emple" /'88'0
%
" /,$'0
h
ou /'&60
d
.
3"
Codes !ondrs
:ans une %ase donne" le nom%re se+prime comme une somme pondre. 1ar e+emple" le
nom%re '&6 dcima!c /%ase '80 est constitu de , chiffres .

le chiffre 6 est affect du poids de ' /units0

le chiffre & est affect du poids de '8 /di=aines0 M;n TroP

le chiffre ' est affect du poids de '88 /centaines0 M;n TroTroP


Ce nom%re peut donc scrire
' + '88 U & + '8 U 6 + ' V /1280
d
5hiffre
1oids
32
Codes !ondrs
Ce nom%re '8 binairc /%ase &0 est constitu de & chiffres .

le chiffre 8 est affect du poids de '

le chiffre ' est affect du poids de '8 /e+prim en %ase &0


Ce nom%re peut donc scrire
' + '8 U 8 + ' V /100
%
5hiffre
1oids
Rcmarquc . le nom%re '8 binairc ne sexprime pas di+ car ceci sous-entend que le nom%re
est e+prim en dcimal...
33
Codes !ondrs
:ans une %ase donne" le nom%re se+prime comme une somme pondre. 1ar e+emple" le nom%re
'$6 hcxadcima! /%ase 'I0 est constitu de , chiffres .

le chiffre 6 est affect du poids de ' /units0

le chiffre $ est affect du poids de '8 /di=aines0

le chiffre ' est affect du poids de '88 /centaines0


Ce nom%re peut donc scrire
' + '88 U $ + '8 U 6 + ' V /1F80
h
Cnnvcrsinn binairc-hcxadcima! . le coda!e he+adecimal a t cr afin dall!er le+ploitation des
nom%res %inaires. #l permet en particulier une cnnvcrsinn simp!c par regroupement des bits par 0 en
partant de la droite" chaque paquet tant alors simple S con<ertir .
8 8 8 ' ' ' ' ' ' 8 8 8
1 F 8 V /1F80
h
34
Con%ersion
Cnnvcrsinn cn dcima! : d<eloppement en somme de puissances de la %ase.
(1 0 0 1)
b

02
2
12
3
02
1
12
3
02
2
02
1
12
0
=81=9
b
12
0
5nit
316
2
216
1
15 16
0
=768 3215 =815
b
(3 2 F)
h
316
2
216
1
15 16
0
35
Cnnvcrsinn dcima! binairc : di<ision par & successi<es...
(14)
d
2
7 2
3
2
1
0
1
1
*
e
n
s

d
e

l
e
c
t
u
r
e
.
.
.
(14)
d
= (1 1 1 0)
b
Cnnvcrsinn dcima! hcxadcima! : di<ision par 'I successi<es...
(282)
d
16
17 16
1
10=A
1
*
e
n
s

d
e

l
e
c
t
u
r
e
.
.
.
(282)
d
= (11A)
h
36
Excrciccs 1 : con<ertir en dcimal les chiffres %inaires sui<ants .
/'''0
%
" /'8'80
%
" /'88' '''80
%
Excrciccs 2 : con<ertir en %inaire les chiffres dcimau+ sui<ants .
6" '&" &(I" '8&,
Excrciccs 3 : con<ertir en he+adcimal les chiffres %inaires sui<ants .
/'''0
%
" /'8'80
%
" /'88' '''80
%
Excrciccs 4 : con<ertir en he+adcimal les chiffres dcimau+ sui<ants .
6" '&" I-" &(I" '8&," '&,7'
Binaire+ octal+ dcimal et )e#adcimal
37
Binaire+ octal+ dcimal et )e#adcimal
1our indiquer le signc dKun nom%re %inaire" on ajoute un %it en t>te du nom%re.
Fn peut ainsi coder les entier relatifs et les nom%res rels.
8 8 ' 8 ' 8 8 ' ;n octet /6%its0 .
;n octet /6 %its0
;n mot ou Oord /'I %its0
;n dou%le mot ou dou%le Oord /,& %its0
M5B . Most *i!nificant Rit
L5B . CoO *i!nificant Rit
Rit de si!ne
V -'86 /decimal0
38
O!rations arit)mtiques binaires
Ces techniques de calcul des oprations arithmtiques peuvent )tre transposes du dcimal
au %inaire.

Additinn : Q V A U R" Exemple . /8''80


%
U /8'8'0
%
V /'8''0
%

Mu!tip!icatinn . Q V A + R" Exemple : (8''80


%
. /8'8'0
%
V /8''''80
%

5nustractinn : Q V A W R"
1our calculer Q" on calcule la somme entre A et le complment , deux de R
Exemple . /8''80
%
W /8'8'0
%
V /888'0
%
Unc mu!tip!icatinn (divisinn) par 2 cnrrcspnnd a un dca!agc a gauchc (a drnitc).
Cnmp!mcnt a dcux : remplacer les un par des =ros /et <ice-<ersa0" puis ajouter '.
Exemple . /'8''0 donne /8'880
%
U /'0
%
V /8'8'0
%
NOTEZ BIEN QUE...
39
Excrciccs 1 : effectue= les additions %inaires sui<antes
Excrciccs 2 :
Excrciccs 3 :
Excrciccs 4 : di<ise= /multiplie=0 par deu+ /8'880
%
" /'888'8'0
%
" /,$0
h
" /$$0
h
.
4#
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Lcs instructinns
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
4"
Instructions
;n |cu d'instructinn est un ensem%le dKoprations directement ralisa%les sur un
syst2me micro-pro!ramm donn.
Par cxcmp!c . le 1#5'6$7(&8 /B#*50 poss2de un jeu dKinstructions compos de -(
instructions. CKe+cution dKune instruction peut ncessiter un ou plusieurs cyc!cs
d'hnr!ngcs sui<ant la comple+it de linstruction.
NOTE . ;n cyc!c d'hnr!ngc correspond S une priode de !'hnr!ngc /si!nal de
rfrence temporelle0. Ca Irqucncc d'hnr!ngc est le nom%re de cycles effectus
par une horlo!e en une seconde.
42
Instructions
Instructinn = OPCODE + nprandc(s)
OPCODE (Opcratinn CODE) : partie dKune instruction qui prcise quelle
opration doit >tre ralise
4%trait (u (atasheet :(ocumentation techni3ue; (u )I*"8+452#.
;ne instruction est compose au minimum de deu+ parties.
43
,i!eline et flot d*instructions
3 tapcs pnur !'cxcutinn d'unc instructinn .

Cecture de lKinstruction /'0

:coda!e de lKinstruction /&0

E+cution de lKinstruction /,0


5ration dKun pipeline VX permet unee+cution plus rapide des instructions
' & ,
' & ,
' & ,
' & ,
' & ,
' & ,
@emps
@emps
44
Les diffrents modes d'adressage
L'adrcssagc inhrcnt : il nKy a pas dKoprande Y
e+ . NOP, RESET, CLRWDT ?
:escription de linstruction BE*E@ e+traite de la notice
technique /le MdatasheetP0 du 1#5 '6$7(&8 [micro-
contr4leur utilis en @1].
ATTENTION . ;n nom%re important dinformation
utiles fi!ure sur ces fiches...
Ca nature et le nom%re dKoprandes qui constituent une instruction dterminent le mndc
d'adrcssagc de lKinstruction. 1n distingue 0 modes d.adressage principaux.
45
Les diffrents modes d'adressage
Ca nature et le nom%re dKoprandes qui constituent une instruction dtermine le mndc
d'adrcssagc de lKinstruction. 1n distingue 0 modes d.adressage principaux.
L'adrcssagc immdiat : lKoprande est une <aleur
e+ . MOVLW 5Ah ?
2xcution de linstruction 3pipeline , 0 niveaux4
Nombres de c%cles ncessaires , lexcution
46
Les diffrents modes d'adressage
L'adrcssagc dircct (tcndu) : lKoprande est lKadresse /%its de
poids fai%les de ladresse compl2te0 de la donne dans la
pa!e mmoire acti<e.
e+ . ADDWF 888$h"
En mndc dircct tcndu . on transmet ladresse compl2te
Ca nature et le nom%re dKoprandes qui constituent une instruction dtermine le mndc
d'adrcssagc de lKinstruction. 1n distingue 0 modes d.adressage principaux.
47
Les diffrents modes d'adressage
NOTE . #l e+iste de nom%reu+ autres modes dKadressa!e /e+. implicite" inhrent" relatif0 . leur nom%re
<arie en fonction du constructeur et du micro-contr4leur Y

!'adrcssagc indircct (indcx) : lKoprande est lKadresse dKun re!istre qui contient lKadresse de la
donne.

En mndc indircct indcx" on ajoute un dcala!e par rapport S lKadresse.


Ca nature et le nom%re dKoprandes qui constituent une instruction dtermine le mndc
d'adrcssagc de lKinstruction. 1n distingue 0 modes d.adressage principaux.
48
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Rappc!s sur !a !ngiquc cnmbinatnirc ct squcntic!!c
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
49
Logique combinatoire et squentielle
La cnmprhcnsinn du Innctinnncmcnt dun microcontr4leur sappuie sur des connaissances
lmentaires de lo!ique com%inatoire et squentielle.

un systcmc cst dit cnmbinatnirc si ltat /lo!ique0 des sorties ne dpend que de ltat
/lo!ique0 prsent appliqu S ses entres.

un systcmc cst dit squcntic! si ltat /lo!ique0 de la sortie du syst2me a !'instant t dpend
de ltat /lo!ique0 prsent appliqu au+ entres ct des tats de la sortie dans le pass.
5#
-able de %rit
Cnnsidrnns tnut d'abnrd le cas de la lo!ique com%inatoire S ' sortie /le cas S plusieurs sorties
nest pas tr2s diffrent0. 1our connatre ltat du syst2me au+ di<ers com%inaisons lo!iques des
entres on construit la tab!c dc vrit qui e+prime la <aleur de la sortie s en fonction de toutes
les confi!urations possi%le des entres %inaires /E
i
0" cf. ci-dessous.
On nntcra quc pour une fonction lo!ique S une seule variable dentre" il e+iste &
&
V7 com%inaisons de
sorties.
:e m>me" pour deu+ <aria%les dentres" il e+iste &
7
V'I com%inaisons de sorties.
E
1
E
2
E
1
E
2
E
3
E
1
E
2
E
1
5"
O!rateurs lmentaires
Dans ccs cnnIiguratinns" on e+trait typiquement 5 fonctions logiques dintr)t que sont les oprateurs
NON /une entre0" ET" OU" ET-NON" OU-NON" et OU-EXCLU5IF /deu+ entres0.
Lcs npratcurs ET-NON ct OU-NON Inrmcnt un grnupc cnmp!ct" c.S.d. que toute fonction lo!ique
comple+e peut >tre construite sur la %ase de lune de ces fonctions lmentaires.
E
1
E
2
E
1
E
2
E
1
E
2
E
1
E
2
E
NON
OU-EX
OU
ET-NON OU-NON
ET
E
1
E
2
52
.lgbre de BOOL/
Lcs npratcurs !ngiqucs !mcntaircs permettent la construction dune al!2%re dite Ma!gcbrc dc
Bnn!cP. Ainsi" si on consid2re deu+ entres %inaires A et B" on adopte alors la con<ention sui<ante
pour construire des quations lo!iques .
NON ET-NON"
ET OU-NON"
OU" OU-EXCLU5IF
Lcs diIIrcntcs npratinns %nficient des proprits sui<antes

A
AB
AB
AB=AB
AB=AB
AB
AB
&ommutativit : 6ssociativit :
ABC=ABC
ABC=ABC
AB C=ABC
AB=BA
AB=BA
AB=BA
AB=BA
AB=BA
#istributivit :
A BC= AB AC
A BC=ABAC
7ois de #e /organ :
AB=AB
AB=AB
53
Le c)ronogramme
Dans !cs micrncnntr!curs" les tats du syst2me chan!ent en fonction dune basc dc tcmps qui est
lhorlo!e. 5eci conduit naturellement S introduire les chrnnngrammcs comme outil danalyse des
tats lo!iques dun syst2me.
Ce chrono!ramme a pour o%jet de tracer ltat %inaire de la /des0 sortie/s0 en fonction de l<olution
au cours du temps de ltat des entres. 5eci est illustr ci-dessous.
54
Les bascules async)rones
Lc vcrrnu D (Latch D)
Pnur !'csscntic!, unc bascu!c asynchrnnc est une fonction MmmoireP qui est commande. 5e
type de fonction est notamment utilis pour crer des re!istres du microcontr4leur.
Ce <errou : /ou %ascule : asynchrone0 est tr2s rpandu . elle copie en sortie ltat de lentre :
uniquement si sa commande 5 est acti<e ? dans le cas contraire" ltat en sortie Z est celui
prcdent" cf. chrono!ramme.
5
:
55
/#ercice 0 tude de la bascule 1(
Ecrirc !a tab!c dc vrit et complter le chrono!ramme pour le <errou B* ci-dessous.
*
B
Z
Z
56
Les bascules sync)rones
La Bascu!c D (F!ip-F!np D)
Unc bascu!c synchrnnc est une %ascule qui ne chan!e dtat que sur front montant ou descendant
appliqu sur son entre de commande. 5e type de %ascule est S la %ase du fonctionnement du
microcontr4leur.
5est la <ersion s%nchrone du <errou : Y
5
:
57
La Bascu!c JK /Jump-8noc+ out0
[
J
Les bascules sync)rones
58
(tructures des !orts d*entres2sorties
4%trait (e la (ocumentation techni3ue (u )I*"8+452# (e Microchip.
Un pnrt d'cntrcs/snrtics cst par dIinitinn un pnrt bidircctinnnc!.
:e fait" il est donc ncessaire de confi!urer !a dircctinn du port /in ou out0. :ans le
microcontr4leur" des re!istres spcifiques sont ddis S la !estion de ces ports...
59
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
Etudc du Innctinnncmcnt d'un micrn-cnntr!cur : !c PIC 18F4520
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
6#
Les registres
Lc rcgistrc W (accumu!atcur)
Lc cnmptcur prngrammc (PC)
Lc rcgistrc d'tat (F!ags)
Lcs rcgistrcs dc cnnIiguratinn :
les re!istres de directions pour les ports
dKentresEsorties /@B#*" *$B0" les re!istres de
!estion des interruptions" de !estion de la
mmoire /R*B" )1B" etc.0
;n rcgistrc 6 %its est synonyme dun
ensem%le de 6 cases mmoire. :e
nom%reu+ re!istres sont utiliss pour
!rer le microcontr4leur.
ATTENTION : tnus !cs rcgistrcs du micrncnntr!cur nc snnt pas rcprscnts sur !c schma...
6"
,ar e#em!le 0 le registre d'tat
Lc rcgistrc d'tat /*tatus Be!ister0 contient des %its dinformations sur les oprations arithmtiques
menes par lAC; /e+." le dpassement de format apr2s a<oir demand laddition de deu+ <aleurs 6
%its0.
62
,)ase de dmarrage du micro'contrleur
5uitc a unc npratinn dc rcmisc a zrn /BE*E@0" le micro-contr4leur effectue une phase de
dmarra!e .
1/ RE5ET : il peut >tre dclench par la mise sous tension du micro-contr4leur" la rception dKun
si!nal sur la %roche BE*E@ du micro-contr4leur" une instruction de BE*E@" ...
2/ Initia!isatinn du micrn-cnntr!cur : le micro-contr4leur effectue une temporisation afin de
!arantir la sta%ilit des si!nau+ dKhorlo!e.
3/ EIIaccmcnt dcs rcgistrcs : le micro-contr4leur efface le contenu des re!istres /<aria%le en
fonction du Mmode de BE*E@P que <ous effectue=0.
4/ Lccturc du vcctcur RE5ET
Ce micro-contr4leur lit lKadresse du pro!ramme principal dans la mmoire pro!ramme.
5/ Dbut dc !'cxcutinn du prngrammc principa!.
63
Organisation de la mmoire !rogramme
Cnmptcur dc prngrammc /150
le compteur de pro!ramme
Pi!c /*tac\0
une pile pour !rer les appels
pro!rammes et les interruptions
Vcctcur Rcsct
pointeur <ers lKadresse mmoire du
d%ut du pro!ramme principal
Vcctcurs d'intcrruptinn
pointeur <ers lKadresse mmoire du
pro!ramme S e+cuter en cas
dKinterruptions
Mmnirc prngrammc
=one mmoire rser<e au stoc\a!e des
pro!rammes crits par lKutilisateur
Rcmarquc : ;n pnintcur est une <aria%le contenant une adresse mmoire.
64
/#cution d*une
instruction
Drnu!cmcnt:
/'0 Ce compteur pro!ramme indique lKadresse
de lKinstruction sui<ante dans la mmoire
pro!ramme. /&0 CKinstruction est lue et stoc\e
dans le re!istre dKinstruction. /,0 1uis elle est
dcode par le module de dcoda!e et de
contr4le des instructions. /70 $inalement elle est
e+cute.
Adrcssagc inhrcnt
CKinstruction ne comporte pas dKoprande et
a!it implicitement sur un re!istre.
2xemples . SLEEP, RESET, NOP
Adrcssagc immdiat
CKinstruction comporte une oprande et a!it
e+plicitement sur un re!istre
2xemples . ADDLW, MOVLW
65
/#cution d*une
instruction
Drnu!cmcnt:
/'0 Cecture de lKinstruction dans la mmoire
pro!ramme S ladresse pointe par le compteur
pro!ramme. /&0 Cecture de lKinstruction et
dcoda!e. /,0 1our lKadressa!e direct" lKoprande
constitue la partie %asse de lKadresse mmoire sur
laquelle sKeffectue lKopration" la partie haute est
complte a<ec le re!istre R*B. /,0 1our
lKadressa!e tendu" lKoprande est lKadresse
compl2te de la case mmoire sur laquelle
sKeffectue lKopration. /70 $inalement lKinstruction
est e+cute sur la case mmoire pointe.
Adrcssagc dircct (tcndu)
CKinstruction comporte une oprande qui
indique lKadresse mmoire sur laquelle
sKeffectue lKopration.
2xemples . CLRF /direct0" MOVFF /tendu0
?
66
Organisation de la mmoire donnes
B5R /9an+ Select (egister0
1ermet de pr-slectionner la pa!e pour un acc2s
mmoire plus rapide.
VX notion de paginatinn dc !a mmnirc
GPR /:eneral $urpose (egisters0
Espaces mmoires qui permet le stoc\a!e de
donnes temporaires /<aria%le" ...0
Acccss Bank
pointeurs <ers des =ones mmoires
5FR /Special "unction (egisters0
Be!istres de contr4le et dKtat pour les
priphriques /notamment...0
67
,agination de la mmoire
MCa pa!ination de la mmoire consiste S di<iser la mmoire en %locs /pa!es0 de lon!ueur
fi+e.P /*ource . 5omment ]a Marche0
;ne adresse mmoire est alors di<ise en deu+ parties .
1artie haute 1artie Rasse
Dans !c cas d'unc instructinn avcc adrcssagc dircct" on transmet seulement la partie %asse
de lKadresse. Ce micro-contr4leur utilise le re!istre R*B pour complter lKadresse.
Attcntinn !! En adressa!e
direct" on doit sKassurer que
lKon tra<aille dans !a bnnnc
pagc mmnirc.
68
/#cution d*une
instruction
Drnu!cmcnt:
/'0 Cecture de lKinstruction dans la mmoire
pro!ramme S ladresse pointe par le compteur
pro!ramme. /&0 Cecture de lKinstruction et
dcoda!e. /,0 1our lKadressa!e direct" lKoprande
constitue la partie %asse de lKadresse mmoire
sur laquelle sKeffectue lKopration" la partie haute
est complte a<ec le re!istre R*B. /,0 1our
lKadressa!e tendu" lKoprande est lKadresse
compl2te de la case mmoire sur laquelle
sKeffectue lKopration. /70 $inalement
lKinstruction est e+cute sur la case mmoire
pointe.
Adrcssagc dircct (tcndu)
CKinstruction comporte une oprande qui
indique lKadresse mmoire sur laquelle
sKeffectue lKopration.
2xemples . CLRF /direct0" MOVFF /tendu0
69
/#cution d*une
instruction
Drnu!cmcnt:
/'0 Cecture de lKinstruction dans la mmoire
pro!ramme S ladresse pointe par le compteur
pro!ramme. /&0 Cecture de lKinstruction et
dcoda!e. /,0 Ca <aleur de lKoprande indique
le pointeur S utiliser. /70 Ca <aleur pointe est
lue /a<ec un <entuel dcala!e en mmoire0. /(0
$inalement lKinstruction est e+cute sur la
<aleur pointe.
Adrcssagc indircct (indcx)
CKinstruction comporte une oprande
indiquant un pointeur" c.S.d. une adresse de la
case mmoire sur laquelle sKeffectue
lKopration.
2xemples . ADDWF, NDF1, 1
7#
7"
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
Prngrammatinn cn Asscmb!cur -- Rappc! sur !cs a!gnrigrammcs
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
72
Conce!tion d'un systme embarqu
Fnrmc!!cmcnt, !a cnnccptinn d'un systcmc cmbarqu%as sur un microcontr4leur peut >tre
dcompose en , tapes distinctes.
(1) Lc dvc!nppcmcnt matric! sappuie sur un cahier des charges" c.,.d. la dfinition des
fonctionnalits et des performances du syst2me. 5ette tape doit permettre de spcifier les
caractristiques du microcontr4leur" de ses priphriques et de llectronique associe.
(2) Lc dvc!nppcmcnt !ngicic! sappuie sur ltape prcdente pour construire un al!ori!ramme"
puis le code qui <a >tre test. 5ette tape requiert que <ous choisissie= le lan!a!e /assem%leur
etEou <olu0 que <ous utilisere= sur des %ases ob;ectives" par e+emple de mani2re S optimiser
le temps de d<eloppement" la facilit de maintenance" le nom%re doprations" etc.
(3) La phasc dc tcst doit >tre mene pour <rifier que le cahier des char!es initial est %ien rempli.
5ette phase de test MfinaleP nemp>che pas da<oir men des tests spars lors des phases de
d<eloppement matriel et lo!iciel.
73
Chacunc dc ccs trnis tapcs prcdcntc peut >tre relati<ement comple+e et mo%iliser des moyens
financiers et humains consquents. 1ar ailleurs" le test S une tape peut remettre en cause les choi+ fait
S une tape prcdente . en pratique" on est donc plut4t confront S un cyc!c dc cnnccptinn plut4t quS
un enchanement parfaitement squentiel Y
:<eloppement matriel
@ests du syst2me complet
:<eloppement lo!iciel
74
Le d%elo!!ement du logiciel
La cnnstructinn d'un cndc machinc cxcutab!c sappuie sur un certain nom%re de composantes
/fichiers sources" li%rairies0 qui sui<ent le dia!ramme or!anisationnel ci-dessous.
(1) Lcs Iichicrs snurccs crits dans un lan!a!e
assem%leur etEou <olu doi<ent permettent au
syst2me em%arqu deffectuer les t^ches requises.
(2) Lc cnmpi!atcur ct/nu !'asscmb!cur a pour r4le de
con<ertir les instructions des sources en lan!a!e
machine.
(3) L'ditcur dc !icn permet de construire un
e+cuta%le S partir des o%jets issus soit des sources
soit de li%rairies pr-e+istantes.
75
La !rogrammation en .ssembleur
Lc !angagc Asscmb!cur /a%r! A*M0 cst un !angagc dc prngrammatinn dc bas-nivcau" qui fait la
correspondance entre des instructions en lan!a!e machine /mots %inaires0 et des sym%oles appels
mnmoniques plus simples S utiliser.
Lc !angagc Asscmb!cur cst un !angagc cnmpi!, c'cst a dirc :
'. CKutilisateur crit son pro!ramme en lan!a!e Assem%leur. 5e fichier est assem%l pour traduire le
pro!ramme en lan!a!e machine /a<ec <entuellement des amliorations0.
&. Ce pro!ramme en lan!a!e machine est alors utilis pour pro!rammer le micro-contr4leur" c.S.d.
quil est transfr dans la mmoire /pro!ramme0 pour >tre e+cut.
Source : Microchip
76
Les ty!es d*instructions en .ssembleur
A. Lcs instructinns prnprcs au micrn-cnntr!cur :

Ces instructions de transfert . !"#$%" !"#&" ...

Ces instructions arithmtiques . '()&" *''%&" ...

Ces instructions lo!iques . +",$%" *-'$%" ...

Ces instructions de %ranchement . b. /branch if <ero0" b,* /branch al=a%s0" ...


B. Lcs instructinns pr-prnccsscur permettent au pro!rammeur de donner des indications au
compilateur" elles sont destines au 15 et non pas au micro-contr4leur Y
#l e+iste diffrents types dKinstruction pr-processeur .

les instructions de contr4le . ",/ V d%ut du pro!ramme" (-' V fin du pro!ramme" etc. ?

les instructions conditionnelles . 0&" ($1(" (-'0&" etc. ?

les instructions relati<es au+ donnes . ,(1 V rser<ation dKespace mmoire" etc. ?

les instructions pour les macros


77
.lgorigrammes
La dcscriptinn du prngrammc par un a!gnrigrammc pcrmct dc :

gagncr cn cIIicacit lors de la phase de coda!e du pro!ramme"

dKnptimiscr !a structurc du pro!ramme"

de c!ariIicr !c Innctinnncmcnt du pro!ramme"

!c rcndrc cnmprhcnsib!c S une personne e+trieure.


:%ut" $in"
#nterruption
#nstruction
*ous-pro!ramme
@est dune condition
Qrai
$au+
#nitialisation
78
:%ut
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
Rroche '
du 1FB@R
S ltat haut _
Rroche & du 1FB@R
S ltat haut
Rroche & du 1FB@R
S ltat %as
,remier !rogramme
en assembleur
79
(tructure d*un !rogramme en assembleur
;
; Filename : premier_programme.asm
;
; Description :Recopie de l'tat de la broche 1 du PORT
; sur la broche ! du PORT
;
; "uthor: #ric $agraner
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; 8a con0iguration du micro3contr4leur est d0inie a(ec $P8"
; 98ogiciel de d(eloppement $icrochip:
Dans un prngrammc cn asscmb!cur" on peut distin!uer une partic pr!iminairc qui est systmatique
c.S.d. qui ne chan!e pas dun pro!ramme S lautre.
:%ut
8#
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORT
; sur la broche ! du PORT
;
; "uthor: #ric $agraner
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; et con0igurations matrielles par d0aut
5include 6$"_%O;F<=.inc7
; $odi0ication des con0igurations matrielles par d0aut
La prcmicrc partic cnnccrnc !'cn-ttc qui dIinit, !c p!us c!aircmcnt pnssib!c" la fonction du
pro!ramme ainsi que di<ers informations permettant de !rer lhistorique du code /auteur" date
dcritures et de modifications" numro de <ersion" etc.0
:%ut
8"
;
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORT
; sur la broche ! du PORT
;
; "uthor: #ric $agraner
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; et con0igurations matrielles par d0aut
5include 6$"_%O;F<=.inc7
; $odi0ication des con0igurations matrielles par d0aut
La dc!aratinn du micrn-cnntr!cur permet au compilateur de !nrer un code machine qui soit
comprhensi%le pour le microcontr4leur que <ous souhaite= pro!rammer.
:%ut
82
; Filename : premier_programme.asm
;
; Description : Recopie de l'tat de la broche 1 du PORT
; sur la broche ! du PORT
;
; "uthor: #ric $agraner
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; et con0igurations matrielles par d0aut
5include 6$"_%O;F<=.inc7
; $odi0ication des con0igurations matrielles par d0aut
Unc dircctivc au pr-prnccsscur dcmandc !'inc!usinn d'un Iichicr dc dIinitinn spcifique au
microcontr4leur qui dfinit certaines confi!urations matrielles par dfaut et permet de simplifier
lcriture des pro!rammes" cf. transparent sui<ant.
:%ut
83
;33333 Register Files
PORT" #>' ?'*F/*'
PORT #>' ?'*F/1'
PORT% #>' ?'*F/!'
PORTD #>' ?'*F/@'
PORT# #>' ?'*F/1'
8"T" #>' ?'*F/A'
8"T #>' ?'*F/"'
8"T% #>' ?'*F/'
8"TD #>' ?'*F/%'
8"T# #>' ?'*F/D'
. .
. .
. .
Extrait du Iichicr p18f4510.inc dc dIinitinns prnprc au micrn-cnntr!cur
84
; Filename : premier_programme.asm
;
; Description :Recopie de l'tat de la broche 1 du PORT
; sur la broche ! du PORT
;
; "uthor: #ric $agraner
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; et con0igurations matrielles par d0aut
; 5include 6$"_%O8F9:.inc7
; $odi0ication des con0igurations matrielles par d0aut
Unc dircctivc au pr-prnccsscur supp!mcntairc peut >tre spcifie de mani2re S modifier la
confi!uration par dfaut ta%lie dans 218&351040-).
Nntc . pour sa<oir comment modifier ces confi!urations" il faut aller <oir le fichier 218&351040-).
:%ut
85
;33333 'tilisation de l'oscillateur
;33333 en mode haute (itesse
%O;F<= OB% . ?B
Excmp!c dc cc quc pnurrait trc !c Iichicr MA5CONF640-)
86
org h'****' ; initialisation du (ecteur R#;#T
goto init
init clr0 PORT
mo(lC b'*******1'
mo(C0 TR<B ; %on0iguration de la direction
; du PORT. roche 1 en entre.
; roche ! D / en sortie
clr0 8"T
mo(lC *Fh
mo(C0 "D%O;1 ; %on0iguration des broches 1 D 1
; du PORT en #,B numriEue
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
On pcut distingucr cnsuitc une sccnndc partic qui correspond S la confi!uration des lments du
microcontr4leur qui entrent directement en jeu dans la fonction ralise...
La prcmicrc npratinn consiste systmatiquement S initia!iscr !c vcctcur RE5ET. Aote= que cette
tape na pas t note dans lal!ori!ramme /ce qui pourrait >tre considr comme une lacune...0.
87
org h'****' ; initialisation du (ecteur R#B#T
goto init
init clr0 PORT
mo(l< b'*******1'
mo(<0 TR9; ; %on0iguration de la direction
; du PORT. roche 1 en entre.
; roche ! = / en sortie
clr0 >"T
mo(l< *Fh
mo(<0 "D%O81 ; %on0iguration des broches 1 = 1
; du PORT en #,; numri?ue
La sccnndc npratinn correspond S la cnnIiguratinn du PORT B telle que dcrite par
lal!ori!ramme... 5ette confi!uration est directement fourni par le #atasheet du 1#5 '6$7(&8...
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
88
boucle bt0ss PORT@* ; roche 1 du PORT = l'tat haut A
; saute l'instruction sui(ante si
; tat haut
goto eteindre
allumer bs0 PORT@1 ; roche ! du PORT = l'tat haut
goto boucle
eteindre bc0 PORT@1 ; roche ! du PORT = l'tat bas
goto boucle
#8D
Rroche '
du 1FB@R
S
ltat haut _
Rroche & du
1FB@R
S ltat haut
Rroche & du
1FB@R
S ltat %as
La trnisicmc partic du prngrammc est ddie S la ralisation de la fonction principale" c.S.d.
la %oucle et le test.
89
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
Prscntatinn dcs intcrruptinns
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
9#
Les interru!tions
'ne interruption est un arr(t temporaire de l'e9cution normale d'un programme
informatique par le microprocesseur afin d'e9cuter un autre programme !appel routine
d'interruption&.
Les interruptions matrielles sont utilises lorsqu'il est ncessaire de pouvoir ragir en
temps rel un vnement asynchrone, ou bien, de manire plus gnrale, afin
d'conomiser le temps d'e9cution li une boucle de consultation !polling loop&. (Source
: $i%ipdia)
Unc intcrruptinn pcut avnir diIIrcntcs snurccs . priphrique dKentreEsortie" timer"
=atchdog /cf. e+plications plus loin0" ...
Lcs intcrruptinns snnt uti!iscs pour a<ertir le micro-contr4leur quand une condition
est remplie. En utilisant les interruptions" on <ite que le micro-contr4leur reste en
attente inutilement /pooling-loop0" elles permettent de !rer les <nements
asynchrones.
9"
Lcs intcrruptinns snnt, cn gnra!, cnntr!cs par 3 bits .

Un bit dc I!ag
indique quKune interruption a t dclenche et indique la source.

Un bit dc va!idatinn
permet S lKutilisateur dKacti<er ou non une interruption.

Un bit dc prinrit
permet de slectionner la priorit /hauteE%asse0 de lKinterruption.
Gcstinn dcs prinrits :
I! cxistc dcs intcrruptinns dc prinrit hautcs ct basscs. ` chaque type de priorit
correspond un vcctcur d'intcrruptinn et donc potentiellement une !estion diffrente des
interruptions sui<ant leur priorit.
Les interru!tions
92
Cc schma pcrmct dc cnmprcndrc
- le fonctionnement de la lo!ique
dKinterruption"
- la priorit accorde S une interruption"
- la confi!uration de la lo!ique S mettre en
place pour lKapplication souhaite
(c)ma de la logique d*interru!tion
On nntcra nntammcnt quc si une
interruption de haute priorit est en
concurrence a<ec une interruption de %asse
priorit" lKinterruption de haute priorit
Mprend la mainP.
93
"roulement d'une interru!tion
/'0. Rccptinn dc !'intcrruptinn : le micro-contr4leur reaoit une interruption.
/&0. 5auvcgardc dcs dnnncs (sauvcrgardc du cnntcxtc) : le micro-contr4leur sau<e une partie
<aria%le /en fonction du type dKinterruption0 de son tat interne dans la pile" notamment
lKadresse dans la mmoire pro!ramme ob le micro-contr4leur sKest arr>t.
/,0. Lccturc dc !'adrcssc du vcctcur d'intcrruptinn ct chargcmcnt dans !c PC.
/70. Excutinn dc !a rnutinc d'intcrruptinn,
/(0. Rtab!isscmcnt dcs dnnncs : le micro-contr4leur rta%lit les donnes stoc\es dans la pile.
/I0. Lc micrn-cnntr!cur rcprcnd snn Innctinnncmcnt nnrma!...
Attcntinn !! CKutilisateur doit penser S effectuer une sauvcgardc dc dnnncs du
pro!ramme principal pour ne pas les effacer pendant la routine dKinterruption et
!alement S supprimcr !c I!ag d'intcrruptinn qui a dclench lKinterruption.
94
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
Etudc d'un prngrammc cn Asscmb!cur avcc gcstinn dcs intcrruptinns
1rsentation de fonctions int!res /timer" 1DM" etc.0
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
95
,remier !rogramme a%ec interru!tion
:%ut
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
#nterruption S chaque front montant sur la
%roche ' du 1FB@R
$in
AF1
#nterruption
*uppression du fla! dinterruption
5han!e ltat de la %roche & du 1FB@R
Bestauration du conte+te
Betour au pro!ramme principal
*au<e!arde du conte+te
#dentification de linterruption
96
; Filename : premier_programme_interruption.asm
; %hange l'tat de la broche ! du PORT D chaEue 0ront
; montant sur la broche 1 du PORT 9gestion par interruption
; "uthor: #ric $agraner
; %ompan&: 'ni(ersit Paul %)anne
; Re(ision: 1.**
; Date: !**+,*-
list p.1/012!*
; D0inition du micro3contr4leur utilis
5include 6p1/0121*.inc7
; D0initions des emplacements mmoires des registres
; et con0igurations matrielles par d0aut
5include 6$"_%O;F<=.inc7
; $odi0ication des con0igurations matrielles par d0aut
B_T#$P R#; 1 ; Rser(ation d'un octet en mmoire
;T"T';_T#$PR#; 1 ; Rser(ation d'un octet en mmoire
;R_T#$P R#; 1 ; Rser(ation d'un octet en mmoire
Lc dbut d'un prngrammc en assem%leur" a<ec interruption" reste tr2s proche de celui dune <ersion
sans interruption. Fn peut tout de m>me remarquer des directi<es de rscrvatinn d'cmp!accmcnts
mmnirc en pr<ision de la sau<e!arde du conte+te lors de linterruption.
:%ut
97
org h'****' ; <nit. du (ecteur R#B#T
goto init
org h'***/' ; 9nit. du (ecteur 98T#RR'PT9O8
goto routine_interruption
init clr0 PORT
mo(lC b'*******1'
mo(C0 TR<B ; %on0ig. de la dir. du PORT
clr0 8"T
mo(lC *Fh
mo(C0 "D%O;1 ; roche 1D1 du PORT en #,B num.
mo(l< b'1**1****'; *CD* 37 <
mo(<0 98T%O8 ; < 37 98T%O8 E9nit. du registre d'interrup.F
boucle nop
goto boucle
#;D
Du cndc du prngrammc principa!" on distin!ue les tapes classiques dinitialisation du <ecteur BE*E@
et du 1FB@ R. Fn note aussi les parties propres au+ interruptions . initia!isatinn du vcctcur ct du
rcgistrc d'INTERRUPTION.
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
#nterruption S chaque front montant sur la
%roche ' du 1FB@R
$in
AF1
98
Lc rcgistrc d'intcrruptinn INTCON permet" dune part dacti<er les interruptions /%it -0" et dautre
part dacti<er le mode interruption e+ternes #A@8 /%it 70. :ans ce cas" linterruption sera dtecte
sur la %roche 8 du port R /cf. datasheet0.
99
routine_interruption
; ;au(egarde du conteCte
mo(<0 B_T#$P ; ;au(egarde de B
mo(00 ;T"T';@ ;T"T';_T#$P ; ;au(egarde de ;T"T';
mo(00 ;R@ ;R_T#$P ; ;au(egarde de ;R
; identi0ication de l'origine de l'interruption
bt0sc 98T%O8@1
goto interruption_98T*
bra restauration_conteCte
Lc dc!cnchcmcnt d'unc intcrruptinn conduit le microcontr4leur S sau<er ladresse de linstruction
courante dans la pile" puis S char!er le <ecteur dinterruption dans le 15.
:2s lors" il est systmatiqucmcnt ncessaire de /'0 sauvcgardcr !c cnntcxtc et /&0 idcntiIicr !'nriginc
dc !'intcrruptinn.
#nterruption
*au<e!arde du conte+te
#dentification de linterruption
"##
interruption_98T*
bc0 98T%O8@1 ; ;uppression du 0lag d'interruption
mo(l< *C*! ; *C*! 37 <
Cor<0 PORT ; < Cor PORT 37 PORT
goto restauration_conteCte
; Restauration du conteCte
restauration_conteCte
mo(00 ;R_T#$P@ ;R ; Restauration de ;R
mo(00 B_T#$P@ B ; Restauration de B
mo(00 ;T"T';_T#$P@ ;T"T'; ; Restauration de ;T"T';
ret0ie
#l faut ensuite systmatiqucmcnt /,0 mettre S zrn !c bit d'intcrruptinn puis" /70 cxcutcr !a Innctinn
pour laquelle linterruption a t pr<ue" et enfin /70 faire la rcstauratinn du cnntcxtc /(0 et retourner
au pro!ramme principal.
*uppression du fla!
dinterruption
5han!e ltat de la %roche &
du 1FB@R
Bestauration du conte+te
Betour au pro!. principal
"#"
(tructure gnrale d*un !rogramme
Beset Qector
:%ut du pro!ramme
:clarations
5onfi!uration
1ro!ramme principal
#nterrupt Qector
:%ut de la routine dKinterruption
*au<e!arde des donnes
#dentification de lKinterruption et
suppression du fla! dKinterruption
Boutine dKinterruption
Bta%lissement des donnes
Betour au pro!ramme principal
$in
"#2
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
Prscntatinn dc Innctinns intgrcs (timcr, PWM, ctc.)
1resentation du lan!a!e 5 pour le microcontr4leur E spcificit pour le 1#5 '6$7(&8
"#3
3onctions intgres du ,IC 4536789
Lcs micrncnntr!curs intgrcnt dcs Innctinnna!its quil est sou<ent utile de connatre
pour !a!ner du temps de d<eloppement. 1ar e+emple" le 1#5'6$7(&8 int2!re les
MmodulesP sui<ants .
! ;ne prsentation compl2te des diffrentes fonctions sort du cadre de ce cours.
Aous nous limiterons S ici S la prsentation du module @#MEB que nous
utiliserons en @1...

Lcs cnmptcurs ................................................................... >imer

Ces modules M5apture 5ompare 1DMP ............................. &&$

Ces comparateurs ................................................................. &omparator

Ces modules de con<ersion analo!iqueEnumrique .............. &6N*&N6

7es chiens-de-garde ........................................................ ?atchdog

7es diffrents modes de gestion de lalimentation


"#4
La fonctionnalit -imer
Lcs vncmcnts qui commandent !'incrmcntatinn snnt

un cycle dKhorlo!e" cest la fonction MtimerP ?

un front montant sur une %roche en entre" cest la fonction McounterP.


Lcs timcrs snnt dcs rcgistrcs incrmcnts S chaque ralisation dKun <nement" la
<aleur de ces re!istres pou<ant >tre pr-positionne S une <aleur initiale.
I! cn dcnu!c quc !c mndu!c timer pcut rcmp!ir !cs Innctinns suivantcs,

Uti!isatinn timcr : permet de fournir une rfrence temporelle S partir de lKhorlo!e du


micro-contr4leur" notamment dans le cadre dKapplications temps rel.

Uti!isatinn cnuntcr : sert S compter un nombre d.vnements as%nchrones sur une


%roche dKentre du micro-contr4leur.
"#5
Illustration !ar un e#em!le sim!le;;;
Cahicr dcs chargcs :
Fn cherche S utiliser le Mmodule timerP du microcontr4leur pour faire cli!noter
une CE: connecte sur le port BR'. Ca priode est fi+e S une frquence de ' L=.
Unc mthndc gnra!c...
(1) Lirc dans !a dncumcntatinn /data-sheet0 la section traitant du module.
(2) Dduiscz-cn !cs rcgistrcs S confi!urer lors de la phase dinitialisation.
(3) Cnnstruiscz !'a!gnrigrammc prala%le S lcriture du pro!ramme.
(4) Ecrivcz !c prngrammc asscmb!cur, tcstcz-!c ct dbuggcz-!c...
"#6
Extrait du data-shcct du PIC18F4520, p. 123-125
"#7
Extrait du data-shcct du PIC18F4520, p. 123-125
"#8
Qucstinns :
(1) E+plique= comment fonctionne le module @#MEB8 _ 5omment peut-on lutiliser
pour faire %asculer la sortie BR' toute les 8.( seconde _
(2) :onne= les <aleurs dinitialisation des diffrentes re!istres pour rentrer dans le
cahier des char!es.
(3) 5onstruise= lal!ori!ramme prala%le S lcriture du microcode.
(4) $inalement" cri<e= le pro!ramme en assem%leur.
(5) 3<alue= lerreur sur la priode associe au temps de+cution du code et
modifie= les re!istres en consquence.
"#9
.lgorigramme
:%ut
$in
AF1
A

C
O
M
P
L
E
T
E
R

!
""#
; Filename : timer*.asm
;
; Description : :nration d'un signal carr sur la
; broche 1 du PORT par utilisation du module T9$#R*
;
; "uthor:
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**-,*D
:%ut
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur
"""
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur [suite]
""2
Ca!ture+ Com!are+ ,<&
Lcs mndu!cs CCPM pnsscdc trnis mndcs de fonctionnement .

capturc
Lc mndc capture dc!cnchc unc actinn si un <nement pr-dtermin apparat /e+ .
chan!ement dKtat sur une %roche0. ;tilis a<ec les timers" ce module peut compter
les temps darri<es.

cnmparc
Lc mndc compare cIIcctuc unc cnmparaisnn permanente entre le contenu dKun timer
et une <aleur donne pour dclencher une action si ces contenus sont !au+.

Pu!sc width mndu!atinn (PWM)


Lc mndc PWM gncrc un signa! rcctangu!airc de frquence et de rapport cyclique
choisis par lKutilisateur.
""3
Illustration !ar un e#em!le sim!le;;;
Cahicr dcs chargcs :
Fn cherche S utiliser le Mmodule 551P du microcontr4leur pour !nrer un si!nal
rectan!ulaire sur la %roche B5&. Ca priode du 1DM est fi+e S une frquence de
I88 L= et le rapport cyclique S 8"(.
Qucstinns :
(1) E+plique= comment les modules 551' et @#MEB& fonctionnent ensem%le pour
produire un si!nal rectan!ulaire de priode et de rapport c%clique donn.
(2) #dentifie= les re!istres S initialiser et les <aleurs associes.
(3) 5onstruise= lal!ori!ramme et cri<e= le pro!ramme assem%leur.
""4
.lgorigramme
:%ut
$in
AF1
A

C
O
M
P
L
E
T
E
R

!
""5
; Filename : p<m*.asm
;
; Description : :nration d'un signal carr sur la
; broche ! du PORT% par utilisation du module PB$
;
; "uthor:
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**-,*D
:%ut
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur
""6
Les com!arateurs
Ccttc va!cur dc rIrcncc pcut trc

snit un signa! analogique dont on fait lacquisition sur une


autre %roche du micro-contr4leur /convertisseur analogique -
numrique0"

snit unc tension de rfrence !nre en interne par le micro-


contr4leur S lKaide du module de !nration de tension de
rfrence.
Lcs cnmparatcurs pcrmcttcnt de comparer le si!nal analo!ique prsent sur un
%roche du micro-contr4leur S une valeur de rfrence.
Cc principc dc Innctinnncmcnt dcrit ci-contre permet typiquement deffectuer une
commande de type tout-ou-rien /@FB0.
""7
Illustration !ar un e#em!le sim!le;;;
Cahicr dcs chargcs :
Fn reprend le cahier des char!es pos pour faire cli!noter un CE: %ranch sur BR8
/cf." illustration du module @#MEB p.cc0 mais on cherche maintenant S ajuster la
frquence de cli!notement en fonction dune tension prsente sur la %roche BA, du
microcontr4leur. Ca frquence sera de ,88L= si la tension est de infrieure S Q
::
E& et
de I88 L= si elle est suprieure S Q
::
E&.
Qucstinns :
(1) Fn utilise une rfrence interne de tension pour !nrer la <aleur de Q
::
E&.
E+plique= comment le module de tension de rfrence peut >tre confi!ur pour cela.
E+plique= ensuite comment le module de comparaison peut >tre utilis pour
raliser le cahier des char!es.
(2) #dentifie= les re!istres S initialiser et les <aleurs associes.
(3) 5onstruise= lal!ori!ramme et cri<e= le pro!ramme assem%leur.
""8
.lgorigramme
A

C
O
M
P
L
E
T
E
R

!
""9
; Filename : comparator.asm
;
; Description : :nration d'un signal carr sur la
; broche R* par T9$#R* et aGustement de la 0r?uence en
; 0onction d'une comparaison = une tension de r0rence.
;
; "uthor:
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**-,*D
:%ut
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur
"2#
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur [suite]
"2"
&odule de con%ersion
analogique2numrique

!a p!cinc chc!!c du module de con<ersion AEA


'ndique la plage de tension admissible en entre du module.

!a dynamiquc
'ndique le nombre de bits utiliss pour coder une valeur
analogique en numrique.

!a Irqucncc d'chanti!!nnnagc
Lc mndu!c dc cnnvcrsinn ana!ngiquc/numriquc permet de con<ertir le si!nal
analo!ique prsent sur une %roche du micro-contr4leur en un si!nal numrique.
Nntcs . /'0 la pleine chelle et la dynamique permettent de calculer la rsolution en tension du module
de con<ersion AEA ? /&0 la frquence dchantillonna!e doit respecter le /fameu+0 Mthor-me de
ShannonP ? cf cours de traitement du si!nal.
Lcs paramctrcs S prendre en compte pour la numrisation dKun si!nal sont
"22
Illustration !ar un e#em!le sim!le;;;
Cahicr dcs chargcs :
Fn reprend le cahier des char!es pos pour !nrer un si!nal rectan!ulaire a<ec le
module 1DM mais on cherche maintenant S ajuster en continu la frquence de
mani2re S ce quelle soit proportionnelle S la tension prsente sur la %roche BA8.
1our permettre lajustement en continu de la tension" on dclenchera la con<ersion
par interruption du @#MEB8 automatiquement tous les 'E'88 secondes.
Qucstinns :
(1) Cise= la documentation et e+plique= le fonctionnement du 5AA sur la %ase de la
fi!ure 'H-'. Beprene= la relation entre la <aleur du re!istre 1B& qui !2re la
frquence et calcule= les <aleurs e+tr>mes de frquence attei!na%les. :duise=
de ce qui prc2de la <aleur du prescaler pour o%tenir des frquences prises entre
&77 L= et I8 [h=. Ca relation entre la con<ersion et la frquence est-elle
linaire _ *achant que le 5AA est un con<ertisseur '8 %its et que 1B& est un
re!istre 6 %its" quels sont les %its du 5AA que <ous alle= utiliser _ Zuel sera
lincon<nient <entuel _
"23
Illustration !ar un e#em!le sim!le;;;
Qucstinns :
(1) #dentifie= les re!istres S initialiser et les <aleurs associes.
(2) 5onstruise= lal!ori!ramme et cri<e= le pro!ramme assem%leur.
"24
.lgorigramme
A

C
O
M
P
L
E
T
E
R

!
"25
; Filename : %"8.asm
;
; Description : :nration d'un signal carr sur la
; par le module PB$ a(ec aGustement de la 0r?uence en
; continu par con(ersion "8 sur broche "8*.
;
; "uthor:
; %ompan&: 'ni(ersite Paul %e)anne
; Re(ision: 1.**
; Date: !**-,*D
:%ut
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur
"26
A

C
O
M
P
L
E
T
E
R

!
,rogramme assembleur [suite]
"27
Le c)ien de garde (<atc)dog)
;ne watchdng /D:@0 est un dispositif de protection pour <iter que le micro-
contr4leur ne se %loque. ;ne Oatchdo! effectue un redmarra!e du syst2me /BE*E@0 si
une action dfinie nKest pas effectue dans un dlai donn.
5oncr2tement" lKutilisateur affecte une <aleur S un re!istre /?atchdog $ostscaler0" qui
dfinit une dure temporelle /timcnut0. 1riodiquement le micro-contr4leur <a
incrmenter un re!istre /?atchdog counter0. *i ce re!istre est plein /overflo=0" le micro-
contr4leur effectue un re-dmarra!e.
1our que le micro-contr4leur ne redmarre pas" le pro!ramme doit priodiquement r-
initialiser le re!istre /Datchdo! counter0.
"28
Les diffrents modes de fonctionnement
En p!us du mndc dc Innctinnncmcnt par dIaut /$rimar% (un /ode0" les micro-
contr4leurs poss2dent de nom%reu+ autres modes de fonctionnement. Ce+istence de ces
modes <ise principalement S rduire la consommation dner!ie qui est une contrainte
forte pour les syst2mes em%arqus.
1n notera principalement trois modes de fonctionnement A

run mndc --- mode de fonctionnement par dfaut du micro-contr4leur" toutes les
fonctions sont acti<es" la consommation dnergie est maximale.

s!ccp mndc --- le micro-contr4leur est plac en mode sommeil" la consommation


dner!ie est minimale" le micro-contrleur peut-)tre rveill par une interruption"

IDLE mndc --- le processeur du micro-contr4leur est arr>t" plus aucune instruction
nest e+cute" lutilisateur peut choisir de dsacti<er des fonctions du micro-contr4leur
afin de diminuer la consommation dner!ie. 7es fonctions actives restantes fonctionnent
normalement et peuvent rveiller le micro-contrleur par une interruption.
"29
P!an
1rsentation de linformatique industrielle et des syst2mes micro-pro!ramms
Architecture des micro-contr4leurs
1rsentation des diffrents lments dun micro-contr4leur" lments de choi+
Bappels sur les nom%res %inaires et les diffrents coda!es
Ces instructions
Bappels sur la lo!ique com%inatoire et squentielle
3tude du fonctionnement dun micro-contr4leur . le 1#5 '6$7(&8
1ro!rammation en Assem%leur -- Bappel sur les al!ori!rammes
1rsentation des interruptions
3tude dun pro!ramme en Assem%leur a<ec !estion des interruptions
1rsentation de fonctions int!res /timer" 1DM" etc.0
Prcscntatinn du !angagc C pnur !c -cnntr!cur / spciIicit PIC 18F4520
"3#
Langage C = microcontrleur
Pnurquni un !angagc tc! quc !c C ?

Univcrsc! . il nKest pas ddi S une application Y

Mndcrnc . structur" dclaratif" rcursif" a<ec structures de contr4le et de dclaration.

Prnchc dc !a machinc . manipulations de %its" pointeurs" possi%ilit dincorporer de


lassem%leur" etc.

Pnrtab!c . le m>me code peut >tre utilis sur plusieurs machines [il faut toutefois faire
attention , ne pas crer des fonctions spcifiques , une machine].

Extcnsib!c . il est possi%le de crer des %i%lioth2ques ou den incorporer.


Dc p!us cn p!us" les pro!rammes pour micro-contr4leur sont crits en lan!a!e 5. 5e
lan!a!e permet de d<elopper rapidement des pro!rammes" des %i%lioth2ques qui
pourront >tre ensuite utilises sur diffrentes machines.
Dncumcntatinn Micrnchip . M/$769 &BC & &1/$'72( US2(S :U'#2 3#SDBECCJ4 F
"3"
Construction d'un e#cutable >4?
A!nrs quc !'asscmb!cur fait une con<ersion directe de mnmoniques en lan!a!e
machine" le compilateur 5 doit construire le code machine S partir dune synta+e de plus
haut ni<eau. Ce recours S des librairies pr-compiles est permis par lditeur de lien qui
construit un e+cuta%le S partir des diffrents fichiers ob;ets.
PRE-PROCE55EUR
Bemplace les ddefine et
effectue les dinclude
dinclude estdio.hX
main/0f
int MAc" cpt?
MAc V 8+7(?
for/cptV8? cpte MAc? cptUU0
g
Ri%lioth2ques 5
*ource du main/0
fichier te+te
h.c
COMPILATEUR
(C18)
@ransforme le source 5
en un fichier o%jet /code
machine0
$ichiers header
fichier te+te
h.h
EDITEUR DE LIEN5
Cie tous les fichiers o%jets
et cre un e+cuta%le
Ri%lioth2que pr-
compile
fichier o%jet
h.o
E+cuta%le
!
;n code compil est systmatiquement plus lent et plus
!ourmand en mmoire quun code assem%l Y
"32
Construction d'un e#cutable >8?
Asscmb!cur ct cnmpi!atcur peu<ent nanmoins >tre utiliss pour construire un seul
e+cuta%le" cf. ci-dessous. CS encore" lditeur de lien soccupe de construire le code
machine e+cuta%le S partir des diffrents fichiers o%jets.
Compilateur C (ici
C18) Assembleur
Fichiers pr compils
Scriptes de
configuration
de l'diteur de lien
Sorties (excutable,
etc)
!ntres (sources)
Construction de
librairies
"diteur de liens
"33
Vnus avcz acccs a !a ma|nrit dcs Innctinnna!its du C de la norme AA*# 5. Qous
pou<e= donc crire quelque chose comme
vites s e = 0x27
pour faire laffectation dune variable code sur 6 %its" ou encore
if(vites s e == limite)
pour effectuer un test dgalit entre deu+ <aria%les enti-res codes sur un nom%re de %its
appropris.
P!us prcismcnt" <ous a<e= acc2s /cf. cours de 5UU0

au+ dclaration de variables, constantes, tableaux, pointeurs, structures, etc.

au+ oprateurs arithmtiques et logiques"

au+ oprateurs daffectation, incrmentation et dcrmentation"

au+ oprateurs de contr4le de flu+ /test et boucles0,

S la conversion de t%pe,

S lintgration de routines en assembleur.


Par cnntrc" les instructions !rant les entres et sorties /cran" cla<ier" disque" etc.0
nont pas toujours de sens dans ce type de conte+te ? cf. @1.
!
"34
@n !remier !rogramme en C
,,................................
,, Filename: PremierProgramme.%
,,................................
,, "uthor: marc "88"<;
,, %ompan&: 'ni(ersite Paul %e)anne
,, Re(ision: 1.**
,, Date: !**+,*-
,,................................
5include 6p1/012!*.h7
5de0ine duree 1****
5pragma con0ig FDT . OFF
,, Dclaration des (ariables globales
char c;
0loat pht;
,, Protot&pes des 0onctions
(oid tempo9unsigned int count:;
,, Programme Principal
(oid main9:
G
PORT . *H**;
TR<B . *H**;
Chile91:G
PORTII;
tempo9duree:;
J
J
tempo9unsigned int count:G
Chile9count33:;
J
$ichier des en-t>tes de fonction pr-compiles
spcifiques au microcontr4leur considr.
5ontient notamment les qui<alences nom &
adresses.
:claration dun alias au prprocesseur /i.e." duree
sera systmatiquement remplac par '88880.
:irecti<e pour adresser des emplacement spcifiques
de la mmoire pro!ramme ou donnes /cf. plus loin0.
:claration de <aria%les !lo%ales
:claration dune fonction
Affectation de re!istres du microcontr4leur ? 1FB@R
et @B#*R sont dclars dans p'6f7(&8.h
"35
Les o!rateurs du langage C
Opratcurs arithmtiques ct relationnels .
Opratcurs logiques ct de manipulation de its .
!
"36
Opratcurs d!acc"s # la mmoire$ etc%
"37
-y!es de donnes
Lc tab!cau ci-dcssnus prscntc !cs typcs dc variab!cs supports par le compilateur 5'6
ainsi que leur format de coda!e.
Lc Inrmat cst cc!ui du us de donne pour les types )h*, et 7-10/-(' )h*,. Cutilisation
de <aria%les Mplus !randesP est nanmoins permise. 1ar e+emple" une dclaration de la
forme
82,*/!* 0'*9* 9(19:0+0200
$"-/ $:0+AA;;CCDD<
conduit au stoc\a!e mmoire sui<ant
!
"38
(tructures = c)am!s de bits
19,7)9 2,"& =
)h*, -"!>30?<
)h*, 2,(-"!>30?<
)h*, $*b">30?<
0-9 9($<
0-9 @ETD<
A<
Lcs structurcs snnt dcs typcs cnmpnsitcs dans lesquels des <aria%les de types distincts
peu<ent coha%iter...
Lcs structurcs champs dc bits permettent daccder e+plicitement S des sous-
ensem%les dune <aria%le . le premier champ correspond au %it 8 et le nom de llment est
sui<i par le nom%re de %its associ.
Excmp!c . on acc2de S la patte BR8 par une instruction PORTAb0914RA0 : 1<
19,7)9 =
7-10/-(' R;0B1<
7-10/-(' R;1B1<
7-10/-(' R;2B1<
7-10/-(' R;3B1<
7-10/-(' 6ROCPEB3<
7-10/-(' RA7B1<
APORT;b091<
0-9 !*0-DE=
19,7)9 2,"& DEP5SDM>10?<
DEP5SDM>0?49($ : 2878<
19,)2FDDEP5SDM>0?4-"!,GG*$$*0-GGE<
19,)2FDDEP5SDM>0?42,(-"!,GG!*,)GGE<
444
A
"39
@nions
Dans unc uninn, !cs champs partagcnt !a mmc adrcssc. 5ette construction permet
dutiliser des dnominations diffrentes pour adresser les m>me %its. cf. le fichier de
header.
Excmp!c . PORTEb0914RE0 et PORTE4NOT5RD parta!e la m>me adresse.
extern volatile near union =
s truct =
7-10/-(' RE0B1< 7-10/-(' RE1B1<
7-10/-(' RE2B1< 7-10/-(' RE3B1<
A<
s truct =
7-10/-(' RDB1< 7-10/-(' WRB1<
7-10/-(' CSB1< 7-10/-(' MCLRB1<
A<
s truct =
7-10/-(' NOT5RDB1< 7-10/-(' NOT5WRB1<
7-10/-(' NOT5CSB1< 7-10/-(' NOT5MCLRB1<
A<
s truct =
7-10/-(' B3< 7-10/-(' VPPB1<
A<
s truct =
7-10/-(' AN5B1< 7-10/-(' AN6B1< 7-10/-(' AN7B1<
A<
A POR!"its <

"4#
"e l'assembleur dans du C A
!
C18 pcrmct !'uti!isatinn d'instructinns cn asscmb!cur prcsquc comme si <ous utilisie= M1A*M.
5es instructions doi<ent >tre dans un M%locP dlimit par 5*1! et 5(-'*1!.
Cct asscmb!cur diIIcrc nanmnins dc MPA5M sur !cs pninst suivant :

pas les directi<es"

commentaires rdi!s dans la synta+e du 5"

pas de <aleur par dfaut" i.e." les ar!uments dune instruction doi<ent >tre spcifis"

la con<ention de notation en he+adecimal est 8+AA"

les tiquettes doi<ent comporter un M.P"

pas dadressa!e inde+.


#as m HI C1(, *11(!b$F )"'( IH
MOVLW 10 HH M"#( '()0!*$ 10 9" )"7-9
MOVWF )"7-9, 0
19*,9B HI L""2 7-90$ )"7-9 01 0 IH
DECFSJ )"7-9, 1, 0
6OTO '"-(
;RA 19*,9
'"-(B
#en$as m
"4"
La con%ersion de ty!e >cast?
Unc cnnvcrsinn dc typc intcrvicnt lorsquun oprateur doit a!ir sur des oprandes de
types diffrents. En !nral" les oprandes sont alors con<erties selon la r2!le sui<ante .
L'oprande la plus petite est convertit dans le t&pe de l!oprande la plus grande.
char e int e lon! e float e dou%le
I! cst aussi pnssib!c dc Inrccr une con<ersion de type .
&$"*9 ()*,9, '019*-)( : 11<
0-9 9,"-K7(, -b2 : 5<
()*,9 : '019*-)( H D&$"*9E D-b2 L 1E<
9,"-K7( : D0-9E ()*,9<
()*,9:2425
()*,9:2
"42
&odificateurs de ty!e
Assnci a chacun dcs typcs" le compilateur 5'6 supporte les modificateurs de t%pe
classiques qui sont
c ons t . une constante stoc+e en (1/ qui ne pourra pas )tre modifie.
cx. )"-19 0-9 MAM : 10000<
volatile . une variable stoc+e en (6/ ou en pile qui peut )tre modifie
/dfaut0.
cx. 7-10/-(' )h*, PORT; : 0+F0<
En p!us dc ccs mndiIicatcurs, 5'6 en introduit deu+ autres pour contr4ler les acc2s au+
diffrentes formes de mmoire...
ram . une donne place dans la mmoire donne (6/ /dfaut0
cx. 7-10/-(' )h*, PORT; : 0+F0<
rom . une donne stoc+e dans la mmoire programme (1/
cx. ,"! )"-19 0-9 MAM : 10000<
"43
Bariables globales+ locales;;;
La prngrammatinn cn !angagc C se %ase enti2rement sur des fonctions dont la
principale est !*0-DE. Ca dclaration de <aria%le peut >tre faite S lintrieur ou S lextrieur
dune fonction a<ec des effets distincts /notion de classes des stoc+age0.
A !'cxtricur d'unc Innctinn" une dclaration est g!nba!c . la <aria%le est <isi%le pour
toutes les fonctions et ladresse alloue est fi+e.
cx. 80-)$7'( N20)18&35204hO
0-9 MAM<
!*0-DE=444A
A !'intricur d'unc Innctinn" la <aria%le nest pas <isi%le de le+trieur et les mots cls
sui<ant dtermine la mani2re dont la <aria%le est stoc\e .
s tatic . variable stoc+e en (6/ , une adresse fixe.
cx. #"0' &7-)90"-DE=
19*90) 0-9 MAM<444A
"44
auto % une variable stoc+e en pile 3dfaut4.
cx. #"0' &7-)90"-DE=
0-9 MAM<444A
re& is ter % la variable est alloue dans un registre de travail.
Aote . 3i4 correspondance obligatoire entre format de la variable et format du
registreG 3ii4 inutile pour le $'& qui ne poss-de quun registre de travail.
En p!us dc ccs c!asscs dc stnckagc standard, 5'6 en introduit la classe sui<ante pour
rduire loccupation mmoire des <aria%les alloues lors de lcriture de fonction .
overla' B ladresse est statiquement alloue dans la mmoire donne (6/ mais elle
peut )tre affecte , une autre variable dclare dans une autre fonction.
cx. #"0' &7-)90"-1DE=
"#(,$*F 0-9 + : 5< ,(97,- +<A
#"0' &7-)90"-2DE=
"#(,$*F 0-9 F : 2< ,(97,- F<A
"45
Les directi%es !ragma
En dpit d'unc grandc snup!cssc et dune %onne pro+imit a<ec la couche matrielle" la
norme AA*# 5 ne permet pas de contr4ler les adresses mmoires ob sont places des
<aria%les ou des instructions. 1our pallier ce pro%l2me" 5'6 introduit les directi<es
82,*/!* qui permettent daccder spcifiquement S des adresses de la mmoire donne
et pro!ramme ainsi que de confi!urer le microcontr4leur. Ainsi la directi<e
(pra& ma c onfi& )* = O++
permet de dsacti<er la fonctionnalit MOatch-do!P du microcontr4leur ? la liste des
fonctionnalits et de leur <aleurs est disponi%le dans la documentation :*('(,-.
Ccttc dircctivc pcrmct dc p!accr un mnrccau dc cndc S une adresse quelconque de la
mmoire pro!ramme. 1ar e+emple"
(pra& ma c o$e !"-52,"/ : 0x, HH *2,P1 B 2$*)(!(-9 impos '*-1 $* !Q!"0,(
#"0' !"-52,"/D#"0'E=
ins tructions -
A
#pra& ma c o$e HH *2,P1 B 2$*)(!(-9 libre '*-1 $* !Q!"0,(
permet de placer ins tructions - S ladresse 0x, de la mmoire pro!ramme.
!
"46
Les directi%es !ragma >8?
Ccci pcrmct cn particu!icr dc cnnIigurcr !cs d'intcrruptinns : une premi2re directi<e
permet dinitialiser le vecteur dinterruption /haute ou %asse0 et alors quune seconde
directi<e identifie ladresse mmoire de cette fonction .
(pra& ma c o$e #()9(7,5$"% : 0+18
#"0' #()9(7,5$"%DE=
5*1! /"9" ,"790-(50-95$"% 5(-'*1!
A<
(pra& ma c o$e
(pra& ma interruptlo. ,"790-(50-95$"%
#"0' ,"790-(50-95$"%DE=
444A<
Quc!qucs rcmarqucs . /10 une fonction dinterruption ne poss2de ni entre ni sortie ? /20 une
sau<e!arde minimale du conte+te est assure automatiquement et peut >tre complte en
modifiant la seconde directi<e comme suit
(pra& ma interruptlo. ,"790-(50-95$"% s ave = !*5#*,0*b$(
ob !*5#*,0*b$( est une <aria%le g!nba!c S sau<er.
!
"47
Cestion des interru!tions >4?
:%ut
Rroche & S - du 1FB@R en sortie
Rroche ' du 1FB@R en entre
BAT du 1FB@R
Rroche ' S 7 du 1FB@R en EE* numrique
#nterruption S chaque front montant sur la
%roche ' du 1FB@R
$in
AF1
#nterruption
*uppression du fla! dinterruption
5han!e ltat de la %roche & du 1FB@R
Betour au
pro!ramme principal
#dentification de linterruption
"48
Cestion des interru!tions >8?
,,.......................................
,, Filename: premier_programme_%.%
,,.......................................
,, "uthor: $arc "llain
,, %ompan&: 'ni(ersite Paul %e)anne
,, Re(ision: 1.**
,, Date: !**-,1*
,,........................................
5include 6p1/012!*.h7
5pragma con0ig FDT . OFF
,, Protot&pes des 0onctions
(oid Kecteur_interruption9(oid:;
(oid Routine_gestion_interruption9(oid:;
,, Programme Principal
(oid main9:
G
PORT . *;
TR<B . *H*1;
8"T . *;
"D%O;1 . *H*F;
<;T%O; . *HA*;
Chile91:G
J
J
"49
Cestion des interru!tions >D?
,, <ndiEue l'adresse mmoire ou dbute la 0onction
5pragma code Kecteur_interruption . *H*/
(oid Kecteur_interruption 9(oid:
G
_asm
goto Routine_gestion_interruption
_endasm
J
5pragma code ,, Placement libre du programme dans la mmoire
,, Routine de gestion des interruptions
5pragma interrupt Routine_gestion_interruption
(oid Routine_gestion_interruption9:
G
,, Kri0ication Eue l'interruption est dclenche par R*
i0 9<;T%O;bits.<;T*<F:
G
,, Buppression du 0lag d'interruption
<;T%O;bits.<;T*<F . *;
,, %hange l'tat de R1
PORT L. *H*!;
J
J
"5#
Euelques astuces2!iges en langage C

Uti!iscr !c passagc dcs argumcnts par adrcssc


Ca fonction ne tra<aille pas sur une copie de la <aleur de lKar!ument effectif mais
directement sur celui-ci /!ain de place en mmoire0.

Lcs Innctinns rcursivcs


Elles sont S <iter pour la pro!rammation des syst2mes em%arqus S cause dun
d%ordement de pile matriel. En effet" on rappelle que sur un micro-contr4leur" le
nom%re dKappels de fonctions im%riqus est limit /6 pour 1#50.