SOS/help
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

SOS/help



  1. #1
    zwejdi

    Unhappy SOS/help


    ------

    salut, j'utilse un registre a decallage (serial in/parallel out) 74164, je n'arrive pas a trouver les instructions necessaires en ccs pour commander les 74164 par un pic16f877 20MHz. ce registre a decalage utilise trois pins de commande (/clear,clk,data), avec le logiciel picbasic 4.0 c'etait facile en utilisant l'instruction shiftout mais avec ccs (pcwh 3.249) je n'arrive pas. help me plz.

    -----

  2. #2
    umfred

    Re : SOS/help

    Et si tu essayais de créer cette fonction toi-même ?
    Il suffit de regarder la datasheet du composant et d'envoyer la bonne valeur (bit) au bon endroit.
    En plus, cette fonction est relativement facile (pour ne pas dire très facile) à écrire.

  3. #3
    Jack
    Modérateur

    Re : SOS/help

    Ca, c'est l'inconvénient d'utiliser des fonctions toutes faites: elles fonctionnent, mais on ne comprend pas comment ça marche.

    Tu prends la doc du 74164 et tu génères les signaux sur 3 pattes d'un port.

    Ce n'est pas très compliqué de mettre une patte à l'état haut ou à l'état bas. Pour les tempos, tu dois bien avoir des fonctions toutes faites.

    Générer un signal d'horloge n'est pas bien compliqué non plus: état haut, tempo, état bas, tempo, état haut, tempo, ...

    A+

  4. #4
    zwejdi

    Thumbs down Re : SOS/help


    merci pour votre aide, c'est la premiére chose que j'ai fait et voici le code d'essai :

    //////////////////////////////////////////////////////////////

    #define rst PIN_C0
    #define clk PIN_C2
    #define data PIN_c4

    byte_out(int octet)
    {
    output_high(rst); // j'active le circuit
    output_low(clk); // j'initialise l'horloge a l'etat bas

    for (i=1;i<=8;i++) // 1 octet = 8 bits
    {
    if (bit_test(octet, i)) // si le bit et a 1
    output_high(data); // data et a l'etat haut
    else
    output_low(data); // data et a l'etat bas

    output_high(clk); // front montant de l'horloge
    }
    }

    main()
    {
    set_tris_c(0); // definire le port c en output
    byte_out(0x05); // une valeur pour le test
    }

    ///////////////////////////////////////////////////////////

    ca marche dans le déhordre, je sait que je doit lire mon octet dans un sens ou dans l'autre (droite ou gauche) mais ce n'est pas ce que j'attend.
    une question m'insiste, es ce que la frequence d'horloge doit etre reguliére avec une période fixe ( en utilisant les interruptions par exemple) sachant que les instruction en c ne prennent pas la meme duré d'execution?

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : SOS/help

    byte_out(int octet)
    mettre octet avec un type int est ne mauvaise idée.

    De plus, dans ta boucle, tu ne mets jamais clk à l'état bas.

    Il faudrait aussi savoir ce que font exactement tes fonctions.
    Par exemple si tu fais bit_test(octet, i), je suppose que tu teste le ième bit de octets. Or il commence à 1 alors que le 1er bit est le bit 0. Il doit y avoir un problème ici aussi.

    A+

  7. #6
    freepicbasic

    Re : SOS/help

    Ne pas oublier de le redescendre tout de suite derrière !

    output_high(clk); // front montant de l'horloge
    output_low(clk); // j'initialise l'horloge a l'etat bas

    for (i=1;i<=8;i++) // 1 octet = 8 bits
    ça serait pas plutot comme ça ;
    for (i=0;i<=7;i++) // 1 octet = 8 bits

  8. #7
    freepicbasic

    Re : SOS/help

    Comme ça tu sais tout ce qui se passe !

    Code:
    i=1;
    While (i) 
    {
      if ( data & i) // si le bit et a 1
         output_high(data);   // data et a l'etat haut
      else                         //
         output_low(data); // data et a l'etat bas
      output_high(clk);    // front montant de l'horloge
      output_low(clk);   //  horloge a l'etat bas
      i = i << 1;
    }

  9. #8
    Jack
    Modérateur

    Re : SOS/help

    Pas mal

    A+

  10. #9
    umfred

    Re : SOS/help

    Pas mal en effet, mais dans le "if ( data & i)" ce n'est pas data (qui correspond à la broche PORTC4), mais plutôt "octet" (qui doit être défini en byte).

  11. #10
    freepicbasic

    Re : SOS/help

    effectivement , sinon le code est incohérent,
    d'ailleurs le compilateur n'aurait peut être pas aimé.
    Y en a qui suivent bien ...
    Dernière modification par freepicbasic ; 01/09/2006 à 21h50.

  12. #11
    zwejdi

    Re : SOS/help



    OH merci les gars pour votre aide, ca marche bien et j'evolue petit a petit, en fait je travail sur un projet (journal lumineux) et ce problème que j'ai posé constitut l'operation de base de tout le projet.

    Description du projet:

    j'utilise un pic16F877 20Mhz, une matrice de LED 8 lignes 30 colonnes, les lignes et les colonnes sont amplifiées avec des transistors, les 8 lignes sonts branchées au portB, les colonnes cont branchées a 4 registres a décallage en cascade de type 74164. la premiére étape du projet consiste a faire défiler une simple message et je croie que je suis sur le bon chemain.

    je m'excuse pour les erreurs d'hortographe
    A+

  13. #12
    Jack
    Modérateur

    Re : SOS/help

    Je travaille actuellement sur le même type de projet.

    Je te déconseille les 74164 qui ne sont que de simples registres à décalage. Il est préférable que ceux-ci puissent commander directement les leds.

    Il existe de circuits classques comme les UCN5821 (ou A6821), mais j'ai préféré un nouveau circuit de chez ST: le STP16CL596 qui possède 16 bascules et vaut moins de 2€.
    Il commande les leds en courant, ce qui dispense des résistances.

    Il existe aussi en version 5V (STP16C596) mais comme le courant moyen peut monter à plus de 10A lorsque toutes les leds sont allumées, travailler en 3,3V me permet de diminuer la puissance fournie par l'alim et par conséquent la taille du transfo.

    A+

Discussions similaires

  1. [Thermique] :sos: Lave linge WHIRPOOL AWA 1005 :sos:[résolu]
    Par rgrz74 dans le forum Dépannage
    Réponses: 13
    Dernier message: 12/03/2007, 08h55
  2. HS0038 SOS :sos:
    Par Abdennnour dans le forum Électronique
    Réponses: 8
    Dernier message: 14/09/2006, 11h42
  3. :sos: comment se déplace le courant? :sos:
    Par invite8afe7323 dans le forum Électronique
    Réponses: 6
    Dernier message: 12/02/2006, 14h21
  4. :sos: comment prévoir les éruptions volcaniques?????problématique :sos:
    Par invitedd7d941d dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 30/09/2005, 15h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.