IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[debutant] Executer une opération à intervalles réguliers...


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 24
    Points
    24
    Par défaut 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 !

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut 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.).
    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 ?
    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...
    é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...)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Salut, merci pour ta réponse !

    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.

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ChrisPM
    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.
    Oui, pas mal.
    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 commandé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.
    Alors là, je t'arrette tout de suite, ça n'existe pas et tu devrais le avoir. De systèmes indépendants ne peuvent pas avoir la même fréquence. C'est pour çà qu'en tant que vieux spécialiste des transmissions numériques synchrones, j'ai immédiatement évoqué le mot asservissement.

    En effet, la seul façon (simple) de synchroniser deux mécanismes est de déterminer qui est le maitre et qui est l'esclave, puis de créer un système d'asservissement de l'esclave sur le maitre.
    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.
    Si le système externe (maître) dipose d'informations de synchronisation lisibles par le port parallèle du PC (esclave), c'est possible.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    tout d'abord, non, il n'y a pas de capteur qui permette de communiquer une information au PC...

    Ensuite, quand je parle de fréquence propre, je fais référence à l'oscillation libre du système non alimenté, lorsque j'actionne la tige à la main et que je la relache

    Lorsque j'ai testé le montage à la main, je réussissais parfois à trouver la bonne fréquence, durant 3-4 impulsions, ce qui me donnait un déplacement maximal. Toutes les autres fréquences donnent un déplacement vraiment faible, c'est pourquoi je parle de fréquence propre au mécanisme.

    Sinon le terme d'asservissement ne m'évoque rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2010, 22h06
  2. Découper une matrice à intervalle régulier
    Par mfontan dans le forum MATLAB
    Réponses: 11
    Dernier message: 24/01/2008, 10h53
  3. Fonction qui execute une opération mathematique
    Par durnambule dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 24/04/2007, 17h42
  4. Mettre des espaces dans une string à intervalles réguliers.
    Par benitoelputoamo dans le forum Général Python
    Réponses: 3
    Dernier message: 15/11/2006, 16h14
  5. [debutant] executer une Servlet (tomcat)
    Par valal dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 18/02/2006, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo