Buon giorno a tutti.
Premetto (per non incorrere nelle ire di gpb01 ) che sono andato nella sezione dove ci si presenta per rinfrescare la mia vecchia presentazione ma la sopracitata sezione impedisce di aggiungere post a causa (mi è sembrato di capire) della raggiunta capienza massima (deve essere stato sforato l'array ).
Passiamo alla mia domanda.
Creo un vettore (di char ad es), lo riempio con dei caratteri, poi ne vado a leggere qualcuno e a modificarne qualcun altro, poi ciclo e me li leggo tutti e così via.
Le mio domande sono:
il vettore che ho creato, riempito e di cui ho modificato gli elementi (non la dimensione, badate bene), rimarrà allocato sempre nelle stesse celle fisiche di memoria?
in caso di risposta affermativa alla (1): se spengo Arduino e poi lo riaccendo (staccando fisicamente l'alimentazione) al riavvio le celle fisiche di memoria dove sarà allocato il vettore saranno le stesse di prima?
Grazie e buona domenica
Tranquillo, io controllo SEMPRE anche le vecchie sezioni e la tua presentazione è QUI
Tutto dipende se tale variabile è locale (quindi creata all'interno di una funzione) o globale (creata all'esterno e visibile in tutto il programma) ... comunque, in generale (poi bisogna vedere il codice), una volta compilato il programma e generato l'eseguibile, normalmente SI, le variabili occupano sempre le stesse aree di SRAM.
Grazie per la celerità con cui mi hai risposto.
Il vettore è dichiarato gobale ed è lungo 82 caratteri (si tratta di una frase NMEA e non voglio usare String) da questo vettore, poi, tramite vettori più piccoli, ricavo i campi che mi interessano.
Non ho capito, però, se quando spengo e riaccendo queste celle cambiano oppure no.
Lo scopo delle mie domande è impedire che, scrivendo sempre nelle stesse celle (anche quando spengo e riaccendo), queste ultime col tempo si deteriorino (come mi hanno detto).
--- aggiunta ---
Dimenticavo: ho letto l'articolo ma non scioglie i miei dubbi.
Caro Guglielmo (consentimi questo appellativo affettuoso) forse ho capito e tu correggimi se sbaglio: il programma viene caricato nella flash memory (che è quella che si deteriora con l'uso) ma per l'esecuzione lo sketch viene copiato nella SRAM (che è quella che non si danneggia con l'uso) quindi i tanti caricamenti potrebbero portare al danneggiamento della flash, non lo sketch che gira nella SRAM anche per mesi... ho capito bene?
P.S. se per caso ti stessi chiedendo perché leggi pochi post da parte mia, sappi che è perché nella stragrande maggioranza delle volte trovo la soluzione dei miei problemi nel forum (sia inglese sia italiano).
Grazie
P.S. l'articolo di Leo è molto interessante.
Stiamo parlando di SRAM mica di memoria EEPROM ... sono le celle della EEPROM che hanno un numero di cicli di scrittura limitati, sulla SRAM NON hai alcun problema
La FLASH di programma è un'altra memoria ancora ...
... SRAM memoria volatile, dove vanno le variabili, quando spegni si perde.
... EEPROM memoria NON volatile, ogni singola cella scrivibile circa 100'000 volte poi può deteriorarsi.
... FLASH memoria dove viene caricato il programma, NON volatile ... la sua vita media è di 10'000 caricamenti del codice, poi può deteriorarsi.