domanda modulo rtc DS1302

buonasera ragazzi,
ho una domanda sul modulo rtc DS1302.

ho iniziato collegando il mio modulo ad arduino, prendo la libreria apposita e faccio girare un esempio per settare l’rtc.

quando però vado a stampare a seriale mi stampa sempre la stessa ora (giorno e data gli stessi ovviamente, fin quando non cambia).

se stacco dall’alimentazione il modulo, questo si aggiorna, e se dopo un tot di secondi, maggiori o uguali a uno, rileggo l’rtc l’ora è cambita di quel tot di secondi (se stacco per 2 sec ho l’ora 2 sec più avanti).

sembra quasi che il clock dell’rtc stia fermo quando è alimentato da arduino e invece funzioni quando il modulo non viene alimentato da arduino.

a voi è mai successo?

metto lo sketch che ho usato per settare e successivamente stampando a video le date(fatto il primo sketch l’ho ripetuto commentando il settaggio nel setup).

#include <DS1302.h>

// Init the DS1302
DS1302 rtc(8, 7, 6);

void setup()
{
  // Set the clock to run-mode, and disable the write protection
  //rtc.halt(false);
  rtc.writeProtect(false);
  
  // Setup Serial connection
  Serial.begin(9600);

  // The following lines can be commented out to use the values already stored in the DS1302
  /*rtc.setDOW(2);        // Set Day-of-Week to FRIDAY
  rtc.setTime(15,45, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(3, 11, 2015);*/   // Set the date to August 6th, 2010
}

void loop()
{
  
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating :)
  delay (1000);
}

ho guardato in rete (ho provato con e senza resistenza da 220 ma è lo stesso) l’unica soluzione che ho trovato fino d’ora è quella di mettere il vcc dell’rtc su pin digitale e metterlo in high quando leggo l’rtc e poi, una volta letto, lo metto low.

ditemi voi come devo proseguire se posso “accontentarmi” di questo trucco o no.

grazie

buona serata a tutti

Aggiornamento

provo riprovo, ora non va più con il trucco spegni accendi digitale, ma con la resistenza sembra andare solo che ora l'orario mi si aggiorna ogni 6 secondi....

avete qualche idea su come fare a farlo aggiornare ogni 1 secondo?

lo sketck sempre quello di prima.

unica cosa che ho caricato sketch senza resistenza, mi visualizzava cose strane allora ho messo la resistenza, tutto ok solo per il fatto che aggiorna ogni 6 secondi l'orario....

help me please :slight_smile:

Ciao non so se dico una castroneria, ma mi sembrava d’aver letto che l’rtc solamente la prima volta che si mette la batteria va settato con uno sketch apposta poi una volta fatto queste due operazioni da lì in poi con un’altro sketch basta dargli i comandi di lettura…

ri-aggiornamento

buongiorno ragazzi,
oggi faccio ancora delle prove con il DS1302, guardo in rete e trovo varie cose,
provate tutte, l'unica che mi ha dato risultati è stata mettere una resistenza da 1k prima del gng, quandi rtc va in gnd tramite resistenza di 1k.
tutto ok setto l'orario al primo colpo, mi si aggiorna un secondo alla volta, PERFETTO.

allora provo a vedere se gira il clock del DS1302, riattacco tutto e...

tac, resettato tutto, mi riparte dalla data base, anzi ancora prima quella, prima almeno partiva dal 2010 ora dall'anno zero :slight_smile:

ho visto che con questo tipo di rtc si può ricaricare la batteria, non è il mio caso perchè utilizzo le batterie tipo quelle del bios, quelle piatte.

questa è la mia domanda è possibile che ho disabilitato la batteria del modulo?

secondo me è l'unica possibilità (forse :slight_smile: ) , perchè non mi viene in mente niente altro....

voi cosa ne pensate?

Nel setup hai queste due righe

  rtc.setTime(15,45, 0);     // Set the time to 12:00:00 (24hr format)[color=#222222][/color]
  rtc.setDate(3, 11, 2015);*/   // Set the date to August 6th, 2010

Se non le elimini ogni volta che effettui un reset sull'RTC viene scritta quella data.

buongiorno ragazzi,
zoomx ho fatto così:

allora faccio partire sketch con quelle righe di codice per settare il tempo, le commento e ricarico lo sketch... va bene commentarle o devo proprio cancellarle? sbaglio in qualche passaggio o non faccio i passaggi giusti?

altra domanda cosa intendi per resettare l'rtc? togliergli corrente?

grazie a tutti

buona giornata...

Anche commentarle va bene ma la soluzione definitiva è aggiungere del codice per aggiornarlo da sketch altrimenti al passaggio dall'ora estiva a quella invernale hai già problemi.
Purtroppo la stragrande maggioranza degli esempi usa il sistema con le righe che poi vengono commentate ma è possibile fare di meglio.

Per reset intendevo quello di Arduino. Ad ogni reset di Arduino viene eseguito una volta sola quanto scritto nel setup. Siccome nel setup c'erano le righe per settare un orario fisso ogni volta che avevi un reset dell'Arduino settavi daccapo quell'orario.

ciao,
ho anch’io il modulo RTC con il chip DS1302 sono andato a rivedere lo sketch che avevo fatto e ho notato che innanzi tutto avevo trovato un’altra libreria per farlo funzionare che è la <virtualbotixRTC.h> vabbè cmq sarà lo stesso anche con la tua, e poi avevo dovuto fare delle funzioni aggiuntive come diceva zoomx per farlo funzionare al meglio
tipo una funzione con switch/case perchè i “dayofWeek” me li restituiva in numeri…
oppure un’altra per mettere gli zero all’orario… con un if
oppure anche per l’ora legale…

segui questo link:
https://www.virtuabotix.com/virtuabotix-ds1302-real-time-clock-module-pin-out-coding-guide/
loro te lo spiegano meglio di me

// il CE è il pin sull’RTC marchiato RST :slight_smile:

buongiorno ragazzi,
scusate l'assenza ma ho avuto problemi di connessione in questi giorni.
grazie per i consigli, vedrò di fare delle funzioni aggiuntive, ho capito cosa vuoi dire zoomx.
d3kdavid quella libreria l'ho già provata, se dici che la usavi anche tu provo a riusarla... (io il tuo problema l'ho risolto mettendo una resistenza da 220 dul data e una da 1k sul gnd), si avevo già visto che il pi CE era il reset :slight_smile:
grazie

buona giornata