Partage
  • Partager sur Facebook
  • Partager sur Twitter

DSPIC 33F

différence LATx et PORTx

    13 novembre 2012 à 0:06:03

    Bonsoir à tous,

    je viens encore à vous... je me replonge sur le DSPic avec un programme simple on va dire : faire clignoter une led à l'aide d'un timer (timer1) qui doit me créer une interruption toutes les 500ms, je crois que la configuration de celui-ci et des fusibles n'ont pas posé de problèmes, enfin on verra plus tard si la led clignote

    Ma question cette fois-ci est plus générale : dans le datasheet du composant (PDF DSPic 33F ) page 163 - chapitre 11, on parle de la configuration des entrées - sorties avec les différents registres...

    J'ai compris que le registre TRISx permet de définir soit les pins en entrée ou en sortie, ca c'est ok (1: entrée - 0: sortie), maintenant on a 2 registres PORTx et LATx. De ce que je comprends c'est que le registre LATx permet de lire ou d'écrire une valeur logique, tandis que le registre PORTx lui permet de lire ou écrire une valeur (tension) que nous avons sur la pin... Premièrement avez-vous compris la même chose ? deuxièment : si je veux allumer ou éteindre ma la led j'utilise quel registre ?

    Je dois dire que j'ai pas bien compris la différence
    Alors comme d'hab, si vous avez des suggestions, remarques, liens ou autres, je me ferai un plaisir de vous lire :wub:

    Amicalement le cht'y Philou
    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2012 à 9:06:59

      Alors, pour moi les PICs ça remonte à loin, mais voici (en gros) comment ça fonctionne.

      LATx est le bit qui va contrôler ta sortie, alors que PORTx va lire la valeur physique (après trigger) de la tension sur la patte (en binaire bien sur).

      Dans la plupart des cas ça revient au même, mais admettons que tu as un condensateur branché sur ta patte.

      Si tu es à 0 sur ta patte, et que tu passe à 1, le condensateur va mettre un peu de temps à se charger (d'autant plus grand que ça capacité est grande). Et c'est la que tu va voir la différence. LATx aura une valeur de 1, ce que tu as mis, mais avant que le condensateur soit assez chargé pour que la tension sur la patte passe le seuil du trigger, tu lira toujours 0 sur PORTx.
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2012 à 0:39:22

        Quand tu regarde le schéma de la page 163 ca semble être bien clair par rapport à ce qui est dit :

        - "Reads from the latch (LATx), read the latch. Writes to the latch, write the latch." : En gros tu va lire la sortie de la bascule D, donc son "état", et si tu fais une écriture tu va écrire sur l'entée.

        - "Reads from the port (PORTx), read the port pins, while writes to the port pins, write the latch." Donc là on lit la valeur de la "pin", après un comparateur/trigger de schmitt, donc en gros une valeur binaire. Et lorsqu'on écrit on écrit sur la bascule D, comme pour LATx.

        Donc :

        Citation

        le registre LATx permet de lire ou d'écrire une valeur logique, tandis que le registre PORTx lui permet de lire ou écrire une valeur (tension) que nous avons sur la pin


        Non ce n'est pas exactement ça.

        Citation

        LATx est le bit qui va contrôler ta sortie, alors que PORTx va lire la valeur physique (après trigger) de la tension sur la patte (en binaire bien sur).


        Non pour le LATx, oui pour le PORTx


        Bon après avoir été voir le "dsPIC33F/PIC24H Family Reference Manual Section 10" comme indiqué p163, ce que j'ai dit est explicitement écrit par Microchip : http://ww1.microchip.com/downloads/en/ [...] oc/70193D.pdf (page 3 et 4)


        Citation : epso


        Dans la plupart des cas ça revient au même, mais admettons que tu as un condensateur branché sur ta patte.

        Si tu es à 0 sur ta patte, et que tu passe à 1, le condensateur va mettre un peu de temps à se charger (d'autant plus grand que ça capacité est grande). Et c'est la que tu va voir la différence. LATx aura une valeur de 1, ce que tu as mis, mais avant que le condensateur soit assez chargé pour que la tension sur la patte passe le seuil du trigger, tu lira toujours 0 sur PORTx.



        Absolument pas. Quand tu regarde le schéma, le "read LAT" n'est pas du tout connecté à la pin puisqu'il y a un mux et ensuite un buffer. Seul PORTx permet de lire l'état de la pin.

        L'utilité, un peu comme décrit avec ton histoire de condensateur, c'est qu'on peut faire une écriture avec soit LATx ou PORTx puisque cela revient au même, et ensuite vérifier que la bascule est bien à la valeur voulue ainsi que la valeur sur la pin. Mais ca ne sert que pour des cas très particuliers comme dit dans le Reference Manual.
        • Partager sur Facebook
        • Partager sur Twitter

        DSPIC 33F

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown