begin process at 2012 05 29 05:19:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Executer une opération à intervalles réguliers, précision à la microseconde ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Executer une opération à intervalles réguliers, précision à la microseconde ?

vendredi 24 février 2006 à 19:45:38 | Executer une opération à intervalles réguliers, précision à la microseconde ?

ChrisPM

Membre Club
Bonjour,

Pour un projet perso, 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 c'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 !

vendredi 24 février 2006 à 21:03:15 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

BruNews

Administrateur CodeS-SourceS
La microseconde sur system multitache préemptif, c'est par définition impossible.

ciao...
[ Lien ]
BruNews, MVP VC++
vendredi 24 février 2006 à 23:01:58 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

vecchio56

Administrateur CodeS-SourceS
Conclusion: il faut passer en dos pur?
samedi 25 février 2006 à 00:23:57 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

racpp

Administrateur CodeS-SourceS
Salut,
Je pense que c'est possible en DOS pur après avoir bloqué toutes les interruptions matérielles (IRQ). Cela risque de poser quelques problèmes. La durée de l'impulsion doit être calculée par rapport à la fréquence horloge du microprocesseur. L'idéal est de réaliser une carte à microcontroleur avec un quartz pour générer ce genre d'impulsions à grande précision. Elle sera soit autonome soit commandée par PC.

samedi 25 février 2006 à 11:23:54 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

ChrisPM

Membre Club
Merci pour vos réponses !

Pour expliquer plus précisément, mon projet est un afficheur à persistance rétiniènne, c'est à dire, une série de leds au bout d'une tige de 30 cm qui oscille continuellement.

La tige est fixée sur le tête de lecture d'un disque-dur HS, dont la bobine est alimentée par une pile, et commendée, via un transistor, par le port parralèle. Le tout est maintenu en équilibre par deux ressorts (un de chaque coté)

Le déplacement régulier de la tige permets d'afficher du texte en faisant varier dans le temps les informations affichées sur les leds.

Ce mécanisme as donc une fréquence propre à lui, inférieure à 50 Hz (déterminé par les ressorts et la longueur de la tige) et l'angle d'ouverture maximal ne peut être atteint que si on envoie un signal régulier à la même fréquence, pour entrer en résonnance.

Quelqu'un à déja fait un programme de contrôle, basé sur une boucle infinie et une mesure du nombre de cycles écoulés apparemment (je ne comprends pas bien son code) mais cette technique est dépendante du processeur, si je ne me trompe pas, et utilise certainement beaucoup de ressources.

Donc j'aurais voulu savoir si, et uniquement avec le PC, par programmation, on pouvait faire ça différemment, par des timers par exemple.

samedi 25 février 2006 à 11:46:17 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

BruNews

Administrateur CodeS-SourceS
Il te faudra un OS dédié le plus proche du type 'temps réel' sinon peine perdue.

Les cycles par instruction asm RDTSC, sort sur 64 bits dans EDX:EAX

ciao...
[ Lien ]
BruNews, MVP VC++
samedi 25 février 2006 à 11:53:17 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

ChrisPM

Membre Club
Mouais ok... [grande déception] :D

Je vais essayer de faire comme l'a fait le gars dont je parle, avant de fabriquer un circuit de contrôle dédié alors...

Merci pour les réponses en tout cas !

PS : j'ai pas pigé la ligne " Les cycles par instruction asm RDTSC, sort sur 64 bits dans EDX:EAX "....
samedi 25 février 2006 à 12:01:58 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

BruNews

Administrateur CodeS-SourceS
Tu as parlé des "cycles écoulés" plus haut donc...

ciao...
[ Lien ]
BruNews, MVP VC++
samedi 25 février 2006 à 13:44:04 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

ChrisPM

Membre Club
Hum... plutot "itérations" alors ? (à la place du mot cycle dans mon dernier message)
 

En fait je débute réellement en C, je n'ai pas encore acquis la notion de pointeurs, donc quand tu me parle d'asm avec des adresses et des notions de 64 bits, je décroche complètement
samedi 25 février 2006 à 17:35:22 | Re : Executer une opération à intervalles réguliers, précision à la microseconde ?

chris91

bonjour,
et avec la carte son, c'est pas possible? (de générer un signal d'environ 50hz)
http://www.cppfrance.com/codes/GENERATEUR-FICHIER-WAV-REFERENCE-POUR-CD-TEST_34327.aspx
http://www.cppfrance.com/codes/ACCORDEUR-GUITARE_34211.aspx
bref, bonne chance.

1 2

Cette discussion est classée dans : ms, précision, opération, réguliers, microseconde


Répondre à ce message

Sujets en rapport avec ce message

Calculatrice ms visual c++ [ par Fino ] Bonjour,quelqu'un aurait-il le source d'une calculatrice faite avec ms visual c++ comme la calc.exe de ms dans windows.si oui pouvez m'en envoyer un e Concaténation [ par DJ God ] [redQuel caractère utiliser pour concaténer un texte avec une variable ?][/red] Sortie formatée avec printf: précision [ par GoldenEye ] J'ai besoin d'afficher avec printf un double avec une précision dynamique.Par exemple, l'user rentre une précision epsilon( 0.01 par ex ) et je veux l cacher la fenetre dos [ par ludoo7 ] j'aimeré savoir si il y a une fonction en c++ ki permet de cacher la fenetre de commande ms-dos lors de son exécution (pour une application en fenetr Résolution 800*600 en ms-dos [ par Boby009 NeoMorph ] J'ai un blem. J'utilise VC++ 6 et je sais pas comment on fait (ou si c possible) pour mettre une résolution 800*600 ou 1024*768 sous DOS.QUELQU'UN PEU J'ai besoin d'aide sur les objets fastnet [ par aurelie ] je programme en C++ Builder. Je réalise une application qui va récupérer les données d'une feuille ASP pour les transmettre en ASP.J'utilise donc les Calcul d'une opération en millisecondes [ par Thanatos ] Bonjour,Comment peut-on estimer le temps d'un calcul en millisecondes sous Borland C++ ?Je fais un programme qui compare les différents tris et j'aime Besoin d'aide sur Ms-dOs et en C [ par Remixgame ] J'aimerais En ( C ) revenir à la racine du disque j'utilise ( system("cd \\"); ) mais ca ne marche pasRegardez mon progz si dessous !Aidez moi merci Besoin d'aide sur Ms-dOs et en C [ par Remixgame ] J'aimerais En ( C ) revenir à la racine du disque j'utilise ( system("cd \\"); ) mais ca ne marche pasRegardez mon progz si dessous !Aidez moi merci Opération sur les dates [ par daddy33 ] Comment fait-on pour faire des opérations sur des dates : exple : date de livraison - date commande ce genre de truc, quelle bibliotheque il faut incl


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales