DS1307 aggiunge un offset a data e ora

Ciao a tutti, premesso che riesco a far funzionare senza problemi questi RTC con DS1307 (TinyRTC), ho un problema con un solo modulo in particolare, per cui evito di postare l'intero codice visto che su altri funziona. Ho scoperto che un modulo mi dava valori sbagliati di data e ora, anche se la impostavo con:

RTC.adjust(DateTime(DATE, TIME));

Per cercare di capirci qualcosa in più, ho provato a impostarla manualmente al 01/01/2000 00:00:00

RTC.adjust(DateTime(2000, 1, 1, 0, 0, 0))

e ho visto che lui mi restituiva:

3/3/2002 2:2:2

In pratica aggiunge un offset pari a 2 a tutti i campi della data/ora. In effetti impostando la data/ora corretta con la prima funzione, i valori che leggevo avevano tutti un +2. Es. anno 2021, mese 13 (!!!), giorno 10, e così via. E' un +2 costante ovunque. Da cosa può dipendere? Lo stesso codice su altri moduli restituisce il valore che imposto. Ho provato a scollegarlo, a togliere la batteria ma non cambia nulla. E' come se nell'hardware c'è scritto da qualche parte che deve mettere quest'offset. Idee? Grazie

Quale bibliotheca stai usando (prego link)? Secondo me serve proprio lo sketch per capire qualcosa. Ciao Uwe

Ciao, la libreria l'ho scaricata da qui...avendo seguito il suo tutorial. https://www.mauroalfieri.it/elettronica/tutorial-rtc-shield-con-ds1307.html Per intenderci, con uno stesso arduino/wemos su cui gira lo sketch che imposta la data/ora, se collego due TinyRTC funziona correttamente. Senza neanche disalimentarlo, con lo stesso monitor seriale aperto, scollego questi TinyRTC e collego quello in questione e si presenta il problema...lo scollego e ricollego gli altri e funzionano. Sarà qualcosa a bordo del modulo...non so se sul DS1307 o sulla EEPROM presente sul modulo. Come si possono cancellare/reinizializzare queste memorie? grazie

PS: i moduli sono questi blu quadrati: https://tinyurl.com/y4pzus93

Il DS1307 NON ha registri per memorizzare un offset, quindi … ho l’impressione che, dato che gli altri ti funzionano correttamente, sia proprio guasto quel modulo.

Ti allego il datasheet del DS1307 così puoi vedere quali sono i registri e cosa puoi impostare …
… è così banale da usare che si può tranquillamente fare senza librerie dedicate, basta la sola Wire.h per la gestione dell’I2C :wink:

Guglielmo

DS1307 (I2C Real-Time Clock).pdf (276 KB)

Sei sicuro che il DS1307 non funzionante sia veramente un DS1307?

Con che tensione alimenti il modulo DS1307? Che tensione ha la batteria (prego misurare)

Ciao Uwe

uwefed: Sei sicuro che il DS1307 non funzionante sia veramente un DS1307? ....

Uwe, parla degli stessi moduli "TinyRTC"

Collegati tutti allo stesso modo, 2 funzionano bene ed uno da valori sbagliati ... ::)

Guglielmo

Comunque vorrei che leggesse il numero sull'integrato. Ciao Uwe

gpb01: Uwe, parla degli stessi moduli "TinyRTC"

Collegati tutti allo stesso modo, 2 funzionano bene ed uno da valori sbagliati ... ::)

Guglielmo

Comunque vorrei che leggesse il numero sull'integrato del modulo che non funziona e lo confrontasse con quello funzionante. Ciao Uwe

Ciao Uwe e Guglielmo, grazie per l'interessamento... tutti gli integrati sono marcati DS1307Z (tutti e 5 i moduli li ho acquistati insieme in un unico lotto). La tensione di batteria di quello "KO" è 2.93V...un po' sotto ma non penso sia un problema, anche perchè il difetto lo fa sin dall'inizio quando dovrebbe essere alimentato da USB...credo

In questi gg ho trovato uno sketch per scrivere e "azzerare" la EEPROM vicina al DS1307. Anche qui se scrivo tutti i byte 00 e provo a rileggere, leggo tutti 02!! :slightly_frowning_face:

Ad ogni modo questo mio problema alla fine è solo curiosità di capire che può essere successo, sia per il costo del modulo, sia perchè anche con questo strano offset potrei comunque utilizzarlo in un progetto "semplice": un sistema che da i croccantini ai gatti ad una certa ora, ogni 24h. Credo che basta tener conto di questo offset per non avere problemi (se voglio che i croccantini escano alle 10, basta che imposto ora_pranzo=8 ;)

paul_cnc: Ad ogni modo questo mio problema alla fine è solo curiosità di capire che può essere successo, sia per il costo del modulo, sia perchè anche con questo strano offset potrei comunque utilizzarlo in un progetto "semplice" ...

NO, per quello che costa lo BUTTI e ne prendi uno nuovo ... quello è guasto e ... ... rischi di lasciare senza pranzo i gatti :D :D :D

Guglielmo

D'accordo! Seguirò il tuo consiglio! ;) :D