EEPROM

Buonasera scusate la domanda, forse sarà banale. Avrei la necessità per un mio progetto di configurare alcuni dati nella eeprom di Arduino in fase di compilazione. Mi spiego meglio, mi piacerebbe impostare un valore nella eeprom di arduino, già subito appena scarico lo sketch. In questa maniera appena avvio Arduino, in fase di inizializzazione posso acquisure questo valore.

La via più semplice è usare la libreria EEPROM di Arduino ... ... se vai nell'IDE trovi gli esempi d'uso.

Guglielmo

Si, ha senso se questi valori vengono aggiornati durante l'esecuzione del programma, se no bastano le variabili...

Sì ma secondo me l'OP vuole programmare la EEPROM contestualmente alla programmazione della flash con il codice.

Purtroppo questo non è al momento possibile, usando Arduino. Puoi farlo usando manualmente avrdude.

In alternativa puoi farlo dal setup(), come suggerito, verificando se in una qualche particolare locazione c'è un valore noto o meno.

Secondo me la cosa piú semplice é che Ti scrivi uno sketch che carica i valori nella eeprom. Una volta caricato e eseguito quello carichi il sketch "definitivo".

Quanto ne so io é possibile tramite un programmatore ISP anche caricare cose nella EEprom ma l' altra via mi sembra piú semplice.

Ciao Uwe

Vi ringrazio… faro uno sketch che scrive i dati di inizializzazione nella EEprom e poi inserisco i dati lo sketch con il programma. La mia paura é che quando carico il secondo programma la eeprom di Arduino viene resettata. Provo e vi faccio sapere

Se carichi con Arduino non viene resettata, stai tranquillo.

mrk88: Vi ringrazio... faro uno sketch che scrive i dati di inizializzazione nella EEprom e poi inserisco i dati lo sketch con il programma.

Oppure nello sketch metti (nel setup) un controllo che se la EEPROM non è stata già inizializzata (es. leggendo uno o più byte che sai che devono avere un valore specifico) fa la prima scrittura. Dall'esecuzione successiva quindi trovando i dati semplicemente li usa. Questo ti permetterebbe anche di programmare un Arduino differente.

Scusate mi intrometto perchè l'argomento mi interessa.. ma non c'è un modo per sapere quanto spazio si ha a disposizione nella EEPROM? Anche per capire quanto ci si può spingere oltre.. Di solito controllo in base al chip utilizzato ma mi riferisco anche ad un controllo di memoria già utilizzata e residua.. Grazie

GiuMex: Scusate mi intrometto perchè l'argomento mi interessa.. ma non c'è un modo per sapere quanto spazio si ha a disposizione nella EEPROM? Anche per capire quanto ci si può spingere oltre.. Di solito controllo in base al chip utilizzato ma mi riferisco anche ad un controllo di memoria già utilizzata e residua.. Grazie

Visto che la EEprom non é una memoria di massa con sistema FAT o similare ma una memoria dove indirizzi esplicitamente ogni cella di memoria la Tua domanda non si pone. Devi Tu sapere cosa scrivi in che cella di memoria. Ciao Uwe

docdoc: Oppure nello sketch metti (nel setup) un controllo che se la EEPROM non è stata già inizializzata (es. leggendo uno o più byte che sai che devono avere un valore specifico) fa la prima scrittura. Dall'esecuzione successiva quindi trovando i dati semplicemente li usa. Questo ti permetterebbe anche di programmare un Arduino differente.

Questo lo vedo un po difficile se devi cambiare il contenuto del EEPROM. Come sai se il contenuto é ancora quello vecchio o é giá modificato? Ciao Uwe

uwefed: Questo lo vedo un po difficile se devi cambiare il contenuto del EEPROM. Come sai se il contenuto é ancora quello vecchio o é giá modificato?

No, non parlo di cambiare il contenuto, ma solamente di "inizializzare" la EEPROM di un Arduino non precedentemente utilizzato per questo scopo. Ad esempio i primi due byte devono contenere un "marker" specifico (difficilmente replicato da altri sketch) che so, i valori 8F ed EE: se sono quelli allora significa che la EEPROM è già inizializzata quindi "uso" i byte successivi (eventualmente scrivendoli con nuovi valori, ma mantenendo sempre il marker dei primi due byte), se i valori sono diversi, allora scrivo 8F EE seguito dal primo valore.