IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Faire une pause de X microsecondes


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut Faire une pause de X microsecondes
    Salut,

    Je sais qu'il y a moyen de faire une pause de X millisecondes avec "time.h", mais moi j'ai besoin d'aller jusqu'a la microseconde.... une idée?

    Je suis sous DOS et j'utilise le compilateur Turbo C (Borland)

    Merci d'avance

  2. #2
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par damien99
    Salut,

    Je sais qu'il y a moyen de faire une pause de X millisecondes avec "time.h", mais moi j'ai besoin d'aller jusqu'a la microseconde.... une idée?

    Je suis sous DOS et j'utilise le compilateur Turbo C (Borland)

    Merci d'avance
    Clock?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    En effet clock permet ceci mais ça bouffe les ressources CPU, il me faudrait un truc qui mange de ressources.

  4. #4
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    jusqu'a la microseconde
    Que veux-tu faire exactement avec ce timer à la microseconde près... ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Par défaut
    tu peux utiliser la fonction

    usleep

    qui permet de faire dormir jusqu'a la microseconde, tu peux meme aller plus loin, en faisant dormir jusqu'a la nanoseconde avec :

    nanosleep

    mais sache que quand tu fais dormir quelqu'un , il n'est pas assurée de se reveiller quand tu le demande, ce qui est sur, c'est que tu le fais dormir au moins le temps que tu as demandé !! Dans la plupart des cas, il dormira plus longtemps que prévu, tout ca dépend du scheduler de ton système, et changement de contexte car la plupart du temps il y en aura un...

  6. #6
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    il me semble que usleep et nanosleep ne sont pas disponible sous dos.

    usleep et nanosleep sont posix.1 toutefois ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    Citation Envoyé par Ti-R
    Que veux-tu faire exactement avec ce timer à la microseconde près... ?
    Je veut gérer des moteurs pas à pas avec le port parallèle (LPT1) pour piloter une machine à graver (le bois).
    Mes moteurs ont 200 pas par tours je les fait marcher en mode demi pas ça me fait donc 400 positions par tours, à 2 tours / secondes ça fait 2*400, je doit réécrire sur mon port 800 fois par secondes. Jusque la ça va, je peut faire avec Sleep(1) (800microS ~ 1mS)


    Le truc c'est que les moteurs déplacent une défonceuse de 1000 Watt il y a donc des efforts importants je doit donc maitriser l'accélération.
    Or de Sleep(2) à Sleep(1) le moteur double sa vitesse, résultat : l'energie cinétique accumlée par la machine fait que mon moteur rate des pas. Et comme je ne suis pas en boucle fermée je ne peut pas savoir le nombre de pas ratés (si je pouvait le savoir il suffirait de faire ce nombre de pas en plus) peu a peu les pas ratés s'additionnent et le défaut sur la gravure devient de + en + visible.

    C'est pourquoi il me faut un timer qui va jusqu'a la microseconde.


    Je prefèrerai ne pas bouffer les ressources CPU, parce que après la pause est variable (fonction de la fréquence du CPU), le cas de clock() il me semble

    Sinon vu que je suis sous DOS usleep() et nanosleep() ne fonctionnent pas.

  8. #8
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    à 2 tours / secondes ça fait 2*400
    Pourquoi tu imposes 2 tours/seconde ?

    Car logiquement, tu pourrais mettre un rythme moins soutenu à tes moteurs, qui empêcheraient une accélération et des sauts de pas, non ?

    Doit me manquer un détail la

  9. #9
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par damien99
    En effet clock permet ceci mais ça bouffe les ressources CPU, il me faudrait un truc qui mange de ressources.
    ____________________________________
    Je débute dans l'API windows (C++)...............ben oui, toute chose a un début..........
    Tu programme en C ou C++??
    Et dos dans tout ca ca se trouve ou?

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/11/2005, 17h33
  2. [console]Comment faire une pause?
    Par aminee009 dans le forum MFC
    Réponses: 5
    Dernier message: 20/10/2005, 10h33
  3. Faire une pause
    Par loutente dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 17h23
  4. Faire une pause dans le programme
    Par shinobi dans le forum Access
    Réponses: 6
    Dernier message: 13/06/2005, 16h37
  5. [MFC] Faire une pause dans un thread
    Par Kevgeii dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2005, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo