Il Fishino uno e' munito di un chip orologio ds 1307,che grazie a una minibatteria puo' mantenere il tempo anche con scheda spenta.
C'e' pero' un problemino : a quanto vedo l'unico modo di programmare ora e data e' una riga di comando inserita nella zona "setup",contenente i dati da inserire.
Il fatto e' che alla riaccensione della scheda si avra inevitabilmente un autoreset,con ri-esecuzione dei
comandi di setup,che riprogrammeranno nuovamente l'orologio ai valori di inizio.
Per cui l'orologio diventera inutile,perlomeno diventera inutile la batteria di backup.
C'e' modo di evitare questo inconveniente ?
Alcune indicazioni ...
-
caricare un programma che imposta la data/ora giusta e poi caricare qualche cosa d'altro. Il RTC prosegue da solo fino a quando c'è batteria o alimentazione e non serve più andare a scrivere l'ora, ma solo leggerla.
-
ovviamente, per quanto preciso, anche l'RTC dopo qualche tempo perde/guadagna secondi e quindi si deve prevedere nel programma una funzione che, ad esempio dalla seriale, riceve una stringa che, scomposta permette di regolare data ora ... esempio, basta fare il parsing di:
SETDT,21,12,21,22,06,30
che deve essere interpretato come un comando che dice di impostare l'ora a yy,mm,aa,hh,mn,ss.
E solo un semplice esercizio di sofware ... si legge da seriale e si usano le funzioni della <string.h> per fare il parsing, recuperare i vari elementi e rimettere l'ora. -
Altro modo potrebbe essere quello di usare due pulsanti, come su alcuni orologi digitali. Verificando la durata della pressione dei tasti e la sequenza si imposta la data/ora ... ancora ... un esercizio software non troppo compilcato da realizzare.
Di certo NON si deve lasciare nel codice la riga che inizializza l'RTC alla __DATA__ (data di COMPILAZIONE) ed a __TIME__ (ora di COMPILAZIONE) perché, altrimenti, ogni volta si riparte dalla stessa ora ed è errato.
Guglielmo