EEPROM -PROGMEM - domande

pablos:
Si ho notato. nella flah metti variabili costanti che comunque le perdi al reset....

No.
Nella Flash memorizzi delle variabili che non possono essere modificate.
Diventano tipo costanti. Ma la grossa differenza arriva ora.

Quando nello sketch la CPU incontra un'istruzione per gestire una variabile, essa cosa fa?

  1. legge il valore dalla Flash
  2. crea nella SRAM una variabile contenente quel valore
  3. a quel punto continua con l'esecuzione del programma gestendo la variabile dalla SRAM.

Qualunque valore tu debba creare, la CPU lo farà sempre nella SRAM. Anche una stringa non sfugge a questa regola: la CPU prima la copierà nella SRAM e dopo la leggerà. Ecco perché la memoria si consuma velocemente.

Con PROGMEM si usa invece la possibilità di leggere il valore di una variabile (che non è necessariamente una stringa ma può essere anche un byte, ad esempio) direttamente dalla Flash, senza prima copiarla nella SRAM. Ovviamente si possono gestire solo costanti, cioè dati che non cambiano di valore.