L'essentiel à retenir

Embed Size (px)

Citation preview

Rpublique Tunisienne Ministre de lEnseignement Suprieur et de la Recherche Scientifique

Universit de Carthage

Ecole Polytechnique de Tunisie

Les microcontrleurs de Microchip:

Lessentiel2011-2012

Prsent par : Oussama Abid

Plan2

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

3

Le montage de base

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

5

Les ports dEntre Sortie

Les Ports DEntre Sortie6

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

Registres:

TrisA, TrisB, TrisC PortA, PortB, PortCPort C

7

La Conversion Analogique Numrique

La conversion Analogique Numrique8

Sous mikroC:

Vref+

1023

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

Donc, Voir le Help de MikroC

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

9

Les timers

TMR010

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 Timer12

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 CONtrol14

7 : Activer les interruptions5 : 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 -> Rb7Les flags servent diffrencier les sources dinterruption

Interruption sous MikroC15

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

Conclusion16

!

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 dobstacles18

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