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 :

Bibliothèque time sur un système embarqué


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Bibliothèque time sur un système embarqué
    Bonjour à tous.

    Je développe une carte électronique à base de microcontrôleur Atmel ATMEGA128, qui gère entre autres un récepteur GPS, une horloge temps réel et une mémoire FLASH. Le logiciel est compilé sous AvrGCC, mais je n'ai trouvé aucun fichier d'en-tête time.h, certainement parce que chaque système différent doit gérer différemment son horloge.

    Je suis donc à la recherche des sources C standard time.c et time.h afin de les modifier pour les intégrer à mon application.

    Comme il semble que celà se rapporte autant au C qu'à mon système, merci de m'orienter si par mégarde je n'ai pas choisi le bon forum.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par proton88
    Je développe une carte électronique à base de microcontrôleur Atmel ATMEGA128, qui gère entre autres un récepteur GPS, une horloge temps réel et une mémoire FLASH. Le logiciel est compilé sous AvrGCC, mais je n'ai trouvé aucun fichier d'en-tête time.h
    Je n'y crois pas. Vérifie, refait ton installation, lit la doc...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette réponse.

    J'ai bien cherché partout, mais pas la moindre petite trace de time.h sur mon PC... Par contre, un ami qui développe sur ces mêmes microcontrôleurs avec ImageCraft m'a envoyé une copie de son fichier time.h, je vous laisse juger...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef __TIME_H
    #define __TIME_H
    /* TBD */
    #endif
    Un peu court, non? J'aurais au moins aimé que les routines de conversion de dates et d'heures soient présentes, je me serais débrouillé pour aller chercher l'heure dans mon système. Je précise que je n'ai pas de système d'exploitation.

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Vu que tu utilises un micro-contrôlleur Atmel, tu trouveras sur le site jelectronique un forum dédié à cette petite bête.
    Bien le bonjour chez vous
    Jowo

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par proton88
    Merci pour cette réponse.

    J'ai bien cherché partout, mais pas la moindre petite trace de time.h sur mon PC... Par contre, un ami qui développe sur ces mêmes microcontrôleurs avec ImageCraft m'a envoyé une copie de son fichier time.h, je vous laisse juger...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef __TIME_H
    #define __TIME_H
    /* TBD */
    #endif
    Un peu court, non? J'aurais au moins aimé que les routines de conversion de dates et d'heures soient présentes, je me serais débrouillé pour aller chercher l'heure dans mon système. Je précise que je n'ai pas de système d'exploitation.
    TBD = To Be Defined, je suppose! De toutes façons, dans un .h, au mieux, tu auras des macros, ou des fonctions inline... Mais en général, tu n'as que l'interface des fonctions, c'est à dire leurs prototypes et les définitions nécessaires à ces prototypes.
    Pour implémenter une fonction time_t time (time_t *), il faut appeler lire l'heure dans le composant RTC et la retourner sous la forme d'un nombre de secondes écoulées depuis le premier janvier 1970.

    Pour définir time_t, je recommande unsigned long.

    Ca donne donc pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifndef __TIME_H
    #define __TIME_H
     
    /* time.h */
    typedef unsigned long time_t;
     
    time_t time (time_t *p_time);
     
    #endif
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    /* time.h */
    #include <time.h>
     
    static time_t get_time(void)
    {
        /* lire l'heure/date dans la RTC */
        /* la convertir en secondes depuis 01-01-1970 */
        /* retourner ce nombre de secondes */
    }
     
    time_t time (time_t *p_time)
    {
       time_t t = get_time(); /* TBD ! */
     
       if (p_time != NULL)
       {
          *p_time = t;
       }
       return t;
    }
    La définition de struct tm est fournie par le langage C :

    http://www.open-std.org/JTC1/SC22/WG...docs/n1124.pdf

    7.23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    struct tm
    {
       int tm_sec; // seconds after the minute — [0, 60]
       int tm_min; // minutes after the hour — [0, 59]
       int tm_hour; // hours since midnight — [0, 23]
       int tm_mday; // day of the month — [1, 31]
       int tm_mon; // months since January — [0, 11]
       int tm_year; // years since 1900
       int tm_wday; // days since Sunday — [0, 6]
       int tm_yday; // days since January 1 — [0, 365]
       int tm_isdst; // Daylight Saving Time flag
    };
    Le code des autres fonctions : localtime(), gmtime(), mktime(), strftime(), asctime() etc. devrait être standard et trouvable sur le net (voir les sources de la bibliothèque C de gcc, par exemple).

    Vite fait : http://www.jbox.dk/sanos/source/lib/time.c.html

    Pour clock(), c'est une autre approche. Il faut gérer un "tic" dans ton système (interrution régulière, genre timer matériel à 10ms, par exemple), et incrémenter un compteur global (unsigned long, par exemple) de 1 à chaque fois et partant de 0 (lancement de main()).

    clock() retourne la valeur de ce compteur.
    Par exemple, a ajouter dans <time.h> (avec un tic a 10 ms) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #define CLOCKS_PER_SEC 100 /* 100 x 10 = 1000 ms */
     
    typedef unsigned long clock_t;
     
    clock_t clock ();
    Je te laisse implémenter clock() dans time.c ...
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci à tous pour ces infos et ces liens, je n'ai plus qu'à me mettre au boulot.

    @+
    Stéphane

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sortie TX à 1 ou 0 sur port RS-232
    Par tibo7 dans le forum C++
    Réponses: 0
    Dernier message: 02/06/2008, 14h39
  2. connexion distant sur firebird (syst ubuntu)
    Par cyrilb dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 05/06/2006, 17h53
  3. [SGBD/ Développement] Que choisir sur quels critères ?
    Par damou2004 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 24/01/2006, 18h17
  4. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 13h58
  5. [Kylix] erreur time.sur kylix avec redhat 9.0
    Par sumco dans le forum EDI
    Réponses: 4
    Dernier message: 20/05/2004, 15h13

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