Aller au contenu


Photo
- - - - -

[PIC 16F887] ADCON1 ?


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 Esprit

Esprit

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique
  • Interests:La robotique !

Posté 30 décembre 2010 - 07:55

Bonjour à tous !

Je suis en train de travailler sur un rapport pour l'école. Donc, je dois bien comprendre et surtout être capable de bien expliquer tout ce que je fais dans le programme. Pour l'instant j'avance, je comprends bien. Je bloque juste avec le "ADCON1" de mon programme. Il était dans le programme d'exemple, je l'ai repris mais sans trop comprendre à quoi il pouvait bien servir...

Le programme sert juste à afficher une valeur analogique sur 10 leds (et donc, ça donnera une valeur en 10 bits, soit de 0 à 1023 en binaire). Il n'y a plus que sur l'explication du ADCON que je bloque... Quelqu'un peut m'expliquer ou me renvoyer vers de la doc ?

Merci d'avance ! ;)

Annexe, le code :

void main()
{
ADCON1 = 0x80; // Configure entrée analogique et Vref
TRISA = 0xFF; // PORTA en entrée
TRISB = 0; // PORTB en sortie
TRISC = 0; // PORTC en sortie

do
{
valeur = Adc_Read(2);
PORTB = valeur;
PORTC = valeur >> 8;
} while(1);
}[/code]

Ps : Ce n'est pas le seul programme du rapport... Après on passe au 7 segments ! :p
Enfin un cours intéressant !

#2 zeqL

zeqL

    Habitué

  • Membres
  • PipPip
  • 393 messages
  • Gender:Male

Posté 30 décembre 2010 - 08:57

Datasheet, p106-107 et pages précédentes pour les explications sur l'ADC.

http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf


D'ailleurs faut que tu configure ADCON0 ;)

#3 Esprit

Esprit

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique
  • Interests:La robotique !

Posté 31 décembre 2010 - 11:30

J'ai compris! (En tout cas pour ADCON1. Je m'attaque à ADCON0 !)

En gros, ADCON1 c'est un tableau de 8 bits, un registre physique. On utilise 3 bits sur les 8.


ADFM
-
VCFG1
VCFG0
-
-
-
-




ADFM : format de stockage dans le registre de stockage (2*8 bits)
1 pour justifier à droite et 0 pour justifier à gauche. (10 bits utiles/16)

VCFG1 : Permet de choisir la référence « basse » de la tension.
Soit on utilise le Gnd(VCFG1=0), soit une tension négative appliquée à la broche Vref-(VCFG1=1).

VCFG0 : Permet de choisir la référence « haute » de la tension.
Soit on utilise le Vcc(VCFG0=0), soit une tension positive appliquée à la broche Vref+(VCFG0=0).


Donc, en gros, en l'initialisant comme dans le programme que j'ai avec un ADCON1 = 0x80, je définis le registre comme ceci :


1
-
0
0
-
-
-
-



Et donc, je fais une justification à droite et j'utilise le Vcc et le Gnd comme références. Yes ! J'ai compris !
(Je fais un peu mes révisions en lignes... Ça permettra peut-être un jour à d'autres de comprendre... ;) )




1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users