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

Delay



  1. #1
    invite01336075

    Delay


    ------

    Bonjour,

    Je programme une carte avec un PIC16F877A et je cherche à faire une fonction delay qui fonctionne comme je veux et sans utiliser les timers.

    Le PIC 16F877A si je ne me trompe pas a un quartz de 4000MHz

    J'ai donc essayé un truc comme ça. Mais ça marche pas..


    Code:
    void delay( char x)
    /*
      Clock : 4 MHz   => period T = 0.25 microseconds
      1 IS = 1 Instruction Cycle = 1 microsecond
    */
    {
    do  {
            char i = 32;               /* 2 IS */
            do ; while ( --i > 0);  /* 33 * 3 - 1 = 98 IS */
        } while ( --x > 0);         /* 3 IS */
    }
    Quelqu'un pourrait essayer de m'expliquer pourquoi?
    Et me donner une autre façon de faire un delay réglable sans timers si besoin.

    Merci d'avance!

    -----

  2. #2
    mortaurat

    Re : Delay

    Citation Envoyé par Groumpif Voir le message
    Le PIC 16F877A si je ne me trompe pas a un quartz de 4000MHz
    Ftorama va se taper la honte avec ses ARM9 si les pic16f877A tournent à 4ghz =)

    tu peut essayer

    void delay ()
    {
    int32 i =0 ;
    while(i<100000)
    {
    i++;
    }
    }

  3. #3
    invite01336075

    Re : Delay

    Oui bien sur je voulais dire 4 MHz. ^^

    Sinon mon compilateur n'accepte pas les int32 mais les int16 oui..
    Il me mets "Unsupported by the SMALL compiler edition" quand je mets int32..
    Comment je peux faire dans ce cas?

  4. #4
    mortaurat

    Re : Delay

    void delay ()
    {
    int16 i =0 ;
    unsigned char x=0;
    while(x<50)
    {
    while(i<65000)
    {
    i++;
    }
    x++;
    }
    }
    tu aura une belle tempo tout simplement =)

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

    Re : Delay

    Oki merci c'est bon !
    T'as juste oublié de mettre i=0; au début de du premier while.
    Merci !

  7. #6
    mortaurat

    Re : Delay

    Citation Envoyé par Groumpif Voir le message
    Oki merci c'est bon !
    T'as juste oublié de mettre i=0; au début de du premier while.
    Merci !
    oui voila =)

  8. #7
    invite01336075

    Re : Delay

    J'ai juste une dernière petite question,
    est ce qu'on peut utiliser un sous programme (ici c'est le delay) dans une interruption?
    J'ai l'impression que oui mais uniquement si la fonction n'a pas de paramètres. C'est ça? Est ce qu'on peut faire quelque chose pour quand même se servir de fonctions avec paramètres?

  9. #8
    invite7a49d0d5

    Cool Re : Delay

    Bonjour,

    il est fortement déconseillé de mettre des délais dans une interruption...
    idem d'appeler une fonction dans une interruption (avec ou sans arguments/return var)...
    plutôt ajouter une variable FlagT qui temporisera dans le "main"...
    la Bible où tout test texpliqué en détails : http://www.abcelectronique.com/bigonoff/index.php

    vede
    ;O]
    ____________
    ...

Discussions similaires

  1. Programme C bouton, delay
    Par invite01336075 dans le forum Électronique
    Réponses: 17
    Dernier message: 13/07/2010, 17h34
  2. problème delay us
    Par invitebcc2342c dans le forum Électronique
    Réponses: 5
    Dernier message: 24/12/2008, 19h13
  3. fonction delay sous quartus II
    Par inviteef27c66e dans le forum Électronique
    Réponses: 4
    Dernier message: 11/06/2008, 18h21
  4. PIC16F84 PWM et delay
    Par inviteb54e0fd7 dans le forum Électronique
    Réponses: 3
    Dernier message: 05/01/2008, 13h43
  5. TIPE : Pédale d'effet Delay
    Par invite3b115fa0 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 21/05/2007, 13h00
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...