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 :

Mesure du temps avr-libc


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut Mesure du temps avr-libc
    Bonjour à tous, j'espère que je poste au bon endroit, vu qu'il n'y a pas de section micro-contrôleur (s'il y en a une désolé de ne pas l'avoir vue ^^).

    Je programme actuellement sur un micro-contrôleur ATMEL 128, en utilisant la bibliothèque avr-libc et le compilateur avr-gcc (logique ).

    Mon problème est le suivant : je cherche à connaître précisément la temps d'exécution d'une boucle et dois pour cela mesurer le temps. Le souci est que les fonctions de la famille gettime() n'existent pas dans cette bibliothèque.
    Comment puis-je faire ?

    PS : je débute en programmation micro-contrôleur.

    PS2 : le but final est de comparer les temps d'exécution en fonction des options d'optimisation du code par le compilateur, afin de choisir l'option la plus avantageuse pour le rapport taille / temps d'exécution.

  2. #2
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Ton micro ne dispose pas d'un timer (interne ou externe) ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    Si il y a un timer mais je ne sais pas comment le manipuler

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Il faut lire le datasheet du µc. Ca doit probablement être écrit dedans.

  5. #5
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Dans le principe, ce n'est pas dur, si tu lis les datasheets, tu t'en sortiras. Il faut accrocher une interruption à un des timers inutilisés dans ton appli et configuré pour un cycle d'une milliseconde. La tâche de l'interruption est très sommaire, elle incrémente une variable (une 32 bits me parait bien) et relance le timer s'il n'est pas autoreload.

    Une fois ceci initialisé, il suffit à ton programme principal de lire la variable pour savoir à quelle milliseconde on est actuellement. Si on lit la variable à deux moments différents, une simple soustraction donne le temps ecoulé en millisecondes.

    Dernier point, il faut interdire l'interruption pendant la lecture de la variable, car si on lit une variable constituée de plusieurs octets, l'interruption peut arriver à tout moment et causer une donnée erronée.

    Bonne chance,

    Pfeuh

  6. #6
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    A la limite ce n'est même pas obligé d'utiliser les interruptions.

    Un timer a parfois trois registres :
    - contrôle (activation des interruptions, source de l'horloge, etc...)
    - période (valeur du compteur après laquelle le compteur reboucle)
    - compteur

    Suivant la fréquence à laquelle le compteur s'incrémente, celui-ci reboucle assez rarement (toutes les 4 ou 5 mins par exemple). Donc si ta fréquence de contrôle de l'heure est plus élevée, il suffit que tu viennes lire la valeur du compteur.

    Il faut souvent appliquer un coeficient au compteur pour récupérer un nombre de *secondes.

Discussions similaires

  1. [Stratégie] Mesurer le temps d'exécution d'une requête
    Par nice dans le forum Général Java
    Réponses: 5
    Dernier message: 29/01/2006, 17h53
  2. Réponses: 6
    Dernier message: 22/09/2005, 16h59
  3. [Test][Perf]Mesure du temps d'execution différente 2 fois de suite
    Par debdev dans le forum Tests et Performance
    Réponses: 11
    Dernier message: 22/07/2005, 12h04
  4. [info] mesure du temps
    Par nicolas581 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 02/08/2004, 13h45
  5. Mesurer le temps des instructions
    Par luckylucke dans le forum Assembleur
    Réponses: 9
    Dernier message: 03/09/2003, 21h23

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