eeprom di arduino

Salve a tutti ho un quesito di cui non ancora trovo risposte:
Come faccio a memorizzare nella eeprom interna di Arduino uno o Mega dei valori iniziali direttamente dalla compilazione programmazione e non nella esecuzione del programma.
Non trovo l'istruzione al compilatore.
Grazie

In teoria, ma è tutto da verificare perché di mezzo c’è l’IDE di Arduino che potrebbe “metterci le mani” dovresti poterlo fare con questa sintassi (… che è quella delle Memory Sections):

#include <avr/io.h>
  
const char eeprdata[] __attribute__ ((section (".eeprom"))) = "Hello EEPROM";

… ripeto, da verificare :wink:

Guglielmo

Ti conviene scrivere un piccolo sketch che Ti inizializza la EEprom e poi ci metti lo setch che Ti serve.
Ciao Uwe

La strada di uwe funziona di sicuro, però è scomoda.
Oltre al metodo di gbp01 puoi provare anche eemem, trovi infobin giro senza problemi

C'è un'altra opzione che ha un pro e contro, ma ti libera da ogni intervento sul programma, la usai per caricare 4K di dati su eeprom prelevati da SD che a seconda delle impostazioni su file potevano cambiare.

Nel setup inserisci una funzione che legge e confronta i byte da scrivere e quelli che sono già scritti nella EE,
se il byte è == non scrivi se è =! scrivi solo quella cella.

Il pro è che non devi preparare prima la EEprom e puoi resettare quante volte vuoi, il contro è che quel pezzo di programma occupa spazio in flash.

ho capito che lo vuoi fare "direttamente dalla compilazione" ma alla fine sono 2k in più se lo fai su una UNO e 4K in più se lo fai sulla MEGA, se lo fai sulla DUE sono n K flash, se lo fai da SD sono 0.1K (ammesso che usi tutta la EE)

pablos la nuova libreria ufficiale integrata nell'ide usa gia' le funzioni che variano il dato solo se diverso. I vecchi metodi dove si scrive indifferentemente da cosa c'e' in cella sono deprecati in GCC

La 1.0 non lo faceva e l'ho applicato io, sinceramente non sapevo che la nuova versione eeprom.h lo facesse, non l'ho più usata da quando sono passato alla DUE che usa la virtual_eeprom su flash che anch'esso sfrutta lo stesso metodo su sketch per non riscrivere sopra alle celle flash con byte uguali.
Comunque meglio ancora se già lo fa per Dino è un lavoro in meno

Quanto ho capito io i dati devono essere scritti una volta a Arduino vergine.
Secono me quei dati possono essere modificati durante l' esecuzione dello sketch e percui non é giusto riscriverli alla prossima accensioen di Arduino.
Ciao Uwe

Interessante, buono a sapersi.