Bug libreria ds1307

usando la libreria del link seguente non si possono settare i secondi. cioe' anche usando

 RTC.set(DS1307_SEC,51);        //set the seconds

quando si vanno a leggere partono sempre da zero

ho aperto una issue ma credo che l'autore sia latente, qualche softwarista potrebbe controllare la libreria ? probabilmente e' una stupidaggine.

leggo che la libreria nasce proprio dalla collaborazione del forum arduino.
http://code.google.com/p/ds1307/

Sí, perde i secondi:
Se guardi la libreria vedi:

void DS1307::start(void)
{
  // unset the ClockHalt bit to start the rtc
  // TODO : preserve existing seconds
  rtc_bcd[DS1307_SEC]=0;
  save();
}

Non é un bacco; é voluto.
Ciao Uwe

ma con il To Do, intende che in futuro vuole invece settare anche i secondi ? ù
e' difficile modificarla in modo da mantenee i secondi ?

È da domandarsi se ha senso preservare i secondi visto che per programmare l' ora (settare i variiregistri) il RTC lo si ferma e lo fa ripartire dopo la modifica.
Ciao Uwe

pero' cosi' siamo costretti a regolare l'orologio per forza a zero secondi.
Se io voglio regolare l'rtc alle 12.10.30 non posso farlo, devo per forza aspettare che siano le 12.11.00

eh... sí.
Ti chied anche quanto preciso é il Tuo RTC. Il mio (Sparkfun) sbaglia parecchi secondi al giorno
Ciao Uwe

e' normale, nn dipende dal chip ma dal quarzo, se riesci a capire che modello e' il tuo quarzo puoi vedere per quanti ppm di errore e' dichiarato. in genere siamo sui 50ppm quindi quell'errore e' normale.
io sono passato ad un termocompensato, il ds3132, e quindi non ho piu' problemi.

hai provato altre librerie per il ds1307?

ho visto che ce ne sono molte, ma visto che questa l'ho gia' usata non volevo perdere tempo a cambiarla.
Alla fine il discorso del settaggio secondi e' solo per velocizzare i test, sto' testando il discorso ora legale, ed ad ogni modifica mi tocca aspettare 59 secondi :slight_smile:

Adesso capisco
allora modifica la libreria e scrivi al posto di 0 adesso 58

void DS1307::start(void)
{
  // unset the ClockHalt bit to start the rtc
  // TODO : preserve existing seconds
  rtc_bcd[DS1307_SEC]=58;
  save();
}

Cosí cambia l' ora dopo 2 secondi.
Ciao Uwe

ok, grazie, e poi quando avro' finito i test lo rimetto a 0 che e' piu' semplice per regolare l'orario.