Go Down

Topic: [RESOLU] branchement module DS1307 RTC sur leonardo (Read 2755 times) previous topic - next topic

cannard

Sep 23, 2012, 12:38 pm Last Edit: Sep 25, 2012, 05:36 pm by cannard Reason: 1
bonjour à tous,

après maintes recherches j'ai trouvé qu'il fallait branché le module RTC sur la prise SDA et SCL du leonardo (apparemment reliées au entrées D2 et D3, comme on peut le voir ici : http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf)

mais avec un "setsyncprovider" je n'ai pas de réponse du module RTC...

merci d'avance  

SesechXP

#1
Sep 23, 2012, 02:14 pm Last Edit: Sep 23, 2012, 08:21 pm by SesechXP Reason: 1
Salut,

Effectivement sur la Leonardo les broches SDA et SCL sont respectivement sur D2 et D3. Par contre je ne vois pas à quoi correspond ton "setsyncprovider". Quelle bibliothèque utilises-tu ? Au cas où, il existe la bibliothèque RTClib d'Adafruit...

++
Julien - www.idreammicro.com

barbudor

Ne pas oublier que pour que l'I2C fonctionne il faut aussi 2 résistances de pull-up, une pour chaque signal SDA et SCL (4K7 c'est pas mal).
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

cannard

#3
Sep 23, 2012, 03:00 pm Last Edit: Sep 23, 2012, 03:03 pm by cannard Reason: 1
alors, dans un premier temps voici les parties de codes qui concernent l'heure :

Code: [Select]

#include <Time.h>  
#include <Wire.h>  
#include <DS1307RTC.h>  // a basic DS1307 library that returns time as a time_t

[...]

void setup() {
 [...]
 // setup RTC clock
 setSyncProvider(RTC.get);   // the function to get the time from the RTC
 [...]
}



j'ai bien sur une boucle loop dans mon code, mais c'est le setup qui bloque au niveau de la fonction "setSyncProvider(RTC.get)"

pour le cablage, sur l'arduino leonardo il y a deux entrées : sda et scl que j'ai reliées directement aux entrées correspondantes sur le module RTC
(celui que j'ai pris est celui-ci, pour ce qui est du cablage et du code j'ai suivi ce tuto)

voilà, pour ce qui est des résistances de pull-up je viens de voir à quoi cela correspond, j'espère que je n'ai pas fait de bêtises à brancher en direct...

edit : je viens de jeter un œil au travail d'adafruit, je vais essayer de charger ce code voir ce que ça donne...

barbudor

#4
Sep 23, 2012, 03:04 pm Last Edit: Sep 23, 2012, 03:06 pm by barbudor Reason: 1

voilà, pour ce qui est des résistances de pull-up je viens de voir à quoi cela correspond, j'espère que je n'ai pas fait de bêtises à brancher en direct...


Pas d’inquiétude, cela empêche juste la liaison de fonctionner. pas de risque.

Il est possible que le fait que la liaison ne fonctionne pas bloque la lecture de la RTC ce qui bloque setSyncProvider()

Tu peux essayer tout d'abord la fonction RTC.get() toute seule dans le loop pour essayer de lire la RTC.
Elle renvoi un entier long (time_t == unsigned long)  qui s'incrémente toute les secondes.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

cannard

ouf :smiley-roll-sweat:, si déjà je n'ai pas tout cramé c'est bien...

donc avant de refaire (potentiellement mal), je dois donc faire un montage de ce type :

avec à la place des entrées analogiques les entrées sda et scl du leonardo

et pour les résistances il faut donc 4KOhm, c'est ça ?

barbudor

C'est cela, sans oublier que le GND du DS1307 doit aussi être relié au GND de l'Arduino : continuité des masses
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

cannard

ça c'était déjà fait pour la masse, donc tip top

me reste plus qu'à chasser de la résistance de 4KOhm dans mon matériel de récup...

je mettrais des news quand ce sera fait ;)

barbudor

n'importe quoi entre 2K2 et 10K devrait faire l'affaire sur une courte distance
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

cannard

#9
Sep 23, 2012, 07:13 pm Last Edit: Sep 23, 2012, 07:23 pm by cannard Reason: 1
si en plus ça tolère autant c'est top :D

par contre il faut deux résistances identiques je suppose ?

edit : 2KOhm ça passe ou c'est vraiment pas assez ?

barbudor

même pas,mais reste sur des valeurs proches
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

skywodd

Bonjour,

De mémoire la librairie Wire (enfin la librairie TWI qui est caché derrière Wire) active les résistances de pull-up intégré à l'arduino.
Par contre sur l'ATmega32u4 je sait pas si les pull-up sont disponible en mode I2C ...
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

68tjs

Ta mémoire est bonne, mais des résistances internes de tirage au +5v qui peuvent faire jusqu'à 70kohms -> pour de l'I2C bof.......
il est quand même préférable de prendre les valeurs indiquées par Barbudor.

cannard

une dernière question :

si je branche sur le 3.3V au lieu du 5V, est-ce qu'une résistance comprise entre 1.5KOhm et 6.5KOhm fera l'affaire ?

(nota : 3.3*2.2/5=1.5 et 3.3*10/5=6.5)

au vu de mes faibles connaissances en élec je dirais que oui, mais je ne comprends à vrai dire pas trop à quoi servent ces résistances (imposer une certaine intensité dans le circuit ? ou une certaine tension ?)

barbudor

Il faut que les résistances tirent vers la même tension qui alimente les 2 composants, soit 5V pour une Arduino standard, et j'espère que ton DS est aussi alimenté en 5V.

Ces résistances de pull-up sont nécessaires car les signaux I2C ne sont bidirectionnels. Les composants se contentent de tirer vers le bas ou de laisser le signal en l'air. Il faut donc une résistance pour rappeler le signal au niveau haut pour signifier niveau haut.
Cela est pour éviter que par suite d'une erreur 1 composant tire le signal en bas et qu'un autre le pousse en haut, résultant en une destruction.

Tu trouves rien dans tes tiroirs ?

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Go Up