Vous êtes sur la page 1sur 18

Rpublique Tunisienne Ministre de lEnseignement Suprieur et de la Recherche Scientifique

Universit de Carthage

Ecole Polytechnique de Tunisie

Les microcontrleurs de Microchip:

Lessentiel
2011-2012

Prsent par : Oussama Abid

Plan
2

Le montage de base dun PIC Les ports Entre Sortie du PIC La Conversion Analogique Numrique Les timers Les sources dinterruption

Le montage de base

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

Les Ports DEntre Sortie


6

PortA : ana/num PortB : num PortC : num Port D Port A

Registres:

TrisA, TrisB, TrisC PortA, PortB, PortC


Port C

La Conversion Analogique Numrique

La conversion Analogique Numrique


8

Sous mikroC:

Vref+

1023

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


Vref0

Donc, Voir le Help de MikroC

Par dfaut, Vref+ =VDD = 5v Vref- = VSS = 0v

Les timers

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


12

Clignoter une LED toute les secondes

Delay_ms()

TMR0

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

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 } }

13

Les interruptions

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 Principal

Algorithme dinterruption

Conclusion
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

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