pb de langage c sur pic
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

pb de langage c sur pic



  1. #1
    monsieurcontacte

    Exclamation pb de langage c sur pic


    ------

    bonjour à tous

    j' ai un probleme avec la conversion analogique numérique sur les pic.(je débute )
    j'utilise un pic 16f877. j'essaie de faire un programme en C qui récupère la tension d'un potard comprise (entre 0 et 5v)

    le resultat que je veux récupérer je le met dans une variable appelé mesure, exemple
    mesure=read_adc();

    mon probleme c'est de savoir comment est la valeur qui se trouve dans ma variable mesure.
    si elle est binaire ou pas ?
    si oui comment la mettre en décimal pour l afficher pour plus tard.
    je souhaiterai avoir si possible des explications sur la façon de récupérer des valeurs analogiques en langage C.

    merci à tous de m'aider.
    monsieurcontacte

    -----

  2. #2
    monsieurcontacte

    Talking Re : pb de langage c sur pic

    salut moi

    j'ai trouvé la réponse a ma question.enfin presque.

    pour ceux à qui ça interesse voila un lien
    http://www.ac-limoges.fr/sti_ge/IMG/..._Langage_C.pdf

    merci

  3. #3
    Gérard

    Re : pb de langage c sur pic

    T'es un bon, tu poses une question et tu réponds toi même.
    Gérard.

  4. #4
    monsieurcontacte

    Re : pb de langage c sur pic

    je pensais que l'on allais me repondre assez rapidement et puis suis tombé par hazard sur ce que je cherchais. et en + j 'en fé profiter tout le monde.

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

    Re : pb de langage c sur pic

    Oui en plus pas très probant comme exemple, il aurait été plus judicieux que les auteurs indiquent le principe de récupération du résultat en mode 10 bits et non 8 bits...quand le PIC dont il est question permet d'obtenir une résolution de:

    .

  7. #6
    invite03481543

    Re : pb de langage c sur pic

    Et voici comment on fait en C en mode 10 bits:

    mesure=Convert_AD();

    void Initialisation_AD(void)
    {
    ADCS1=1; ADCS0=0; // Fosc 32
    CHS2=0; CHS1=0; CHS0=0; // sélection de l'entrée analogique RA0
    PCFG3=1; PCFG2=1; PCFG1=1; PCFG0=0;
    ADFM=1; // justification bit à droite registre de réception ADRESH ADRESL
    }

    int Convert_AD(void)
    {
    ADON=1; // activation du convertisseur
    cT=6;
    while(cT--); // tempo de 23µs
    iValAD=0;
    ADGO=1; // lancement de la conversion
    while(ADGO); // On attend que ADGO passe à 0 fin de conversion
    iValAD=ADRESH;
    iValAD<<=8;
    iValAD|=ADRESL; // le résultat est contenu dans iValAD
    ADON=0; // convertisseur arrêté
    return iValAD;
    }

    Voili voilou.
    Dernière modification par HULK28 ; 13/12/2006 à 01h28.

  8. #7
    Gérard

    Re : pb de langage c sur pic

    C'est bigrement compliqué le C.
    Trop fatigué ce soir pour te chercher un exemple en Basic mais je le posterai avant la fin de la semaine.
    Bonne nuit à tous,
    Gérard.

  9. #8
    invite03481543

    Re : pb de langage c sur pic

    Si tu veux quelque chose de plus poussé j'avais posté ça il y a quelques temps:

    http://forums.futura-sciences.com/sh...ersion+AD+en+C

    @+

  10. #9
    invite03481543

    Re : pb de langage c sur pic

    Citation Envoyé par Gérard Voir le message
    C'est bigrement compliqué le C.
    Trop fatigué ce soir pour te chercher un exemple en Basic mais je le posterai avant la fin de la semaine.
    Bonne nuit à tous,
    Gérard.
    Ce qui peut donner l'impression que c'est compliqué, c'est que l'exemple montre la fonction qui exécute le process de conversion.
    Or certains compilateurs (même en C) utilisent des fonctions prédéfinies (non publiques c'est à dire fournies avec le compilo mais dont le source n'est pas accessible au programmeur) qui exécutent implicitement le travail.
    C'est pour cela que l'exemple donné dans le PDF trouvé par monsieurcontacte semble plus simple puisque la fonction de conversion est implicite.
    C'est notamment ce que l'on trouve sur les compilo basic.
    Dans ce cas un simple appel à une fonction genre int Convert_AD(canal_AD1) comme dans mon exemple suffit à faire le boulot.
    L'écriture final est donc plus aérée mais le mécanisme intime au µC échappe en partie au programmeur.

    Moi j'ai toujours opté pour créer mes propres bibliothèques de fonctions (dont certaines en assembleur), optimisées et éprouvées, ça revient au même finalement car je les appelle au travers de fichiers "headers" (exemple: adc.h) et le linker fait le reste lors de la compilation.
    Dernière modification par HULK28 ; 13/12/2006 à 02h08.

  11. #10
    invite03481543

    Re : pb de langage c sur pic

    Citation Envoyé par monsieurcontacte Voir le message

    mon probleme c'est de savoir comment est la valeur qui se trouve dans ma variable mesure.
    si elle est binaire ou pas ?
    Le résultat est binaire 0b11110011 ou sous forme Hexa 0xF2 selon le format que tu utilises.

    Citation Envoyé par monsieurcontacte Voir le message
    si oui comment la mettre en décimal pour l afficher pour plus tard.
    Ensuite pour l'envoyer vers un afficheur par exemple tu dois effectuer une conversion Hexa->ASCII afin que ton controleur d'afficheur puisse l'exploiter directement:

    /****************************** ****************************** ****
    Conversion Hexa -> ASCII (Max:999)
    ****************************** ****************************** ****/
    uchar HexToAscii(uchar hexa)
    {
    hexa = hexa + 0x30 ;
    if (hexa > 0x39) hexa = hexa + 7 ;
    return(hexa) ;
    }

  12. #11
    remy01

    Re : pb de langage c sur pic

    Salut,
    un exemple plus simple en C ( CCS), ci dessous :
    http://perso.orange.fr/remy-p/
    puis AAE, puis thermometre PIC 16F877.

  13. #12
    monsieurcontacte

    Thumbs up Re : pb de langage c sur pic

    Citation Envoyé par HULK28 Voir le message
    Oui en plus pas très probant comme exemple, il aurait été plus judicieux que les auteurs indiquent le principe de récupération du résultat en mode 10 bits et non 8 bits...quand le PIC dont il est question permet d'obtenir une résolution de:

    .
    j'avais vu que ça cloché sur la recuperation en 8 bits et non pas en 10bits

    en tout cas je vous remercie à tous.
    vous m'avais bien éclairé la lanterne. je vais pouvoir avancer.

    merci encore

  14. #13
    invite03481543

    Re : pb de langage c sur pic

    Depuis quand "begin" c'est du C?
    Et je ne vois pas en quoi c'est plus simple, si tu peux m'éclairer Remy...

  15. #14
    remy01

    Re : pb de langage c sur pic

    Salut Hulk28,
    j'ai quelques #define .... dans le fichier .h
    La nostalgie du Pascal, peut-être ? Je voie aussi mieux
    begin et end ( au lieu de {....})...
    Plus simple : c'est ce tu disais: ... fonctions prédef.
    read_adc par ex.
    et puis en 10 bits, la résolution est de 5mV ( à la louche) et comme j'ai un circuit qui me donne 10mV/degré, il suffit de diviser la mesure par 2 pour avoir
    les degrés.
    A+ ....Rémy.

  16. #15
    Gérard

    Re : pb de langage c sur pic

    Comme promis, ci-dessous un sous programme mesure de température
    dans les déclarations mesure = 8Ch
    an_result est déclaré comme mot (16 bit)

    MESURE_TEMPERATURE:

    adcon1 = mesure
    delayms 1
    an_result = adin 0 ;entree 0, RA0
    TEMP0 = an_result / 1023
    TEMP0 = TEMP0 * (vref_plus - vref_moins)
    temp0 = temp0 + vref_moins
    temp0 = (temp0 * 100) - 273

    Gérard.

Discussions similaires

  1. Quel langage pour la programmation des PIC
    Par gaga2410 dans le forum Électronique
    Réponses: 39
    Dernier message: 22/09/2007, 11h41
  2. truc en langage assembleur PIC
    Par invite412b515c dans le forum Électronique
    Réponses: 0
    Dernier message: 04/06/2007, 21h05
  3. Progammer les PIC en langage C
    Par invite2de8d382 dans le forum Électronique
    Réponses: 8
    Dernier message: 30/10/2006, 19h27
  4. quel langage pour pic ?
    Par spilz dans le forum Électronique
    Réponses: 12
    Dernier message: 01/08/2006, 14h40
  5. PIC et µC propramable avec langage procedural?
    Par flyingman dans le forum Électronique
    Réponses: 14
    Dernier message: 14/11/2005, 09h34
Découvrez nos comparatifs produits sur l'informatique et les technologies.