Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
540 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Placer un délai dans l'éxecution d'un programme

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C] Placer un délai dans l'éxecution d'un programme

n°637579
dcvlm
Yep
Posté le 10-02-2004 à 15:52:36  profilanswer
 

Je dois retarder les instructions de mon programme (sortie sur un convertisseur numérique/analogique).
Il y a bien les fonctions time et clock.
 
J'ai utilisé
 
while((clock() - debutboucle)<(periode)*(CLOCKS_PER_SEC)){ }
 
ce qui fait que il fait { }, soit rien, tant que le délai est inférieur à la période.
 
Ca marche, mais dès que je veux descendre en dessous de 50ms, bein ca fait n'importe quoi !
 
Vous connaissez autre chose ?
 
Merci


Message édité par dcvlm le 10-02-2004 à 15:53:57
mood
Publicité
Posté le 10-02-2004 à 15:52:36  profilanswer
 

n°637644
Taz
bisounours-codeur
Posté le 10-02-2004 à 16:14:55  profilanswer
 

c'est nimp
 
regarde du côté de sleep, usleep et ->nanosleep<-

n°637807
dcvlm
Yep
Posté le 10-02-2004 à 17:34:59  profilanswer
 

Taz a écrit :

c'est nimp
 
regarde du côté de sleep, usleep et ->nanosleep<-


 
ouais, g essayé, et effectivement, c plus précis..
 
Mais mon prb actuel : je n'ai accès qu'a sleep depuis mon time.h
Pas de usleep, ni nanosleep
J'utilise Bloodshed Dev-C++ v.4.9.8.0
 
Peux tu m'aider ???  :cry:  :cry:

n°637831
Taz
bisounours-codeur
Posté le 10-02-2004 à 17:48:17  profilanswer
 

bah t'avais qu'à dire « Windows »
 
la solution :
- fais une recherche, cette question est sortie plusieurs fois le mois dernier
- renomme en [Windows]
- lis ta msdn bordel

n°637850
chrisbk
-
Posté le 10-02-2004 à 17:59:07  profilanswer
 

#include <windows.h>
Sleep(tempsEnMs);

n°637917
cricri_
Posté le 10-02-2004 à 18:47:47  profilanswer
 

+1 pour Sleep(val)

n°637926
LeGreg
Posté le 10-02-2004 à 19:04:58  profilanswer
 

Essaie de regarder à performance timer sous windows.
 
LeGreg

n°637928
dcvlm
Yep
Posté le 10-02-2004 à 19:06:13  profilanswer
 

oh hé  :pt1cable:  
 
oui, sleep(ms), dans windows.h, je sais.
 
Mais j'ai dis que c ne m'allait pas, je veux des délais + courts !
 
Et je suis allé lire ma msdn, mais à part sleep et sleepex --> ils connaissent pas les usleep et nanosleep !!!!


---------------
ZZZZzzzzz
n°637939
blackgodde​ss
vive le troll !
Posté le 10-02-2004 à 19:46:50  profilanswer
 

bin comme dit LeGreg rensigne toi du coté du performance counter


---------------
-( BlackGoddess )-
n°637941
Taz
bisounours-codeur
Posté le 10-02-2004 à 19:47:35  profilanswer
 

taz a écrit :

bah t'avais qu'à dire « Windows »

mood
Publicité
Posté le 10-02-2004 à 19:47:35  profilanswer
 

n°638055
dcvlm
Yep
Posté le 10-02-2004 à 21:06:28  profilanswer
 


 
qu'est-ce que tu veux dire ??
 
sinon, g rapidement jetté un coup d'oeil sur performance counter sur mdsn, je suis pas trop bilingue, et tjs est-il que je n'ai pas vu de solutions pr integrer ca ds mon petit programme c de rien du tout  :( et ailleurs sur internet, bah je vois rien qui m'inspire !
 
Mais sinon, comment ca ce fait que nanosleep ne soit pas reconnu ?
 
Merci !


---------------
ZZZZzzzzz
n°638058
Taz
bisounours-codeur
Posté le 10-02-2004 à 21:10:30  profilanswer
 

ben que t'as qu'à spécifier ta plateforme quand tu poses une question. sinon t'étonnes pas que les gens répondent quelque chose qui ne fonctionne pas chez toi.

n°638059
dcvlm
Yep
Posté le 10-02-2004 à 21:11:52  profilanswer
 

Oui, c vrai. Mais je suis vraiment ds mes débuts en prog... et j'avais pas pensé à le spécifier !


---------------
ZZZZzzzzz
n°638063
blackgodde​ss
vive le troll !
Posté le 10-02-2004 à 21:14:15  profilanswer
 

usleep et nanosleep font partie de l'api linux, pas de l'api windows.
 
pour le performance counter je peux pas t'aider g jms fait :p


---------------
-( BlackGoddess )-
n°638065
Taz
bisounours-codeur
Posté le 10-02-2004 à 21:15:49  profilanswer
 

nanosleep est POSIX et usleep est BSD je crois

n°638138
LeGreg
Posté le 10-02-2004 à 21:56:09  profilanswer
 

DcVLM a écrit :

Oui, c vrai. Mais je suis vraiment ds mes débuts en prog... et j'avais pas pensé à le spécifier !


 
t'en fais pas Taz est coutumier du fait.
 
LeGreg

n°638167
dcvlm
Yep
Posté le 10-02-2004 à 22:11:34  profilanswer
 

ne me dites pas que je suis fais comme un rat !!! :(


---------------
ZZZZzzzzz
n°638206
Joel F
Real men use unique_ptr
Posté le 10-02-2004 à 22:43:28  profilanswer
 

apprends l'anglais :o

n°638255
chrisbk
-
Posté le 10-02-2004 à 23:15:27  profilanswer
 

Lecon 1 : hello world [:itm]

n°638458
cricri_
Posté le 11-02-2004 à 08:27:26  profilanswer
 

Mais Sleep travaille à la milliseconde tout de même ...
ça suffit pas ?

n°638462
*syl*
--&gt; []
Posté le 11-02-2004 à 08:31:37  profilanswer
 

cricri_ a écrit :

Mais Sleep travaille à la milliseconde tout de même ...
ça suffit pas ?
 

De tête, au mieux tu peux avoir 10ms sous les NT et 55ms sous les 9x..

n°638552
dcvlm
Yep
Posté le 11-02-2004 à 10:49:45  profilanswer
 

*Syl* a écrit :

De tête, au mieux tu peux avoir 10ms sous les NT et 55ms sous les 9x..


 
Ouais, c ca, j'arrive à 10ms sans prb, et par ex, 8ms, ca me fait dja 26% d'écart sur le résultat théorique...
 
Je pense donc faire une petite boucle à la con, dont je mesurerai le temps pour 1000...00 exécutions, et en divisant par le nombre d'éxecutions, j'aurais un tps unitaire, et si je veux x secondes, j'aurais qu'a faire (x/tps unitaire) fois la boucle...
Qu'en pensez vous.. ?
 
Pour le remplissage de la boucle, j'ai fait un petit bricoloage avec rand()... Que me proposez vous d'autre ??
 
Merci !

n°638632
blackgodde​ss
vive le troll !
Posté le 11-02-2004 à 11:29:37  profilanswer
 

j'en pense que le thread va pas dormir, que ton prog va donc claquer toutes les ressources cpu disponibles.


---------------
-( BlackGoddess )-
n°638697
dcvlm
Yep
Posté le 11-02-2004 à 12:11:39  profilanswer
 

blackgoddess a écrit :

j'en pense que le thread va pas dormir, que ton prog va donc claquer toutes les ressources cpu disponibles.


 
oui, c bien ce qui se passe !! Mais ca, à la limite, je m'en fout un peu... (c pr faire d'un PC un GBF...)
 
Ce qui m'interesse, c d'avoir un intervalle de temps tres court pdt lequel mon programme n'avance pas (ou alors, à rien faire !!)..

n°638840
bjone
Insert booze to continue
Posté le 11-02-2004 à 13:13:22  profilanswer
 

ton convertisseur numérique/analogique il est attaqué comment ?
 
un tel matériel a sa propre horloge de conversion, et un tampon matériel entre le convertisseur et ton cpu.
 
sinon si tu comptes alimenter l'horloge du convertisseur en direct live du cpu, c'est du n'importe quoi (que ce soit sous Windows ou sous Linux)...

n°638846
bjone
Insert booze to continue
Posté le 11-02-2004 à 13:16:49  profilanswer
 

et quel et l'ordre de grandeur de ta fréquence de conversion ?

n°638933
gilou
Modérateur
Modzilla
Posté le 11-02-2004 à 13:57:10  profilanswer
 

A une epoque, sous windows, le timer le plus precis etait le multimedia timer. http://msdn.microsoft.com/library/ [...] lution.asp
Je ne sais si c'est toujours le cas.
Pour ceux qui font du .NET, lire ceci aussi: http://msdn.microsoft.com/msdnmag/ [...] fault.aspx
 
Et pour ceux qui veulent une resolution superieure, il faut alors envisager ceci: http://www.vci.com/products/windows_embedded/rtx.asp
A+,


Message édité par gilou le 11-02-2004 à 14:21:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°639142
dcvlm
Yep
Posté le 11-02-2004 à 16:12:27  profilanswer
 

bjone a écrit :

et quel et l'ordre de grandeur de ta fréquence de conversion ?


 
En fait, c un projet qu'on a à faire... Nous on a pris le Générateur de Fonctions (GBF).
 
Pr le moment on a pas encore notre carte (que l'autre partie de notre grpe développe -schéma élé, orcade, layout, fabrication-...) : on a qu'une basique carte d'extension sur PCI avec des barregraphes.
 
Mais qd la carte sera finie, ca ira vers un convertisseur numérique --> analogique, puis filtres, puis amplis... vers BNC.
 
Exple sur un signal à 5kHz (la frq max qu'on nous impose), période de 2ms, donc si on veut 1000 points, faut sortir des valeurs toutes les 2 mirco sec.... Et dc mon but c ca : SORTIR DES VALEURS TOUTES LES QQS MIRCO SEC !!!!


Message édité par dcvlm le 11-02-2004 à 16:13:29
n°639164
cricri_
Posté le 11-02-2004 à 16:30:09  profilanswer
 

C'est pas gagné à mon avis à moins que cela soit le hardware qui déclanche directement une tache d'acquisition, mais suis pas sûr du tout que cela soit possible sous windows, à moins peut-être d'écrire un driver lié à cette carte d'acquisition.
Après faut passer à des systèmes temps réel sous windows genre RTXwin ou VxWork ( suis pas sûr du tout de l'orthographe ...).

n°639265
bjone
Insert booze to continue
Posté le 11-02-2004 à 17:44:11  profilanswer
 

bah personnellement j'aurai pris une carte son, et pi tu caches la carte son sous la carte maison :D
 
nan, en fait donc à priori c'est une carte son mono 5Khz que vous utilisez :D
 
bon ma remarque est: 2µs sans glissement sous Windows avec un process classique j'y crois moyen.
 
donc le mieux c'est un driver qui se base sur le timer rapide du PC, ou un truc du genre.
 
l'implémentation idéale étant d'avoir un tampon matériel sur la carte qui est consommé par le convertisseur via une horloge matérielle programmable sur la carte PCI, que tu remplis via ton process (et via un driver de toutes manières).


Message édité par bjone le 11-02-2004 à 17:44:48
n°639466
dcvlm
Yep
Posté le 11-02-2004 à 21:01:37  profilanswer
 

bjone a écrit :

bah personnellement j'aurai pris une carte son, et pi tu caches la carte son sous la carte maison :D
 
nan, en fait donc à priori c'est une carte son mono 5Khz que vous utilisez :D
 
bon ma remarque est: 2µs sans glissement sous Windows avec un process classique j'y crois moyen.
 
donc le mieux c'est un driver qui se base sur le timer rapide du PC, ou un truc du genre.
 
l'implémentation idéale étant d'avoir un tampon matériel sur la carte qui est consommé par le convertisseur via une horloge matérielle programmable sur la carte PCI, que tu remplis via ton process (et via un driver de toutes manières).


 
1ère question : c quoi un glissement ?
 
2ème : un driver qui se base sur le timer du rapide du PC !!! Alors là, je vois absolument pas ! C quoi le timer rapide ?
 
3ème : qd tu parlais d'implémentation sur la carte : j'ai compris : une partie hardware sur la carte, qui génére un signal, qu'on récupere sur le PC, via la carte ? G compris ?
 
 
merci de votre aide ! :hello:

n°639753
LeGreg
Posté le 11-02-2004 à 23:06:15  profilanswer
 

si tu n'as pas peur de l'assembleur il y a rdtsc qui traine
mais c'est limite off topic ici.
 
LeGreg

n°639772
dcvlm
Yep
Posté le 11-02-2004 à 23:27:44  profilanswer
 

oh la la.... Assembleur.... Tu veux dire programmation en assembleur !!! Je connais que de nom....Et à peine... je vois meme pas clairement ce que c'est !!! :(

n°639774
black_lord
Truth speaks from peacefulness
Posté le 11-02-2004 à 23:28:11  profilanswer
 

LeGreg a écrit :

si tu n'as pas peur de l'assembleur il y a rdtsc qui traine
mais c'est limite off topic ici.
 
LeGreg
 


 
y'a aussi harko :o
 
[:dehors]

n°639826
bjone
Insert booze to continue
Posté le 12-02-2004 à 00:50:50  profilanswer
 

quand je dis glissement, c'est les problèmes que t'as quoi....
tu demandes 2µs, t'en as 1 ou 10, voire 100ms si y'a un accès disque etc etc...

n°709541
sisicaivra​i
Life is Beautifullll
Posté le 27-04-2004 à 11:48:39  profilanswer
 

existe-t-il des fonctions de type "sleep()" multi-plateformes, sans devoir créer de threads?


---------------
blog dessins + srtCleaner | Ricoh R6 | K20d | MK-wii 5112-3549-9484 | en phase de déblablatisation depuis le 26 avril 2002 | Belgian Connection
n°709547
Taz
bisounours-codeur
Posté le 27-04-2004 à 11:50:57  profilanswer
 

sisicaivrai a écrit :

existe-t-il des fonctions de type "sleep()" multi-plateformes, sans devoir créer de threads?

:heink:

n°709553
sisicaivra​i
Life is Beautifullll
Posté le 27-04-2004 à 11:54:58  profilanswer
 

soit ça confirme ce que je pensais et c'est non, soit j'ai dit une connerie :o


---------------
blog dessins + srtCleaner | Ricoh R6 | K20d | MK-wii 5112-3549-9484 | en phase de déblablatisation depuis le 26 avril 2002 | Belgian Connection
n°709630
SoWhatIn22
Posté le 27-04-2004 à 13:10:35  profilanswer
 

à ton avis? c sans doute une connerie -- les threads n'ont rien à voir dans cette histoire...

n°709712
sisicaivra​i
Life is Beautifullll
Posté le 27-04-2004 à 14:32:54  profilanswer
 

je voulais dire sans utiliser de multithread?


---------------
blog dessins + srtCleaner | Ricoh R6 | K20d | MK-wii 5112-3549-9484 | en phase de déblablatisation depuis le 26 avril 2002 | Belgian Connection
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Placer un délai dans l'éxecution d'un programme

 

Sujets relatifs
[RECH] Jeux de pong programmé en Python[PHP] Maximum execution time exceeded
avec kel programme editer un fichier php ?Je cherche un programme de capture d'image
java, mettre le programme en attentecomment reduire un programme dans la systray?
[Dec C++] Impossibilité de compiler un programmeprogramme de type crococlip
[Help] executer un programme java[vb6] lancer un programme
Plus de sujets relatifs à : [C] Placer un délai dans l'éxecution d'un programme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR