Vous êtes sur la page 1sur 18

Prsent par : Oussama Abid

Rpublique Tunisienne
Ministre de lEnseignement Suprieur et de la Recherche Scientifique
Universit de Carthage

Ecole Polytechnique de Tunisie
2011-2012
Les microcontrleurs de Microchip:
Lessentiel
Plan
Le montage de base dun PIC
Les ports Entre Sortie du PIC
La Conversion Analogique Numrique
Les timers
Les sources dinterruption

2
Le montage de base
3
4
ISIS ne vous affiche pas les pins VSS et VDD. Dans la pratique il faut bien videmment relier
VDD la tension 5volt et VSS la masse
Ce montage est valable quelque soit le PIC utilis
Les ports dEntre Sortie
5
Les Ports DEntre Sortie
6
P
o
r
t

A

P
o
r
t

C

P
o
r
t

D

PortA : ana/num
PortB : num
PortC : num




Registres:
TrisA, TrisB, TrisC

PortA, PortB, PortC

La Conversion Analogique Numrique
7
La conversion Analogique Numrique
8

Sous mikroC:
Adc_init(); // initialisation

val = adc_read(0) // Lire la
valeur de AN0

Donc,

Voir le Help de MikroC
Vref+
Vref-
1023
0
Par dfaut, Vref+ =VDD = 5v
Vref- = VSS = 0v
Les timers
9
TMR0
10
Sincrmente indpendamment de lAlgorithme 0 255
A chaque dbordement, le flag du Timer prend 1 au niveau de INTCON

Petit calcul :
Quartz : 20 Mhz par exemple
1 Temps dinstruction = 4 * Temps oscillation
c d Temps dinstruction= 4* 1/20Mhz = 0.2us
Dbordement du timer = 256*0.2us = 51.2us

Ralentir le dbordement du timer : Utiliser un prescaler
Dbordement du timer = 256 * prescaler * 0.2us
Au maximum prescaler = 256
cd Dbordement = 256*256*0.2= 13.07ms
Le prescaler est choisi laide du registre OPTION_REG
11
Option_Reg=0b0000xxxx
Utilit dun Timer
Delay_ms()

Void main() {
While (1)
{
Led=1;
Delay_ms(1000);
Led=0;
}
}
TMR0

Void interrupt()
{ if ( flag_timer== 1 )
{ cnt++;
if ( cnt == 71 ) {Led=1;
cnt=0;
}
else Led=0;
} }

Void main() {
INTCON=0b10100000; // Active interrupt
OPTION_REG. // prescaler = 256
While (1 )
{ // effectuer ce que vous voulez
} }
12
Clignoter une LED toute les secondes
Les interruptions
13
INTerruption CONtrol
14
7 : Activer les interruptions
5 : Activer une interruption suite au dbordement du TMR0
4 : Activer une interruption suite un changement dEtat de RB0 (
Option_reg )
3: Activer une interruption suite un changement dEtat de RB4 ->
Rb7

Les flags servent diffrencier les sources dinterruption
Interruption sous MikroC
15
Void interrupt()
{ if ( INTCON.F2 == 1 ) // timer flag
{ // ce que vous voulez
}
else if ( INTCON.F1== 1 ) // Rb0
INTCON=0b1xxxxxxx;
}

Void main()
{INTCON=0b1xxxxxxx;
While (1)
{ // ce que vous voulez
}
}
Algorithme dinterruption
Algorithme Principal
16
Vos compagnons de route :

Le cours de BIGONOFF : Comprendre le phnomne rel
Le HELP de MikroC : Les fonction prdfinies utiliser en
C et avoir des exemples
Le datasheet du PIC : Meilleur source dinformation
!
Conclusion
FLICITATION : VOUS
TES UN EXPERT EN PIC
Travail pratique : Algorithme pour un
viteur dobstacles
18
Cahier de charge :

Dtecter un obstacle par deux capteurs infrarouge et
lviter

Allumer une srie de LED proportionnellement la
distance entre le robot et lobstacle

Une LED clignote tout au long du fonctionnement

Un signal dune tlcommande arrte le robot