Nano every RTC secondi corti

Ciao a tutti, sto creando un progetto un po' articolato con una nano every e diverse periferiche quali:
Display grafico sh1106 con u8g2 lib in I2C
Ds3231 con RTClib, sempre in I2C ovviamente
Ds18b20 con OneWire
SD card module SPI usando SD.h e SPI.h

Qualche transistor e qualche relè a corredo.
Premetto che lavorando con una nano normale non avevo questi problemi ma che per questioni di memoria son dovuto passare alla every per non fare nuove PCB.
Tutto il sistema funziona anche sulla every con le dovute modifiche.
Oggi durante le prove dopo avere fatto tutte le modifiche al codice della versione con la mano normale, ho riscontrato alcune anomalie che per ora non sono riuscito a eliminare.
Una di queste, la più assurda, è che alimentando il circuito tramite alimentatore esterno quindi su Vin il mio orologio inizia a correre e i secondi sul display vanno veloci e si prende circa 5 secondi ogni minuto, se alimento il micro con la USB il tempo scorre normale... Non mi spiego il perché...
Altra anomalia è che quando attivo il datalogger su SD ad ogni scrittura una delle uscite, anche se disabilitata si attiva per un breve istante, ma solo al momento della scrittura... questo avviene in senso contrario quando l'uscita è abilitata, mentre scrive disattiva l'uscita per una frazione di secondo.
Diciamo che sulla seconda non ho lavorato perché mi stavo scervellando sulla prima.
Confido in una delucidazione da parte di voi sicuramente più esperti di me, io non sono un abile programmatore mastico qualcosa di c ma giusto per il necessario.

@simo_2021 : ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

Guglielmo

Grazie Guglielmo, ho fatto un po' di confusione...

Ho cambiato titolo perché ho continuato a fare delle prove e delle variazioni sul codice ma con scarsi risultati. Continuo ad avere il fastidioso problema che alimentando la mano con il PIN Vin i secondi a display e quindi anche sul datalogger su SD sono troppo corti ovvero "scorrono" più rapidamente e va avanti inesorabile di circa 5/6 secondi al minuto. Se alimento con la USB il tempo scorre normalmente.
Il paradosso dei gemelli einsteiniano avviene nello stesso luogo su corpi fermi! Potrei aver stravolto le leggi della fisica oppure sto cannando qualcosa?
La 32k del modulo rtc misurata è estremamente 32768 hz, misurata con un Tektronix TDS 2002 vecchio ma affidabile. Non trovo la via d'uscita.
Qualcuno ha avuto esperienze simili?
Grazie a tutti!

Se non sbaglio questa scheda può essere usata in "compatibility mode", tu come la stai usando?

La cosa determinante sembra essere proprio la fonte di alimentazione anche se non ci vedo il nesso al momento.

Sinceramente conosco molto ma molto poco questa scheda, ho dato una sbirciata al core lib ma ancora non ho scaricato il datasheet.

Non puoi essere solo tu lo sfortunato che ha questo inconveniente per cui cerca online e
forse qualcuno prima di te ha già svelato l'arcano mistero.

Ciao.

Ciao, ho provato ad usarla anche in emulazione dei registri del 328,ma il risultato è analogo.
Conosco pochissimo il suo processore e pochissimo ho lavorato su questa scheda. Sono praticamente stato costretto.
In rete non ho trovato nulla, ma mi sorprende il fatto che se il tempo lo pesca dal 3231, se ha il suo oscillatore e lavora praticamente per conto suo, come può, una volta interpretato dal processore, accelerare? Ho fatto qualche verifica hardware verificando lo schema e le tensioni in gioco sul lato 5v variano di 10mv al massimo in positivo alimentando tramite Vin. Una variazione che non dovrebbe comportare nulla al livello del processore.
Stiamo comunque parlando di tensioni che non superano mai I 5v.

No non si fa, così mi confondi ulteriormente, cosa c'azzecca il 3231, :grinning:
Il 4809 ha RTC interno ed un main clock super complicato. .... lo pesca dal 3231?

A questo punto se c'è RTC esterno c'è da puntare il dito verso la nano o verso RTC?
In sostanza chi corre?

Ciao.

Bella domanda, si il 4809 ha il suo RTC, ma non mi è balenato un istante di usarlo....uso il ds3231 per praticità.
Ripeto se lascio la every alimentata da USB dopo 8 ore non ha sgarrato di un secondo. Se, pure con la USB attaccata alimento il tutto da Vin inizia la folle corsa, 5 secondi al minuto!!! Non è che i due RTC fanno a gara a chi è più veloce??:joy::joy:
Sto impazzendo!

Allora proviamo a puntare il dito verso il DS assolvendo la nano every, Posta link a RTC esterno.

Ciao.

Ok, appena rientro in Lab, ora son fuori per lavoro, penso domani sera di riuscire a condividere qualcosa.
Grazie ciaoo

Ciao! eccomi, in questi giorni che ero al lavoro fuori ho lasciato il circuito acceso e alimentato solo con la usb, risultato: nessuna differenza di orario, lo avevo sincronizzato col cellulare prima di partire e lo ho ritrovato in perfetto orario...
Per quanto riguardi il link all' rtc esterno uso la libreria RTClib quindi fa tutto lei, in pratica. mi pare difficile associare la anomalia al DS3231, se ci fosse qualche problema software/ di configurazione, lo mostrerebbe anche alimentando dalla porta usb...invece come ho detto, nemmeno un secondo di sgarro in oltre 48 ore...
Sto continuando a ricercare in rete ma non trovo nulla al riguardo.
Voi che siete più ferrati di me, cosa cambia a livello circuitale alimentando via Vin? dallo schema si vede chiaramente che le due 5V sono "interfacciate" con un diodo e basta, quindi dopo il regolatore diventano la Vcc del micro. quale altra influenza può avere la Vin?
Ciaoo

Comunque chiamo la rtc nel loop per definire le timestamps di ora corrente e data corrente. ( ho anche provato a creare io le array per le timestamps senza passare per le string ma nulla..)
chiamo la rtc anche in altre "void" dove la uso per crearmi la pagina di regolazione dell'orologio, la uso per salvare i riferimenti temporali nel datalogger su SD e la uso sulla Home per mettere a display appunto la data e l' orario corrente.
Tutto qua. procedure che ho usato decine di volte senza mai avere un problema simile.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.