Configuration can integre au microcontrolleur PIC16F877
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Configuration can integre au microcontrolleur PIC16F877



  1. #1
    adrienc45

    Configuration can integre au microcontrolleur PIC16F877


    ------

    Bonsoir a tous !

    Je suis confronté a un souci pour mettre au point un programme ( dans un premier temps en c puis que je compilerais avec mikroC en hex une fois finalisé )

    je n ' arrive pas a capter toutes les subtilités concernant la configuration des différents registres de stockage de donnés et de paramétrage du can 10 bit multiplexé sur 8 entrées intégré au microcontrôleur pic16f877 ( enfin de ce que j ai pu tirer de la lecture de la datasheet )


    l' utilisation que je souhaite faire de ce can est la suivante :


    je souhaite envoyer 3 signaux analogiques de tension comprise entre 0 et 5 v , sur les broches respectivement appelés RE0/AN5 ; RE1/AN6 ; RE2/AN7
    je veux récupérer une valeur numérique de chacun de ces 3 signaux pour calculer après grâce a ces 3 valeurs numériques rassembles dans une formule , une quatrième valeur numérique qui me sert dans la suite de mon programme ....etc...enfin bref des choses qui vous intéresse peu je suppose

    d autres précisions sont disponibles si vous voulez

    Pourrais je avoir de plus amples informations a ce sujet ?

    Merci d' avance et bonne soirée !

    Cordialement

    -----

  2. #2
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Regarde le registre ADCON1, si tu souhaites 3 entrées ana (sans Vref), tu ne peux avoir que RA0, RA1 et RA3.
    Avec le 877, on ne peut pas vraiment choisir.

  3. #3
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    c est a dire en prenant rao, ra1 , ra2 comme entrées analogiques ?

    et en disant que vref + est egale a vcc et que vref- est égale a gnd pour les " bornes " du can ?

    de cette manière la sa m irait , j ai juste a modifier mon schéma , facile

    a quels valeurs doivent être les bits concernés dans le registre ADCON1 ?

    merci de ton aide

    bonne soirée

  4. #4
    antek

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    c est a dire en prenant rao, ra1 , ra2 comme entrées analogiques ?
    et en disant que vref + est egale a vcc et que vref- est égale a gnd pour les " bornes " du can ?

    a quels valeurs doivent être les bits concernés dans le registre ADCON1 ?
    Oui.
    Pour les registres du CAN regarde dans la doc microchip.

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

    Re : Configuration can integre au microcontrolleur PIC16F877

    Bonjour

    C' est ce que j' ai fait mais malgré tout j ai des difficultés pour paramétrer 3 entrées analogiques ....
    Pour en paramétrer une seule ,je n ai pas de difficultés a priori mais c est pour les 3 entrées en même temps


    par exemple si je voulais paramétrer une seule entrée analogique du microcontrôleur (sur RE0/AN5 par exemple )avec les paramètres suivants :

    >horloge de conversion a Fosc/32 pour un quartz externe de 20MHz
    >justifie a gauche
    > voltage de référence niveau haut sur Vdd 5v
    >voltage de référence bas niveau sur Vss 0V


    je dois fixer les registres ADCON0 ET ADCON1 aux valeurs suivantes :

    ADCON0=10010100
    ADCON1=00000000


    Mais si je veux utiliser 3 entrées analogiques du même microcontrôleur ( RE0/AN5 RE1/AN6 et RE2/AN7 )
    je vois pas de quel manière je dois fixer ces registres de paramétrage pour faire ce que je veux ....

    merci de votre aide

    Cordialement

  7. #6
    antek

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    Mais si je veux utiliser 3 entrées analogiques du même microcontrôleur ( RE0/AN5 RE1/AN6 et RE2/AN7 )
    je vois pas de quel manière je dois fixer ces registres de paramétrage pour faire ce que je veux ....
    Moi non plus, la réponse se trouve #2 !

  8. #7
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    je pense avoir compris comment on fait ( en partie )

    on active les 3 entrees analogiques l une a la suite de l autre

    comme cela est fait ici ( fin de page )

    http://gilles.berthome.free.fr/01-sy...02-Attelle.htm

    ai je bien sais la chose ou je suis a coté de la plaque la ?

  9. #8
    antek

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    je pense avoir compris comment on fait ( en partie )
    on active les 3 entrees analogiques l une a la suite de l autre
    comme cela est fait ici ( fin de page )
    ai je bien sais la chose ou je suis a coté de la plaque la ?
    Il y a deux choses à faire :
    1 - sélectionner les entrées qui seront en analogique (bits PCFG_0, 1, 2, 3)
    2 - sélectionner l'entrée à envoyer sur le CAN pour conversion (bits CHS_0, 1, 2)

    Pour la 3e et dernière fois :
    Avec un 877 on ne peut pas sélectionner AN5, AN6 et AN7 (et elles seules) en entrée analogique.
    Pour 3 entrées analogiques seulement on choisit AN0, AN1 et AN3 -> voir le registre ADCON1

  10. #9
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    pardon j avais pas fait attention a cette partie de votre message , desolé de mon innatention

    je travaille avec mikroC

    donc la solution que je peux mettre en oeuvre , c est de deplacer mes entrees analogique sur an5,6,7 et de les mettre sur an0,1 et2

    puis je peux utiliser ca apres ?

    citation du forum :

    Si tu cherches juste à faire une mesure il suffit donc d'appeler directement la fonction du compilateur:

    La fonction est prédéfinie ainsi:
    unsigned int Adc_Read(unsigned short channel);


    Adc_Read retourne un entier (0 à 1023)

    il suffit alors d'écrire:

    res=Adc_Read(0);

    Pour recueillir dans la variable res le résultat de la mesure de l'A/D sur An0.
    @+

    merci encore

  11. #10
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message

    ....
    Mais si je veux utiliser 3 entrées analogiques du même microcontrôleur ( RE0/AN5 RE1/AN6 et RE2/AN7 )
    je vois pas de quel manière je dois fixer ces registres de paramétrage pour faire ce que je veux ....

    merci de votre aide

    Cordialement
    En #2, je t'ai dit que tu ne peux pas faire ce que tu veux, tu regardes dans la doc ce qui concerne ADCON0 et ADCON1.
    Après tu poses une question précise.

  12. #11
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    voila une question precise :

    ce que je comprends pas c est que dans la datasheet , ils disent que :

    les bits CHS2 CHS1 et CHS0 du registre ADCON0 (Channel Select bits )
    Ces 3 bits permettent de choisir l'entrée qui va être convertie.
    OR , le probleme c est que moi j ai besoin de convertir 3 entrees , donc comment se passe le parametrage a ce moment la ?

    faut il que je fasse un sous programme pour chaque entree analogique pour acquerir d abord la valeur analogique en an0, puis en an1 et enfin en an2 , avec a chaque debut de ces 3 sous programmes , une partie que sert a changement d' etat des bits chs2 chs1 et chs0 du registre ADCON0 ?

    puis appeler a tour de role chacun de ses sous programmes dans mon " main" ?


    J' attend une reponse precise ayant fait l effort de faire une question precise comme cela m' as ete demandé

    je comprends bien que la programmation demande beaucoup de " bien parler " pour se faire comprendre , mais mettez vous a la place de quelqu un qui n en fait pas souvent , c est pas facile

    en esperant n ' avoir "froissé " personne
    Bonne soirée

  13. #12
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Tu souhaites 3 entrées ana. La doc du 877 propose (et c'est la seule solution pour 3 entrées ana sans vref + et -), RA0, RA1 et RA3.
    Tu mets dans ADCON1 pour les 4 bit de poids faible, la valeur 0100. Les bit 4 à 6 ne servent à rien et le bit 7 dépend de la justification que tu souhaites.

    ADCON0 :
    bit 7 et 6 : horloge de conversion
    bit 5 à 3 : c'est là que tu choisis quel entrée tu souhaites convertir, tu mets donc ces bit à la valeur voulue
    bit 2 : flag
    bit 1 : SO (sans objet)
    bit 0 : lancement de la conversion

    Je ne peux pas être plus clair.

    PS : je ne suis pas froissé.

  14. #13
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Dans ton programme :
    - congif pour 1re acquisition
    - stockage résultat dans variable de ton choix (attention, si conversion sur 10 bit, prévoir variable de largeur 16 bit)
    - congif pour 2e acquisition
    - stockage résultat dans variable de ton choix différente de la variable de la 1re acquisition (même remarque sur le nombre de bit de la variable)
    - congif pour 3e acquisition
    - stockage résultat dans variable de ton choix différente de la variable de la 1re acquisition et différente de la variable de la 2e acquisition (même remarque sur le nombre de bit de la variable)

    Traitement de tes 3 variables.

  15. #14
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    merci de votre réponse !

    celle ci ne peut être plus clair effectivement .

    Pour finir , une fois la modification faite sur le registre ADCON0 avant le début du "main" de mon programme , quel méthode pour lire le résultat en binaire de la conversion can de chacune de ces 3 entrees analogiques quand j en ai besoin ?

  16. #15
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Si la conversion est faite sur 10 bit, le résultat se trouve dans 2 registres ADRESH et ADRESL avec la justification en fonction du bit 7 de ADCON1.
    Suivant le compilateur avec lequel tu travailles, les 2 registres ADRESx sont peut-être transparents et tu retrouves ton résultat directement dans la variable que tu auras prévu.

  17. #16
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    merci pour toutes ces precisions !


    Dans ton programme :
    - congif pour 1re acquisition
    - stockage résultat dans variable de ton choix (attention, si conversion sur 10 bit, prévoir variable de largeur 16 bit)

    - congif pour 2e acquisition
    - stockage résultat dans variable de ton choix différente de la variable de la 1re acquisition (même remarque sur le nombre de bit de la variable)

    - congif pour 3e acquisition
    - stockage résultat dans variable de ton choix différente de la variable de la 1re acquisition et différente de la variable de la 2e acquisition (même remarque sur le nombre de bit de la variable)


    Traitement de tes 3 variables
    puis je faire 3 sous programmes avec les elements de 3 couleurs differentes ?
    pour eviter que je reecrive tout ces parametres a chaque fois que je swich de can ?
    j appelerais ces boucles a la suite car j ai besoin de ces 3 donnes analogiques a la suite dans mon " main" ?

  18. #17
    antek

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    puis je faire 3 sous programmes avec les elements de 3 couleurs differentes ?
    pour eviter que je reecrive tout ces parametres a chaque fois que je swich de can ?
    L'interêt du sous-programme c'est d'en avoir UN seul pour effectuer plusieurs fois la même opération (sélection signal, mesure du signal, stockage du résultat) !

  19. #18
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    dois je en conclure que cette solution pour créer un procédé d acquisition de la valeur analogique sur chaque entrée an0 an1 an2 est envisageable dans mon cas pour éviter de tout répéter a chaque fois ?

  20. #19
    antek

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    dois je en conclure que cette solution pour créer un procédé d acquisition de la valeur analogique sur chaque entrée an0 an1 an2 est envisageable dans mon cas pour éviter de tout répéter a chaque fois ?
    Pour la 3e fois : AN0, AN1 et AN3 !
    Oui, il faut organiser l'appel de sous-programme et le sous-programme lui-même pour mesurer l'entrée de ton choix.

  21. #20
    adrienc45

    Re : Configuration can integre au microcontrolleur PIC16F877

    pardon , je voulais écrire an3 a la place de an2 mais dans la précipitation je me suis trompé

    ce que je vais faire c est faire mes 3 sous programmes et vous me direz si ca ressemble a quelque chose de potable

    Bonne journée

  22. #21
    Gérard

    Re : Configuration can integre au microcontrolleur PIC16F877

    Citation Envoyé par adrienc45 Voir le message
    merci pour toutes ces precisions !




    puis je faire 3 sous programmes avec les elements de 3 couleurs differentes ?
    pour eviter que je reecrive tout ces parametres a chaque fois que je swich de can ?
    j appelerais ces boucles a la suite car j ai besoin de ces 3 donnes analogiques a la suite dans mon " main" ?
    Si ton compilateur permet le passage de paramètres à l'appel d'un sous-programme, la réponse est oui.

Discussions similaires

  1. Priorité entre configuration R et configuration S
    Par Robtronik dans le forum Chimie
    Réponses: 2
    Dernier message: 02/10/2014, 20h52
  2. Integre une prepa integre s (insa par ex) apres une année prepa pcsi
    Par abdou1996 dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 22/08/2014, 20h02
  3. Réponses: 14
    Dernier message: 06/10/2013, 18h11
  4. Microcontrolleur SPI - I2C
    Par 91BASTY dans le forum Électronique
    Réponses: 12
    Dernier message: 01/06/2013, 00h07
  5. microcontrôlleur sur PCI
    Par invite92cc2275 dans le forum Électronique
    Réponses: 12
    Dernier message: 10/08/2004, 16h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.