J'ai besoin d'un timer assez précis pour gérer un afficheur à persistance rétinniene, c'est ainsi que l'ai codé ce truc (il est probable d'en trouver des semblables sur internet).
Ce petit timer est basé sur le code de rylryl :
http://www.delphifr.com/codes/PETITE-PAUSE-MICROSECONDE_30901.aspx
Ce timer est censé étre précis à la microseconde, cependant, sur mon Athlon 2100Mhz (476 nanoseconde/front) les résultats semblent médiocres : en de créant un signale carré sur le port //, d'une periode d'une milliseconde, on voit a l'oscilloscope qu'une periode foire de temps en temps, alors qu' avec un timer Windows, le signale est impecable.
J'aimerais trouver la cause de ce probleme, vous pourez peut-etre m'aider :
- Mon code bug ?
- QueryPerformanceCounter pas assez fiable ?
- Le rapport (Frequence processeur)/(periode esperée) est trop faible ? (pourtant, 1000 microsecondes <=> 2000 fronts, ce qui est pas mal je pense)
Source / Exemple :
Code complétement commenté dans le ZIP !
Conclusion :
Merci de critiquer au maximum mon code pour l'améliorer (et moi aussi par la méme occasion) :-)
24 oct. 2007 à 22:55
18 juin 2006 à 02:34
23 févr. 2006 à 07:45
Comme tu travailles en temps partagé tu ne garantiras pas la durée du traitement (ni à la milliseconde et encore moins à la microseconde)
23 févr. 2006 à 01:15
17 févr. 2006 à 23:44
On rencontre d'ailleurs le même problème quand on gère des interruptions: on donne des priorités mais il y a toujours des taches favorisées et d'autres qui attendent; quand on travaille en assembleur et qu'il n'y a pas trop de processus en cours on arrive à s'en sortir mais dans le cas de window s'est pratiquement impossible (le nombre et la priorité des processus peut varier)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.