Aide pour commande en language C.
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Aide pour commande en language C.



  1. #1
    inviteefccdc5d

    Exclamation Aide pour commande en language C.


    ------

    Bonjour !
    Comme il est marqué dans le titre j'ai besoin d'aide pour une commande en language C.
    Je m'explique :
    Je travaille sur une carte micro-contrôleur et je doit gérer des capteurs. Ici j'aurais besoin d'aide pour gérer un des capteurs.
    Donc voilà ma commande :
     Cliquez pour afficher

    Ici CAP1 est le capteur et LED1, LED2 sont deux leds quelconques. La valeurs 0 correspond à quand c'est allumés.

    Ce qu'il me faudrait c'est que la carte micro-contrôleur prenne en compte cette commande pendant, par exemple, 3 secondes seulement. C'est à dire qu'elle exécute LED1=0 et LED2=0 puis au bout de 3 secondes qu'elle ignore cette commande même si CAP1 est toujours allumé.

    J'espère que vous avez compris ce qu'il me faut ! ^^'
    Merci de votre aide !

    -----

  2. #2
    invitea613d208

    Re : Aide pour commande en language C.

    Le problème c'est de mesurer le temps. Ce que tu peux faire c'est utiliser un Timer du PIC pour pouvoir compter 3s (voir datasheet)

    Ensuite, il y a un bit qui t'indique si le timer est plein (3s)
    dans ces cas la tu sais que tant que le bit est a zero, tu execute ta boucle sinon tu ne la fait pas.

    Donc en algorythme sa donnerait

    Si CAP1 et TIMER_PAS_PLEIN = 0 alors
    LED0 = 0
    LED1 = 1
    SINON ien
    FINSI

  3. #3
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Ok Merci !
    Mais comment je peut mettre un timer dans mon programme ? (Je parle de la fonction)

  4. #4
    invitea613d208

    Re : Aide pour commande en language C.

    Les timers sont des elements faisant partis des PICs, ce sont comme des chronometres, après je ne vais pas tout te faire faut creuser un peu

    IL faut lui donner une valeur le lancer et un bit indique quand tu arrives au bout

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

    Re : Aide pour commande en language C.

    Bon eh bien je vais m'y mettre ! ( )

  7. #6
    invitea613d208

    Re : Aide pour commande en language C.

    Si tu bloques n'hesite pas a revenir mais avec des questions precises

  8. #7
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Après quelques recherches j'ai trouvé quelque chose :
    Pourrait-on utiliser un switch puis break ?

    if (CAP1==0)
    switch (variable)

    case variableà3sec

    LED1=0;
    LED2=0;

    break

    Je ne sais pas si j'ai bien écris ... Sa marcherait ?

  9. #8
    invitea613d208

    Re : Aide pour commande en language C.

    il le case n'est pas utile mais sa marche. Tu peux faire un IF a plusieurs conditions par exemple ou alors SI / SINON

  10. #9
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Je ne voit pas comment je pourrais interrompre une fonction avec un sinon ... :-s

    Par contre comment définir comme variable un temps ?

  11. #10
    invitea613d208

    Re : Aide pour commande en language C.

    C'était une idée de test comme sa, je ne peux pas forcement dire si c'est bon c"'est pour donner des piste

    mais tu peux dir :

    Si CAP1 vrai et Timer_plein alors...
    SINON rien
    FIN SI

  12. #11
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Ah oui c'est ce a quoi je pensais dès le début ^^ (mais le timer me bloquait)

    Edit : Réctification : mais le timer me bloque ^^

  13. #12
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Ne pouvant pas utiliser la carte micro-contrôleur chez moi je ne peux pas tester et c'est malheureusement demain en cours que je vais devoir finir mon programme est ce que ma fonction avec les switch marche en mettant :

     Cliquez pour afficher

  14. #13
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Je ne trouve toujours pas comment créer un timer en langage C et je doit rendre ça dans 2 heures est ce que quelqu'un aurait une idée svp ?

  15. #14
    Jack
    Modérateur

    Re : Aide pour commande en language C.

    On ne connait ni le µcontrôleur que tu utilises, ni le compilateur C. Je ne vois pas comment on pourrait te fournir une réponse.

    A+

  16. #15
    inviteefccdc5d

    Re : Aide pour commande en language C.

    Je suis sur AtMega 8535 et j'utilise AVRStudio et PonyProg 2000.

  17. #16
    invited7788175

    Re : Aide pour commande en language C.

    bonsoir,
    Tu ne peux pas obtenir un timer en C comme ça. C'est pas une fonction du C.
    Il faut activer un des timers internes du µC celui-ci lancera une interruption à chaque fois que sa condition de teste est remplie (overflow, valeur d'égalité). Cette interruption (si les interruptions sont bien activées) va faire exécuter le code C qui si rattache du type:
    ISR(TIMER1_COMPA_vect) par exemple.
    voici le code pour un atemega 32:
    Code:
    TCCR1B=(TCCR1B|0x03);
    /*fonctionnement sur l'atteinte d'une valeur prédefinie dans OCR1A*/
    TIMSK=(TIMSK|0x10);
    //mise en place de la 1ère valeur
    OCR1A=NB_CLOCK;
    sei(); //rétablissement de intéruptions
    A+ si besoin

Discussions similaires

  1. aide language c pour pic
    Par invite3a95e38f dans le forum Électronique
    Réponses: 14
    Dernier message: 26/09/2010, 11h57
  2. aide sur programme en language VHDL
    Par inviteeab0141b dans le forum Électronique
    Réponses: 3
    Dernier message: 22/05/2010, 13h46
  3. Aide pour la commande de Servomoteurs
    Par invitea7073cb0 dans le forum Électronique
    Réponses: 0
    Dernier message: 31/03/2010, 18h42
  4. Aide en programation language C
    Par invite13fc6064 dans le forum Électronique
    Réponses: 4
    Dernier message: 23/03/2010, 00h01
  5. aide pour commande d'un moteur
    Par invitec05411a0 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/05/2009, 21h02
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...