Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

DS1307 sur station meteo



  1. #1
    pierodu13

    DS1307 sur station meteo


    ------

    Bonjour a tous je suis etudiant en bts electronique en 2eme année dans l'academie Aix-Marseille.

    J'ai un projet a réaliser en commum, une station meteo. Dans mon contrat il faut que j'utilise une horloge en temps reel associée au pic 18f452. j'ai donc pris le composant DS1307, je sais comment le cablé mais le probleme est le suivant :

    IL faut un programme a mettre dans le PIC en C et non en ASM comme avant et dans ce programme il faut que je recupere l'heure du PC et que je la transmette a mon DS1307 puis il faut aussi que je puisse récuperer cette heure a tout moment.

    Voila si quelqu'un possede ce programme ou peut m'aider dans mes recherches je suis preneur merci a tous et peut etre arriverons nous a nous aider si l'on partage le meme projet. a bientot

    -----

  2. Publicité
  3. #2
    invite03481543

    Re : DS1307 sur station meteo

    salut,
    Tu trouveras ma routine pour DS1307 dans ta MP.
    amicalement
    hulk

  4. #3
    pierodu13

    Re : DS1307 sur station meteo

    Merci beaucoup pour cette reponse rapide demain je vais essaier de tester ce programme.

    Je crois que tu viens de me tirer une épine du pieds donc :

    sinon tu peut m'expliquer en gros ce qu'il, par exemple s'il va prendre l'heure sur le PC ou s'il attend que le PC lui donne car j'avais pensé a une interruption au debut. enfin la programmation c'est pas ma spécialité en électronique jsui plus sur le structurel donc voila merci bien

  5. #4
    invite03481543

    Re : DS1307 sur station meteo


    Il faudrait comme je le dis trop souvent que tu exposes clairement ton projet, avec tout les détails dont tu disposes, quitte à les envoyer fonction après fonction mais complète, afin de pouvoir t'aider efficacement.
    Apparemment tu as besoin d'une routine RS232 (ou autre moyen) pour dialoguer avec ton PC et d'un applicatif sur le PC pour rediriger l'info temps réel du PC vers ton horloge du µC.
    Essaies de m'en dire plus, as-tu déjà réfléchi au reste du projet?
    A+
    HULK

  6. A voir en vidéo sur Futura
  7. #5
    Gérard

    Re : DS1307 sur station meteo

    Citation Envoyé par HULK28
    salut,
    Tu trouveras ma routine pour DS1307 dans ta MP.
    amicalement
    hulk
    Peux-tu me l'envoyer aussi ?
    Merci d'avance,
    Gérard.

  8. #6
    paulfjujo

    Re : DS1307 sur station meteo

    Bonsoir,

    un projet quelque peu similaire
    1 pic16F628 , gerant un DS1307 , renvoi des dats au PC (Terminal)
    ainsi que l'heure en cours du DS1307 si le PC la demande.
    Le PC (terminal) peut aussi mettre à l'heure le DS1307..
    via la liasion RS232
    voir ########.fr sujet DS1307

    Ne communiquez pas d'adresse email SVP
    Dernière modification par Jack ; 01/03/2006 à 23h43.

  9. Publicité
  10. #7
    pierodu13

    Re : DS1307 sur station meteo

    sa veut dire quoi les ##### ?

    sinon quand je rentre du lycée je te passe le schema structurel de la carte et je ten dirais un peu plus (tout ce que je sais lol) et puis pour le reste c'est d'autre eleves qui s'en occupe moi je doit juste gerer le DS1307 ainsi que le PIC. voila merci

  11. #8
    invite03481543

    Re : DS1307 sur station meteo

    Jack, ce n'était pas une adresse mail, mais une page personnel.
    Attention à ne pas censurer trop vite!
    HULK

  12. #9
    pierodu13

    Re : DS1307 sur station meteo

    Voila je vais essaier d'etre le plus clair possible :

    la station meteo doit capter plusieurs informations ( vitesse et direction du vent, humidité, pression,...).

    Dans la classe chaque éleve s'occupe d'une partie du projet et comme on avance chacun a notre rythme je connais pas encore tres bien comment fonctionne toutes les cartes des capteurs. Il y a aussi un PIC esclave entre les cartes capteurs et ma carte qui sert a aiguiller mais pareil on en sait pas trop car l'eleve en question est un peu en retard.

    On est 3 sur ma carte a gerer le PIC et chacun des 3 doit gerer soit une EPROM soit une afficheur LCD soit une horloge temps reel (moi).

    on communique avec le PC en RS458 je crois mais je suis sur que ce n'est pas de la RS232 mais la encore c'est un eleve qui s'en charge donc nous on doit faire avec les moyens du bord pour ne pas etre trop en retard je sais pas comment mettre une image pour te montrer notre schema structurel.

    Si tu connait bien le DS1307 j'ai 2 question :

    - il y a une entrée Vbat et je sais pas si elle est vraiment utile ( si sa sert pour une sauvegarde par exemple)

    - il y a une sortie SQW (pin 7) et je ne sais pas du tout a quoi elle sert donc je ne l'ai pas cablé.

  13. #10
    Jack
    Modérateur

    Re : DS1307 sur station meteo

    Jack, ce n'était pas une adresse mail, mais une page personnel.
    Attention à ne pas censurer trop vite!
    Désolé

    de plus, j'en profite pour préciser que vous pourrez laisser votre adresse email à l'avenir.
    Nous l'effacions afin d'éviter le spam. Mais finalement, c'est de la responsabilité de chacun.

    Tu peux déposer à nouveau l'adresse du site, paulfjujo. Avec toutes mes excuses.

    Pierodu13, tu peux joindre un fichier ou une image à l'aide d'une des icônes (trombonne ou carte postale) de l'éditeur de message. Si tu ne vois pas ces icônes, vas dans le tableau de bord et sélectionne l'interface d'édition standard.

    Une petite question: comment faites-vous pour gérer le même pic tous les trois dans votre projet?

    A+

  14. #11
    invite03481543

    Re : DS1307 sur station meteo

    Pour le Vbat c'est l'entrée qui reçoit la pile ou batterie.
    SQW c'est une sortie qui donne 1Hz donc tu branches si tu veux une résistance et une led pour visualiser le bon fonctionnement de l'horloge.
    Je te conseil quand même de regarder la doc de près...
    HULK

  15. #12
    pierodu13

    Re : DS1307 sur station meteo

    ok merci

    pour gerer le pic a trois il faut qu'on fasse un programme a trois qui gere aussi bien le LCD, l'EPROM et mon DS1307 mais on c'est pas trop penché dessus.

    sinon j'ai tester ta routine hulk, quand je fait build (sur mplab) il me marque pour toutes les lignes où il y a ecrit heure minute jours, undefine et je voit pas comment les definir moi je pensai plutot a un programme comme sa :

    envoit de ladresse du composant
    ack
    envoit de la seconde dans ladresse correspondante
    ack
    envoit de la minute dans ladresse correspondante
    ack

    voila et pareil pour tout le reste mais jsui pas super fort en programmation donc j'ai beaucoup besoin d'aide et merci de m'aider

  16. Publicité
  17. #13
    invite03481543

    Re : DS1307 sur station meteo

    C'est normal, il te manque certaines déclarations de variables, ici c'est la routine proprement dite, il faut la voir dans un environnement global avec les déclaratifs d'entête qui vont bien.

    hulk

  18. #14
    pierodu13

    Re : DS1307 sur station meteo

    et comment je pourrais faire sa?

    deja j'ai trouver qu'il fallait rajouter #include <i2c.h>

    puis les fonctions start i2c, ack, et write n'ont pas l'air de poser probleme mais comme je l'ai dit, pour les minute je sais pas comment faire.

    je sais pas si sa peut aider mais je reçoit l'heure du PC sur RX (RS485) qui se trouve sur RC7 sur le pic 18F452 donc a mon avis les valeur de cette broche doivent aller dans un registre puis il faut recuperer ces valeur de ce registre pour les envoyer par le bus i2c

  19. #15
    invite03481543

    Re : DS1307 sur station meteo

    salut, voici de quoi t'aider à mettre le prog en place.
    amicalement.

    HULK

    #include "ad16f87x.h" // Définitions avancées de la série PIC16F87X

    #define CLOCK_DS1307_W 0xD0 // control byte d'écriture de la rtc i2c
    #define CLOCK_DS1307_R 0xD1 // control byte de lecture de la rtc i2c

    #define I2C_CLOCK_40KHZ 99 // vitesses clock i2c à 16MHz
    #define I2C_CLOCK_100KHZ 39
    #define I2C_CLOCK_400KHZ 9

    uchar bank2 Jour ; // données de l'horloge temps réel
    uchar bank2 Mois ;
    uchar bank2 Annee ;
    uchar bank2 Heure ;
    uchar bank2 Minute ;
    uchar bank2 CompteurRTC ;
    void clock_pic(void);

    /****************************** ****************************** ****
    Routines i2c
    ****************************** ****************************** ****/
    void i2cInit(void)
    {
    TRISC3 = 1 ; // set SCL and SDA pins as inputs
    TRISC4 = 1 ;
    SSPCON = 0x38 ; // i2c master mode
    SSPCON2 = 0x00 ;
    SSPADD = I2C_CLOCK_400KHZ ; // Fi2c = Fosc/(4*(SSPADD+1)) = 400 kHz
    STAT_CKE = 0 ; // input levels conform to i2c specs
    STAT_SMP = 0 ; // slew rate enabled for high speed mode (400kHz)
    PSPIF = 0 ; // clear SSPIF interrupt flag
    BCLIF = 0 ; // clear bus collision flag

    DelayMs(10) ;
    }
    void i2cWaitForIdle(void)
    {
    while ((SSPCON2 & 0x1F) | STAT_RW) ; // wait for idle and not writing
    }
    void i2cStart(void)
    {
    i2cWaitForIdle() ;
    SEN =1 ; // send START
    while (SEN) ;
    }
    void i2cRepStart(void)
    {
    i2cWaitForIdle() ;
    RSEN = 1 ; // send REPEAT START
    while (RSEN) ;
    }
    void i2cStop(void)
    {
    i2cWaitForIdle() ;
    PEN = 1; // send STOP
    while (PEN) ;
    }
    uchar i2cRead(uchar ack)
    {
    uchar data ;
    i2cWaitForIdle() ;
    RCEN = 1 ;
    i2cWaitForIdle() ;
    data = SSPBUF ;
    i2cWaitForIdle() ;
    if (ack) ACKDT = 0 ; // ack
    else ACKDT = 1 ; // no ack
    ACKEN = 1 ; // send acknowledge sequence
    return(data) ;
    }
    uchar i2cWrite(uchar data)
    {
    i2cWaitForIdle() ;
    SSPBUF = data ;
    return(!ACKSTAT) ; // return '1' if transmission is acknowledge
    }

  20. #16
    pierodu13

    Re : DS1307 sur station meteo

    salut encore merci pour ce prog mais la jsuis en cours et sa fait 1h que je suis dessus et il me marque error sintaxe pour cette ligne

    uchar bank2 Jour

    et moi j'utilise le PIC 18F452 et non le 16 donc je sais pas si sa viens de la.

    au fait voila mon schema structurel au cas ou mais on voit pas tres bien
    Images attachées Images attachées  

  21. #17
    pierodu13

    Re : DS1307 sur station meteo

    les prof nous on enfin donné un peu des infos donc voila ce que je sais :

    L'ordinateur envoit une requete de mise a l'heure ( programme independant que l'on ne va pas traiter)
    ceci va generer une interruption non prioritaire.
    je suis branché a l'ordi par un bus RS485 et donc apres convertion les infos de l'heure arivent sur la broche RX du PIC soit RC7.
    il faut que je recupere ces infos et que je les envoit au DS1307.
    De plus il faut que je puisse lire l'heure a tout moment sur ce composant.
    je suis en train de voir pour savoir comment lire l'heure et j'ai tapé ce petit bout de programme :

    #include <p18f452.h>
    #include <i2c.h>

    void ack (void);
    void init_I2C (void);
    void tempo (unsigned int count);
    void write (void);
    void read (void);


    void main (void)
    {
    init_I2C ();
    void write (void);
    void read (void);

    // ici je sais plus quoi mettre dans le programme principal


    void read (void)
    {
    IdleI2C ();
    StartI2C();
    while (SSPCON2bits.SEN);
    WriteI2C (0xD1);
    ack();
    getsI2C (

    // la aussi je sais pas ce qu'il faut mettre mais la fonction getsI2C consiste a lire sur le bis i2c mais je ne sais pas quoi mettre dans la ()

    voila donc si tu sais comment faire le programme principal ou le programme de lecture sa serait simpa de me le dire voila a +

  22. #18
    pierodu13

    Re : DS1307 sur station meteo

    je sais pas si ya tjrs kelkun qui viens ici mais je vais essaier :

    toujours pour mon DS1307 j'essaie de faire un test avec la LED connecté a la patte 7 SQWE donc voici un programme que j'ai fait et qui bien sur ne marche pas, j'ai bien une trame sur mon bus i2c qui arrive au composant tout a l'air bien branché mais la LED ne clignote pas alors que je pense avoir tout configuré dans mon prog enfin voyez vous meme

    #include <p18f452.h>
    #include <i2c.h>

    void initI2C (void);
    void ack (void);

    void main (void)
    {
    initI2C();
    SSPCON2bits.SEN = 1; // start
    WriteI2C(0xD0); // adresse du composant + mode ecriture
    ack();
    WriteI2C(0x07); // adresse du registre a ecrire (7 c'est celui du control )
    ack();
    WriteI2C(0x10); // donnée a ecrire ( le 1 c pour activer SQWE)
    ack();
    StopI2C();
    while(SSPCON2bits.PEN);
    }

    void initI2C (void)
    {
    DDRCbits.RC3=1; // pour mettre RC3 en sortie
    DDRCbits.RC4=1; // pour mettre RC4 en sortie
    SSPCON1=0x28;
    SSPSTATbits.SMP=1;
    SSPADD=9;
    }

    void ack (void)
    {
    IdleI2C();
    while(SSPCON2bits.ACKSTAT);
    }


    voila en esperant que vous pourrez m'aider je vous dis merci d'avance ++

  23. Publicité
  24. #19
    pierodu13

    Re : DS1307 sur station meteo

    voila bon ben mon prog marche tres bien il me manque plus qu'a comuniquer avec le PC style rajouter une interruption ou aller chercher les mises a l'heure dans les registres et aussi a faire une tempo de 1s au moins voila ben merci a hulk et a gerard

  25. #20
    popoye

    Re : DS1307 sur station meteo

    Je fait un projet similaire, mais je ne doit pas utiliser un circuit spécialisé. J'ai 18f452, si quelqun a un prog en C pour compter les secondes avec un timer. le mien marche en 8 bits mais qund je passe en 16bits il s'arretes de tmps en temps et redemare un peu aprés de facon totalement aléatoire.

    Si quelqun a une idée, merci d'avance

    #include "p18f452.h"

    void main(void)
    {
    //configuration des ports
    TRISB=0x00; //port B en sortie
    PORTB=0x00;
    //registre timer0
    T0CON=0x00; //clr T0CON
    T0CON=0x04; //préscaler
    T0CONbits.T0CS=0; //TOCS en Fosc/4
    T0CONbits.PSA=0; //PSA sans prescaler
    T0CONbits.T08BIT=0; //compteur 16bits
    T0CONbits.TMR0ON=1; //allume le timer0

    TMR0H=0x00; //init reg high
    TMR0L=0x00; //init reg low

    //registre interruptions INTCON
    INTCONbits.RBIF =0; //flag interrupt externes sur port B
    INTCONbits.INT0IF =0; //interruptions externes
    INTCONbits.TMR0IF =0; //clear flag
    INTCONbits.RBIE =0; //pas de changement sur le port B lors d'une interruption
    INTCONbits.INT0IE =0; //disable les interruptions externes
    INTCONbits.TMR0IE =1; //enable the timer0 overflow interrupt
    INTCONbits.PEIE =0; //disable les interruptions périphériques
    INTCONbits.GIE =1; //enable toutes les interruptions unmasked

    //registre de priorité des interruptions INTCON2
    INTCON2bits.RBIP =0; //low priority sur le portB
    INTCON2bits.TMR0IP =1; //high priority sur le timer0
    INTCON2bits.INTEDG2 =0; //interrupt externe2 sur front montant
    INTCON2bits.INTEDG1 =0; //interrupt externe1 sur front montant
    INTCON2bits.INTEDG0 =0; //interrupt externe0 sur front montant
    INTCON2bits.RBPU =0; //pull-up sur portB controlés par leur latch

    //registre de validation des interruptions INTCON3
    INTCON3bits.INT1IF=0; //pas de flag sur les interrupt externes
    INTCON3bits.INT2IF=0; //pas de flag sur les interrupt externes
    INTCON3bits.INT1IE=0; //disable external interrupt
    INTCON3bits.INT2IE=0; //disable external interrupt
    INTCON3bits.INT1IP=0; //low priority sur les interrupt externes
    INTCON3bits.INT2IP=0; //low priority sur les interrupt externes
    //registre des flags des interruptions périphériques PIR et PIR2

    //registre de validation des interrupt périphériques PIE et PIE2
    //registre de priorité des interruptions périphériques IPR et IPR2
    //registre reset interruptions RCON
    RCONbits.IPEN=0;
    while(1)
    {
    if (INTCONbits.TMR0IF)
    {
    INTCONbits.TMR0IF=0; //clr flag
    PORTB++;
    }//end if
    }//end while
    }//end main


    pour l'instant ya pas d'interruption, je ne fait que sortir un comptage sur le portB
    tous les registre, configurés en plus me serviront plus tard

  26. #21
    Ostoher

    Re : DS1307 sur station meteo

    Citation Envoyé par HULK28 Voir le message
    salut,
    Tu trouveras ma routine pour DS1307 dans ta MP.
    amicalement
    hulk
    Salut, je serais intéressé aussi, pourrais tu me l'envoyer s.t.p.??

    Merci

  27. #22
    sapona

    Re : DS1307 sur station meteo

    bonjour,

    issu d'un BTS Electonique, il y a déjà quelques années et sans vraiment répondre au post, j'en profite pour vous présenter http://www.station-meteo.com/
    les étudiants y sont les bien venus pour venir la aussi poser leur question. Le site s'adresse aux débutants au sujet des stations météo amateurs d'un point de vue technique.
    je n'ai pas encore créer de rubrique au sujet de la création de station météo - le sujet me parait intéréssant

Discussions similaires

  1. Carte PIC meteo avec ds1307
    Par marquesni dans le forum Électronique
    Réponses: 8
    Dernier message: 13/03/2010, 11h20
  2. Station météo
    Par FSE dans le forum Électronique
    Réponses: 5
    Dernier message: 25/11/2009, 10h49
  3. station meteo
    Par matsume dans le forum Environnement, développement durable et écologie
    Réponses: 0
    Dernier message: 26/08/2007, 12h39
  4. Station météo
    Par invite72765420984 dans le forum TPE / TIPE et autres travaux
    Réponses: 2
    Dernier message: 18/11/2006, 19h57
  5. station meteo
    Par nanard dans le forum Électronique
    Réponses: 18
    Dernier message: 18/10/2006, 17h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.