swRTC

e si, il problema e' che capita sempre in giorni diversi, ed anche le domeniche potrebbero essere fino a 5 in un mese.
In piu' volendo lasciare a tutti gli utenti del mondo la gestione dell'ora legale, e' utile non inglobarla solo a livello di libreria, ma tenerla fuori, magari con un esempio apposito per l'italia, in modo che gli utenti internazionali guardando l'esempio possano facilmente adattarlo alla propria ora legale.

certo che dover usare un rtc esterno per "aggiustare" un rtc interno e' un giro astronomico :slight_smile:

visto che in ogni nazione ci sono ore legali in momenti diversi, in altre non c'e' proprio, si potrebbe pensare ad una libreria gia' solo per la gestione dell'ora legale nel mondo, da tener aggiornata quando le legislazioni dei vari paesi cambiano.

x l'europa in teoria la data e l'ora son sempre quelli:

Il protocollo che regolamenta l'ora legale è il seguente: nell'ultima domenica di marzo, quando scattano le ore 2:00 antimeridiane a Berlino gli orologi vengono spostati avanti di un'ora, cioè l'ora che inizia alle 2:00 e termina alle 3:00 viene soppressa. Nel passaggio inverso (che avviene l'ultima domenica di ottobre), quando scattano le ore 3:00 antimeridiane si riporta l'orologio indietro di un'ora, cioè l'ora che inizia alle 2:00 e termina alle 3:00 viene ripetuta due volte.

secondo me sarebbe da non attivare di default, se attivata con default sullo standard europeo, ma ovviamente con giorno e ora settabili dall'utente. non è difficile da fare, sono solo due IF, ma dovrei rivedere il codice perché crea un poco di casino con la gestione attuale.

@testato:
L'aggiornare un RTC interno usando un RTC esterno è un suggerimento che ho dato a te visto che pretendi da una routine interrupt-driven la precisione di un orologio atomico :stuck_out_tongue: :stuck_out_tongue:

Ora che ti sei accorto che anche gli RTC esterni possono essere fallaci, vedi con un occhio diverso la swRTC. :wink:

La swRTC è un succedaneo di un RTC, non potrà mai avere la stessa precisione. Per contro, permette di aggiustare lo scostamento in modo da rendere lo scarto il più piccolo possibile. Inoltre permette di fare operazioni che un RTC non potrebbe mai visto che è installata all'interno di un micro programmabile.

@lesto:
ho una mezza idea su come farla. Domani vedo se mi "applico"

si infatti, la swRTC ha ripreso vigore nella mia mente :slight_smile:

x lesto: anche io all'inizio ho pensao ad un paio di if, ma il problema deriva dal fatto che ogni anno i due cambi avvengono in date diverse, ed in settimane diverse.
Non e' che avviene sempre alla 40esima settimana ad esempio, ne' tantomeno in un mese ci sono sempre le stesse settimane.

Di certo non e' difficile per voi, ci mettete poco a risolvere, ma non sono due semplici IF :slight_smile:

visto che domenica prossima si cambia l'orario, il sw supererebbe un test reale se fatto in tempo
io sono pronto a testare :slight_smile:

x leo: hai usato la parola giusta, si intende per succedaneo un prodotto non sempre inferiore all'altro, infatti non e' vero che la tua libreria non puo' superare la precisione di un RTC, con i miei test abbiamo visto che un 1307 ha errori grossi, (non per colpa sua ma per l'oscillatore usato), e con il concetto di deltaT della tua swRTC si puo' tranquillamente superare la precisione di 50ppm (che e' lo standard dei quarzi economici)

BENE, FINALMENTE SIAMO RITORNATI SULLA RETTA VIA :slight_smile:
Non scordatevi che vi tengo costantemente d'occhio 8) Ho sempre seguito un pensiero coerente in merito a questa bella idea di Leo: deve essere qualcosa di autonomo, slegato da hardware esterno, implementabile in firmware più complessi, per sostituire un RTC hardware.
Tutto ciò avrà ovviamente delle limitazioni con le quali bisogna imparare a convivere; se ciò non avviene si comincia ad implementare sempre più hardware fino a ritornare al punto di partenza, cioè un RTC esterno con tanto di quarzo (la famosa morsicatura di chiappe di cui parlavo giorni fa :grin:) oppure, PEGGIO, creare un nuovo RTC a partire da un micro, con la scusa che è più economico.
Le limitazioni di cui parlo devono essere tollerabili ed adeguate a lavori in cui non serve una precisione atomica, quando invece essa serve si ricorre a strumenti specifici di precisione. Questo non significa che non si debba tendere alla perfezione, però se si arriva al limite, gli sforzi non valgono più l'obiettivo.
(da "Pillole filosofiche di saggezza" - Prof. Michele Menniti - Ed. Arduiniche - ott. 2011 - pagg. 1 post)

La perfezione è degli dèi, noi comuni mortali possiamo ricercare solo la massima precisione possibile. Domattina rimetto mano alla lib, dai. :wink:

leo72:
La perfezione è degli dèi, noi comuni mortali possiamo ricercare solo la massima precisione possibile. Domattina rimetto mano alla lib, dai. :wink:

ok, in contemporanea io procedo col mio progetto; siccome non so ancora se è il caso di aprire un Topic, ti mando un mp perché mi devi ricordare dei concetti che ho "perso", così ti dico a che punto sono. Poi rispondi con tutta calma, io non scappo. :slight_smile:

Risultato test:

  • Anche senza l'uso del monitor seriale ci sono ritardi dell'RTC. Se ne deduce che la lettura continua dell'rtc provoca ritardi all'RTC stesso.

Messo in test il solo RTC senza letture. a domani i risultati.

Quindi per ora lo scenario giusto sembra essere quello consigliato dal Leo, cioe' usero' l'RTC solo per correggere la swRTC ad ogni mezzanotte, la qual cosa la faro' con un chip termocompensato.

Non mi ricordo se te l'avevo già chiesto, ma perché hai bisogno di tutta 'sta precisione? :cold_sweat:

PS:
stamattina ho lavorato un po' alla lib, rivedendola. Oggi pom. sono stato fuori tutto il giorno, non ho potuto "produrre".
Domani vedo di rimettermi all'opera. Sto cercando un modo per snellirla più che si può, in modo che l'interrupt esegua il meno quantitativo possibile di operazioni.

per studio, per imparare nuove cose :slight_smile:
Voglio avere l'orologio a valvole piu' preciso al mondo senza usare gps o sincronizzazioni internet.

Se anche scoppia la 3 guerra mondiale, invadono berlino e chiudono il segnale di francoforte, abbattono i satelliti con missili spaziali, io saro' li' con il mio orologio con precisione 2 parti per milione :slight_smile:

Ho imparato tante cose, ad esempio l'esistenza dei quarzi tarati per oscillatori seriali o paralleli, oppure dei quarzi MEMS, che sono mantenuti su una sospensione microelettromeccanica per non farli soffrire dalle vibrazioni.

Metto tutto a disposizione della community e contribuisco a swRTC.

Il mio obiettivo finale e' essere menzionato nei ringraziamenti della stessa :slight_smile:

Testato:
per studio, per imparare nuove cose :slight_smile:
Voglio avere l'orologio a valvole piu' preciso al mondo senza usare gps o sincronizzazioni internet.

Se anche scoppia la 3 guerra mondiale, invadono berlino e chiudono il segnale di francoforte, abbattono i satelliti con missili spaziali, io saro' li' con il mio orologio con precisione 2 parti per milione :slight_smile:

Ho imparato tante cose, ad esempio l'esistenza dei quarzi tarati per oscillatori seriali o paralleli, oppure dei quarzi MEMS, che sono mantenuti su una sospensione microelettromeccanica per non farli soffrire dalle vibrazioni.

Metto tutto a disposizione della community e contribuisco a swRTC.

Il mio obiettivo finale e' essere menzionato nei ringraziamenti della stessa :slight_smile:

quando la pazzia diventa spettacolo XD XD XD Sei proprio un personaggio :slight_smile:

allora facciamo così: ti menziono subito così fermo lo sviluppo di questa libreria di cui tu sei al momento l'unico utente ]:smiley:

bella questa :slight_smile:
ma per precisione io ancora non l'ho usata la tua libreria (sto' aspettando il chip dell'rtc per modificare il mio con ds1307)

come unico utente attualmente c'e' la mangiatoia di Reizel :stuck_out_tongue:

leo72:
allora facciamo così: ti menziono subito così fermo lo sviluppo di questa libreria di cui tu sei al momento l'unico utente ]:smiley:

No Leo, non farlo =( io non ho occasione di usarla per ora, ma la sto seguendo con molta attenzione, pur avendo in casa almeno una decina di IC per RTC hardware, con altrettanti, o quasi, quarzi.

Testato:
come unico utente attualmente c'e' la mangiatoia di Reizel :stuck_out_tongue:

'sta cosa della "mangiatoia" mi sa tanto di presepe XD

Testato:
il solo RTC senza letture. a domani i risultati.

Risultato, persi 4 secondi, che sono in linea con la precisione di un quarzo economico

Un quarzo normale, quindi un rtc reale con ds1307, avendo 50ppm di precisione perde 26minuti all'anno.
Che per un uso come orologio secondo me sono inaccettabili
Quindi non e' che sto' cercando il pelo nell'uovo.

Prossimi test con il chip da 2ppm appena mi arrivano i sample dalla maxim

Testato:

Testato:
il solo RTC senza letture. a domani i risultati.

Risultato, persi 4 secondi, che sono in linea con la precisione di un quarzo economico

Un quarzo normale, quindi un rtc reale con ds1307, avendo 50ppm di precisione perde 26minuti all'anno.
Che per un uso come orologio secondo me sono inaccettabili
Quindi non e' che sto' cercando il pelo nell'uovo.

Prossimi test con il chip da 2ppm appena mi arrivano i sample dalla maxim

Una curiosità, ma quale fonte di riferimento usi per calcolare quanta variazione ha l'RTC? Hai l'atomico o che altro?

rispetto ad un casio radiocontrollato

Secondo me, per l'uso che ne fà l'utente medio và più che bene... Chi mi assicura che il mio orologio da polso non perde colpi? Quanti ne perde?
Se poi si sà che l'rtc perde 4 sec al giorno ogni 15 giorni si può mandare avanti 1 minuto da software... :grin:

gcblack:
Secondo me, per l'uso che ne fà l'utente medio và più che bene... Chi mi assicura che il mio orologio da polso non perde colpi? Quanti ne perde?
Se poi si sà che l'rtc perde 4 sec al giorno ogni 15 giorni si può mandare avanti 1 minuto da software... :grin:

SE l'errore è assoluto, come tu stai dando per scontato, allora è risolvibile dalla libreria swRTC settando il deltaT.

Ma l'errore potrebbe essere relativo: ora a perso 4 secondi, domani 10 dopodomani corre troppo di 2... e qui casca l'asino.

edit: ci servono test di lunga durata con dati grezzi, che così possiamo raggruppare in tanti intervalli di tempo più piccoli per capire quanto influisce l'errore assoluto e quanto quello relativo.altrimenti stiamo solo facendo castelli per aria.