Petit problème en C

Sylar44 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
Sylar44 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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

_vince Messages postés 37 Date d'inscription   Statut Membre Dernière intervention  
 
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
Sylar44 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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
clark
 
pour telecharger de l'ordinateur au parabol
0
Sylar44 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sylar44 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Pas d'idées?
0