Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#11 Message par Jérémy » jeu. 14 avr. 2016 08:34

Bonjour,

Parfait venom ! C'est cool que tu ai résolu ton probléme. effectivement sans simulateur cela aurait été dur de trouver la solution :D .

Je suis quand même dubitatif sur la fonction de BAT1 branché sur Sout ? si tu l’enlève ça devrait fonctionner encore non ?

N'hésite pas à revenir pour toute question !

A+

PS: je suis content car mon tuto à servi ! Comme quoi mes efforts ne sont pas vain !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 960
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#12 Message par venom » jeu. 14 avr. 2016 12:44

Moi j'ai ms la batterie car j'ai lue sur le net qu'une batterie doit être brancher sur un ds1307 pour mémorisé l'heure et la date en cas de coupure de courant ???
Mais tu a raison je me suis tromper la batterie se branche sur le Vbat et non le Sout :oops: erreur de ma part oops
Screen modifier dans le précédent post ;)

Oui merci du tuto. Un tuto n'est jamais inutile ;) la preuve.

À la base je souhaiterais créer une horloge binaire. Mais je ne sais pas si c'est mieux ou pas de la gérer via un RTC ? Vous en pensez quoi ???





@++
Mon site web
Mon discord : venom#4888

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#13 Message par Gérard » jeu. 14 avr. 2016 21:05

La RTC compte le temps en BCD, si tu souhaites un affichage en binaire, il faut convertir.
L'avantage de la RTC avec pile, c'est que tu ne perds pas l'heure en cas de coupure d'alim.
Perso, j'utilise la DS3231, el le con tient le quartz et une compensation de température mais pas de RAM comme la DS1307.
DS3231
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 960
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#14 Message par venom » jeu. 14 avr. 2016 22:26

Gérard a écrit :La RTC compte le temps en BCD, si tu souhaites un affichage en binaire, il faut convertir.


C'est vrai.
Après je ne suis pas encore assez bon programmeur pour savoir si c'est compliquer ou pas, mais je pensais que sa pourrait simplifié les choses :D ;)

Gérard a écrit :L'avantage de la RTC avec pile, c'est que tu ne perds pas l'heure en cas de coupure d'alim.

Sa aussi, ça peut être une fonction sympa a ajouté a une horloge. Donc reste a voir niveau programmation. :P






@++
Mon site web
Mon discord : venom#4888

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1644
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#15 Message par Gérard » jeu. 14 avr. 2016 22:33

La conversion BCD / binaire n'est pas compliquée sauf que en C, je ne sais pas faire.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#16 Message par Jérémy » jeu. 14 avr. 2016 23:00

Mais tu a raison je me suis tromper la batterie se branche sur le Vbat et non le Sout :oops: erreur de ma part

Ouf tu me rassure à vrai dire.

Après je ne suis pas encore assez bon programmeur pour savoir si c'est compliquer ou pas, mais je pensais que sa pourrait simplifié les choses

Nous sommes la pour aider . Pas de problème si tu souhaites passer de la simulation, au fer à souder :D
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 960
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#17 Message par venom » ven. 15 avr. 2016 06:15

Jérémy a écrit :Nous sommes la pour aider . Pas de problème si tu souhaites passer de la simulation, au fer à souder :D


J'en prend note. Merci ;)






@++
Mon site web
Mon discord : venom#4888

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 960
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#18 Message par venom » lun. 18 avr. 2016 23:01

Bonsoir a tous,

Je continue mon apprentissage du ds1307 pour mon horloge binaire. Bon vous vous doutez bien, je bloque sur quelque chose. :D

dans cette fonction que j'ai trouver sur le forum :

Code : Tout sélectionner

void Lecture_GDH(){

  I2C1_Start();                // Début de l'I²C
  I2C1_Wr(RTC_ADDR);           // Adresse du RTC ( 0xD0 cf datasheet)
  I2C1_Wr(0);                  // lecture à cette adresse ( N° registre)
  I2C1_Repeated_Start();       // On répète le signal de départ
  I2C1_Wr(RTC_ADDR+1);         // Adresse du DS1307 (1=lire / 0=ecrire)

  secondes = I2C1_Rd(1);          // Lecture et enregistrement de la valeur
  secondes = Bcd2Dec(secondes);   // Conversion de BCD en décimal pour l'afficheur
  minutes = I2C1_Rd(1);
  minutes = Bcd2Dec(minutes);
  heures = I2C1_Rd(1);
  heures = Bcd2Dec(heures);
       
  I2C1_Stop
();                    // Arrêt de l'I²C
}


qui d’après moi permet de récupérer le temps du ds1307 ? ai-je bon ?
Si oui est-ce que par exemple secondes renvoie bien le chiffre des secondes du ds1307 ?

Ou a t'il une fonction dans mikroc qui permettrait de me renvoyé de résultat ?

D'avance merci.




@++
Mon site web
Mon discord : venom#4888

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#19 Message par Jérémy » mar. 19 avr. 2016 08:15

Bonjour venom,

Tu as su effectivement lire la fonction .Mais pour être plus précis, elle ne renvoie pas de valeurs, mais enregistre les secondes lues, dans une variables appelée "secondes".

Nom MikroC te permet de lire la DS1307, c'est ensuite a toi de la traitée ( affichage stockage, modification ...) .

Ici on lit les secondes par liaison I²C en allant lire la DS1307 , et cette lue est directement enregistrer pour un traitement ultérieur.

N'hésite pas, si ce n'est pas clair
C'est en faisant des erreurs, que l'on apprend le mieux !!!

[resolu] DS1307 (RTC) + LCD + PIC 16F877 A
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#20 Message par Guest » mar. 19 avr. 2016 12:27

Bonjour

venom a écrit :

Code : Tout sélectionner

void Lecture_GDH(){

  I2C1_Start();                // Début de l'I²C
  I2C1_Wr(RTC_ADDR);           // Adresse du RTC ( 0xD0 cf datasheet)
  I2C1_Wr(0);                  // lecture à cette adresse ( N° registre)
  I2C1_Repeated_Start();       // On répète le signal de départ
  I2C1_Wr(RTC_ADDR+1);         // Adresse du DS1307 (1=lire / 0=ecrire)

  secondes = I2C1_Rd(1);          // Lecture et enregistrement de la valeur
  secondes = Bcd2Dec(secondes);   // Conversion de BCD en décimal pour l'afficheur
  minutes = I2C1_Rd(1);
  minutes = Bcd2Dec(minutes);
  heures = I2C1_Rd(1);
  heures = Bcd2Dec(heures);
       
  I2C1_Stop
();                    // Arrêt de l'I²C



Nous avons ici une fonction void Lecture_GDH() qui ne renvoi rien (void) et qui n'a aucun paramètre ()vide

Par contre cette fonction contient plusieurs fonctions (5 pour la gestion de I2c) et (6 que l'on répète ;) )pour la conversion lecture ic2 en BCD )
alors OUI la fonction "secondes = I2C1_Rd(1);" renvoi bien la lecture du registre seconde du DS1307, dans la variable secondes il serait, peut-être judicieux d'optimiser cette fonction (utilisation de pointeur).
mais c'est une autre histoire

A+


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités