Convertisseur analogique/numérique pic 18f45xxx
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Convertisseur analogique/numérique pic 18f45xxx



  1. #1
    invite6eefc228

    Convertisseur analogique/numérique pic 18f45xxx


    ------

    Bonjour a tous,

    Je fais actuellement un programme sur l'acquisition de la température avec un pic 18f45k22 et un capteur LM35. Bon j'ai lu la datasheet (in english) et j'ai essayé de configurer les régistres (ADCON0,ADCON1 et ADCON2) comme décrit dans la datasheet (enfin difficile de dire si j'ai tout compris).J'arrive a faire l'acquisition de quelque chose mais je ne suis pas sure que c'est bon. En plus j'ai l'impression qu'il fait l'acquisition juste une fois alors que j'aimerai faire l'acquisition de la température plusieurs fois a intervalle de temps régulier. Comment ça marche un Convertisseur analogique numerique? et comment s'y prendre avec la configuration des régistre? Merci d'avance pour vos réponses. Voici mon petit programme:

    void main() {
    int temp, zut, temp_res, sb, ls;

    ANSELE = 0x02; // Configure RE1 pin as analog
    TRISE1_bit = 1; // Configure RE1 pin as input
    TRISA=0; // Port A en sortie
    TRISD=0; // Port D en sortie
    T0CON=0xC4; // init registre timer0
    TMR0L=0; //init valeur timer
    GIE_bit=1; // autorisation interruption pour affichage 7segments
    TMR0IE_bit=1; // activation interruption
    shifter=1;
    index=0;

    //config régistre
    ADCON2=0x04;
    ADCON1=0x00;
    ADCON0=0x15;

    GO_bit=1;
    do

    //attend que go_bit passe a zero
    {
    while (GO_bit==1)
    {
    zut=0;
    }

    // lecture valeur convertie dans le registre adresh (justifié a gauche)
    temp_res = adresh ;
    sb=temp_res & 0xf0;
    sb>>=4;
    ls=temp_res & 0x0f;

    //Affichage sur les quatre digit
    portd_affich[0]=t[11];
    portd_affich[1]=t[10];
    portd_affich[2]=t[ls];
    portd_affich[3]=t[sb];
    delay_ms(300); //Attente nouvelle acquisition
    }
    while(1);

    -----

  2. #2
    invite105cee1c

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Citation Envoyé par electra19 Voir le message
    Bonjour a tous,

    Je fais actuellement un programme sur l'acquisition de la température avec un pic 18f45k22 et un capteur LM35. Bon j'ai lu la datasheet (in english) et j'ai essayé de configurer les régistres (ADCON0,ADCON1 et ADCON2) comme décrit dans la datasheet (enfin difficile de dire si j'ai tout compris).J'arrive a faire l'acquisition de quelque chose mais je ne suis pas sure que c'est bon. En plus j'ai l'impression qu'il fait l'acquisition juste une fois alors que j'aimerai faire l'acquisition de la température plusieurs fois a intervalle de temps régulier. Comment ça marche un Convertisseur analogique numerique? et comment s'y prendre avec la configuration des régistre? Merci d'avance pour vos réponses. Voici mon petit programme:

    void main() {
    int temp, zut, temp_res, sb, ls;

    ANSELE = 0x02; // Configure RE1 pin as analog
    TRISE1_bit = 1; // Configure RE1 pin as input
    TRISA=0; // Port A en sortie
    TRISD=0; // Port D en sortie
    T0CON=0xC4; // init registre timer0
    TMR0L=0; //init valeur timer
    GIE_bit=1; // autorisation interruption pour affichage 7segments
    TMR0IE_bit=1; // activation interruption
    shifter=1;
    index=0;

    //config régistre
    ADCON2=0x04;
    ADCON1=0x00;
    ADCON0=0x15;

    GO_bit=1;
    do

    //attend que go_bit passe a zero
    {
    while (GO_bit==1)
    {
    zut=0;
    }

    // lecture valeur convertie dans le registre adresh (justifié a gauche)
    temp_res = adresh ;
    sb=temp_res & 0xf0;
    sb>>=4;
    ls=temp_res & 0x0f;

    //Affichage sur les quatre digit
    portd_affich[0]=t[11];
    portd_affich[1]=t[10];
    portd_affich[2]=t[ls];
    portd_affich[3]=t[sb];
    delay_ms(300); //Attente nouvelle acquisition
    }
    while(1);
    Code:
    ortd_affich[0]=t[11];
    portd_affich[1]=t[10];
    portd_affich[2]=t[ls];
    portd_affich[3]=t[sb];
    delay_ms(300); //Attente nouvelle acquisition
    }
    je pense qu'il y a un soucis à ce niveau :
    while(1);

  3. #3
    HAYAC

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Bonjour Electra19,

    Sous quelle environnement développe tu et avec quel compilateur ?
    Pour ma part je bosse sous CCS5 et la structure de ton code ne me dit rien !
    Cordialement,

  4. #4
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    je developpe sur MikroC pro. Comment fonctionne les régistres du convertisseur analogique numerique du pic 18f. et comment faire si on veut faire plusieurs acquisitions sur une meme voie. faut il remettre le bit GO/DONE a 1 a chaque fois?

  5. A voir en vidéo sur Futura
  6. #5
    invite5c0d525e

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Tout est expliqué pas à pas page 271. http://ww1.microchip.com/downloads/e...Doc/39632e.pdf

    Je n'ai pas trouvé de remise à zéro du flag ADIF dans ton code, j'ai mal vu ? Dans le cas contraire c'est normal qu'il ne fasse qu'une seule conversion.

  7. #6
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Encore de la lecture... gabuzo si je viens sur ce site c'est parceque g l'impression de ne pas avoir compris la datasheet.je veux juste un peu plus d'explication SVP ADIF c'est le bit d'une interruption? mais comment ça marche?

  8. #7
    invite5c0d525e

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Ben oui ADIF c'est un flag d'interruption. AD pour Analogique Digital, I pour interrupt et F pour flag. Ce bit est mis automatiquement à 1 à la fin de la conversion et doit être remis à zéro par le soft (comme tous les flags) à condition que ADIE (E pour enable) soit activé (à 1) ainsi que GIE (global interrupt enable).

    Cela dit (après une lecture un peu plus attentive de la DS) ça devrait quand même fonctionner sans utiliser les interruptions avec ton
    Code:
    {
    while (GO_bit==1)
    {
    Par contre je pense qu'extremgear à raison concernant le
    Code:
    while(1)

  9. #8
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    {
    while (GO_bit==1)
    {

    Comment ca "while (GO_bit==1)"? Je ne peux pas aller lire dans le registre Durant la conversion. D après ce que j'ai compris il faut attendre que le bit GO/DONE passe a 0 donc que la conversion soit terminee avant d'aller lire dans les registres ADRESH et ADRESL???? Eclairer ma lanterne...

  10. #9
    invite105cee1c

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Citation Envoyé par electra19 Voir le message
    {
    while (GO_bit==1)
    {

    Comment ca "while (GO_bit==1)"? Je ne peux pas aller lire dans le registre Durant la conversion. D après ce que j'ai compris il faut attendre que le bit GO/DONE passe a 0 donc que la conversion soit terminee avant d'aller lire dans les registres ADRESH et ADRESL???? Eclairer ma lanterne...
    oui c'est ça tu dois attendre que le bit passe à 0 avant de lire les registres adresh et adresl.
    tu mets la portion de code de gabuzo juste avant de lire les registres .
    il vaut mieux que tu n'utilise pas les interrup tant que tu ne connais pas bien le fonctionnement de ton module adc .

  11. #10
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Ah ok! Justement ce que j'aimerai c'est de faire une acquisition a des intervalles de temps fixes afin de connaitre reellement la temperature de la piece. Mais apparemment il me faut utiliser les interruptions? et j"ai lu qu'il fallait attendre un certain temps avant de lancer une nouvelle acquisition comment calculer ou gerer ce temps d'attente? g essaye de mettre un delay sans vraiment comprendre???

  12. #11
    HAYAC

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Bonjour ELECTRA19,

    Je ne connais pas le MicroC mais ce qui est sur, c'est qu'il n'y à pas besoin d'utiliser des interruptions pour effectuer ce type de chose.
    De simples boucles, tempos remplissent parfaitement ce rôle le tout dans la boucle sans fin de ton programme.
    Les interruptions sont utilisées lors de besoin plus complexe de disponibilité de ton contrôleur (Pour les puristes c'est pour faire simple).

    Cordialement,

  13. #12
    invite5c0d525e

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Citation Envoyé par electra19 Voir le message
    j"ai lu qu'il fallait attendre un certain temps avant de lancer une nouvelle acquisition comment calculer ou gerer ce temps d'attente ?
    C'est marqué noir sur blanc sur le lien que je t'ai donné à la page que je t'ai indiqué dans mon message #6. Je t'ai copicollé le bout de texte afin de t'éviter d'avoir 20 lignes à lire : "A minimum wait of 3 TAD is required before the next acquisition starts."

    Pour l'interruption tu fais ce que tu veux, à mon sens même si ça n'est pas totalement utile dans le cas présent c'est une bonne habitude à prendre que de les utiliser, ça te servira toujours.

    Elles servent à quoi ces deux lignes ?
    GIE_bit=1; // autorisation interruption pour affichage 7segments
    TMR0IE_bit=1; // activation interruption

  14. #13
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Est ce que quelqu'un peux m'expliquer comment configurer les régistres ADCON0, ADCON1, ADCON2?

  15. #14
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    1) Ok presque resolu, je pense que je lisais mal les registres ADRESH et ADRESL que j'ai justifié maintenant a droite. Alors ça marche, concernant ADRESH et ADRESL je ne comprend pas trop comment recupérer les valeurs converties dans ces régistres et une valeur avec 10 bits. quelqu'un peut m'expliquer???

    2) ADCON1=00; cela veut dire que Vref+ =Vdd et Vref- =Vss sont connecté au signal interne du microcontroleur avec Vdd=5V; Vss=0V?

    Merci d'avance pour vos réponses

  16. #15
    invite6eefc228

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Aucune réponse ???

  17. #16
    invite5c0d525e

    Re : Convertisseur analogique/numérique pic 18f45xxx

    Si, RTFM !

Discussions similaires

  1. Convertisseur Analogique-Numerique
    Par inviteee545763 dans le forum Électronique
    Réponses: 8
    Dernier message: 24/03/2012, 18h07
  2. Convertisseur analogique numérique
    Par invite0802bd67 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/03/2011, 19h20
  3. convertisseur numérique analogique
    Par invite01c41f73 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/04/2010, 11h25
  4. Convertisseur analogique -> numérique
    Par inviteb5e46059 dans le forum Électronique
    Réponses: 2
    Dernier message: 13/02/2010, 20h17
  5. Convertisseur analogique numérique
    Par invite4cae1c4b dans le forum Électronique
    Réponses: 13
    Dernier message: 23/12/2007, 22h26
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...