DS1307 imposta l'ora, la ricorda, ma non cammina.

Salve a tutti,
Mi sto leggermente scervellando per far funzionare un apparentemente semplice RTC basato su DS1307. Come da titolo riesco abbastanza facilmente ad impostare l'orario tramite le librerie esistenti. Il problema sta nel fatto che l'ora rimane ferma, non cammina. Scollegandolo e ricollegandolo l'orario (seppur fermo) viene ricordato, quindi direi che la batteria da 3V funziona.
Allego lo schema del circuito che sto usando.
Qualcosa mi sfugge? Va impostato qualcosa tramite un comando i2c per dire al ds1307 "inizia a camminare"? Grazie

Sembra che tu non abbia inizializzato l'RTC.

Nel setup, dopo aver inizializzato Wire, devi inizializzare lo RTC.

Sto usando le librerie Time ed DS1307RTC che sono linkate qui: Arduino Playground - HomePage
In particolare nella libreria DS1307RTC sono presenti due programmi di esempio: uno per settare l'ora ed uno per leggerla.
Collego il mio RTC alla mia UNO (5V, GND, SDA, SCL) ed accendo.
Carico il programma per settare l'ora, il quale in automatico imposta subito l'ora sull'RTC, e va alla grande.
Subito dopo carico quello per leggere l'ora, il quale parte e sul monitor seriale inizia a stamparmi l'orario ad intervalli regolari, ma questo resta sempre invariato, fisso su quello fissato con il programma precedente.
In entrambi i casi non inizializza nulla nel setup, però visto che il primo programma funziona, presumo che lo faccia direttamente dentro le librerie che importo...

comincio a sospettare che il mio quarzo non faccia il suo dovere. Qualcuno sa consigliarmi un modo semplice per testarne il funzionamento? purtroppo non ho un oscilloscopio...

Il DS1307 ha un pin dove fa uscire un segnale rettangolare. Se il clock funziona dovresti misurare qualcosa come 2,5V.
Ciao Uwe

purtroppo non da segni di vita, sempre 0V. Possibile che la causa sia il fatto che le piste che collegano il quarzo al ds1307 non abbiano proprio la stessa lunghezza?

Il DS1307 ha un pin dove fa uscire un segnale rettangolare.

Solo però se è stato programmato il registro 7 in tal senso.

@ virgafox:

Tre cose ...

... primo, impara a leggere i datasheet così da capire come funzionano i vari chip. In allegato quello del DS1307.

... secondo, io ti consiglio di imparare a gestire TU direttamente il DS1307 senza passare per inutili librerie. E' un chip molto semplice e, qui sul forum, se ne è parlato ampiamente ed in dettaglio. Ad esempio, prova a seguire questa vecchissima discussione da QUI in poi e capirai di cosa parlo :wink:

... terzo, come specificato a pagina 8 del datasheet, verifica che il bit 7 del registro 0 sia a LOW perché, altrimenti, comunque il clock è fermo.

Guglielmo

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

Quarto, pubblica il link alla libreria che stai usando e allega lo sketch completo altrimenti parliamo di aria fritta :wink:

Per me è il quarzo..... a me si è rotto per una caduta del PCB a terra, un volo di soli 50cm ed è morto :disappointed_relieved: