Executer une opération à intervalles réguliers...
Bonjour,
Pour un projet perso en électronique, j'ai besoin d'exécuter une opération à intervalle réguliers, mais avec une précision de l'ordre de la microseconde. Avec des millisecondes ce n'est pas assez précis, genre arbitrairement 70 ms c'est trop peu, mais 71 ms c'est trop grand. il me faudrait donc un intervalle quelque-part entre les deux. Je ne connais pas la fréquence exacte, puisque la milliseconde n'est pas assez précise, du coup j'ai un tâtonnement d'environ 20 ms qui me donne un mauvais résultat.
Mon projet, pour expliquer vaguement, consiste à envoyer une impulsion à un mécanisme (via port parralèle) qui as une fréquence propre à lui, mais inconnue.
Le sleep est à proscrire, je l'ai utilisé pour mes premiers essais, mais 2 inconvénients : d'une part la précision, d'autre part je ne peux rien faire pendant le sleep, alors que j'ai besoin d'exécuter des opérations également pendant le temps d'attente entre deux impulsions. (allumer et éteindre des leds)
Je sui encore (trèèèssss) débutant en C/C++ et mon appli est encore en mode console. Je développe avec code::blocks (c'est comme dev-cpp poour ceux qui ne connaissent pas).
Merci d'avance !
Re: [debutant] Executer une opération à intervalles régulier
Citation:
Envoyé par ChrisPM
Pour un projet perso en électronique, j'ai besoin d'exécuter une opération à intervalle réguliers, mais avec une précision de l'ordre de la microseconde.
Pas possible. La notion de temps en informatique c'est très imprécis.
Néanmoins, si tu as un microcontrôleur qui ne fait que ça, avec un timer suffisament précis, tu peux espérer générer des interruptions à intervalle régulier. Sinon, il faut confier l'opération au matériel (FPGA etc.).
Citation:
Mon projet, pour expliquer vaguement, consiste à envoyer une impulsion à un mécanisme (via port parralèle) qui as une fréquence propre à lui, mais inconnue.
C'est vachement pas clair. Est-ce que le mot 'asservissement' t'évoque quelque chose ?
Citation:
Le sleep est à proscrire, je l'ai utilisé pour mes premiers essais, mais 2 inconvénients : d'une part la précision, d'autre part je ne peux rien faire pendant le sleep, alors que j'ai besoin d'exécuter des opérations
Avec les threads tu peux faire autre chose...
Citation:
également pendant le temps d'attente entre deux impulsions. (allumer et éteindre des leds)
Je crois surtout que tu as un problème de conception. Une ordinateur lambda ne sait pas fournir un signal d'horloge précis (mais une carte spécialisée pourrait). Essaye d'exposer ton problème plus précisément qu'on essaye de comprendre ce que tu veux faire exactement.
(je sens qu'on va être gravement hors sujet...)