Ciao a tutti, mi trovo con uno strano problema con un modulo RTC DS1307.
Ho seguito esattamente questo schema:
E caricato questo sketch:
/*Reads the value from a Real Time Clock (RTC) DS1307 and displays it in the serial monitor
*
*Created by D. Sjunnesson 1scale1.com d.sjunnesson (at) 1scale1.com
*
*Created with combined information from
*http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1180908809
*http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1191209057
*
*
*Big credit to mattt (please contact me for a more correct name...) from the Arduino forum
*which has written the main part of the library which I have modified
*
*/
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h> // written by mattt on the Arduino forum and modified by D. Sjunnesson
void setup()
{
Serial.begin(9600);
RTC.stop();
RTC.set(DS1307_SEC,1); //set the seconds
RTC.set(DS1307_MIN,31); //set the minutes
RTC.set(DS1307_HR,17); //set the hours
RTC.start();
}
void loop()
{
Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
Serial.print(":");
Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
Serial.print(":");
Serial.print(RTC.get(DS1307_SEC,false));//read seconds
Serial.println();
delay(500);
}
Il problema sta nel fatto che guardando nel monitor seriale, ogni tanto l'output da uscita tipo 0:0:0
ma lo usi contemporaneamente con batteria ed attaccato alla alimentazione ?
stavo pensando che:
se e' alimentato solo a batteria e la stessa si stacca, non dovrebbe poi riprendere dal giusto orario. quindi non puo' essere.
Pero' se invece e' alimentato contemporaneamente da alimentatore e batteria, e la batteria ha falsi contatti, puo' capitare, perche' questi chip vogliono la presenza della batteria sempre, anche se alimentati esternamente, e contemporaneamente l'alimentazione esterna non gli fa perdere l'orario.
Testato:
ma lo usi contemporaneamente con batteria ed attaccato alla alimentazione ?
stavo pensando che:
se e' alimentato solo a batteria e la stessa si stacca, non dovrebbe poi riprendere dal giusto orario. quindi non puo' essere.
Pero' se invece e' alimentato contemporaneamente da alimentatore e batteria, e la batteria ha falsi contatti, puo' capitare, perche' questi chip vogliono la presenza della batteria sempre, anche se alimentati esternamente, e contemporaneamente l'alimentazione esterna non gli fa perdere l'orario.
Si esattamente, viene alimentato sia dalla batteria al litio da 3v (che è carica) e poi arduino alimentato tramite usb(che in questo modo sono anche riuscito a vedere il problema tramite seriale).
Quindi dici che se la batteria da 3v ha dei falsi contatti può essere che dipenda da questo?
per la batteria non può dare problemi, la batteria da 3 volt interviene SOLO quando manca l'alimentazione al chip, se il chip è alimentato è come se non esistesse
Dubito che la batteria da questo genere di problemi comunque puoi toglierti il dubbio e toglierla durante i test; il pin dove va il positivo della batteria mettilo a massa. L'rtc senza batteria funziona ugualmente solo che quando togli l'alimentazione si resetta.
Comunque adesso hai messo le resistenze di pullup su SDA e SCL?
Hai qualcos'altro sul bus I2C?
io ricordo note ufficiali sul fatto dell'obbligatorieta' della presenza della batteria, non e' che non fuziona, io anche ho rpovato, pero' se cerchi info vedrai che molte volte sono venuti fuori problemi a questi ds usati senza batteria
Pelletta:
Comunque adesso hai messo le resistenze di pullup su SDA e SCL?
Quoto.
Ed inoltre attento perché quello schema potrebbe crearti dei casini. Se noti la batteria è collegata alla colonna "+" di sinistra della breadboard che poi va solo al pin 3 (Vbatt) del DS1307. Attento a non collegare questa linea con la colonna "+" di destra, che invece va ai 5V dell'Arduino.