PIC : la fonction set_tris_X()
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

PIC : la fonction set_tris_X()



  1. #1
    inviteba630fdb

    PIC : la fonction set_tris_X()


    ------

    Bonjour,

    J'aimerai avoir de l'aide pour comprendre cette fonction : set_tris_X( ).

    D'après ce que j'ai compris, elle servirait à définir quels ports sont de sortie ou d'entrée.

    J'ai à ma disposition cet exemple du manuel de CCS C Compiler :
    Code:
    SET_TRIS_B( 0x0F ); 
    // B7,B6,B5,B4 are outputs 
    // B3,B2,B1,B0 are inputs
    Comment arrive-t-on à déduire les ports de sortie/d'entrée?

    Dans mon cas j'ai par exemple :
    Code:
    set_tris_A ( 0x3E )
    J'apprécierai beaucoup votre aide

    Cordialement.

    -----

  2. #2
    carcan

    Re : PIC : la fonction set_tris_X()

    Salut !

    tu dois convertir ta valeur hexa en binaire, par ex : 0x3E devient 0b00111110.
    Les 1 sont des entrées, les 0 des sorties. Donc ici tu as A7, A6, A0 en sortie et les autres en entrées.

    A+
    Laurent

  3. #3
    invite3d163591

    Re : PIC : la fonction set_tris_X()

    0x0F est un 00001111 ce qui correspont a b7 b6 b5 b4 b3 b2 b1 b0
    Le 1 c'est une entrée le 0 une sortie

    dans ton exemple set_tris_A ( 0x3E )
    0x3E = 00111110
    donc b0,b6,b7 sorties
    b1,b2,b3,b4,b5 entrées

  4. #4
    inviteba630fdb

    Thumbs up Re : PIC : la fonction set_tris_X()

    Merci à vous deux carcan et Hanoi87 !
    A présent c'est bien plus clair comme ça!

    Mais j'ai encore une interrogation : quel est l'intérêt de passer des ports en entrée ou en sortie?
    Est-ce que ça a un rapport avec le fait de recevoir ou d'envoyer des informations ?

    Cordialement.

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

    Re : PIC : la fonction set_tris_X()

    Re !

    un port en entrée pour par exemple un bouton poussoir, en sortie pour une LED ...

    Par contre, en CCS, la fonction Set_Tris_X() est rarement utilisée car les appels Input(pin) et Output_bit(pin,value) "orientent" automatiquement les registres de direction entrée sortie.

    A+
    Laurent

  7. #6
    inviteba630fdb

    Re : PIC : la fonction set_tris_X()

    Carcan, qu'appelles-tu CCS?
    De mon côté, je comprends que c'est du compilateur que tu parles.
    Mais le code que je dois reprendre contient justement dans son prog principal, deux set_tris_X et des input(PIN_A4)

    Qu'est-ce que je déduis de ton "rarement"? Que mon code est si mal codé que ça?

    Cordialement.

  8. #7
    inviteba630fdb

    Re : PIC : la fonction set_tris_X()

    Hanoi87 dit :
    0x0F est un 00001111 ce qui correspont a b7 b6 b5 b4 b3 b2 b1 b0
    J'ai 14 broches sur mon PIC mais comment savoir laquelle correspond à tel ou tel port?
    J'ai consulté le datasheet évidemment, mais VSS s'appelle uniquement VSS sur le schéma fourni ...

    Cordialement.

  9. #8
    flolarajasse

    Wink Re : PIC : la fonction set_tris_X()

    Bonjour ccamille

    Quel PIC utilises tu déjà?
    C'est facile; ton portA correspond à tes broches RA0 jusqu'à RA7 et ton PORTB RB0 jusqu'à RB7.

    Tu peux également utiliser la fonction TRISA = 0x?? pour configurer ton PORTA et TRISB = 0x?? pour configurer ton PORTB.

    Voilà

  10. #9
    carcan

    Re : PIC : la fonction set_tris_X()

    Re !

    oui CCS c'est bien la "marque" du compilateur, en fait la fonction Set_Tris_X() n'est pas obligatoire vu que les fonctions Input et Output font aussi le paramétrage des entrées sorties. Mais elle peut être utile dans certains cas ...

    Si tu nous mettais une copie de ton code on aurait plus facile à comprendre ce que tu veux faire.

    A bientôt
    Laurent

  11. #10
    inviteba630fdb

    Re : PIC : la fonction set_tris_X()

    @Florajasse
    C'est facile;
    et ben non

    Dans le datasheet, je trouve bien un tableau qui décrit le portA et le portC (au fait vous me dites portB depuis un moment, il y a combien de ports sur un µC?).
    Mais pas moyen de trouver à quoi correspond les RA6 et RA7 et RC6 et RC7.
    Quand je dis ça, dans mon esprit, j'associe RA5 à la broche 2 qui s'appelle également CLKIN, OSC1, T1CKI d'après le Pin Diagrams du datasheet.
    Au fait je code sous CCS C Compiler (enfin pas encore mais le code lui a été compilé avec ça).
    Edit : Mon PIC est un 16F676.

    @Carcan
    En fait ce que je veux faire c'est comprendre le code qu'on m'a donné. Je fais un stage et le projet c'est d'améliorer ce code.
    Mais avant de l'améliorer, je préfère commencer par le comprendre.
    J'ai des bases en C et C++ mais je n'avais jamais vu la programmation sur µC. Bon ça fait trois semaines que je suis dessus donc je commence à bien connaitre le sujet ^^.

    Pour le code, je ne peux que donner un petit bout du programme (fichier top secret enfin presque!)
    Code:
    //** PROGRAMMME PRINCIPAL **
    #separate
    main()
       {
       #ASM
          bsf STATUS, 5 ;	// Bank 1
          call 0x3FF ;   // Get the cal value
          movwf OSCCAL ;     // Calibrate
          bcf STATUS, 5 ;       // Bank 0
       #ENDASM
    
       MOTEUR_OFF();
       set_tris_A(0x3E);
       set_tris_C(0x06);
    
       //** INITIALISATION DES REGISTRES **
       ext_int_edge( H_TO_L );
       enable_interrupts(int_ext);
       enable();
       init_variable();
       time_wdt (300);
       HIGH_LED();
       cycle = 0;
       sortie = 0;
       cs = 0;
       sav = 0;
       zero();
       init_c();
       }
    Dis moi si c'est suffisant.
    La broche RC5 est reliée à une DEL. La RA2/AN2 est reliée à un bouton poussoir

  12. #11
    flolarajasse

    Re : PIC : la fonction set_tris_X()

    Sur ton PIC tu as deux ports ; le PORTA qui correspond à RA0 jusqu'à RA5 ainsi que le PORTC qui correspond à RC0 jusqu'à RC5.Sur les broches 2-3 de ton PIC, il faut que tu relies un quartz afin de cadencer l'horloge interne du PIC. Mais après je ne sais pas ce que tu attends de nous, comment faut-il t'aider?

  13. #12
    inviteba630fdb

    Re : PIC : la fonction set_tris_X()

    En fait comme tu m'as parlé de RA6, RA7, ... et comme je ne les trouve pas, j'ai peur de passer à côté de quelque chose d'important si je l'omets.
    J'ai oublié de préciser que je dois fournir un logigramme à mon chef, donc c'est pour ça que comprendre TOUT le code me tient tellement à coeur.

    Si on a fait le tour de la question ce n'est pas grave.
    Je vais m'intéresser aux autres fonctions et je comprendrai peut-être plus tard (comme souvent d'ailleurs )

    En tout cas, merci Florajasse de t'intéresser à mes problèmes et de vouloir m'aider!

  14. #13
    flolarajasse

    Re : PIC : la fonction set_tris_X()

    J'ai dit RA6..RA7 car je n'avais pas regardé la datasheet de ton PIC et je ne savais combien de broches comprenait un port c'est pour sa!!
    Et ben bonne continuation et à la prochaine question

Discussions similaires

  1. [PIC] Détécter l'état logique d'une entrée sur pic 16f690
    Par invitece85d109 dans le forum Électronique
    Réponses: 12
    Dernier message: 31/12/2009, 17h53
  2. fonction c pic, pour adc (sous CSS)
    Par invitee89d6f88 dans le forum Électronique
    Réponses: 9
    Dernier message: 26/11/2008, 08h34
  3. fonction strtok et pointeur en µC (PIC)
    Par invite3bf0caa8 dans le forum Électronique
    Réponses: 6
    Dernier message: 23/05/2008, 17h12
  4. PIC 16F876-Fonction test
    Par invitef1f90160 dans le forum Électronique
    Réponses: 39
    Dernier message: 16/10/2007, 08h41
  5. Qui connais logi pic & et question à propos des pic
    Par Floris dans le forum Électronique
    Réponses: 10
    Dernier message: 29/05/2006, 22h40
Découvrez nos comparatifs produits sur l'informatique et les technologies.