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

problème delay us



  1. #1
    spiderloic74

    Smile problème delay us


    ------

    Bonjour,

    Je programme un pic 18F4550 avec MPLAB et le compilateur ccs PCW.
    J'ai un soucie sur la fonction delay_us() , je ne peut pas dépassé 255. (je devrais peut-ètre passé à un compilateur supérieur)
    Alors j'ai essayé une boucle for, avec comme fin ma tempo voulu et à l'intérieur delay_us(1); Le problème c'est qu'elle me sort un temps d'attente réelle incohérent (non linéaire par rapport à la valeur apparament) et supérieur. Il faut compter en plus à chaque fois le temps des instructions, mais j'y ai pensé... problème boucle for... je ne sais pas.

    Quelqu'un aurai une idée de l'erreur ou alors un moyen de faire un tempo plus longue autrement (avec un timer je ne peut pas, j'utilise déjà trop d'interruption)

    Merci

    -----

  2. Publicité
  3. #2
    SpeedYFloK

    Re : problème delay us

    Salut,

    Solution pas trés élégante: mettre plusieurs delay_us() à la suite !

    FloC

  4. #3
    MorpheusPic

    Re : problème delay us

    il est impossible de realiser un delai de 1 µs avec ton instruction

    il te faudrait creer une routine du genre

    delay:

    if mon_delay > 255 then
    mon_delay = mon_delay - 255
    delay_us 255
    else
    delay_us mon_delay
    return
    end if

    goto delay

    metre le temp voulu dans mon_delay (variable supperieure a 8 bit sinon sa sert a rien)

    a+

  5. #4
    invite03481543

    Re : problème delay us

    bonjour,

    tu ne peux pas faire simplement ça?:

    [CODE]
    delay_us(255);
    delay_us(100);
    [CODE/]

    Pour avoir 355µs.

  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
    spiderloic74

    Wink Re : problème delay us

    Merci pour vos réponse, mais le soucie c'est que mon temps peut être supérieur a un nombre non défini de fois 255.
    j'ai essayé ceci:

    //larg_pulse est le delay voulu:

    val=larg_pulse/255; //tronque à une valeur entière
    for(i=0; i<val; i++)
    { delay_us(255); }
    val = larg_pulse%255;
    delay_us(val); //où val=larg_pulse-(255*(larg_pulse/255)) "reste"

    avec ceci j'arrive finalement à une valeur approcher mais ce n'est pas du tout précis et j'utilise déja trop d'interruption pour me permettre un timer. Surtout aussi que cette tempo est présente justement dans une interruption externe.

  9. #6
    invite03481543

    Re : problème delay us

    Pourquoi ne pas écrire une fonction qui fait directement ce temps?

    Si je t'ai bien compris tu veux pouvoir faire une tempo multiple de la fonction delay_us().

    Le temps à générer sera tempo=x*delay_us(y);

    ce qui pourrait donner quelque chose du genre:

    Code:
    void tempo(int val)
    {
    	char x ;
    	while (val != 0)
    	{
    		-- val ;
    		delay_us(x) ;
    		while (x !=0)	-- x ;
    	}
    }

  10. Publicité

Discussions similaires

  1. fonction delay sous quartus II
    Par mokermann dans le forum Électronique
    Réponses: 4
    Dernier message: 11/06/2008, 17h21
  2. PIC16F84 PWM et delay
    Par Pierroch dans le forum Électronique
    Réponses: 3
    Dernier message: 05/01/2008, 12h43
  3. Instruction "delay" CC11 pour 68HC11F1
    Par thomasalbert1993 dans le forum Électronique
    Réponses: 12
    Dernier message: 05/06/2007, 16h35
  4. TIPE : Pédale d'effet Delay
    Par Myristate dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 21/05/2007, 12h00
Découvrez nos comparatifs produits sur l'informatique et les technologies.