Upload
diavolo-rossonero-del-milan
View
45
Download
0
Embed Size (px)
Citation preview
11/10/2013
1
MC
Cours Microcontrleurs
2013
Anthony DUVAL
PolytechTours
Dpartement lectronique et nergie
3A
2013 Anthony DUVAL 1
Plan du cours Introduction
Dfinition dun microcontrleur
Composition des microcontrleurs
Mmoires
Priphriques: Timers, CAN, AUSART
Configuration
Outil daide la programmation: lordinogramme
Principaux langages de programmation:
Lassembleur
Le C
Mthodes de programmation
Microcontrleur et environnement
Anthony DUVAL 2
Introduction: Objectif du cours
Prsenter le fonctionnement et la structure gnrale des microcontrleurs
Vous donner les outils permettant danalyser un systme base de
microcontrleurs(C) et dapprcier son potentiel.
Etre capable de mettre en uvre un systme autour dun
microcontrleurs(C) et crire le programme de gestion de celui-ci.
Cours: 3 sances de 2 heures.
TP: 6 sances de 4 heures
2010 Anthony DUVAL 3
Organisation du module
Introduction
Ques-ce quun microcontrleur?
Un composant lectronique qui excute un programme enregistr en
mmoire. Il est le cerveau sur une carte lectronique et effectue des
calculs numriques, des comparaisons, des tests partir des mesures
effectues sur ses pattes configures en entres et envoi des signaux sur ses
pattes configures en sortie qui peuvent alors commander dautres
priphrique et dialoguer avec des systmes.
O trouve t-on des microcontrleurs?
..
Avec quel systme de numration fonctionne t-il?
..
2010 Anthony DUVAL 4
11/10/2013
2
C: Systmes de numration
Il existe une multitude de systme de numration. Un microcontrleur est
une unit numrique, il travaille en logique 2 tats. Cest pourquoi on
utilise le systme binaire (2 tats, ltat haut (ou 1) et ltat bas (ou 0)).
Il est alors indispensable de maitriser les 3 systmes de numration suivant
pour la mise en uvre de microcontrleur:
Le dcimal parce quil est notre systme familier pour numrer et
compter. Not D
Le binaire car toutes les actions, mmorisation et traitement dun
microcontrleurs se fait en base 2. Not b
Lhexadacimal parce quil permet de faciliter la lecture du binaire. Not h
Exemple:
(5FC1)h plus lisible et plus facilement reproductible que: (0101111111000001)b
Anthony DUVAL 5
Microprocesseur Microcontrleur
Microprocesseur:
Un microprocesseur est une unique
puce sur laquelle est contenue:
une unit arithmtique et logique(UAL) qui effectue les oprations.
des registres qui permettent au microprocesseur de stocker temporairement des donnes : (piles).
une unit de contrle qui commande l'ensemble du microprocesseur en fonction des instructions du programme.
Microcontrleur:
Un microcontrleur est une unique
puce sur laquelle est contenue au
minimum:
Processeur
Mmoire contenant le programme excuter.
Mmoire RAM contenant les registres de donnes.
Priphriques dentres/sorties.
Peut fonctionner de manireautonome contrairement aumicroprocesseur qui ncessitedautres priphriques
Anthony DUVAL 6
Pourquoi utiliser un microcontrleur?
Simplification de carte lectronique: Une seul puce capable de remplacer des dizaines de fonctions logiques.
Possibilit dutiliser une seule et unique carte pour diffrentes applications par simple reprogrammation.
Facilit d amlioration dun produit par mise a jour du software de gestion (appel aussi firmware)
Fonction de communication intressante pour interfaage homme machine ou change et traitement dinformations avec dautres cartes ou appareil (Automate, PC,).
Anthony DUVAL 7
Composition minimum dun
microcontrleur
Anthony DUVAL 8
Microcontrleur
Processeur
Mmoire Flash:
Programme
Ports
E/S
Mmoire RAM:
Donns Autres Priphriques
Bus dadressage
Bus de donnes
11/10/2013
3
Exemple
de
structure
interne
de C
Anthony DUVAL 9
Diffrents microcontrleurs Un microcontrleur est dfinie en fonction de:
La largeur de ses donnes en bits.
Sa vitesse de calcul en MIPS (Million dinstructions par seconde).
La complexit de son jeu dinstruction. (La complexit des calculs que
le processeur peut effectuer en peu de cycles machines, Le nombre
dinstructions diffrentes disponibles,)
Les mmoires disponible et leurs tailles. (RAM, Flash, EEPROM,)
Le type et le nombre dentres/sorties.
Le boitier: TQFP, BGA, DIP, PDIP,.
Les priphriques spcifiques quil possde. (PWM, Communication
AUSART, SPI,)
Il existe une multitude de fabricant de microcontrleurs.
Anthony DUVAL 10
Diffrents microcontrleurs Quelques fabricants:
Intel (80C51)
Motorola (Srie 68HC11)
ST Microelectronics (ST7)
Atmel (Srie AVR)
Parallax (Srie Basic Stamp)
Arizona Microchip (Srie PIC)
Renesas
Texas instrument
Nous allons nous intresser plus particulirement aux PICs de microchip,
Simples de mise en uvre et accessibles (outils de dveloppements
gratuits).
2010 Anthony DUVAL 11
Exemple: Le PIC16F737-I/SP
16 correspond la complexit du jeu dinstruction. La srie 16
correspond au milieu de gamme (instructions cods sur 14
bits).
F correspond au type de mmoire programme:
C pour EPROM ou EEPROM (rinscriptible ou non selon cas)
CR pour ROM (non rinscriptible)
F pour Flash (rinscriptible)
737 correspond la rfrence
du microcontrleur en lui-mme.
I/SP correspond la vitesse
max de lhorloge et au type de
Boitier : SPDIP
Anthony DUVAL 12
11/10/2013
4
Les diffrentes mmoires
La mmoire programme:
La mmoire programme est constitue de mots de 14 bits par exemple pour la
srie 16, et de mots de 16 bits pour la srie 18. Une instruction remplie un
mot de la mmoire programme. Selon le microcontrleur, cette mmoire peut
tre efface (mmoire de type Flash ou EEPROM) ou inscrite de manire
permanente (mmoire EPROM). Les microcontrleurs non rinscriptibles sont
appele O.T.P. (One Time Programming).
La mmoire RAM: (Random Access Memory)
Toutes les donnes qui y sont stockes sont perdues lextinction. Cette
mmoire contient tout les registres
La mmoire EEPROM: (Electrical Erasable Programmable Read Only
Memory)
Elle permet de stocker des informations qui doivent tre conserves mme
lors de la coupure de lalimentation du microcontroleur.
Attention: Lcriture est assez longue est demande une procdure spcifique.
Anthony DUVAL 13
Mmoire Programme du 16F737
Anthony DUVAL 14
Mmoire Programme du 18F45K22
2010 Anthony DUVAL 15
Mmoire RAM Plusieurs pages. Attention
tre dans la bonne page pour
lire les donnes Voulues.
Les adresses renseignes
contiennent des registres
utiliss pour les priphriques
ou systmes internes au
microcontrleur (registres
SFR).
Exemple:
ADRESH ladresse 1Eh et
ADRESL ladresse 9Eh
Contiennent le rsultat aprs une
conversion analogique numrique
Les registres General Purpose
Register sont utiliser pour
stocker les variables.
Anthony DUVAL 16
11/10/2013
5
Registres importants
Registres de configuration: Ils contiennent les bits de configuration appel
aussi bits fusibles . Ces bits sont protgs pour ne pas tre crass
malencontreusement dans le droulement du programme. Ils sont donc
crit dans le micro pendant la programmation.
Accumulateur(s): Registre W sur le Pic 16F737.
Le Program Counter ou PC.
Status: registre dtat.
Il permet de changer de page mmoire
Renseigne dun dpassement lors dopration
Contient le rsultat lors dun test
Anthony DUVAL 17
Bits de configuration
Principaux points configurer:
Choix de loscillateur: Fonctionnement sur quartz, oscillateur interne,
signal de synchro externe,
Protection en lecture de la mmoire programme.
Activation du chien de garde (watchdog).
PWRT: PoWer Reset Timer.
Temps de maintien en Reset au dmarrage du microcontrleur (mise
sous tension).
BORV: Brown Out Reset Voltage.
Tension en dessous de laquelle le microcontrleur passe ou reste en
Reset.
Anthony DUVAL 18
Registre Accumulateur(s) Ces registres permettent de conserver temporairement les donnes de
registres impliqus dans un calcul ou le rsultat dune opration en
attendant le stockage dans le registre voulu.
Ils sont par exemple ncessaires pour effectuer certaines instructions
comme les additions est les soustractions. Neutres en langage volu
car grer par le compilateur, il sont incontournable pour la programmation
en assembleur (exemple: On charge la valeur additionner un registre
dans un Accu avant de pouvoir effectuer le calcul). Les microcontrleurs
possdent un ou plusieurs registres accumulateur.
Anthony DUVAL 19
Le PC: Program counter Ce registre contient ladresse de la prochaine instruction raliser. Ainsi
lors dune instruction de saut (GOTO), ladresse ou lon doit se rendre est
crite dans le registre PC. Sinon, il sincrmente chaque instruction.
Registre
STATUS
Anthony DUVAL 20
Il permet deGrer diffrents vnements comme les dpassement lors dun calcul ou le changement de page mmoire lorsquil y en a plusieurs.
11/10/2013
6
Conditions ncessaire au
fonctionnement dun C La tension dalimentation doit tre suffisante (U>Umin constructeur et
U>BORV si actif, voir bits de configuration)
Niveau logique haut prsent sur la patte de RESET si utiliss.
Reset du timer du watchdog a temps si chien de garde activ.
Choix de la bonne horloge par rapport lenvironnement du C. Certains
microcontrleurs disposent dune horloge interne mais ils sont souvent
accompagns dun quartz externe permettant de choisir la frquence
doscillation voulue avec une prcision accrue.
2010 Anthony DUVAL 21
HORLOGE/OSCILLATEUR
Lhorloge du microcontrleur est un organe indispensable qui permet le
cadencement des oprations de traitement du composant.
Il en existe une multitude de sortes. La frquence maximum utilisable
dpend du microcontrleur, il faut donc se renseigner dans la
documentation constructeur.
La frquence dhorloge = frquence doscillation (fosc).
La frquence de cycle (fcy) dun microcontrleur est le nombre
dinstruction maximum quil peut excuter par seconde . Elle est un
rapport de la frquence dhorloge. Par exemple sur les Pic de Microchip:
fcy=fosc/4. Il faut 4 battements pour raliser un cycle.
Le cycle machine (Tcy) correspond donc au temps dexcution dune
instruction: Tcy=1/fcy.
2010 Anthony DUVAL 22
HORLOGE/OSCILLATEUR Circuit RC: le moins prcis mais aussi le moins cher.
Rsonateur cramique: solution intermdiaire entre RC et quartz.
Rsonateur quartz: trs prcis, plus cher.
Horloge externe ou oscillateur autonome: plus robuste, la plus cher.
2010 Anthony DUVAL 23
Rsonateur:
Un rsonateur est un composant qui
a la facult de rentrer en rsonance
une frquence qui lui est propre
(dpendante de sa taille dans le cas
de quartz ou cramique) lorsque
celui-ci est excit par un signal
transitoire. Le signal ainsi obtenu
est une sinusode.
Oscillateur:
Un oscillateur est un composant
lectronique qui lorsquil est
aliment gnre un signal dhorloge
mit en forme. Sa sortie est un signal
carre 0-5V ou 0-3,3V.
HORLOGE/OSCILLATEUR
4 modes doscillateurs disponibles:
RC : Rsistance/capacit:
LP : Low Power Crystal
XT : Crystal/resonator
HS : High Speed
Crystal/resonator
2010 Anthony DUVAL 24
11/10/2013
7
OSCILLATEUR: exemple
Schma dhorloge utilisant un quartz ou un
oscillateur cramique:
2010 Anthony DUVAL 25
Les ports numriques Les ports numriques sont les entres/sorties simple des
microcontrleurs, chaque patte appartenant un port numrique possde
un niveau logique (1 ou 0) et peut tre lue ou crite indpendamment des
autres. Elles sont paramtrables en entre pour tre lu ou en sortie pour
tre crite. Un microcontrleur peut en possder plusieurs dizaines.
En sortie, elles permettent de commander des priphriques tel que des
LED, des relais, des buzzers. Elles permettent galement denvoyer des
informations un afficheur LCD ou 7 segments. On peut les assimiler au
"Sorties Tout Ou Rien sur un automate.
En entre, elles permettent de lire ltat dun priphrique voisin ou de
lire ltat dun bouton poussoir ou dun clavier. On peut les assimiler au
Entres Tout Ou Rien sur un automate.
Anthony DUVAL 26
Les ports numriques: Configuration
Chaque port possde son registre qui permet de configurer les diffrentes
pattes correspondantes en entre ou en sortie. Sur les PICs, ces registres
sappel TRIS suivit de la lettre correspondant au Port (TRISB pour le port
B).
Dans ce registre,
Un 1 logique configure la patte en entre (1 ou I pour Input).
Un 0 logique configure la patte en sortie (0 ou O pour Output).
Exemple:
Si TRISA=0b10011101 RA0,RA2, RA3,RA4,RA7 sont en entre.
RA1,RA5,RA6 sont en sortie.
Si TRISB=0 Tout le PortB (RB0 RB7) est configur en Sortie.
Si TRISB=255 Tout le PortB (RB0 RB7) est configur en
Entre.Anthony DUVAL 27
Les timers
Un timer permet de compter des vnements indpendamment du
droulement du programme.
Lincrmentation du timer peut tre synchronise sur lhorloge principales
de droulement du programme ou sur une horloge extrieure.
Ils peuvent avoir plusieurs utilisation:
Gestion de la dure du programme principales.
Mesure de temps entre deux vnements.
Cadencement prcis dactions. Par exemple des mesures synchronises par
rapport un vnement.
Mesure dun nombre dvnements survenue.
Exemple dutilisation:
Horloge temps rel pour grer lheure et la date.
Anthony DUVAL 28
11/10/2013
8
Les timers: Composition
Anthony DUVAL 29
Les timers: registre associ
Anthony DUVAL 30
Convertisseur Analogique Numrique
(C.A.N.)
Permet de rcuprer limage de la tension prsente sur une patte du
composant.
Si convertisseur 10Bits, la valeur rcuprer est comprise entre 0 et 210 -1=
1023.
Le Quantum: Tension correspondante 1lsb:
avec: +Vref=Tension de rfrence du convertisseur. Ualim ou tension
prcise applique entre les pattes Vref du composant.
+n=Nb de bits de conversions.
Exemple: Vref=VDD=5V, n=10. Q=5/10244,9mV
Anthony DUVAL 31
n
VrefQ2
=
Le C.A.N.: Registres associs. Il possde 3 principaux registres de configuration:
ADCON0: Il permet de configur la vitesse de conversion ainsi que la patte sur
laquelle il faut effectuer la mesure. Il permet galement de dmarrer la
conversion.
ADCON1: Permet de choisir quelles pattes sont en Analogique et la source de
la tension de rfrence.
ADCON2: Permet de choisir le temps dacquisition.
Le rsultat de la dernire conversion est stocke dans les registres ADRESL
et ADRESH. Deux registres sont ncessaires dans ce cas car le rsultat est
cod sur plus de bits que nen possde le microcontrleur:
ADRESH: Bits de poids fort de la conversion.
ADRESL: Bits de poids faible de la conversion.
Anthony DUVAL 32
11/10/2013
9
AUSART et communication AUSART: ADDRESSABLE UNIVERSAL SYNCHRONOUS ASYNCHRONOUS
RECEIVER TRANSMITTER
Permet de crer facilement une communication srie avec un autre
systme comme un PC ou un automate. Utilis pour de multiples liaison
srie (RS232, RS485, USB, Bluetooth ).
Il existe une multitude dautres moyens de communication intgr dans
les Microcontrleurs:
SPI (4 fils): Communication srie simple pratique pour communiquer avec des
priphriques externes comme des EEPROM, CAN, Convertisseur Numrique
Analogique, principalement localis sur une mme carte lectronique.
IC (2 fils): Inter Integrated Circuit.
CAN (2 fils): Controller Area Network. Utilis principalement dans des milieux
soumis perturbations, il permet de communiqu de manire fiable entre
plusieurs systme distant.
Anthony DUVAL 33
Le Watchdog:
Le Watchdog ou chien de garde permet de dtecter lorsque le programme
est entr dans une boucle infinie ou tout simplement lorsquil a plant .
Il possde un timer qui lui est propre et qui sincrmente tout les cycles
dhorloge indpendamment du programme. Lorsque que le programme
est bloqu dans une boucle infinie ( plant ), le timer continue de
sincrmenter. Lorsquil atteint une certaine valeur (programmable dans
les bit de configuration pour dfinir un temps donn), il effectue un RESET
(saut au reset vector ladresse 0x00) du microcontrleur et le
programme reprend du dbut.
Lorsque le watchdog est activ, il est alors ncessaire deffectuer un reset
du timer du watchdog (CLRWDT :clear watchdog) intervalles rgulier
dans le programme, sans quoi le microcontrleur effectuerait sans cesse
des RESET.
Anthony DUVAL 34
Les interruptions
Provoquer par un vnement (changement dtat dun port, ), une
interruption met entre parenthses le programme en cours pour lancer
des instructions prioritaires. Une fois le programme interruptible termin,
le retour au programme en cours avant lvnement est automatique.
Attention prserver les registres de travail avant de lancer le programme
sur interruption (Stockage dans dautres registres) et de les restaurer par
la suite.
Intrt: Elles permettent de traiter une action qui ncessite un vnement
sans attendre que celui-ci est lieu. On peut ainsi effectuer dautres
instructions au lieu de rester bloqu sur un test. Lorsque lvnement
aura lieu, une interruption sera alors gnre et nous pourrons traiter
laction en priorit.
Anthony DUVAL 35
Les interruptions: Exemple
Anthony DUVAL 36
Lancement dune
conversion AN.
Attente fin de conversion
Fin de la
conversion.
Traitement du rsultat
Lancement dune
conversion AN.
Fin de la
conversion .
Gnration dune
interruption.
Traitement du rsultatInstructions programme
Instructions programme=>Gain de temps
Instructions programme
Conversion Analogique Numrique sans interruption:
Conversion Analogique Numrique avec interruption:
11/10/2013
10
Droulement dune interruption
Anthony DUVAL 37
l
Anthony DUVAL 38
Chaque interruption peut tre autorise ounon grce au bit xxIE prsent pour chaquemodule interruptible. Par exemple ADIE permet de grer linterruption dclenchepar le convertisseur analogique numrique.
Ordinogramme: Dfinition
Lordinogramme (Flowchart en anglais) est un outil danalyse qui permet
de reprsenter de manire graphique lenchanement logique des
oprations effectuer pour raliser un travail.
Il permet de:
Visualiser une succession logique doprations et de dcisions
Faire apparatre des incohrences logiques dans un processus
Aider llaboration dun processus
Reprsenter lenchanement des oprations effectuer, par ordre
chronologique
Analyser la logique de construction
Dcrire et reprsenter lenchanement des diffrentes tches d'un processus
Raliser avant de rdiger un programme, il facilite le codage et la
comprhension.Anthony DUVAL 39
Ordinogramme: Principaux symboles
Anthony DUVAL 40
Appel dun sous programme
11/10/2013
11
Ordinogramme: Exemple
Anthony DUVAL 41
Init
Action 1 Action 2
Action 3
Principaux langages
Le processeur dun microcontrleur ne traite que des 1 et des 0 (langage
machine). Exemple: pour incrmenter le registre ladresse 0x0f sur un
PIC 16F737:
00 1010 1+Adresse du registre
Soit: 00 1010 1000 1111
Une instruction simple peut alors devenir compliquer mettre en uvre
et lire. Pour palier ce problme, des langages de programmation sont
mis en place afin de faciliter leur utilisation.
Les deux principaux langages que nous allons voqus sont:
Lassembleur
Le langage C
Anthony DUVAL 42
Lassembleur
Alternative simple pour crire un programme car chaque instruction
assembleur correspond le code opration (OpCode) crire dans la case
mmoire programme. Il est donc un langage trs proche du
microcontrleur. Les oprations de traitement (compilation) du
programme avant limplantation dans la puce sont donc simples.
Il ncessite une connaissance parfaite du jeu dinstruction associ au
microcontrleur.
Le codeur doit grer la position de son programme dans la mmoire et les
adresses mmoires de ses variables en RAM. Il doit galement grer la
stack, les bits de retenus lors de calcul,
Lorsque vous changez de microcontrleur, le programme doit tre rcrit
afin dtre compatible avec le jeu dinstruction du nouveau composant.
2010 Anthony DUVAL 43
Lassembleur: Instructions sur octets
Anthony DUVAL 44
11/10/2013
12
Lassembleur: Instructions sur octets et
arguments Le rsultat issu dune instruction
agissant sur un octet peut tre
stocker plusieurs emplacement
selon largument.
Exemple:
INCF 0x22,0 : Incrmente la valeur
prsente ladresse 0x22 et place
le rsultat dans la pile W.
INCF 0x22,1 : Incrmente et
remplace la valeur prsente
ladresse 0x22.
Anthony DUVAL 45
Lassembleur: Instructions sur bits et
sur valeur littrales
Anthony DUVAL 46
Lassembleur: Instructions sur bits et
arguments
Un registre dispose de plusieurs
bits (dpendant de la profondeur
de calcul du microcontrleur).
Pour dfinir le bit sur lequel on
agit, on dfinit son rang.
Exemple:
BCF 0x22,5: passe le bit de rang 5
du registre ladresse 0x22 1.
Anthony DUVAL 47
Lassembleur: exemple;Exemple programme assembleur
;Fais clignoter une LED dispose sur RA0
#include ;fichier contenant les raccourcis aux registres
;Declaration des constantes et registre
LED EQU 00h ;constante LED=0
R_I EQU 20h
R_J EQU 21h
R_K EQU 22h
ORG 0x0005 ;Ecrire le programme partir de l'adresse 0x0005
Init ;initialisation entree sortie
BSF STATUS,RP0 ;Passage en page1 de la RAM
BCF STATUS,RP1
MOVLW b'11111110'
MOVWF TRISA ;Defini RA0 en sortie et RA1->RA7 en entre
BSF STATUS,RP0 ;Passage en page0 de la RAM
BCF STATUS,RP1
main ;Debut programme principale
BSF PORTA,LED
CALL DELAY1S
BCF PORTA,LED
CALL DELAY1S
GOTO main ;Fin programme principaleAnthony DUVAL 48
11/10/2013
13
Les Pic en C
Langage C: Langage volu
Le code est indpendant du processeur.
Les programmes sont plus facile relire et
comprendre quavec lassembleur.
Attention, ne pas confondre avec la
programmation de type Objet vu en cours
de JAVA.
Anthony DUVAL 49
Variables: Types de donns
Type Longueur
(octets)
Domaine de valeurs
Signed char 1 -128 127
Unsigned char 1 0 255
Signed int 2 -32768 32767
Unsigned int 2 0 65535
Long 4 0 4 294 967 295
Unsigned long 4 -2 147 483 648 2
147 483 647
Float 4 3.4*10-38 3.4*1038
Double 8 1.7*10-308 1.7*10308
Anthony DUVAL 50
Variables: dclarations
Dclaration dune variable:
Unsigned char A=2; //Dclaration de la variable A en 8 bits non signs
est prpositionne 2.
Char table[10]; //Dclaration dun tableau de 10 caractres.
Variables globales et locales:
Une variable de type locale est dfinie dans un programme et nest
accessible que dans celui-ci.
Une variable globale est dfinie en dehors de tout programme et est
accessible de nimporte quel programme.
Anthony DUVAL 51
Pointeurs:
Un pointeur est une variable qui contient ladresse dune variable.
Un pointeur est dclar par une * prcd du type de donne pointe
Anthony DUVAL 52
11/10/2013
14
Tableaux et chanes:
Un tableau est un regroupement de variables de mme type.
Ex: int table[5]={254,12,54,35,2};
Une chane de caractre est un tableau de type char qui se termine par 0.
Ex:
char affichage[]="bonjour:"
Equivalent :
char affichage[]={b,o,n,j,o,u,r,:,0}
Anthony DUVAL 53
Le C: Oprateurs
Anthony DUVAL 54
Le C: Oprateurs
Anthony DUVAL 55
Le C:
Anthony DUVAL 56
11/10/2013
15
Le C:
Anthony DUVAL 57
Fonctions:
Une fonction est dfinie de la manire suivante:
Type nom(type var1, type var2,)
{
instructions;
..
return valeur;
}
Le type de la fonction correspond au type de donne quelle renvoie
(valeur dans la fonction ci-dessus).
Quand le type est void, cela signifie que la fonction ne renvoie pas de
valeur. Il ny a dans ce cas pas de return.
Anthony DUVAL 58
Fonctions:
Exemples de fonction:
int Adition(int a, int b)
{
int c;
c=a+b;
return c;
}//Cette fonction additionne ses arguments et renvoi le rsultat.
void AllumeLedR(void)
{
_LedR=1;
}//Cette fonction valide simplement une sortie logique.
Anthony DUVAL 59
Fonctions:
La fonction principale du programme dans lequel le microcontrleur va
sauter ds la mise en route sappel main:
Programme main typique:
Void main(void)
{
init(); //lance un sous programme.
while (1) //Boucle infinie qui correspond la boucle programme
{
instructions du programme;
}
}//Fin programme principale.
Anthony DUVAL 60
11/10/2013
16
Fonctions: Dclaration
Pour pouvoir appeler une fonction, celle-ci doit tre dclare en dehors de
tout autre fonction.
Exemple de dclaration avec la fonction Adition (Diapo 59):
int Adition(int a, int b);
Anthony DUVAL 61
Le C:
Anthony DUVAL 62
Le C:
Anthony DUVAL 63
Le C:
Anthony DUVAL 64
11/10/2013
17
Le C:
Anthony DUVAL 65
Le C:
Anthony DUVAL 66
Linstruction break permet dinterrompre le switch sans effectuer les tests qui suivent. Cette instruction simplifie quand il y a beaucoup de if/else qui se suivent.
Le C: Compilateur
Comme nous lavons vu prcdemment, le programme est enregistr dans la
mmoire du microcontrleur sous forme dune srie dinstructions codes sur
14 bits. Chacune de ces instructions fait partie du jeu dinstruction du
microcontrleur utilis, et nont absolument rien de comparable avec notre
code en langage C. Il faut donc retranscrire ce programme pour quil soit
compos uniquement du jeu dinstruction appartenant notre composant et
permettre de le programmer dans la mmoire de notre puce.
Il existe des outils pour effectuer cette tche: Les compilateurs.
Etant donn la diversit et les diffrences entre les diffrents
microcontrleurs, un seul compilateur ne va couvrir quune quantit limit
de rfrence.
Chez Microchip, un compilateur diffrent est propos par famille de produit
(le compilateur C16 pour la famille pic16, C18 pour pic18, C30 pour
DSPIC30,)
2010 Anthony DUVAL 67
Programmer un PIC
Programmer un microcontrleur, cest crire le
programme compiler dans la mmoire
programme. 3 mthodes les plus rpandus:
Utiliser un programmateur simple.
Utiliser un programmateur In-circuit.
Utiliser un Bootloader et un bus de
communication avec un ordinateur (USB, RS232,..)
Anthony DUVAL 68
11/10/2013
18
Programmer un Pic:
Programmateurs simpleCes programmateurs faible cot ncessite disoler le microcontrleur de son
circuit dutilisation pour le programmer.
Certains comme le PICSTART sont commercialiss par microchip, mais il est
trs facile de sen fabriquer un avec peu de matriel.
Attention: Les programmateurs maison ne fonctionneront pas tous
directement sous MPLAB. Il est alors possible dutiliser dautres logiciel
comme ICPROG.
Anthony DUVAL 69
Programmer un Pic:
Programmateurs In-circuit Ce types de programmateurs permet de programmer le PIC directement
dans son lment (carte final dutilisation). Il vite ainsi les manipulations
rptes qui risquent dendommager le microcontrleur: Dcharges
lectrostatiques et casses des pattes de connexion.
Il permettent galement de programmer les micros souds en surface
(CMS ou SMD) qui ne sont pas dmontables
Ces programmateurs permettent souvent le dbogage de programme en
situation relle.
Anthony DUVAL 70
Programmer un Pic:
Utilisation dun Bootloader Un bootloader est un petit programme qui est dj implanter dans le
microcontrleur. Celui-ci permet de grer une communication avec un
ordinateur et dcraser une partie de la mmoire programme par ce quil
reoit. On utilise alors une liaison srie (RS232 ou USB) pour envoyer le
programme.
Lenvoi du programme dans le PIC se fait cette fois encore In-Circuit.
Inconvnients:
le bootloader doit tre implant dans le PIC par lintermdiaire dun
programmateur. Cette opration est nanmoins ne faire quune seule
fois.
Tout les microcontrleurs ne peuvent pas fonctionner avec un Bootloader.
Il doit tre capable dauto crire dans leur mmoire programme (Self-
write) ou bien de lancer un programme depuis une mmoire externe.
Anthony DUVAL 71
Programme: Notion de temps A droite, un exemple de droulement dun
programme simple permettant de faire
clignoter une LED la seconde.
Un microcontrleur ne peut effectuer
quune seule instruction en mme temps.
Les sous programmes de temporisation
sont composs de suffisamment
dinstructions qui ne ralise aucune action
pour faire perdre du temps au
processus et gnrer ainsi une attente.
Pendant la dure dexcution dun tel sous
programme, aucune autres actions ou
programmes ne peut tre effectus.
Si Tcy=2us, 500000 instructions auraient pu
tre raliss pendant chaque tempo.
2010 Anthony DUVAL 72
Tempo 1s
Dbut P.P.
Eteindre LED
Tempo 1s
Allumer LED
Init
While
(1)?
oui
non
Fin
11/10/2013
19
Programme: Notion de temps
Regardons maintenant un autre exemple:
2010 Anthony DUVAL 73
Gestion LED
Dbut P.P.
TMR0=0
Init
TMR0
>= X?
ouinon
Fin
While
1?
non
oui
Dbut Gestion LED
NbPassageSPLED++
NbPassageSPLED
>Ynon
oui
Fin
NbPassageSPLED=0
LED=!LED
Programme: Notion de temps
Daprs-vous quel peut tre lintrt dune telle gestion par rapport la
prcdente?
Quel est la principale rgle a respecter pour que celle-ci fonctionne
correctement?
Si Tcy=2us et que le Timer 0 est configur en mode 8 bits avec prescaler=1
et horloge driv de Fosc. Proposez un couple de valeur X et Y et dclarez
la variable NbPassageSPLED.
Autre proposition de gestion:
2010 Anthony DUVAL 74
Exemple: Microcontrleur in-situ
Anthony DUVAL 75
Questions se poser devant un schma C:
Quelle type dhorloge est utilis?
Quelle est la frquence doscillation?
Quelle est la frquence de cycle? Le temps de cycle?
Quelle est la tension dalimentation du C?
2010 Anthony DUVAL 76
C in situ: Premire approche
11/10/2013
20
C in situ: Premire approche
Questions se poser devant un schma C (suite):
Quelles pattes utiliss en entres? Niveau logique actif?
Quelles pattes utiliss en sorties? Niveau logique actif?
Quel(s) priphrique(s) du C pourrai(ent) utilis(s) par son
environnement?
2010 Anthony DUVAL 77
C in situ: Boutons poussoir2 principales solutions de cblage:
Anthony DUVAL 78
Avec rsistance en pull-up:
Niveau logique lappui:_________
Niveau logique relch:__________
Avec rsistance en pull-down:
Niveau logique lappui:_________
Niveau logique relch:__________
Chronogramme dun appui sur un BP:
Pendant un temps dune dure de quelques millisecondes, ltat du
bouton poussoir vu par le C peut tre incertain et plusieurs
Appuis/Relchements peuvent tre interprt provoquant des ractions
du programme non voulus (par exemple plusieurs incrmentation dune
variable au lieu d1,). Solution: ne tester ltat du BP qu intervalle de
temps suprieure au temps dincertitude (20ms par exemple) et
neffectuer quune seule fois laction voulue par phase
dAppuie/relchement.
Anthony DUVAL 79
C in situ: Boutons poussoir
Notion de rebonds
Bouton poussoir: Gestion anti
rebonds Dessiner un ordinogramme de gestion dun BP avec anti rebond:
2010 Anthony DUVAL 80
11/10/2013
21
Anthony DUVAL 81
C in situ: Gestion de Clavier
matricielLe principe de traitement consiste envoyer une info sur une ligne et de lire sielle arrive sur une colonne.
On peut inverser ligne et colonne: criresur les colonnes et lire sur les lignes.)Le principe de traitement consiste envoyer une info sur une ligne et de lire sielle arrive sur une colonne.
(On peut inverser ligne et colonne: criresur les colonnes et lire sur les lignes.)
sources
Datasheets constructeur
Christian DUPATY (acadmie Aix marseille)
Bigonoff
Anthony DUVAL 82