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![]()
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![]()
En effet clock permet ceci mais ça bouffe les ressources CPU, il me faudrait un truc qui mange de ressources.
Que veux-tu faire exactement avec ce timer à la microseconde près... ?jusqu'a la microseconde
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...
il me semble que usleep et nanosleep ne sont pas disponible sous dos.
usleep et nanosleep sont posix.1 toutefois ...
Je veut gérer des moteurs pas à pas avec le port parallèle (LPT1) pour piloter une machine à graver (le bois).Envoyé par Ti-R
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.
Pourquoi tu imposes 2 tours/seconde ?à 2 tours / secondes ça fait 2*400
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![]()
Tu programme en C ou C++??Envoyé par damien99
Et dos dans tout ca ca se trouve ou?
Partager