01/03/2006, 18h36
|
#1 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| | Aujourd'hui
| | | | Liens sponsorisés | |
|
|
01/03/2006, 19h07
|
#2 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| Re : DS1307 sur station meteo
salut,
Tu trouveras ma routine pour DS1307 dans ta MP.
amicalement
hulk
|
| |
01/03/2006, 20h49
|
#3 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| |
01/03/2006, 21h37
|
#4 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| 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
|
| |
01/03/2006, 22h22
|
#5 |
Date d'inscription: janvier 2003 Localisation: Haut-Rhin Âge: 50
Messages: 3 577
| 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.
__________________
Gérard.
|
| |
01/03/2006, 22h30
|
#6 |
Date d'inscription: juillet 2004 Localisation: STMaurice de Beynost
Messages: 143
| 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 ; 02/03/2006 à 00h43.
|
| |
02/03/2006, 06h53
|
#7 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| |
02/03/2006, 09h25
|
#8 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| Re : DS1307 sur station meteo
Jack, ce n'était pas une adresse mail, mais une page personnel.
Attention à ne pas censurer trop vite!
HULK
|
| |
04/03/2006, 10h17
|
#9 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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é.
|
| |
04/03/2006, 11h11
|
#10 |
Date d'inscription: avril 2003 Localisation: Metz
Messages: 6 011
| Re : DS1307 sur station meteo Citation:
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+
|
| |
04/03/2006, 12h45
|
#11 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| 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
|
| |
06/03/2006, 20h05
|
#12 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| |
06/03/2006, 21h21
|
#13 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| 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
|
| |
06/03/2006, 22h14
|
#14 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| |
06/03/2006, 22h35
|
#15 |
Date d'inscription: janvier 2006 Localisation: EURE ET LOIR Âge: 45
Messages: 5 538
| 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
}
|
| |
07/03/2006, 10h35
|
#16 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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
|
| |
09/03/2006, 09h50
|
#17 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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 +
|
| |
13/03/2006, 19h04
|
#18 |
Date d'inscription: mars 2006 Âge: 21
Messages: 26
| 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 ++
|
| | |
|