Académique Documents
Professionnel Documents
Culture Documents
Micro-contrleurs Microchip
Intervenants :
Marc Allain
- marc.allain@fresnel.fr
Julien Marot
- julien.marot@fresnel.fr
Coordonnes
Organisation de l'enseignement
Contenu horaire :
20 h de cours + 10 h de TD [Julien Marot] (10x 3h)
Prsentation de l'informatique industrielle, des systmes microprogramms (architecture, principes gnraux, ...). tude d'un microcontrleur Microchip PIC 18F4520. Programmation en langage
Assembleur et langage C.
Boite outils
Notion de programmation
(algorigramme, concept de variable, fonction, etc.)
Objectifs du cours
L'objectif de ce cours est de vous rendre capable de choisir, de programmer,
d'utiliser un micro-contrleur et plus gnralement de vous transmettre une culture
des systmes micro-programms.
Non ddi un microcontrleur
Ddi un microcontrleur
Notion d'interruption
Programmation en Assembleur
Programmation en langage C
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
L'informatique industrielle
L'informatique industrielle
Domaines d'applications :
Alarme, automobile, aviation, instrumentation, mdicale, tlphonie mobile,
terminaux de paiement pour carte bancaire ...
L'informatique industrielle
Applications :
Automates, robotique,
Systmes temps-rel,
Systmes embarqus.
Source : Ascom S.A.
10
Avantages :
Trs rapide
Consommation moindre
Optimis pour une application
Inconvnients :
Faible modularit
Possibilit d'volution limit
Cot
11
Source : Altera
Source : Altera
Un circuit logique programmable, ou rseau logique programmable, est un circuit intgr logique qui
peut tre reprogramm aprs sa fabrication. Il est compos de nombreuses cellules logiques
lmentaires pouvant tre librement assembl. (Wikipdia)
Inconvnients :
Avantages :
Forte modularit
Rapidit
12
Micro-contrleur Microchip
PIC16F690 en botier DIL20
Un micro-contrleur est un :
Circuit intgr comprenant essentiellement un microprocesseur, ses mmoires, et
des lments personnaliss selon l'application. (Arrt franais du 14 septembre
1990 relatif la terminologie des composants lectroniques.)
Un micro-contrleur contient un microprocesseur.
Avantages :
Inconvnients :
Plus lent
Utilisation sous optimale
13
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
14
15
Source : Intel
16
Source : Wikipdia
20 nm
17
Source : Wikipdia
nombres de lignes,
frquence de transfert.
18
Largeur du bus
8
Unidirectionnel
Bidirectionnel
Dfinition : Une adresse est un nombre binaire qui indique un emplacement dans
une zone mmoire
20
Structure de Harvard
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
22
?
Issu de la documentation technique du
PIC16F628
23
EEPROM
(Elec. Erasable Programmable
Read Only Memory)
mmoire lente qui permet de 24
stocker des donnes mme
aprs coupure de lalim.
PC (Program Counter)
Registre(case mmoire)
ALU
Multiplexeur
Dcodeur dinstructions
horloge
Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)
25
ALU
PC (Program Counter)
Multiplexeur
Dcodeur dinstructions
horloge
Stack (pile)
LIFO (Last In First Out)
FIFO (First In First Out)
Issu de la documentation
technique du PIC16F628
26
Ports dentres/sorties
USART
(Universal Synchronous Asynch.
ReceiverTransmitter)
CCP (Capture/Compare/PWM)
Timer
Comparateur
CAN/CNA
Rfrence de tension
Module HF
27
Caractristiques lectriques :
Frquence dhorloge
Tensions dalimentation
Source : Microchip
28
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
29
Codes pondrs
Dans une base donne, le nombre s'exprime comme une somme pondre. Par exemple, le
nombre 128 dcimale (base 10) est constitu de 3 chiffres :
1 (units)
10 (dizaines) Un Zro
100 (centaines) Un ZroZro
Chiffre
2 x 10
8 x 1
(128)d
Poids
31
Codes pondrs
1
10 (exprim en base 2)
Chiffre
0 x 1
(10)b
Poids
Remarque : le nombre 10 binaire ne s'exprime pas dix car ceci sous-entend que le nombre
est exprim en dcimal...
32
Codes pondrs
Dans une base donne, le nombre s'exprime comme une somme pondre. Par exemple, le nombre
1F8 hexadcimal (base 16) est constitu de 3 chiffres :
1 (units)
10 (dizaines)
100 (centaines)
F x 10
8 x 1
(1F8)h
0001
1
1111
F
1000
8
(1F8)h
33
Conversion
Conversion en dcimal : dveloppement en somme de puissances de la base.
(1
12
Soit
02
3
1)b
02
12
12 02 02 12 =81=9 b
(3
316
2
F)h
216
1
15 16
34
Se
(14)d = (1 1 1 0)b
1
ns
d
el
ec
tu
re.
..
16
10=A
17
16
(282)d = (11A)h
Se
ns
de
l ec
tu
re
..
.
35
36
Un octet (8bits) :
= -108 (decimal)
37
Addition
: V = A + B,
Multiplication
: V = A x B,
Soustraction
: V = A B,
Pour calculer V, on calcule la somme entre A et le complment deux de B
Exemple : (0110)b (0101)b = (0001)b
Exercices 2 :
Exercices 3 :
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
40
Instructions
Un jeu dinstruction est un ensemble doprations directement ralisables sur un
systme micro-programm donn.
Par exemple : le PIC18F4520 (RISC) possde un jeu dinstructions compos de 75
instructions. Lexcution dune instruction peut ncessiter un ou plusieurs cycles
dhorloges suivant la complexit de l'instruction.
41
Instructions
Une instruction est compose au minimum de deux parties:
Instruction = OPCODE + oprande(s)
OPCODE (Operation CODE) : partie dune instruction qui prcise quelle
opration doit tre ralise
42
3
1
3
1
Cration dun pipeline => permet uneexcution plus rapide des instructions
1
Temps
43
44
45
46
ladressage indirect (index) : loprande est ladresse dun registre qui contient ladresse de la
donne.
NOTE : Il existe de nombreux autres modes dadressage (ex. implicite, inhrent, relatif) : leur nombre
varie en fonction du constructeur et du micro-contrleur !
47
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
48
un systme est dit combinatoire si l'tat (logique) des sorties ne dpend que de l'tat
(logique) prsent appliqu ses entres.
un systme est dit squentiel si l'tat (logique) de la sortie du systme l'instant t dpend
de l'tat (logique) prsent appliqu aux entres et des tats de la sortie dans le pass.
49
Table de vrit
Considrons tout d'abord le cas de la logique combinatoire 1 sortie (le cas plusieurs sorties
n'est pas trs diffrent). Pour connatre l'tat du systme aux divers combinaisons logiques des
entres on construit la table de vrit qui exprime la valeur de la sortie s en fonction de toutes
les configurations possible des entres binaires (Ei), cf. ci-dessous.
E1
E2
E1
E2
E3
On notera que pour une fonction logique une seule variable d'entre, il existe 22=4 combinaisons de
sorties.
E1
E2
50
Oprateurs lmentaires
Dans ces configurations, on extrait typiquement 6 fonctions logiques d'intrt que sont les oprateurs
NON (une entre), ET, OU, ET-NON, OU-NON, et OU-EXCLUSIF (deux entres).
E1
NON
E1
E2
OU-EX
E2
OU
E1
E2
ET-NON
E1
E2
E1
E2
ET
OU-NON
Les oprateurs ET-NON et OU-NON forment un groupe complet, c..d. que toute fonction logique
complexe peut tre construite sur la base de l'une de ces fonctions lmentaires.
51
Algbre de BOOLE
Les oprateurs logiques lmentaires permettent la construction d'une algbre dite algbre de
Boole. Ainsi, si on considre deux entres binaires A et B, on adopte alors la convention suivante
pour construire des quations logiques :
NON
ET
OU,
A
AB
A B
AB=AB
AB=AB
ET-NON,
A B
A B
OU-NON,
OU-EXCLUSIF
Commutativit :
Associativit :
ABC= ABC
A B C= A BC
A B C = A B C
AB =BA
A B= B A
A B= B A
AB=BA
A B= B A
Lois de De Morgan :
Distributivit :
A BC = A B AC
A BC = AB AC
AB= AB
A B= AB
52
Le chronogramme
Dans les microcontrleurs, les tats du systme changent en fonction d'une base de temps qui est
l'horloge. Ceci conduit naturellement introduire les chronogrammes comme outil d'analyse des
tats logiques d'un systme.
Le chronogramme a pour objet de tracer l'tat binaire de la (des) sortie(s) en fonction de l'volution
au cours du temps de l'tat des entres. Ceci est illustr ci-dessous.
53
Le verrou D (Latch D)
Le verrou D (ou bascule D asynchrone) est trs rpandu : elle copie en sortie l'tat de l'entre D
uniquement si sa commande C est active ; dans le cas contraire, l'tat en sortie Q est celui
prcdent, cf. chronogramme.
D
C
54
R
S
Q
Q
55
La Bascule D (Flip-Flop D)
C'est la version synchrone du verrou D !
D
C
56
J
K
57
58
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
59
Les registres
Un registre 8 bits est synonyme d'un
ensemble de 8 cases mmoire. De
nombreux registres sont utiliss pour
grer le microcontrleur.
Le registre W (accumulateur)
Le compteur programme (PC)
Le registre dtat (Flags)
Les registres de configuration :
les registres de directions pour les ports
dentres/sorties (TRIS, SFR), les registres de
gestion des interruptions, de gestion de la
mmoire (BSR, GPR, etc.)
ATTENTION : tous les registres du microcontrleur ne sont pas reprsents sur le schma...
60
61
Pile (Stack)
une pile pour grer les appels
programmes et les interruptions
Vecteur Reset
pointeur vers ladresse mmoire du
dbut du programme principal
Vecteurs d'interruption
pointeur vers ladresse mmoire du
programme excuter en cas
dinterruptions
Mmoire programme
zone mmoire rserve au stockage des
programmes crits par lutilisateur
63
Excution dune
instruction
Adressage inhrent
Linstruction ne comporte pas doprande et
agit implicitement sur un registre.
Exemples : SLEEP, RESET, NOP
Adressage immdiat
Linstruction comporte une oprande et agit
explicitement sur un registre
Exemples : ADDLW, MOVLW
Droulement:
(1) Le compteur programme indique ladresse
de linstruction suivante dans la mmoire
programme. (2) Linstruction est lue et stocke
dans le registre dinstruction. (3) Puis elle est
dcode par le module de dcodage et de
contrle des instructions. (4) Finalement elle est
64
excute.
Excution dune
instruction
Adressage direct (tendu)
Linstruction comporte une oprande qui
indique ladresse mmoire sur laquelle
seffectue lopration.
Exemples : CLRF (direct), MOVFF (tendu)
Droulement:
(1) Lecture de linstruction dans la mmoire
programme l'adresse pointe par le compteur
programme. (2) Lecture de linstruction et
dcodage. (3) Pour ladressage direct, loprande
constitue la partie basse de ladresse mmoire sur
laquelle seffectue lopration, la partie haute est
complte avec le registre BSR. (3') Pour
ladressage tendu, loprande est ladresse
complte de la case mmoire sur laquelle
seffectue lopration. (4) Finalement linstruction
est excute sur la case mmoire pointe.
65
Access Bank
pointeurs vers des zones mmoires
dtat
pour
les
66
Pagination de la mmoire
La pagination de la mmoire consiste diviser la mmoire en blocs (pages) de longueur
fixe. (Source : Comment a Marche)
Une adresse mmoire est alors divise en deux parties :
Partie haute
Partie Basse
Dans le cas dune instruction avec adressage direct, on transmet seulement la partie basse
de ladresse. Le micro-contrleur utilise le registre BSR pour complter ladresse.
Attention !! En adressage
direct, on doit sassurer que
lon travaille dans la bonne
page mmoire.
67
Excution dune
instruction
Adressage direct (tendu)
Linstruction comporte une oprande qui
indique ladresse mmoire sur laquelle
seffectue lopration.
Exemples : CLRF (direct), MOVFF (tendu)
Droulement:
(1) Lecture de linstruction dans la mmoire
programme l'adresse pointe par le compteur
programme. (2) Lecture de linstruction et
dcodage. (3) Pour ladressage direct, loprande
constitue la partie basse de ladresse mmoire
sur laquelle seffectue lopration, la partie haute
est complte avec le registre BSR. (3') Pour
ladressage tendu, loprande est ladresse
complte de la case mmoire sur laquelle
seffectue
lopration.
(4)
Finalement
linstruction est excute sur la case mmoire
pointe.
68
Excution dune
instruction
Adressage indirect (index)
Linstruction
comporte
une
oprande
indiquant un pointeur, c..d. une adresse de la
case
mmoire
sur
laquelle
seffectue
lopration.
Exemples : ADDWF, INDF1, 1
Droulement:
(1) Lecture de linstruction dans la mmoire
programme l'adresse pointe par le compteur
programme. (2) Lecture de linstruction et
dcodage. (3) La valeur de loprande indique
le pointeur utiliser. (4) La valeur pointe est
lue (avec un ventuel dcalage en mmoire). (5)
Finalement linstruction est excute sur la
valeur pointe.
69
70
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
71
72
Chacune de ces trois tapes prcdente peut tre relativement complexe et mobiliser des moyens
financiers et humains consquents. Par ailleurs, le test une tape peut remettre en cause les choix fait
une tape prcdente : en pratique, on est donc plutt confront un cycle de conception plutt qu'
un enchanement parfaitement squentiel !
Dveloppement matriel
Dveloppement logiciel
73
Le dveloppement du logiciel
La construction d'un code machine excutable s'appuie sur un certain nombre de composantes
(fichiers sources, librairies) qui suivent le diagramme organisationnel ci-dessous.
(1) Les fichiers sources crits dans un langage
assembleur et/ou volu doivent permettent au
systme embarqu d'effectuer les tches requises.
(2) Le compilateur et/ou l'assembleur a pour rle de
convertir les instructions des sources en langage
machine.
La programmation en Assembleur
Le langage Assembleur (abrg ASM) est un langage de programmation de bas-niveau, qui fait la
correspondance entre des instructions en langage machine (mots binaires) et des symboles appels
mnmoniques plus simples utiliser.
Source : Microchip
les instructions de contrle : org = dbut du programme, end = fin du programme, etc. ;
Algorigrammes
La description du programme par un algorigramme permet de :
Dbut, Fin,
Interruption
Sous-programme
Initialisation
Test d'une condition
Instruction
Vrai
Faux
77
Premier programme
en assembleur
Dbut
Broche 1
du PORTB
l'tat haut ?
Broche 2 du PORTB
l'tat haut
Broche 2 du PORTB
l'tat bas
78
;
;
;
;
;
;
;
;
;
;
Dbut
Filename : premier_programme.asm
Description :Recopie de l'tat de la broche 1 du PORTB
sur la broche 2 du PORTB
Author:
Eric Magraner
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; La configuration du micro-contrleur est dfinie avec MPLAB
; (Logiciel de dveloppement Microchip)
79
La premire partie concerne l'en-tte qui dfinit, le plus clairement possible, la fonction du
programme ainsi que divers informations permettant de grer l'historique du code (auteur, date
d'critures et de modifications, numro de version, etc.)
;
;
;
;
;
;
;
;
;
Dbut
Filename : premier_programme.asm
Description : Recopie de l'tat de la broche 1 du PORTB
sur la broche 2 du PORTB
Author:
Eric Magraner
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
80
;
;
;
;
;
;
;
;
;
;
Dbut
Filename : premier_programme.asm
Description : Recopie de l'tat de la broche 1 du PORTB
sur la broche 2 du PORTB
Author:
Eric Magraner
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
81
;
;
;
;
;
;
;
;
;
Dbut
Filename : premier_programme.asm
Description : Recopie de l'tat de la broche 1 du PORTB
sur la broche 2 du PORTB
Author:
Eric Magraner
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
82
83
;
;
;
;
;
;
;
;
;
Dbut
Filename : premier_programme.asm
Description :Recopie de l'tat de la broche 1 du PORTB
sur la broche 2 du PORTB
Author:
Eric Magraner
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
; #include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
84
85
On peut distinguer ensuite une seconde partie qui correspond la configuration des lments du
microcontrleur qui entrent directement en jeu dans la fonction ralise...
La premire opration consiste systmatiquement initialiser le vecteur RESET. Notez que cette
tape n'a pas t note dans l'algorigramme (ce qui pourrait tre considr comme une lacune...).
org
h'0000'
goto init
init
clrf
movlw
movwf
PORTB
b'00000001'
TRISB
clrf
movlw
movwf
LATB
0Fh
ADCON1
; Configuration de la direction
; du PORTB. Broche 1 en entre.
; Broche 2 8 en sortie
; Configuration des broches 1 4
; du PORTB en E/S numrique
86
org
h'0000'
goto init
init
clrf
movlw
movwf
PORTB
b'00000001'
TRISB
clrf
movlw
movwf
LATB
0Fh
ADCON1
; Configuration de la direction
; du PORTB. Broche 1 en entre.
; Broche 2 8 en sortie
; Configuration des broches 1 4
; du PORTB en E/S numrique
87
Broche 1
du PORTB
l'tat haut ?
Broche 2 du
PORTB
l'tat haut
boucle
allumer
eteindre
btfss
PORTB,0
goto
bsf
goto
bcf
goto
eteindre
PORTB,1
boucle
PORTB,1
boucle
Broche 2 du
PORTB
l'tat bas
END
88
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
89
Les interruptions
Une interruption est un arrt temporaire de l'excution normale d'un programme
informatique par le microprocesseur afin d'excuter 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'excution li une boucle de consultation (polling loop). (Source
: Wikipdia)
Les interruptions
Les interruptions sont, en gnral, contrles par 3 bits :
Un bit de flag
Un bit de validation
Un bit de priorit
92
variable (en fonction du type dinterruption) de son tat interne dans la pile, notamment
ladresse dans la mmoire programme o le micro-contrleur sest arrt.
(5). Rtablissement des donnes : le micro-contrleur rtablit les donnes stockes dans la pile.
(6). Le micro-contrleur reprend son fonctionnement normal...
93
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
94
Interruption
Sauvegarde du contexte
Identification de l'interruption
NOP
Fin
Restauration du contexte
Retour au programme principal
95
Le dbut d'un programme en assembleur, avec interruption, reste trs proche de celui d'une version
sans interruption. On peut tout de mme remarquer des directives de rservation d'emplacements
mmoire en prvision de la sauvegarde du contexte lors de l'interruption.
;
;
;
;
;
;
;
Dbut
Filename : premier_programme_interruption.asm
Change l'tat de la broche 2 du PORTB chaque front
montant sur la broche 1 du PORTB (gestion par interruption
Author:
Eric Magraner
Company:
Universit Paul Czanne
Revision:
1.00
Date:
2006/07
list p=18f4520
; Dfinition du micro-contrleur utilis
#include <p18f4510.inc>
; Dfinitions des emplacements mmoires des registres
; et configurations matrielles par dfaut
#include <MA_CONFIG.inc>
; Modification des configurations matrielles par dfaut
W_TEMP
RES 1
; Rservation d'un octet en mmoire
STATUS_TEMPRES 1
; Rservation d'un octet en mmoire
BSR_TEMP
RES 1
; Rservation d'un octet en mmoire
96
Du code du programme principal, on distingue les tapes classiques d'initialisation du vecteur RESET
et du PORT B. On note aussi les parties propres aux interruptions : initialisation du vecteur et du
registre d'INTERRUPTION.
org
init
NOP
h'0000'
goto
init
org
goto
h'0008'
; Init. du vecteur INTERRUPTION
routine_interruption
clrf
movlw
movwf
clrf
movlw
movwf
movlw
movwf
PORTB
b'00000001'
TRISB
; Config. de la dir. du PORTB
LATB
0Fh
ADCON1
; Broche 14 du PORTB en E/S num.
b'10010000'; 0x90 -> w
INTCON
; w -> INTCON (Init. du registre d'interrup.)
boucle nop
goto
Fin
boucle
END
97
Le registre d'interruption INTCON permet, d'une part d'activer les interruptions (bit 7), et d'autre
part d'activer le mode interruption externes INT0 (bit 4). Dans ce cas, l'interruption sera dtecte
sur la broche 0 du port B (cf. datasheet).
98
routine_interruption
Interruption
Sauvegarde du contexte
Identification de l'interruption
; Sauvegarde du contexte
movwf W_TEMP
movff STATUS, STATUS_TEMP
movff BSR, BSR_TEMP
; Sauvegarde de W
; Sauvegarde de STATUS
; Sauvegarde de BSR
99
Il faut ensuite systmatiquement (3) mettre zro le bit d'interruption puis, (4) excuter la fonction
pour laquelle l'interruption a t prvue, et enfin (4) faire la restauration du contexte (5) et retourner
au programme principal.
interruption_INT0
Suppression du flag
d'interruption
Change l'tat de la broche 2
du PORTB
Restauration du contexte
Retour au prog. principal
bcf
INTCON,1
movlw
xorwf
goto
0x02
; 0x02 -> w
PORTB
; w xor PORTB -> PORTB
restauration_contexte
;
Restauration du contexte
restauration_contexte
movff BSR_TEMP, BSR
movff W_TEMP, W
movff STATUS_TEMP, STATUS
; Restauration de BSR
; Restauration de W
; Restauration de STATUS
retfie
100
Interrupt Vector
Dbut du programme
Dclarations
Configuration
Identification de linterruption et
suppression du flag dinterruption
Routine dinterruption
Programme principal
Fin
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
102
Les chiens-de-garde
........................................................
Timer
CCP
Comparator
CAN/CNA
Watchdog
103
La fonctionnalit Timer
Les timers sont des registres incrments chaque ralisation dun vnement, la
valeur de ces registres pouvant tre pr-positionne une valeur initiale.
105
106
107
Questions :
(1) Expliquez comment fonctionne le module TIMER0 ? Comment peut-on l'utiliser
pour faire basculer la sortie RB1 toute les 0.5 seconde ?
(2) Donnez les valeurs d'initialisation des diffrentes registres pour rentrer dans le
cahier des charges.
(3) Construisez l'algorigramme pralable l'criture du microcode.
(4) Finalement, crivez le programme en assembleur.
(5) valuez l'erreur sur la priode associe au temps d'excution du code et
modifiez les registres en consquence.
108
Algorigramme
!
R
E
PL
M
O
C
Dbut
NOP
Fin
109
T
L
P
M
O
AC
Programme assembleur
R!
;
;
;
;
;
;
;
;
;
Filename : timer0.asm
Description : Gnration d'un signal carr sur la
broche 1 du PORTB par utilisation du module TIMER0
Author:
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2007/09
Dbut
110
T
L
P
M
O
R!
AC
111
capture
Le mode capture dclenche une action si un vnement pr-dtermin apparat (ex :
changement dtat sur une broche). Utilis avec les timers, ce module peut compter
les temps d'arrives.
compare
Le mode compare effectue une comparaison permanente entre le contenu dun timer
et une valeur donne pour dclencher une action si ces contenus sont gaux.
Questions :
(1) Expliquez comment les modules CCP1 et TIMER2 fonctionnent ensemble pour
produire un signal rectangulaire de priode et de rapport cyclique donn.
(2) Identifiez les registres initialiser et les valeurs associes.
(3) Construisez l'algorigramme et crivez le programme assembleur.
113
Algorigramme
!
R
E
PL
M
O
C
Dbut
NOP
Fin
114
T
L
P
M
O
AC
Programme assembleur
R!
;
;
;
;
;
;
;
;
;
Filename : pwm0.asm
Description : Gnration d'un signal carr sur la
broche 2 du PORTC par utilisation du module PWM
Author:
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2007/09
Dbut
115
Les comparateurs
Les comparateurs permettent de comparer le signal analogique prsent sur un
broche du micro-contrleur une valeur de rfrence.
Questions :
(1) On utilise une rfrence interne de tension pour gnrer la valeur de VDD/2.
Expliquez comment le module de tension de rfrence peut tre configur pour cela.
Expliquez ensuite comment le module de comparaison peut tre utilis pour
raliser le cahier des charges.
117
!
R
E
Algorigramme
PL
M
O
C
118
T
L
P
M
O
AC
Programme assembleur
R!
;
;
;
;
;
;
;
;
;
;
Filename : comparator.asm
Description : Gnration d'un signal carr sur la
broche RB0 par TIMER0 et ajustement de la frquence en
fonction d'une comparaison une tension de rfrence.
Author:
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2007/09
Dbut
119
T
L
P
M
O
R!
AC
120
Module de conversion
analogique/numrique
Le module de conversion analogique/numrique permet de convertir le signal
analogique prsent sur une broche du micro-contrleur en un signal numrique.
Les paramtres prendre en compte pour la numrisation dun signal sont
Notes : (1) la pleine chelle et la dynamique permettent de calculer la rsolution en tension du module
de conversion A/N ; (2) la frquence d'chantillonnage doit respecter le (fameux) thorme de
Shannon ; cf cours de traitement du signal.
121
Questions :
(1) Lisez la documentation et expliquez le fonctionnement du CAN sur la base de la
figure 19-1. Reprenez la relation entre la valeur du registre PR2 qui gre la
frquence et calculez les valeurs extrmes de frquence atteignables. Dduisez
de ce qui prcde la valeur du prescaler pour obtenir des frquences prises entre
244 Hz et 60 Khz. La relation entre la conversion et la frquence est-elle
linaire ? Sachant que le CAN est un convertisseur 10 bits et que PR2 est un
registre 8 bits, quels sont les bits du CAN que vous allez utiliser ? Quel sera
l'inconvnient ventuel ?
122
123
!
R
E
Algorigramme
PL
M
O
C
124
T
L
P
M
O
AC
Programme assembleur
R!
;
;
;
;
;
;
;
;
;
;
Filename : CAN.asm
Description : Gnration d'un signal carr sur la
par le module PWM avec ajustement de la frquence en
continu par conversion AN sur broche AN0.
Author:
Company: Universite Paul Cezanne
Revision: 1.00
Date:
2007/09
Dbut
125
T
L
P
M
O
R!
AC
126
Une watchdog (WDT) est un dispositif de protection pour viter que le microcontrleur ne se bloque. Une watchdog effectue un redmarrage du systme (RESET) si
une action dfinie nest pas effectue dans un dlai donn.
Pour que le micro-contrleur ne redmarre pas, le programme doit priodiquement rinitialiser le registre (Watchdog counter).
127
run mode --- mode de fonctionnement par dfaut du micro-contrleur, toutes les
fonctions sont actives, la consommation d'nergie est maximale.
sleep mode --- le micro-contrleur est plac en mode sommeil, la consommation
d'nergie est minimale, le micro-contrleur peut-tre rveill par une interruption,
IDLE mode --- le processeur du micro-contrleur est arrt, plus aucune instruction
n'est excute, l'utilisateur peut choisir de dsactiver des fonctions du micro-contrleur
afin de diminuer la consommation d'nergie. Les fonctions actives restantes fonctionnent
normalement et peuvent rveiller le micro-contrleur par une interruption.
128
Plan
Prsentation de l'informatique industrielle et des systmes micro-programms
Architecture des micro-contrleurs
Prsentation des diffrents lments d'un micro-contrleur, lments de choix
Rappels sur les nombres binaires et les diffrents codages
Les instructions
Rappels sur la logique combinatoire et squentielle
tude du fonctionnement d'un micro-contrleur : le PIC 18F4520
129
130
Bibliothques C
Fichiers header
Bibliothque prcompile
fichier texte
*.c
fichier texte
*.h
fichier objet
*.o
#include <stdio.h>
main(){
int MAX, cpt;
MAX = 0x45;
for(cpt=0; cpt< MAX; cpt++)
}
PRE-PROCESSEUR
Remplace les #define et
effectue les #include
COMPILATEUR
(C18)
Transforme le source C
en un fichier objet (code
machine)
DITEUR DE LIENS
Lie tous les fichiers objets
et cre un excutable
Excutable
131
Entres (sources)
Assembleur
Compilateur C (ici
C18)
Fichiers pr compils
Construction de
librairies
Scriptes de
configuration
de l'diteur de lien
diteur de liens
Sorties (excutable,
etc.)
132
Un premier programme en C
//================================
// Filename: PremierProgramme.C
//================================
// Author:
marc ALLAIN
// Company: Universite Paul Cezanne
// Revision: 1.00
// Date:
2006/07
//================================
#include <p18f4520.h>
#define duree 10000
#pragma config WDT = OFF
// Dclaration des variables globales
char c;
float pht;
// Prototypes des fonctions
void tempo(unsigned int count);
// Programme Principal
void main()
{
PORTB = 0x00;
TRISB = 0x00;
while(1){
PORTB++;
tempo(duree);
}
}
tempo(unsigned int count){
while(count--);
}
135
136
Types de donnes
Le tableau ci-dessous prsente les types de variables supports par le compilateur C18
ainsi que leur format de codage.
Le format est celui du bus de donne pour les types char et unsigned char. L'utilisation
de variables plus grandes est nanmoins permise. Par exemple, une dclaration de la
forme
#pragma idata test=0x0200
long l=0xAABBCCDD;
conduit au stockage mmoire suivant
137
int main(){
struct prof DEP_SDM[10];
DEP_SDM[0].tel = 2878;
strcpy(DEP_SDM[0].nom,''allain'');
strcpy(DEP_SDM[0].prenom,''marc'');
...
}
Les structures champs de bits permettent d'accder explicitement des sousensembles d'une variable : le premier champ correspond au bit 0 et le nom de l'lment est
suivi par le nombre de bits associ.struct {
unsigned RB0:1;
unsigned RB1:1;
unsigned RB2:1;
unsigned RB3:1;
unsigned GROUPE:3;
unsigned RA7:1;
}PORTBbits;
138
Unions
Dans une union, les champs partagent la mme adresse. Cette construction permet
d'utiliser des dnominations diffrentes pour adresser les mme bits. cf. le fichier de
header.
ex tern vo la tile nea r union {
s truc t {
unsigned RE0:1; unsigned RE1:1;
unsigned RE2:1; unsigned RE3:1;
};
s truc t {
unsigned RD:1; unsigned WR:1;
unsigned CS:1; unsigned MCLR:1;
};
s truc t {
unsigned NOT_RD:1; unsigned NOT_WR:1;
unsigned NOT_CS:1; unsigned NOT_MCLR:1;
};
s truc t {
unsigned :3; unsigned VPP:1;
};
s truc t {
unsigned AN5:1; unsigned AN6:1; unsigned AN7:1;
};
} P O R T E bits ;
139
De l'assembleur dans du C ?
C18 permet l'utilisation d'instructions en assembleur presque comme si vous utilisiez MPASM.
Ces instructions doivent tre dans un bloc dlimit par _asm et _endasm.
_a s m
MOVLW 10
MOVWF count, 0
start:
DECFSZ count, 1, 0
GOTO done
BRA start
done:
_enda s m
140
Une conversion de type intervient lorsqu'un oprateur doit agir sur des oprandes de
types diffrents. En gnral, les oprandes sont alors converties selon la rgle suivante :
L'oprande la plus petite est convertit dans le type de l'oprande la plus grande.
char < int < long < float < double
ecart=2.25
ecart=2
141
Modificateurs de type
Associ chacun des types, le compilateur C18 supporte les modificateurs de type
classiques qui sont
c o ns t
vo la tile
(dfaut).
En plus de ces modificateurs, C18 en introduit deux autres pour contrler les accs aux
diffrentes formes de mmoire...
ra m
ro m
142
A l'extrieur d'une fonction, une dclaration est globale : la variable est visible pour
toutes les fonctions et l'adresse alloue est fixe.
ex. #include <pic18f4520.h>
int MAX;
main(){...}
A l'intrieur d'une fonction, la variable n'est pas visible de l'extrieur et les mots cls
suivant dtermine la manire dont la variable est stocke :
s ta tic
143
a uto
reg is ter
En plus de ces classes de stockage standard, C18 en introduit la classe suivante pour
rduire l'occupation mmoire des variables alloues lors de l'criture de fonction :
o verla y
: l'adresse est statiquement alloue dans la mmoire donne RAM mais elle
peut tre affecte une autre variable dclare dans une autre fonction.
ex. void function1(){
overlay int x = 5; return x;}
void function2(){
overlay int y = 2; return y;}
144
En dpit d'une grande souplesse et d'une bonne proximit avec la couche matrielle, la
norme ANSI C ne permet pas de contrler les adresses mmoires o sont places des
variables ou des instructions. Pour pallier ce problme, C18 introduit les directives
#pragma qui permettent d'accder spcifiquement des adresses de la mmoire donne
et programme ainsi que de configurer le microcontrleur. Ainsi la directive
#pra g m a c onfig W D T = O FF
145
Quelques remarques : (1) une fonction d'interruption ne possde ni entre ni sortie ; (2) une
sauvegarde minimale du contexte est assure automatiquement et peut tre complte en
modifiant la seconde directive comme suit
#pra g m a interruptlow routine_int_low s a ve = ma_variable
146
NOP
Fin
Identification de l'interruption
Retour au
programme principal
147
148
149
150