PB DE Lecture des ports sur pic32
Répondre à la discussion
Affichage des résultats 1 à 30 sur 30

PB DE Lecture des ports sur pic32



  1. #1
    davidif

    PB DE Lecture des ports sur pic32


    ------

    Bonjour,

    Je ne comprend pas, ça fait un bon moment que je m'acharne à prendre en compte l'action d'un simple bouton poussoir qui ramène un +VCC sur une entrée du portB de mon micro et rien ne ce passe, j'ai pourtant bien initialisé mon port et fait une simple routine pour lire ce port mais ça ne fonctionne pas.

    void init_port(void)
    {
    // Clear PORT bits so there are no unexpected flashes when setting
    // them to output in the next step
    mPORTDClearBits(BIT_2 |BIT_1 | BIT_0);
    mPORTDClearBits(BIT_6 |BIT_7 | BIT_13);
    mPORTBClearBits(BIT_8|BIT_9 |BIT_10 | BIT_11|BIT_13|BIT_14 |BIT_15);
    mPORTAClearBits(BIT_1);

    // PORT as input analogique
    PORTSetPinsAnalogIn(IOPORT_B, BIT_3 | BIT_2| BIT_1| BIT_0);

    // PORT as output digital
    mPORTDSetPinsDigitalOut(BIT_2 |BIT_1 | BIT_0);
    mPORTBSetPinsDigitalOut(BIT_8| BIT_9 |BIT_10 | BIT_11);

    // PORT as input digital
    mPORTDSetPinsDigitalIn(BIT_6|B IT_7 |BIT_13);
    mPORTBSetPinsDigitalIn(BIT_13| BIT_14);
    mPORTASetPinsDigitalIn(BIT_1);




    }
    Puis j'ai cette fonction que j'ai mis dans mon while(1) de mon main qui viens scanner mes entrées

    void bp(void)
    {



    BP.SW1=PORTBbits.RB13;
    BP.SW2=PORTBbits.RB14;
    BP.SW3=PORTAbits.RA1;

    //if (mPORTBReadBits(BIT_13)==1) sw=3;
    //if (mPORTBReadBits(BIT_14)==1) sw=3;
    //if (mPORTAReadBits(BIT_1)==1) sw=3;


    ClearWDT();
    }
    et en me documentant, en regardant les forum je n'arrive pas a faire fonctionner mes entrées, j'ai pourtant réussi a utiliser les entrées pull-up mais les autres pour l'instant je n'y arrive pas

    Si quelqu'un aurai plus d'avance sur moi sur ce pic, qu'il m'en fasse profité
    Merci

    -----

  2. #2
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    bonsoir,

    C'est quoi les entrées pull-up ? Des entrées avec les resistances de pull-up intégrées ?
    Il est câblé comment votre BP ?

  3. #3
    davidif

    Re : PB DE Lecture des ports sur pic32

    Oui sur certaine entrées(CN0 à CN21) il y a des pull-up intégré , s'est à dire une résistance au plus ce qui permet d'activer les entrées uniquement sur une masse.
    Donc en activant cette fonction sur ces entrées ça fonctionne correctement, seulement il existe encore pas mal d'autre ports d'entrées qui ne possède pas cette fonction et j'aimerai savoir comment les utiliser comme les entrées RB13, RB14 et RA1 par exemple , il me semblait de les initialiser normalement en les mettant à 0 puis définir en entrée Puis c'est tout mais apparemment il me manque quelque choses, mais quoi ??????

    Mes entrées on un bouton poussoir qui mes en contact le plus VCC(3,3V)

  4. #4
    invitee05a3fcc

    Re : PB DE Lecture des ports sur pic32

    Citation Envoyé par davidif Voir le message
    Mes entrées on un bouton poussoir qui mes en contact le plus VCC(3,3V)
    Il faut les mettre en entrée et mettre une PullDown de 10K

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

    Re : PB DE Lecture des ports sur pic32

    c'est ce que j'ai fais sur la parti bouton poussoir en contact permanent sur la pin puis je les est configuré en entrée en faisant

    mPORTBSetPinsDigitalIn(BIT_13| BIT_14);
    mPORTASetPinsDigitalIn(BIT_1);
    Dernière modification par davidif ; 18/10/2013 à 18h30.

  7. #6
    invitee05a3fcc

    Re : PB DE Lecture des ports sur pic32

    Alors, tu mets une 10K série entre ton entrée µC et le bouton poussoir avec sa PullDown .
    - Tu lances ton soft
    - Tu mesures, avec un voltmètre, la tension sur l'entrée µC . Bouton appuyé, tu lis 3,3V . Bouton relâché, tu lis 0V

    Si ce n'est pas le cas, tu as une erreur de soft (pin du µC en sortie)

  8. #7
    davidif

    Re : PB DE Lecture des ports sur pic32

    Bah j'ai déjà vérifié la tension 3,3V quand j'appui sur le bouton poussoir qui est bien présent et évidemment quand je relâche je reviens à 0V, j'ai poutant bien configuré mes entrées correctement , en trisx=0x00000000 avec 0 en sorti et 1 en entrée , je vais refaire une autre vérification à nouveau ....

  9. #8
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    Je connais pas les pic32 mais un peu les autres... si ton port possède des entrées analogiques elles sont souvent actives par défaut, il faut les forcer en numérique. Faut lire la DS.

  10. #9
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    Un petit extrait de la DS générale des pic32xxxxxxxxxxxxxxxxxxxx

    The AD1PCFG register has a default value of 0x0000;
    therefore, all pins that share ANx functions are analog
    (not digital) by default.

  11. #10
    davidif

    Re : PB DE Lecture des ports sur pic32

    J'ai revérifié la configue de mes port, et ne vois pas ???
    void init_port(void)
    {

    // Enable change notice, enable discrete pins and weak pullups
    //mCNOpen(CONFIG, PINS, PULLUPS);
    mCNOpen(CN_ON,CN15_ENABLE |CN16_ENABLE|CN19_ENABLE|CN12_ ENABLE,CN15_PULLUP_ENABLE|CN16 _PULLUP_ENABLE|CN19_PULLUP_ENA BLE|CN12_PULLUP_ENABLE);
    // Clear change notice interrupt flag
    mCNClearIntFlag();

    ConfigIntCN(CHANGE_INT_ON | CHANGE_INT_PRI_2);


    //mPORTDClearBits(BIT_2 |BIT_1 | BIT_0);
    //mPORTDClearBits(BIT_6 |BIT_7 | BIT_13);
    LATD=0x00000000;

    //mPORTBClearBits(BIT_8|BIT_9 |BIT_10 | BIT_11|BIT_13|BIT_14 |BIT_15);
    LATB=0x00000000;

    //mPORTAClearBits(BIT_1);
    LATA=0x00000000;


    // PORT as output digital
    mPORTDSetPinsDigitalOut(BIT_2 |BIT_1 | BIT_0);
    // PORT as input digital
    mPORTDSetPinsDigitalIn(BIT_6|B IT_7 |BIT_13);
    //TRISD=0x000020C0;

    mPORTBSetPinsDigitalOut(BIT_8| BIT_9 |BIT_10 | BIT_11); //Les 4 leds
    mPORTBSetPinsDigitalIn(BIT_13| BIT_14|BIT_15);


    }
    Je ne vois plus comment les configurer ces entrées RB13, RB14, RA1, j'ai vérifié les tensions lorsque j'appui sur mon bouton poussoir qui est de 3,3V, là je vois pas ???

  12. #11
    davidif

    Re : PB DE Lecture des ports sur pic32

    Autant pour moi, j'ai fait mon dernier commentaire avant de lire les autres , notamment quand tu me parle de AD1PCFG, je vais effectivement voir ça

  13. #12
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    Il faut surtout regarder la DS du pic que tu utilises, dans la rubrique "I/O ports" tu dois trouver pour chaque port les registres qu'il faut configurer, AD1PCFG n'est peut-être pas le seul en cause.

  14. #13
    davidif

    Re : PB DE Lecture des ports sur pic32

    Bon bah , en mettant AD1PCFG=1 ça ne fonctionne pas plus, donc pour éviter toutes ambiguïté, j'ai changé les pins et pris d'autres sur le port A , donc RA1, RA4, RA5 mes décidément rien , pas de réaction ???

  15. #14
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    AD1PCFG n'est pas un bit mais un registre , donc AD1PCFG=1 ne veut rien dire, enfin si ça veut dire que tu configures en digital le bit de poids le plus faible (AD1PCFG<0>) du registre, les autres restent en analogique.
    Essaye avec AD1PCFG.x=1 où x est le rang du bit concerné dans le registre.

  16. #15
    davidif

    Re : PB DE Lecture des ports sur pic32

    Je comprend ce que tu dis mais pour éviter ce problème , j'ai prie un autre port et le problème est le même

  17. #16
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    [QUOTE=davidif;4634138 j'ai poutant bien configuré mes entrées correctement , en trisx=0x00000000 avec 0 en sorti et 1 en entrée , je vais refaire une autre vérification à nouveau ....[/QUOTE]

    Il me semble qu'il y ait là aussi un soucis, si tu mets trisx=0x il faut rentrer une valeur héxadécimale, c'est à dire que pour configurer les bits 13 et 14 du portB en entrée il faut écrire trisB=0x6000, pour le binaire ça doit être un truc du style trisB=0b0110000000000000. trisb=0x0110000000000000 ne risque pas de fonctionner.

    Tu as aussi un pb sur cette ligne : mPORTDSetPinsDigitalIn(BIT_6|B IT_7 |BIT_13);
    virer l'espace entre le B et le IT du bit<7>

  18. #17
    davidif

    Re : PB DE Lecture des ports sur pic32

    Merci gabuzo pour ton aide, je sais que 0x nécessite de l'hexadécimal c'est d'ailleurs ce que j'ai fait, en fait je suis passé des fonctions du compilateur au configuration des registres comme je fesai avant avec les 18f pour voir si il y avait une différence.

    J'ai plus l'espace dont tu me parle, j'ai dû le corriger entre temps et le port d ne pose pas de problème, en fait pour isoler la problématique des port analogique ou pas, j'ai pour l'instant pris un autre port, le A , pour éviter toutes ambiguïté, je les mis a zéro et configuré en entrée, mais j'ai toujours le même problème de prise en compte de l'action sur le bouton poussoir, va falloir que je creuse encore ......

    void init_port(void)
    {

    // Enable change notice, enable discrete pins and weak pullups
    //mCNOpen(CONFIG, PINS, PULLUPS);
    mCNOpen(CN_ON,CN15_ENABLE |CN16_ENABLE|CN19_ENABLE|CN12_ ENABLE,CN15_PULLUP_ENABLE|CN16 _PULLUP_ENABLE|CN19_PULLUP_ENA BLE|CN12_PULLUP_ENABLE);
    // Clear change notice interrupt flag
    mCNClearIntFlag();

    ConfigIntCN(CHANGE_INT_ON | CHANGE_INT_PRI_2);





    LATD=0x00000000;

    //mPORTBClearBits(BIT_8|BIT_9 |BIT_10 | BIT_11|BIT_15);
    LATB=0x00000000;

    //mPORTAClearBits(BIT_5|BIT_4|BI T_1);
    LATA=0x00000000;


    // PORT as output digital
    mPORTDSetPinsDigitalOut(BIT_2 |BIT_1 | BIT_0); // 3 LED SUR CARTE MICROCHIP
    // PORT as input digital
    mPORTDSetPinsDigitalIn(BIT_6|B IT_7 |BIT_13); // 3 BOUTON POUSSOIR SUR CARTE MICROCHIP
    //TRISD=0x000020C0;

    mPORTBSetPinsDigitalOut(BIT_8| BIT_9 |BIT_10 | BIT_11); //Les 4 leds SUR PLAQUETTE
    mPORTBSetPinsDigitalIn(BIT_15) ; // bouton poussoir SUR PLAQUETTE



    mPORTASetPinsDigitalIn(BIT_5|B IT_4|BIT_1); // bouton poussoir sur plaquette



    }
    Dernière modification par davidif ; 19/10/2013 à 09h55.

  19. #18
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    J'espère que l'erreur vient pas de là parce que ça serait gros quand même. Pour configurer en entrée il faut mettre à 1 pas à 0. un truc mnémotechnique, 1 comme untrée et 0 comme 0utput.

    Sinon je crains d'avoir épuisé mes resources pour t'aider, il faudrait qu'un Hulk ou un Risk passe dans le coin, ils ont plus de bouteille que moi

  20. #19
    davidif

    Re : PB DE Lecture des ports sur pic32

    Encore merci pour ton aide gabuzo, j'avais retenu pour la configue des entrées sorties comme tu me le décrit.
    Bon j'ai a nouveau changé de port, celui que j'ai pris (le portA) était utilisé par mon starter kit pour d'autre choses , j'ai préféré revoir un port inutilisé, j'ai donc pris le port E et placer en entrée RE5, RE6, RE7 :
    void init_port1(void)
    {


    LATE=0x0000; //Clear PortE
    PORTE=0x0000;
    TRISE=0x00D0; //INPUT portE RE5,RE6,RE7
    ODCE=0xFF1F; //open drain disable sur mes entrées utilisé

    }
    puis je lis les valeurs

    void bp(void)
    {

    i=10;

    j=mPORTERead();

    BP.SW1=PORTEbits.RE5;
    BP.SW2=PORTEbits.RE6;
    BP.SW3=PORTEbits.RE7;
    BP.SW4=PORTEbits.RE4;


    BP.SW1=mPORTEReadBits(BIT_5);
    BP.SW2=mPORTEReadBits(BIT_6);
    BP.SW3=mPORTEReadBits(BIT_7);


    ClearWDT();
    }
    Puis dans mon while, j'introduis ma fonction:
    while (1)
    {
    ClearWDT();
    bp();
    ClearWDT();
    }
    quand je regarde mes valeur en mode débug, j'ai que 0 sur toutes mes entrée, y a rien n'y comprendre, pourtant en général c'est pas bien compliqué de configuré des i/o ????
    Y aurait-il d'autre choses à configurer ??? là je sèche

  21. #20
    RISC

    Re : PB DE Lecture des ports sur pic32

    Salut David,

    On discute dans le vide...sauf erreur de ma part on ne sait toujours pas après 19 posts quel PIC32 tu utilises (il y a au-moins 70 modèles différents) et pas non plus quelle carte tu utilises...on peut continuer à répondre dans le vide pendant des heures...

    a+

  22. #21
    davidif

    Re : PB DE Lecture des ports sur pic32

    Autant pour moi , je travaille pour l'instant sur un starter kit ethernet de cher microchip qui utilise le pic32mx795F512l

  23. #22
    davidif

    Re : PB DE Lecture des ports sur pic32


  24. #23
    RISC

    Re : PB DE Lecture des ports sur pic32

    Salut,

    Pour démarrer, je te recommande d'utiliser les exemples de code qui se trouvent sur la page du PIC32 ethernet starter kit.
    Il existe notamment un exemple sur les broches d'E/S : PIC32 ESK Port I/O Demo ...et plein d'autres faits pour cette carte

    a+

  25. #24
    davidif

    Re : PB DE Lecture des ports sur pic32

    Oui RISC j'ai démarré de là justement, c'est comme ça que j'ai réussi à faire ce que je voulai faire jusqu'à présent mais dans tout les exemples que j'ai pu trouver, ils n'utilise pas les autres ports que ceux en pull-up alors qu'il en existe encore pas mal de pin i/o qui n'ont pas cette fonction.

  26. #25
    davidif

    Re : PB DE Lecture des ports sur pic32

    Les I/O qui sont configurable en pull-up

    RC14 CN0
    RC13 CN1
    RG8 CN10
    RG9 CN11
    RB15 CN12
    RD4 CN13
    RD5 CN14
    RD6 CN15
    RD7 CN16
    RF4 CN17
    RF5 CN18
    RD13 CN19
    RB0 CN2
    RD14 CN20
    RD15 CN21
    RB1 CN3
    RB2 CN4
    RB3 CN5
    RB4 CN6
    RB5 CN7
    RG6 CN8
    RG7 CN9
    et ceux qui n'ont pas cette fonction

    RG15
    RE5
    RE6
    RE7
    RC1
    RC2
    RC3
    RC4
    RA0
    RE8
    RE9
    AN6 RB6
    AN7 RB7
    RA9
    RA10
    AN8 RB8
    AN9 RB9
    AN10 RB10
    AN11 RB11
    RA1
    RF13
    RF12
    AN12 RB12
    AN13 RB13
    AN14 RB14
    RF3
    RF2
    RF8
    RG2
    RA2 RG3
    RA3
    RA4
    RA5
    RC12
    RC15
    RA14
    RA15
    RD8
    RD9
    RD10
    RD11
    RD0
    RD1
    RD2
    RD3
    RD12
    RF0
    RF1
    RG1
    RG0
    RA6
    RA7
    RE0
    RE1
    RG14
    RG12
    RG13
    RE2
    RE3
    RE4
    Donc j'aimerai savoir comment utiliser les autres ci-dessus

  27. #26
    invite5c0d525e

    Re : PB DE Lecture des ports sur pic32

    Citation Envoyé par davidif Voir le message
    Donc j'aimerai savoir comment utiliser les autres ci-dessus
    Avec une résitance pull-up ou pull down externe.

    Depuis le début de ce post on te demande comment tu as branché ton $*)(ç-_'*ù de bouton poussoir et tu n'es pas fichu de nous faire une description du branchement ou de nous pondre un petit schéma.

  28. #27
    davidif

    Re : PB DE Lecture des ports sur pic32

    Holla ! On ne s'énerve pas, désolé, il me semblait avoir été claire au poste 5, Bon j'ai fais un petit schéma plutôt que de long discourt.

    Nom : Sans titre.jpg
Affichages : 112
Taille : 10,1 Ko

  29. #28
    davidif

    Re : PB DE Lecture des ports sur pic32

    Je suis en train de me renseigner sur l'utilité des cette note que je viens de voir , ça à peut etre un lien à mon problème

    Note1:Register values can only be changed if the IOLOCK Configuration bit (CFGCON<13>) = 0.

    Sur la docs I/O DS61120E-page 12-6

  30. #29
    davidif

    Re : PB DE Lecture des ports sur pic32

    Bon bah apparemment CFGCON n'existe pas là ou microchip dit ou ça doit être ??

    12.3.1.6.1Control Register Lock
    Under normal operation, writes to the RPnR and [pin name]R registers are not allowed. Attempted writes appear to execute normally, but the contents of the registers remain unchanged. To change these registers, they must be unlocked in hardware. The register lock is controlled by the IOLOCK Configuration bit (CFGCON<13>). Setting the IOLOCK bit prevents writes to the control registers; clearing the IOLOCK bit allows writes.
    To set or clear the IOLOCK bit, an unlock sequence must be executed. Refer to Section 6. “Oscillator” (DS61112) in the “PIC32 Family Reference Manual” for details.
    Quand je vais sur le documents ciblé je ne vois pas de reférence sur ce qui est descrit.

  31. #30
    davidif

    Re : PB DE Lecture des ports sur pic32

    Bon bah ça fonctionne !! merci pour votre aide et votre patiences face à mon inexpérience à ce sujet, en fait depuis le début je les est bien configurées mes entrées, seulement comme un c.. je n'avais pas pris en compte qu'une fois avoir appuyé sur mon bouton celui-ci ce relache ensuite, donc s'est un 1 puis un 0 qui suit et qui évidement me mettait obligatoirement mes entrée toujours à zéro, dans le code que j'avais fais

    void bp(void)
    {

    BP.SW1=PORTEbits.RE5;
    BP.SW2=PORTEbits.RE6;
    BP.SW3=PORTEbits.RE7;
    BP.SW4=PORTEbits.RE4;


    ClearWDT();
    }

    évidemment comme ça, ça va mieux

    void bp(void)
    {

    BP.SW1=PORTEbits.RE5;
    if (BP.SW1) sw=1;
    BP.SW2=PORTEbits.RE6;
    if (BP.SW2) sw=2;
    BP.SW3=PORTEbits.RE7;
    if (BP.SW3) sw=3;


    ClearWDT();
    }
    une erreur de débutant, normal c'est beaucoup ce que je suis, merci encore pour votre soutient

Discussions similaires

  1. Pic32, lecture RTCC
    Par invitee13c535c dans le forum Électronique
    Réponses: 4
    Dernier message: 06/02/2013, 22h38
  2. I2C PIC32 MikroC Pro
    Par invitede857656 dans le forum Électronique
    Réponses: 0
    Dernier message: 22/12/2011, 10h51
  3. lecture de port série et affectation aux ports
    Par invite40477169 dans le forum Électronique
    Réponses: 3
    Dernier message: 19/03/2009, 13h43
  4. PIC32 et EXPLORER 16
    Par invitea2c70312 dans le forum Électronique
    Réponses: 4
    Dernier message: 24/12/2008, 21h42
  5. Réponses: 2
    Dernier message: 27/07/2005, 10h44
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...