Pages: [1] 2   Go Down
Author Topic: EEPROM Arduino Uno  (Read 1332 times)
0 Members and 1 Guest are viewing this topic.
Roma
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
If you want to find the secrets of the Universe, think in term of energy, frequency and vibration. Nikola Tesla
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non essendo molto esperto nel campo di Arduino mi chiedevo se fosse possibile utilizzare la memoria EEPROM per memorizzare appunto dei valori presi da un sensore di temperatura ogni mezzora durante l'arco della giornata per poi visualizzarli sul pc la sera.
Pongo alcune domande:

    -L'Arduino UNO ha 1kb di EEPROM (ATmega328), cosa succede nel caso la memoria finisse?
    -Posso aggiungere una EEPROM esterna di dimensioni maggiori?
    -I dati salvati sulla memoria rimangono anche se accidentalmente l'Arduino non riceve più alimentazione?

Grazie a coloro che risponderanno smiley
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3218
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
memorizzare appunto dei valori presi da un sensore di temperatura ogni mezzora durante l'arco della giornata
in teoria la eeprom non è fatta per essere riscritta in modo continuo, hai  100.000 accessi prima di dar fine alla sua vita, non è una pratica applicata per ovvi motivi, di solito la si usa solo in lettura una volta scritta in modo definitivo
Es username, password, variabili di tipo definite, piccole pagine web ecc

Quote
cosa succede nel caso la memoria finisse?
Non è una questione di finire, perchè sei tu nello sketch a definire le posizioni di memoria da occupare, la memoria dovrà essere ben definita dallo spazio occupato dalle tue variabili, per poter essere nello stesso tempo correttamente richiamata, non è come la flash che è "autogestita" dal programma

Quote
Posso aggiungere una EEPROM esterna di dimensioni maggiori?
si, ma a questo punto ti conviene usare una SD card o micro sd, dura più a lungo 1.000.000 di scritture ed è molto più capiente

Quote
I dati salvati sulla memoria rimangono anche se accidentalmente l'Arduino non riceve più alimentazione?
si certo (se parli di eeprom) è una memoria permanente come la SD card

Se hai bisogno di archiviare dei dati per farne grafici, statistiche ecc dovresti orientarti su un datalogger la via migliore è un SD o spedire i dati a un server
« Last Edit: July 02, 2012, 06:57:45 pm by pablos » Logged

no comment

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 247
Posts: 21151
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
memorizzare appunto dei valori presi da un sensore di temperatura ogni mezzora durante l'arco della giornata
in teoria la eeprom non è fatta per essere riscritta in modo continuo, hai  100.000 accessi prima di dar fine alla sua vita, non è una pratica applicata per ovvi motivi, di solito la si usa solo in lettura una volta scritta in modo definitivo
Es username, password, variabili di tipo definite, piccole pagine web ecc
Non esagerare e andare in paranoia.
Per primo il problema non sono gli "accessi", ma le scritture/cancelazioni della EEPROM.
Poi per registrare anche ogni giorno la temperatura ci metti 270 anni per arrivare a 100000 scriture.

Quote
cosa succede nel caso la memoria finisse?
Dipende dal programma che scrivi. Se non lo fermi puó sovrascrivere i dati giá memorizzati. Devi comunque pensare di gestire in qualche modo un indicatore per sapere quale cella di memori é giá usata e quale é la sucessiva libera.

Quote
Posso aggiungere una EEPROM esterna di dimensioni maggiori?
certo. Quelli hanno anche una maggiore vita come numero di scritture. Puoi anche usare una FRAM della Ramtron che sono ram che non perdono il contenuto quando manca l'alimentazione e sono praticamente riscrivibili al infinito.

ciao Uwe
Logged

provincia di Forlì
Offline Offline
Full Member
***
Karma: 0
Posts: 119
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In effetti la parnoia della scrittura c'è... ma un neofita che vuole imparare Arduino come deve fare ? io ho fatto un sacco di prove prima di ottenere quello che desideravo, scrivere un float sulla eeprom e leggerli la sera,se arriviamo a 10 mila che cosa succede esattamente ?
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3218
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No la paranoia era per me, non per te.

Ho sbagliato termine che non è accessi, comunque il passaggio corretto l'ho scritto in precedenza.
Quote
non è fatta per essere riscritta in modo continuo
diciamo che si era capito.

Per arrivare a 100.000 sono 5 anni circa con una scrittura ogni mezzora (che è quella che indica lui) e 2.5 ogni quarto d'ora

In linea di principio e secondo quello che ci hanno insegnato la Eeprom non va usata in questo modo, ma ci si carica un programma una volta e basta e al massimo si fanno upgrade riscrivendole col nuove versioni.
Poi nessuno mi vieta di usare il chip come poggia pentola o per stabilizzare il tavolo quando dondola   smiley-wink

per uno storage di dati si usa come logica una SD

ciao



 
 
« Last Edit: July 03, 2012, 02:09:57 am by pablos » Logged

no comment

provincia di Forlì
Offline Offline
Full Member
***
Karma: 0
Posts: 119
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai ragone.. basta fare due calcoli per farsi passare la paura! ma per noi neofiti - o meglio - almeno per me, questo fatto del limite ..incute  smiley
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3218
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non ce nè paura, anzi che un arduino duri 5 anni lo devo ancora vedere smiley e poi al massimo lo butti
Logged

no comment

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 476
Posts: 12281
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La EEPROM effettivamente è un tipo di memoria nata per contenere informazioni eventualmente soggette ad aggiornamenti periodici. Quindi effettivamente non dovrebbe essere usata come una RAM, con scritture continue, ma nemmeno bisogan pensare obbligatoriamente a quelle delle MB dei PC, con aggiornamenti annuali o biennali, e comunque per un ristretto arco di tempo (che poi è poco più della vita commerciale della MB, se il Costruttore non ha un marchio rinomato.
Alla fine esistono le vie di mezzo. Giustamente 100.000 operazioni di scrittura/cancellazione garantiscono una durata eccellente, ma tutto va rapportato all'uso che se ne fa; è vero che una scrittura di un valore di temperatura al giorno fa 270 anni (anche se non ho verificato il conto, mi fido di Uwe), ma se le scritture diventassero una ogni 15 minuti gli anni sarebbero meno di tre; se pensiamo ad un'applicazione stand-alone definitiva assolutamente non potrebbe andare bene.
Come sempre bisogna ragionare correttamente sugli obiettivi e trovare la soluzione più confacente.
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 332
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
per usare la eeprom ti conviene crearti una mappa della memoria, così puoi capire se ti basta o no ed è più facile scrivere il codice, guarda le immagini in fondo a questo progetto per prendere spunto.

Alberto
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I 100.000 cicli di ri/scrittura sono il limite riferito alla EEPROM interna, attenzione. Probabilmente, per contenere i costi, nella realizzazione dei microcontrollori vengono scelte memorie con una vita media più corta del solito.

Qualunque chip EEPROM esterno che andate a prendere, tipo un 24LC256 o un 24LC512, riporta sul suo datasheet una vita media di 1.000.000 (un milione) di cicli di ri/scrittura. Un chip 24LC512 sono 512Kbit, 32 kB di spazio. Anche salvando ora, data e temperatura ogni giorno, ammettendo un consumo di circa 12 byte per scrittura, per riempire 32768 byte ci vogliono 2730 salvataggi, 113 giorni. Se poi uno non svuota la EEPROM e ricomincia da capo, per consumare 1.000.000 di riscritture ammettendo una ripartenza da $0000 ogni 113, sono 311.643 anni....

Non essendo molto esperto nel campo di Arduino mi chiedevo se fosse possibile utilizzare la memoria EEPROM per memorizzare appunto dei valori presi da un sensore di temperatura ogni mezzora durante l'arco della giornata per poi visualizzarli sul pc la sera.
Quindi, tu svuoteresti la memoria ogni sera. Considerando 10.000 cicli di ri/scrittura, considerando 12 byte per lettura, considerando una media di 48 scritture giornaliere, ogni 1,7 giorni ripassi sulle stesse celle, perché 1024/(12*48)=1,77.
Quindi dopo 5000 giorni ha rovinato la EEPROM. 5000 giorni sono 15 anni. Possiamo starci, dai  smiley-lol

Quote
Pongo alcune domande:

    -L'Arduino UNO ha 1kb di EEPROM (ATmega328), cosa succede nel caso la memoria finisse?
Devi prevedere tu una ripartenza dalla cella $0000, sovrascrivendo le letture già salvate.

Quote
    -Posso aggiungere una EEPROM esterna di dimensioni maggiori?
Senz'altro. COme detto, esistono chip esterni con capienza differente. Un 24LC512 (512Kbit, 32 kB) costa uno o due euro. Ci accedi via I2C.

Quote
    -I dati salvati sulla memoria rimangono anche se accidentalmente l'Arduino non riceve più alimentazione?
Finché non li cancelli tu, non distruggi il chip oppure vuoi accederci dopo qualche centinaio d'anni  smiley-yell

Quote
Grazie a coloro che risponderanno smiley
Figurati
Logged


Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E da dire che sui vecchi chip della serie DAST la EEPROM era una novità e 10mila(se non sbaglio erano di piu o di meno non ricordo) cicli di scrittura erano praticamente infiniti!  smiley-mr-green
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Roma
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
If you want to find the secrets of the Universe, think in term of energy, frequency and vibration. Nikola Tesla
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie ragazzi smiley-wink credo di prendere una shield con l'sd card.
Un ultima domanda: Anche la memoria flash del ATmega328 ha un limite di scrittura/lettura?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie ragazzi smiley-wink credo di prendere una shield con l'sd card.
Un ultima domanda: Anche la memoria flash del ATmega328 ha un limite di scrittura/lettura?
10.000 riscritture
Logged


Roma
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
If you want to find the secrets of the Universe, think in term of energy, frequency and vibration. Nikola Tesla
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
10.000 riscritture
smiley-eek-blue sono un po pochi, e io che correggo gli sketch anche solo per un commento D:
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
10.000 riscritture
smiley-eek-blue sono un po pochi, e io che correggo gli sketch anche solo per un commento D:
smiley-sweat
Santi chip in formato DIP!!  smiley-yell
Logged


Pages: [1] 2   Go Up
Jump to: