Petit problème en C

Bonjour,
je souhaite faire une application qui dépend du temps.
Une fonction est appelé à un intervalle de temps précis.

while(i<20)
{
i++;
suivant=RDTSC();
TempsDernierCycle=(suivant-precedent)/frequence;
//printf("%lf\n",TempsDernierCycle);
precedent=suivant;
printf("%lf\n",TempsDernierCycle);
if(TempsDernierCycle) //on a passe au moins une microseconde
//a l'execution 0.9< T<1
{
Cpt_1us+=TempsDernierCycle;
Cpt_10us+=TempsDernierCycle;
Cpt_100us+=TempsDernierCycle;
Cpt_1ms+=TempsDernierCycle;

if(Cpt_10us>=10.3) //determine si faut activer tache_10ms
{
printf("%d\n",12);
Cpt_10us-=10.3;
flag_10us=1;
}
else if(Cpt_100us>100.2) //calcule les 100 usecondes
{
printf("%d\n",13);
Cpt_100us-=100.2;
flag_100us=1;
}
else if(Cpt_1ms>1000.1) //calcule les 1 msecondes
{
printf("%d\n",14);
Cpt_1ms-=1000.1;
flag_1ms=1;
}

Pour l'instant je fais pas d'appel de fonction mais j'ai remarqué un problème
Le compilateur affiche 12 à chaque fois alors qu'il doit passé dans toute les boucles

5 réponses

  1. Salut,

    Pour executer une tache periodique, je te conseille la programmation multitache (ou multithread) avec un OS temps reel si possible.
    Si tu es sous Linux, il existe RTLinux ou RTAI qui permettent d'avoir un OS temps reel.
    Ce sera beaucoup plus simple.
    0
    1. le problème c'est qu'il y a des taches prioritaires sur d'autres
      et comme le temps se compte en microseconde tout ne doit pas se faire en même temps
      On doit traiter une tache à chaque fois qu'on arrive à la fin de la boucle sinon les variables ne seront plus mises à jours.

      Je suis pas sur du tout mais je crois que ca risque d'être plus long à cause de l'appel de la fonction.
      0
      1. pour telecharger de l'ordinateur au parabol
        0
        1. non, je vois pas pourquoi tu dis ca
          c'est pour une application temps réel
          faire une gestion de température, de vitesse, de position par exemple.
          Et désolé de pas savoir pourquoi cette base de temps est si courte mais c'est mon tuteur de stage que le veux ainsi
          0