Accueil > Forum > > > > TIMER MICROSECONDE PAS TRÉS PRECIS
TIMER MICROSECONDE PAS TRÉS PRECIS
mardi 14 février 2006 à 16:03:22 |
TIMER MICROSECONDE PAS TRÉS PRECIS

jlen100
|
salut à tous,
puisqu'un bug informatique m'empêche de répondre directement en commentaire de cette source je le fairais par cet intermediaire.
Il est pratiquement impossoble d'obtenir par soft un timer pécis
inférieur à la millisecond si l'on passe par la gestion Windows (il
doit traiter plusieurs dizaines de threads)
plusieurs solutions s'offre alors:
- faire des routines qui bloque windows pendant le traitement mais on
est malgré tout limité par la gestion de Windows pour ses processus
critiques : il lui devient impossible de récuperer le retard pris dans
le tritement--->plantage du systeme.
- faire des routines d'interruption mais là ce n'est pas possible
directement sous DELPHI. il faut passer par l'assembleur (à manipuler
avec précaution)
- passer par des cartes d'extension c'est du hard mais ça marche
beaucoup mieux.(la mise au point n'est pas une partie de plaisir!!)
soit on travaille en 'inside' et on génère des interruption dans ce cas
le traitement est mixte : la carte assure le timming et on place le
taritement dans le vecteur; soit on travaille en 'outside' te la
carte assure la totalité de l'opération on ajoute
simplement une communication entre l'application et la carte
(cela va de la rs232 à l'ethernet tout dépend du débit que l'on veut
assurer)
pour répondre à wolf heureusement que dans ton PC il y a des logiciels
qui travaille en dessous de la seconde sinon il deviendrait muet sourd
et aveugle: il faut savoir que le systeme de convertion travaille avec
des fréquences d'échantillonnage élevé (~44kHz pour le son à >100Mhz
pour l'image) une simple souris à 9600 bauds (soit <0,1ms par
bit)demande une fréquence de base de près de 1MHz . Sans parler de
certaines cartes spécialisée: dans mon cas j'utilise une carte oscillo
qui échatillonne à 400MHz et ce n'est pas la plus rapide du marché.
c'est aussi pour ces raisons que l'on fait appel à des circuit spécialisés
@+
jlen
|
|
mardi 14 février 2006 à 16:40:06 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

jlen100
|
pour le probléme du temps passé dans l'Application.ProcessMessage je ne sais pas s'il existe une routine permettant de le vérifier.
dans mon appli je m'étais livré à l'expérience suivante:
1) pour déterminer les temps de calcul propre aux routines j'envoie sur le port ethernet (facilement accessible et rapide pour ne pas perturber la mesure)une trame et je mets un analyseur sur le port ceci me permets de déterminer l'interval de temps entre chaque trame sachant que je n'attends pas de réponse c'est en quelque sorte une boucle ouverte
2) dans un premier temps je place cette trame dans une boucle for . Avec un processeur à 2,6Ghz l'interval est ~100ns ceci donne donc le temps pour efffectuer une iteration.
3) ensuite je place cette trame dans un thread en priorité haute et j'appelle l'Application.ProcessMessage à chaque itération.
résultat
temps mini= 400ns temps maxi =15ms
conclusion les threads ne sont pas adaptés au processus rapides exigeant un timming précis
je n'ai pas testé mais l'on devrait peut etre obtenir une meilleure précision en gerant les events de windows (sorte d'interruption logiciel) je ne l'ai pas fait car meme 100ns était encore trop long pour moi.
@+
jlen
|
|
mardi 14 février 2006 à 18:10:53 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS
|
mardi 14 février 2006 à 19:43:15 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

Sylvainlefou
|
Ok, merci beaucoup, je pense que je vais garder le timer classique 1ms, si cela ne vas pas, je passerais par un microcontroleur (qui ne tourne pas sous windows, lui  )
|
|
mardi 14 février 2006 à 20:19:29 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

jlen100
|
c'est sur que dans ton cas le timer classique doit faire l'affaire car s'il n'est pas précis sur des petits intervals il présentent une bonne reproductibilité sur de longues périodes (en fait même s' il y a erreur sur une periode elle n'est pas cumulative tant qu'on le laisse enabled)
je l'uitlise reglé à 50ms pour faire des scans de process sans qu'il présente de problème les actions demandant des timing très courts étant réalisées par un carte à microcontroleur.
@+
jlen
|
|
mardi 14 février 2006 à 20:20:34 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

jlen100
|
la M.. sur la textbox évoluée recommence!!
|
|
jeudi 16 février 2006 à 13:05:46 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

rt15
|
Heu pardon, ça à m'a l'air très pro ce topic. Mais bon, je m'exprime quand même.
J'ai été confronté à ce probléme. La première solution que j'ai trouvé à été d'utiliser le compteur TSC du processeur, accessible via l'instruction assembleur RDTSC. Ce compteur s'incrémente à chaque front d'horloge du processeur.
Cependant, la régularité de ce compteur n'est pas garantit, sur certains processeurs de portables nottement.
Heureusement, windows permet d'accéder aux compteur hardware, via les API QueryPerformCounter et QueryPerformFrequency. Le premier renvoie la fréquence du compteur hardware, et la deuxième la valeur du compteur.
Je n'ai pas trouvé le source situé plus haut, donc désolé s'il utilisait déjà ces API.
Néanmoins, comme le dit jlen100, cette méthode est ultra précise, dans un certain nombre de cas (Boucler sur un Sleep(0) en attendant une certaine valeur du compteur).
Car si windows à la mauvaise idée de passer la main à un trhead un peu long, la valeur est dépassée. Donc on à généralement des résultat du style :
510 µs
504 µs
503 µs
13345 µs
505 µs
C'est les joies du multitâche, et comme le dit jlen100, carte d'extension ou instruction systèmes obligatoires pour passer outre.
|
|
jeudi 16 février 2006 à 13:46:29 |
Re : TIMER MICROSECONDE PAS TRÉS PRECIS

jlen100
|
salut rt15
j'avais posté mes commentaires ici suite à quelques problèmes de post
tu peux trouver la source ici
il utilise effectivement ces API mais pur ne pas bloquer le process il
les a incluses dans un thread en association avec un
Application.ProcessMessage (pour résumer mais il vaut mieux voir
la source) ce qui à pour conséquence que la fin du thread n'est
effectivement donnée que quand Windows le traite avec le résultat que
tu as donné.
Une solution aurais été de le traiter en event mais même dans ce cas
c'est Windows qui traite l'event et la précision n'est pas garantie.
La véritable solution est de provoquer un interruption mais ceci n'est
accessible qu'en langage assembleur et XP n'aime pas trop ce genre de
manip: il faut que le traitement soit suffisament court pour ne pas
perturber la gestion de thread et c'est génarelement assez pour avoir
le resultat dans l'application (en général on met le traitement en DLL)
Pour les process rapides demandant des timing très précis on fait appel à de cartes d'extension ou des circuits spécialisés.
l'expérience montre que Windows n'est pas du tout adaptée à ce genre de
situation (d'ailleurs il n'a pas été développé pour cela) et que les
solutions logicielles finissent par couter plus chères que la carte
d'extension.
@+
jlen
|
|
Cette discussion est classée dans : timer, windows, carte, travaille, microseconde
Répondre à ce message
Sujets en rapport avec ce message
La dll de carte de windows [ par Rapakooti ]
J'ai un probleme avec l'affichage des carte grace a la dll qui se nomme CARD.dll enfin je pense j'ai pas ma source sous les yeux,en fait j'essaye de f
Lancer une application au demarage de windows [ par Sat83 ]
hello...comme le titre l'indique je souhaiterais que mon application permette a l'utilisateur de pouvoir lancer cette application au demargage de wind
Probleme TobjectList [ par elmonkey ]
Bonjour! J'ai un probleme avec mon projet en cours : procedure tpaquet.addcarte(c:tcarte); begin lescartes.add(c); nbcarte:=nbcarte+1; showmessage (in
Gestion de la carte d'acquisition video [ par koopje ]
Bonjour à tous,Je suis actuellement à la recherche d'informations sur la gestion d'une carte d'acquisition video. Le but serait d'écrire un petit pro
Ejecter un perif USB [ par wismerhill40 ]
Bonjour, voila je cherche le moyen d'envoyer un message a windows pour lui demander de deconnecter un peripherique USB.Voila si quelqun a une ebauche
Minimiser une fenetre avec une taille perso [ par Jarodt ]
Salut,Je voudrais affecter une taille personnalisé a ma fiche lorsque j'appuie sur le bouton minimiser et non quelle ne soit sous la forme de windows
Problème qui empeche windows de fermer! merci d'avance [ par gaudetm ]
Bonjour à tous,Je travaille actuellement sur un logiciel, et j'ai un problème avec windows:Windows attend la fermeture du programe avant de fermer la
Problème de couleur Delphi5 et windows XP [ par smazaudi ]
Voilà, j'utilise DELPHI5 et windows XP. Mon appli contient des labels, des checkbox........etc . Mon problème est que lorsque je veux leur affecter un
Timer / mettre une temporisation a une action... [ par sLaYeR31 ]
bonjour ! je voudrai temporiser une action, c.a.d, avec un bouton, qui active ou désactive l'option, qu'il éxecute une action toutes les minutes ( a p
shell windows:afficher une bulle d'aide par 1 prg delphi [ par ericamiens ]
bonjour, j'aimerais, à l'instar de winzip, que le shell windows me lance mon application lorsque l'utilisateur 'survole' un certain type de fichiers ;
Livres en rapport
|
Derniers Blogs
[MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ![MIX 2010] - TELECHARGEZ INTERNET EXPLORER 9 EN PREVIEW ! par redo
La Preview de Windows Explorer 9 est maintenant disponible à l'adresse suivante : http://ie.microsoft.com/testdrive/ Cette version ne nécessite pas un redémarrage de votre machine pour être exploitée . Cette version est fonctionnelle mais reste cependant ...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ![MIX 2010] - KEYNOTE DAY 2 ONLINE : WINDOWS INTERNET EXPLORER 9, JQUERY, ODATA ET DALLAS CTP2 ! par redo
Dans la lignée du premier keynote, retrouvez la vidéo du second keynote en ligne : Visionnez la vidéo à l'url suivante : http://www.microsoft.com/presspass/events/mix/VideoGallery.aspx Vous y retrouverez ainsi les speakers Scott Guthrie, Dean Hachamovitch...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7[MIX 2010] - RETOUR D'EXPéRIENCE DéVELOPPEMENT SEESMIC SUR WINDOWS PHONE 7 par redo
En avant première, Loic le retour d'expérience de Loïc Le Meur du portage de l'application http://seesmic.com/ sur plateforme Windows Phone 7 . c'était d'ailleurs une des rares opportunités de tester, voir toucher le nouveau device . voyez par vous-même :...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ![MIX 2010] - LE KEYNOTE DAY 1 DISPONIBLE ONLINE ! par redo
Si tout comme moi, vous avez manqué de peu le premier keynote du Microsoft Mix 2010, je vous invite à prendre deux heure et le consulter ci-dessous . Visionnez le Keynote à l'url suivante : http://www.microsoft.com/Presspass/events/mix/videoGallery.aspx?c...
Cliquez pour lire la suite de l'article par redo VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL
Forum
RE : SVPRE : SVP par Caribensila
Cliquez pour lire la suite par Caribensila RE : SVPRE : SVP par f0xi
Cliquez pour lire la suite par f0xi
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|