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 -
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
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
A voir également:
- Petit problème en C
- Petit 2 ✓ - Forum Bureautique
- Comment imprimer une photo en petit - Forum Photo numérique
- Trier du plus petit au plus grand excel - Guide
- Petit 3 ✓ - Forum Word
- Comment écrire mètre carré avec un m+2 expos? ✓ - Forum Windows
5 réponses
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.
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.
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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question