contatore su memoria esterna

buon giorno, ed eccomi con una nuova domanda! (non odiatemi) sempre sul mio fedele arduino mega vorrei memorizare una variabile (data da un conteggio) su una memoria ROM, leggendo sul forum ho letto che quella dell'arduino ha un numero di scritture limitato quindi volevo chiedere:

1)sarebbe consigliato usare delle EERAM giusto ? 2) dove potrei aquistarle ? 3) sono complicate da programmare ? il problema nasce dal fatto che l'arduino viene spento per 12 ore ma non vorrei mi perdesse il conteggio

4) cambiando un attimo argomento con per trasformare un segnale ttl in r232 basta collegare un convertitore giusto ?

Ma ogni QUANTO tempo devi salvare questa variabile ? E che DIMENSIONI ha questa variabile ?

Perché se è vero che la EEPROM ha vita limitata, è pur vero che OGNI singolo byte è garantito per 100'000 scrittture e che quindi, NON facendo scritture a raffica ed adottando una tecnica di utilizzo a buffer circolare ... ti dovrebbero bastare :D :D :D

Guglielmo

Non ti serve nessuna memoria esterna, durante il lavoro usi la RAM, che non ha alcun limite di scritture, quando lo spegni prima salvi il conteggio della variabile/i sulla EEPROM del Mega2560 che può essere riscritta come minimo 100.000 volte per ogni cella. Se proprio vuoi usare una EERAM esterna ci sono quelle su bus I2C di Microchip, p.e. la 47C04, per i 5V oppure 47L04 per i 3.3V, da 512 byte che costa meno di 1 Euro ed è disponibile anche in case pdip.

gpb01: Ma ogni QUANTO tempo devi salvare questa variabile ? E che DIMENSIONI ha questa variabile ?

Perché se è vero che la EEPROM ha vita limitata, è pur vero che OGNI singolo byte è garantito per 100'000 scrittture e che quindi, NON facendo scritture a raffica ed adottando una tecnica di utilizzo a buffer circolare ... ti dovrebbero bastare :D :D :D

Guglielmo

numeri quindi prima o poi arriveremo ad un numero altino. il tuo discorso sembra molto interessante, però ho un dubbio come faccio a far si che scriva la variabile ? ovvero, potrei cercare di sfruttare (da quel che ho letto) il timer di arduino ed ogni X ore salvare la variabile, ma cosa succede se per un motivo salta la luce ? ed eravamo arrivati ad un minuto prima della X ora ? comunque se mi durasse abbastanza potrei anche pensare dopo Y numero abbastanza alto di cambiare arduino

astrobeed: Non ti serve nessuna memoria esterna, durante il lavoro usi la RAM, che non ha alcun limite di scritture, quando lo spegni prima salvi il conteggio della variabile/i sulla EEPROM del Mega2560 che può essere riscritta come minimo 100.000 volte per ogni cella. Se proprio vuoi usare una EERAM esterna ci sono quelle su bus I2C di Microchip, p.e. la 47C04, per i 5V oppure 47L04 per i 3.3V, da 512 byte che costa meno di 1 Euro ed è disponibile anche in case pdip.

anche qui ho la paura di prima, mentre per quanto riguarda le memorie grazie vedo di farmi prima una cultura

tsukasa90: numeri quindi prima o poi arriveremo ad un numero altino. il tuo discorso sembra molto interessante, però ho un dubbio come faccio a far si che scriva la variabile ? ovvero, potrei cercare di sfruttare (da quel che ho letto) il timer di arduino ed ogni X ore salvare la variabile, ma cosa succede se per un motivo salta la luce ? ed eravamo arrivati ad un minuto prima della X ora ?

Permettimi, se ti poni questa domanda ... semplicemente il progetto è sbagliato ...

... perché, se c'è un problema come questo e di possibile manzanza di alimentazione, il progetto [u]si imposta già dall'inizio[/u] prevedendo almeno una piccola batteria di backup ed un segnale che indica l'alimentazione a batteria e quindi la necessità di salvare tutto e mettersi a riposo fino al ritorno dell'alimentazione primaria.

Conosci QUESTA simpatica scheda aggiuntiva ?

Guglielmo

gpb01: Permettimi, se ti poni questa domanda ... semplicemente il progetto è sbagliato ...

... perché, se c'è un problema come questo e di possibile manzanza di alimentazione, il progetto [u]si imposta già dall'inizio[/u] prevedendo almeno una piccola batteria di backup ed un segnale che indica l'alimentazione a batteria e quindi la necessità di salvare tutto e mettersi a riposo fino al ritorno dell'alimentazione primaria.

Conosci QUESTA simpatica scheda aggiuntiva ?

Guglielmo

molto interessante ma non penso di averci capito molto, praticamente mi dovrebbe migliorare l'affidabilità del segnale elettrico ed in automatico in mancaza di segnale elettrico mi collega la Lipo, ma non mi è parso che abbia un pin o qualcosa che mi cambi di valore quando si attivi la lipo o sbaglio? comunque grazie sul serio, scheda molto interessante anche per cose future

tsukasa90: ... ma non mi è parso che abbia un pin o qualcosa che mi cambi di valore quando si attivi la lipo o sbaglio?

Vero, ma basta studiarsi un po' lo schema e prelevare un segnale quando manca ... cosa ? ? ? L'alimentazione da USB (VUSB) ? L'alimentazione da un alimentatore esterno (PWRIN) ? ... insomma, nulla di complicato ...

Guglielmo

gpb01: Vero, ma basta studiarsi un po' lo schema e prelevare un segnale quando manca ... cosa ? ? ? L'alimentazione da USB (VUSB) ? L'alimentazione da un alimentatore esterno (PWRIN) ? ... insomma, nulla di complicato ...

Guglielmo

non penso di aver capito. io alimento la scheda con un alimentatore e ci aggiungo una lipo. succesivamente alimento l'arduino con la porta usb e con la normale DC. a questo punto come faccio a leggere i valori che spariscono?

Perdona, ma ... sia leggere uno schema ? ? ? :confused: ... perché altrimenti NON ci capiremo mai e dovrai far fare la modifica ad uno che lo sa leggere ... dato che ti ho già indicato i punti esatti dove pescare il segnale di alimentazione presente.

Guglielmo

gpb01: Perdona, ma ... sia leggere uno schema ? ? ? :confused: ... perché altrimenti NON ci capiremo mai e dovrai far fare la modifica ad uno che lo sa leggere ... dato che ti ho già indicato i punti esatti dove pescare il segnale di alimentazione presente.

Guglielmo

è un po che non li leggo, e grazie le spiegazioni. da quel che ho capito devo mettere un filo in quelle zone dello schema e leggerne il segnale. il problema e qui. come dovrei leggerlo? digitalread ? interrupt che passa da high a low ?

Le possibilità sono tante ... dipende da quelle che sia mettere in pratica ... ... puoi sia leggerlo in continuazione nel loop() con una digitalread(), puoi gestirlo come un evento tramite un interrupt(), ecc.

Dato che comunque, c'è una batteria che garantisce un lungo tempo di alimentazione ad Arduino ... non mi farei troppi problemi di tempistiche e ... ogni tanto andrei a guardare un pin se HIGH o LOW ed agirei di conseguenza.

Guglielmo

Edit: Occhio comunque che stiamo parlando di componentistica SMD su una schedina piuttosto densa quindi ... occorre una buona manualità e pratica per NON fare danni !

gpb01: Le possibilità sono tante ... dipende da quelle che sia mettere in pratica ... ... puoi sia leggerlo in continuazione nel loop() con una digitalread(), puoi gestirlo come un evento tramite un interrupt(), ecc.

Dato che comunque, c'è una batteria che garantisce un lungo tempo di alimentazione ad Arduino ... non mi farei troppi problemi di tempistiche e ... ogni tanto andrei a guardare un pin se HIGH o LOW ed agirei di conseguenza.

Guglielmo

Edit: Occhio comunque che stiamo parlando di componentistica SMD su una schedina piuttosto densa quindi ... occorre una buona manualità e pratica per NON fare danni !

interessante. una cosa che non ho capito e se la lipo viene ricaricata e gestita da se una volta che c'è l'alimentazione(solo per la ricarica). comunque stavo riflettendo che avendo già un modulo ethernet con adattatore per microsd, non converebbe scrivere un txt l'ha dentro ? è fattibile ?

… non è che le SD hanno una vita maggiore eh ! Sempre circa 100’000 scritture sopportano, quindi, a quel punto. e come la EEPROM …

Devi decidere: 1. o salvi ad intervalli regolari (accettabili per EEPROM o SD) e quindi in caso di caduta di tensione hai la situazione all’ultimo salvataggio, 2. fai un circuito dove montare la EERAM che ti ha suggerito Astro e la gestisci, 3. usi un sistema di backup a batteria.

Guglielmo

P.S.: Si, la scheda che ti ho linkato, ricarica automaticamente la batteria