Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Instruction "delay" CC11 pour 68HC11F1



  1. #1
    thomasalbert1993

    Exclamation Instruction "delay" CC11 pour 68HC11F1


    ------

    Bonjour

    Je suis en train de faire un programme pour 68HC11 en langage CC11.
    Existe - il une fonction de "délai" réglable en µs ou ms ?

    genre DELAY 200 en basic.

    sinon, comment créer une fnction qui s'occupe de cela ?

    je pensais à qqc du genre :

    void Attendre(int x)
    {
    int i;
    for(i=0; i<=x; i++)
    {
    }
    }

    ce qui permet d'attendre x cylces.

    mais si je veux des µs, comment je fais ?

    merci beaucoup

    Thomas

    -----

  2. Publicité
  3. #2
    thomasalbert1993

    Re : Instruction "delay" CC11 pour 68HC11F1

    msleep(int i) fonctionne-t-elle avec quelle librairie ?

    i est en ms ou en µs ?

    merci beaucoup

  4. #3
    Jack
    Modérateur

    Re : Instruction "delay" CC11 pour 68HC11F1

    Je ne vois pas comment tu pourrais avoir une fonction délai en µs puisque le temps de cycle élémentaire variera en fonction de ton quartz.

    A la limite, tu peux créer une fonction qui dure x cycles. Il suffira de multiplier x par la durée d'un cycle.

    A+

  5. #4
    thomasalbert1993

    Re : Instruction "delay" CC11 pour 68HC11F1

    comment calcule ton la durée d'un cycla avec un quartz de 4 ou 8MHz ?

    T = 1/f ?

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    Jack
    Modérateur

    Re : Instruction "delay" CC11 pour 68HC11F1

    Citation Envoyé par thomasalbert1993 Voir le message
    comment calcule ton la durée d'un cycla avec un quartz de 4 ou 8MHz ?

    T = 1/f ?
    SI tu veux vraiment programmer, il faudra bien que tu te lises la doc. C'est elle la référence du fonctionnement du circuit. Tu y liras que le temps de cycle est égal au quart de la fréquence du quartz.

    A+

  9. #6
    thomasalbert1993

    Re : Instruction "delay" CC11 pour 68HC11F1

    donc avec un quartz de 4MHz on aurait :

    T = 4/4 = 1µs (car quartz en MHz) ?

    J4ai pas du comprendre qqc car avec un quartz 8MHz on aurait :

    T = 8/4 = 2µs > 1µs !!

    là, ya qqc qui coince, et mm en regardant la datasheet ça ne m'aide guerre.

  10. Publicité
  11. #7
    thomasalbert1993

    Re : Instruction "delay" CC11 pour 68HC11F1

    c'est bon j'ai trouvé le tableau dans la datasheet (p.122).

    Donc on a : Durée cycle = 1 / (Fréquence quartz / 4)

    soit 500ns pour un quartz 8MHz

    je peux donc faire la fonction suivante ::

    int duree_us; //durée de tempo en µs
    duree_us = 2 * duree_us; //durée * 2 car 1 cycle = 0.5µs
    for(i=0; i < duree_us; i++)
    {
    }

    à votre avi ça fonctionnerai ?

  12. #8
    Jack
    Modérateur

    Re : Instruction "delay" CC11 pour 68HC11F1

    non, car une boucle ne dure par une µs. Il faut regarder le programme assembleur généré, compter combien dure un tour de la boucle for, le multiplier par duree_us et tu auras à peu près le temps que dure la tempo.

    A+

  13. #9
    abracadabra75

    Re : Instruction "delay" CC11 pour 68HC11F1

    Bonjour.
    Il faut nécessairement passer par une routine assembleur qui compte exactement les cycles (par exemple: positionnement du registre X ou Y à une valeur adéquate, suivi d' une boucle de décrémentation du registre.
    Je peux te passer une routine de cette sorte si ça t' intéresse.
    A+
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

  14. #10
    Jack
    Modérateur

    Re : Instruction "delay" CC11 pour 68HC11F1

    Il faut nécessairement passer par une routine assembleur
    Pas nécessairement. Comme je l'ai dit plus haut, il suffit de compter le nombre de cycles d'une boucle à partir du programme compilé.

    Je pensais également à une autre solution: utiliser le timer du HC11.

    A+

  15. #11
    abracadabra75

    Re : Instruction "delay" CC11 pour 68HC11F1

    Citation Envoyé par Jack Voir le message
    Je pensais également à une autre solution: utiliser le timer du HC11.
    A+
    C'est exact: on peut en effet compter le nombre de cycles dans la boucle, mais il faut le faire pour chaque utilisation; l' emploi d' une routine pré-écrite est d' un emploi plus souple qui évite de recréer le monde à chaque fois.

    L' utilisation du timer est également moins commode, car la durée de la routine d' interruption est alors à prendre en compte lors de l' interruption. Si on veut des temps très courts (milliseconde) ou de durée différente dans un même programme le comptage des instructions d' une boucle se révèle plus précis, et plus facilement adaptable.

    J' ai essayé les 2 solutions et le comptage de cycles est, pour moi, la meilleure solution. Ou bien alors je ne sais plus programmer... (bien que je ne prétende pas faire oeuvre de génie!).
    A+
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

  16. #12
    Jack
    Modérateur

    Re : Instruction "delay" CC11 pour 68HC11F1

    L' utilisation du timer est également moins commode, car la durée de la routine d' interruption est alors à prendre en compte lors de l' interruption
    Tout dépend de ce que l'on veut faire. Si on veut une simple routine de temporisation, un timer peut très bien faire l'affaire sans utiliser d'interruption.
    Pas besoin de compter le nombre de cycles effectué par le programme: on charge un des registres du timer et on attend que le bit indiquant la fin de tempo change d'état.
    Ce sera donc traduit par une simple instruction brset ou brclr. On maitrise donc bien la durée de la tempo à 4 ou 5 cycles près (durée de l'instruction brclr), ce qui fait une erreur d'une µs environ. Pas mal pour une tempo en ms.

    Ou bien alors je ne sais plus programmer... (bien que je ne prétende pas faire oeuvre de génie!)
    Je ne remets pas en cause tes talents de programmeur . On compare des solutions, c'est tout.

    A+

  17. Publicité
  18. #13
    thomasalbert1993

    Re : Instruction "delay" CC11 pour 68HC11F1

    Merci pour vos réponses.

    En effet, je veux bien abracadabra ta routine en asm (par contre faudrait m'expliquer comment la mettre dans un prm en c).

    ce ne comprend pas trop tt ce que vous expliquez utilisant des registres.

    merci encore

    Thomas

Discussions similaires

  1. La science du "Comment?" peut-elle dire "POURQUOI?" au moins une fois?
    Par Jean-Michel Tengang dans le forum Epistémologie et Logique (archives)
    Réponses: 83
    Dernier message: 12/07/2017, 22h12
  2. "La Recherche" ou "Pour la Science"
    Par patoff10 dans le forum Lectures scientifiques
    Réponses: 4
    Dernier message: 04/04/2005, 09h09
Découvrez nos comparatifs produits sur l'informatique et les technologies.