differenze tra flash sram eeprom

Buongiorno a tutti,

non sono riuscito a trovare documentazione che mi spieghi perché si sia deciso di implementare 2 tipi di memoria non volatile (eeprom e flash).
La flash contiene il programma, ma fa anche qualcos'altro?
E la eeprom? Quale è il suo uso principale?
Ed infine la sram, a parte i 256 registri il resto come viene utilizzato?

Grazie molte.

m.

La distinzione deriva dall'architettura del microcontrollore, che essendo di tipo Harvard separa la memoria del programma da quello delle variabili.

SRAM: normale RAM statica volatile, usata dal microcontrollore per creare e gestire le variabili (ed i dati in esse contenuti) del programma dell'utente
Flash: memoria non volatile facilmente riscrivibile (max 10.000 volte) usata per memorizzare il programma dell'utente e, come nel caso dell'Arduino, il bootloader (un particolare software che permette di aggiornare il programma nella Flash senza usare un programmatore esterno ma direttamente dal cavetto di collegamento al PC)
EEPROM: memoria non volatile che può essere utilizzata per memorizzare dati (quali ad esempio log) che devono essere mantenuti nel tempo (ad esempio, anche in caso di accidentale assenza di alimentazione). Riscrivibile 100.000 volte.

Grazie molte Leo.

Ciao moreet

alcune puntualizzazioni:

SRAM: ci sono dentro sia le variabili che usi nel Tuo sketch che dei dati che servono al controller per funzionare come lo Stack ecc. Se usi tante (troppe) variabili riempi la SRAM e l'Arduino fa dei scherzi strani, non funziona e ha dei errori che non si capische perché nonfunziona.

EEPROM si possono memorizzare dati (1 Byte alla volta) con la libreria eeprom. http://arduino.cc/en/Reference/EEPROM

FLASH viene memorizzati il tuo sketch e in modo permanente il Bootloader.
Puoi memorizzare delle costanti per non caricare il SRAM in fase di compilazione, questo si puó usare se hai delle stringhe da visualizzare su un display. Vedi PROGMEM PROGMEM - Arduino Reference

Ciao Uwe