Petit problème en C

Fermé
Sylar44 Messages postés 20 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 24 août 2008 - 29 janv. 2008 à 14:57
Sylar44 Messages postés 20 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 24 août 2008 - 30 janv. 2008 à 09:52
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 mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mai 2008
29 janv. 2008 à 15:43
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 mardi 6 novembre 2007 Statut Membre Dernière intervention 24 août 2008
29 janv. 2008 à 15:55
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
pour telecharger de l'ordinateur au parabol
0
Sylar44 Messages postés 20 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 24 août 2008
29 janv. 2008 à 16:10
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 mardi 6 novembre 2007 Statut Membre Dernière intervention 24 août 2008
30 janv. 2008 à 09:52
Pas d'idées?
0