Répondre à la discussion
Page 1 sur 3 12 DernièreDernière
Affichage des résultats 1 à 30 sur 65

CAN et cc5x



  1. #1
    marc2009

    CAN et cc5x

    Bonjour

    j'aimerais savoir comment implanter le CAN ( le convertisseur A/D ) avec le compilateur CC5X ( mon programme est en C )

    Merci

    -----


  2. Publicité
  3. #2
    Neantis

    Re : CAN et cc5x

    Salut, je te copie ici le code source de la partie CAN de mon programme sous cc5X,

    la fonction init A2D initialite le convertisseur (reférence toi au datasheet pour les pin que tu souhaite mettre en entrée, dans mon cas c'est RA0)

    La fonction convertion effectue la convertion et retourne la valeur du registre ADRESL ( je ne sais pas si le delay de 1ms est optimal a toi de voir j'ai pas encore trop regarder l'effet de cette tempo)


    void init_A2D(void){
    //Configure l'horloge pour la converstion
    ADCON1 = 0b01010000;
    // Bit de justification à droite
    //ADFM = 1;
    // Registres de mise en place des pin en mode Entrée Analogique
    ANSEL = 0b00000001;
    //ANSELH = 0b00000000;
    // Registe de controle pour justification, voltage reference et channel ou effectuer la convertion.
    ADCON0 = 0b10000001;
    }

    uns16 Convertion (void){

    delay_ms(1);
    ADCON0.1=1;
    while (ADCON0.1 == 1){
    }

    return ADRESL;
    }

  4. #3
    marc2009

    Re : CAN et cc5x

    Merci de ta réponse

    pourrais tu juste m'expliquer ton programme ? à part la configuration des 3 registres, je comprends pas le reste. ( enfin la configuration des registres, je sais pas car on a pas le même pic )

    et que fais tu de ADRESH ?

    Merci

  5. #4
    Neantis

    Re : CAN et cc5x

    Mon programme reprend les consigne du datasheet

    tu place le bit ADCON0.1 à 1 pour demmarer la conversion
    quand elle est fini le bit repasse automatiquement à zéro.

    A partir de la soit tu met en place une interruption soit tu fait une boucle qui attend que le bit soit revenu à 0 (ce que je fait dans mon cas).

    ADRESH soit tu le récupere dans une variable quand tu apelle la fonction soit tu l'envoi par le port série c'est comme tu veut, dans ton programme principal tu peut faire

    uns16 converted = Convertion();

    et tu récupère la conversion dans la variable converted

    pour les registres de configuration la seule chose qui puisse t'aider c'est le datasheet, mon programme ne fait qu'adapter le datasheet à mon cas.

    J'espere que j'ai répondu à tes questions, si jamais n'hesite pas

  6. #5
    marc2009

    Re : CAN et cc5x

    ce que je veux faire : je vais utiliser Vdd comme valeur de référence, et si je dis pas de bêtises, GP1 en entrée pour la tension à relever.

    Donc disons que je veux comparer par rapport à 530 points ... comment pourrais je mettre ça en place dans le programme ? Dois je utiliser ADRESH et ADRESL pour ça, ou y a-t-il plus simple ?

    Merci

  7. A voir en vidéo sur Futura
  8. #6
    Gérard

    Re : CAN et cc5x

    Vous ne parlez pas du même PIC.
    Le 12F675 n'a pas de registre ANSELH.

    Marc, as-tu regardé le cours de Bigo sur le 876 ? Il parle du CAN.

  9. Publicité
  10. #7
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par Gérard Voir le message
    Vous ne parlez pas du même PIC.
    Le 12F675 n'a pas de registre ANSELH.

    Marc, as-tu regardé le cours de Bigo sur le 876 ? Il parle du CAN.
    mais il a mis ANSEL, pas ANSELH :P

    Gérard, tu parles bien de Cours sur les PIC® - Part2 (La gamme mid-range par l'étude des 16F87X ) ?

  11. #8
    marc2009

    Re : CAN et cc5x

    ah oué, c'est pas aussi simple

    Bon, c'est de l'assembleur, pas du C malheureusement ( bigonoff n'utilise pas ADRESH et ADRESL !? bizarre

  12. #9
    Gérard

    Re : CAN et cc5x

    Citation Envoyé par marc2009 Voir le message
    mais il a mis ANSEL, pas ANSELH :P
    Si, il a mis ANSELH.

    Citation Envoyé par marc2009 Voir le message
    Gérard, tu parles bien de Cours sur les PIC® - Part2 (La gamme mid-range par l'étude des 16F87X ) ?
    Oui c'est ça.

  13. #10
    marc2009

    Re : CAN et cc5x

    ANSELH est commenté

  14. #11
    marc2009

    Re : CAN et cc5x

    sinon, bigonoff ne donne pas d'exemple sur adresh et adresl :s donc ca m'avance pas trop là :s

  15. #12
    Gérard

    Re : CAN et cc5x

    Citation Envoyé par marc2009 Voir le message
    sinon, bigonoff ne donne pas d'exemple sur adresh et adresl :s donc ca m'avance pas trop là :s
    Je viens de feuilleter la révision 15 du cours 2 de Bigo.
    Tu vas voir à partir de la page 203, il parle de la conversion.
    Paragraphe "19.16 L'utilisation pratique du convertisseur" devrait t'aider.

    La chapitre sur le CAN va jusqu'à la page 248, de quoi occuper un dimanche AM.

  16. Publicité
  17. #13
    marc2009

    Re : CAN et cc5x

    j'ai trouvé ici un exemple d'utilisation du CAN avec cc5x : http://www.aix-mrs.iufm.fr/formation...0en%20main.pdf

  18. #14
    marc2009

    Re : CAN et cc5x

    ah bah c'est pas vraiment un exemple en fait :s

    bon, dis moi : si on justifie a gauche, est ce que ça suffit dans ce cas d'utiliser ADRESH et pas ADRESL ? Par exemple 531 points représente en binaire 1000010011

    Donc comme ADRESH contient le bit de poids le plus fort ( si j'ai bien compris ), arrivé à 531 points, ADRESH sera égale à 10000100 ( sans le 11 ) c'est ça ? ( ou j'ai rien compris a l'histoire des poids fort/faible ? ) donc ADRESL contiendrait 11 ( mais elle ne serait pas utilisée)

    Merci

  19. #15
    Gérard

    Re : CAN et cc5x

    En justifiant à gauche, c'est comme si tu faisais une conversion sur 8 bit si tu ne tiens pas compte de ADRESL.

  20. #16
    marc2009

    Re : CAN et cc5x

    mais alors ça peut pas marcher ?

  21. #17
    Gérard

    Re : CAN et cc5x

    Citation Envoyé par marc2009 Voir le message
    mais alors ça peut pas marcher ?
    Attention, sur 8 bit, tu ne peux pas avoir 531 points.

  22. #18
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par Gérard Voir le message
    Attention, sur 8 bit, tu ne peux pas avoir 531 points.
    et je fais comment alors ? donc si je fais une "conversion sur 8bits", Vdd ne sera pas = 1023 points mais = 255 points c'est ça et donc le produit en croix devra etre fait par rapport à 255, c'est ça ?

    mais c'est bien de faire ça ? je perdrais pas en précision ou ... ( car ADRESL ne sera pas relevé )

  23. Publicité
  24. #19
    Gérard

    Re : CAN et cc5x

    Soit tu fais une conversion sur 10 et tu utilises les 2 registres ADRESL et H, soit tu fais une conversion sur 8 bit, tu justifies à gauche et tu utilises ADRESH.

    De toute façon, il faut lire Bigo.

  25. #20
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par Gérard Voir le message
    Soit tu fais une conversion sur 10 et tu utilises les 2 registres ADRESL et H, soit tu fais une conversion sur 8 bit, tu justifies à gauche et tu utilises ADRESH.

    De toute façon, il faut lire Bigo.
    oui j'ai lu, bon faut que je lise encore ^^

    sinon, mon raisonnement est juste ou faux ?

  26. #21
    Gérard

    Re : CAN et cc5x

    Si tu travailles sur 8 bit, la précision sera forcément moindre.

  27. #22
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par Gérard Voir le message
    Si tu travailles sur 8 bit, la précision sera forcément moindre.
    ah ok ... mais je vois pas comment faire pour l'écrire en C, il est la le problème.

    y a-t-il un moyen de "convertir" une variable binaire en hexa ou décimale ? Je veux dire, les variables ADRESH et ADRESL sont des variables en binaire. T'es d'accord ?

  28. #23
    marc2009

    Re : CAN et cc5x

    car il me refuse le
    Code:
    if ((ADRESH==0b10000100).(ADRESL==0b11000000))
    bon c'est normal

    Mais je vois pas comment faire ... si je déclare 2 variables : char adresh; et char adresl; et que je mets ADRESH=adresh; et ADRESL=adresl; ca pourrait marcher ? J'aurais alors une valeur en décimale n'est ce pas ?

  29. #24
    Gérard

    Re : CAN et cc5x

    Aucune idée, désolé.

  30. Publicité
  31. #25
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par Gérard Voir le message
    Aucune idée, désolé.
    ben comment tu ferais en basic ? Faut bien que tu utilises ADRESH et ADRESL aussi en basic, nan ?

  32. #26
    Gérard

    Re : CAN et cc5x

    Code:
    For I = 0 To 3						;acquisition de 4 valeurs
    			TabTemp [I]	= ADIn 0			;mesure LM335
    			DelayMS		50
    		Next
    Variables déclarées :
    TabTemp : tableau de 4 variables de type word (16 bit)
    i : octet

    ADIn 0 : instruction permettant d'acquérir la tension présente sur AN0.

  33. #27
    marc2009

    Re : CAN et cc5x

    mais tu te sers pas de ces 2 variables :s ce qui corse ma tâche :s

    je suis en train de me dire si je vais pas mettre le comparateur plutôt que le CAN ^^' ( dommage )

  34. #28
    Gérard

    Re : CAN et cc5x

    Je ne m'en sers pas parce que le compilateur se débrouille.
    Il lance la conversion et écrit le résultat où je lui dis de le mettre.

    Ton C me semble léger, heureusement que le Basic existe !

  35. #29
    mictour

    Re : CAN et cc5x

    Bonjour marc2009,

    Si je comprends ta question, il te faut définir une variable 16 bits :
    uns16 tmp;

    Puis faire cette affectation :
    tmp.high8 = ADRESH;
    tmp.low8 = ADRESL;

    La variable tmp contient alors le résultat de la conversion ...

    Bonne journée, mictour.

  36. #30
    marc2009

    Re : CAN et cc5x

    Citation Envoyé par mictour Voir le message
    Bonjour marc2009,

    Si je comprends ta question, il te faut définir une variable 16 bits :
    uns16 tmp;

    Puis faire cette affectation :
    tmp.high8 = ADRESH;
    tmp.low8 = ADRESL;

    La variable tmp contient alors le résultat de la conversion ...

    Bonne journée, mictour.
    Bonjour mictour

    merci pour ta réponse. Alors si j'ai bien compris, avec ce que tu m'as écrit, j'aurai le résultat de la conversion dans la variable 16bits tmp, c'est ça ? Mais le résultat sera-t-il en binaire ou en décimale ?

Sur le même thème :

Page 1 sur 3 12 DernièreDernière

Discussions similaires

  1. CC5X et MPLAB
    Par bobanne dans le forum Électronique
    Réponses: 0
    Dernier message: 09/04/2009, 10h00
  2. CC5X : Définition de tableaux.
    Par Tix dans le forum Électronique
    Réponses: 4
    Dernier message: 13/06/2008, 16h40
  3. pb prog CC5X 16F877
    Par steph07 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/11/2007, 08h10
  4. MPLAB et CC5X
    Par Michael37 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 01/06/2007, 07h28
  5. Mplab + Cc5x (16f737)
    Par Michael37 dans le forum Électronique
    Réponses: 1
    Dernier message: 31/05/2007, 15h10