Ciao a tutti ! E' da poco tempo che ho cominciato ad usare Arduino e sono ancora alle prime armi; qualcuno mi sa dire se c'è una "soglia" massima di occupazione di SRAM al di là della quale il programma caricato non viene eseguito correttamente? In altre parole, c'è una quantità minima di SRAM, in generele, che deve rimanere libera per il corretto funzionamento di un programma?
Il mio Arduino è ArduinoMega2560 ..... forse non proprio indicato per chi è alle prime armi come me..
Grazie anticipatamente.
Ogni micro montato sulle varie board Arduino ha delle specifiche tecniche diverse che trovi nel sito: http://arduino.cc/en/Products.Compare
Se occupi tutta la memoria avrai probabilmente malfunzionamenti del software.
Non esiste un quantitativo minimo. Se programmi tutto correttamente il programma funziona anche con 1 solo byte libero.
Se programmi male non ti basterebbero neanche i 96KB della DUE.
Il limite per il MEGA con il 2650 è di 8KB (8192 byte).
Se vuoi puoi presentarti qui --> Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
Il regolamento/funzionamento del sito lo trovi qui --> [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum
Qui una serie di link utili --> Link utili elettronica - Megatopic - Arduino Forum
Benvenuto.
Ocram85:
qualcuno mi sa dire se c'è una "soglia" massima di occupazione di SRAM al di là della quale il programma caricato non viene eseguito correttamente?
Come ti ha già spiegato PaoloP non c'è nessuna soglia minima, la ram la puoi usare tutta fino all'ultimo byte, però per via del fatto che wiring si appoggia al C++ esiste la possibilità di (ri)dimensionare le variabili in run time ed è qui che vengono fuori i guai, se il programma tenta di utilizzare più ram di quella disponibile il crash è garantito
Chiarissimo, Grazie!!!
Come detto anche da @Astro c'e' la possibilità che alcune librerie internamente occupino memoria e non ne liberino altra "a tua insaputa".
Ad esempio la libreria String che gestisce gli oggetti String (non le stringhe, vettori di caratteri).
Questa libreria, quando vuoi aggiungere un carattere ad una variabile (oggetto) String alloca nuova memoria e libera la vecchia. Ma non sempre tutta la memoria riesce ad essere liberata (un casino da spiegare, ma può succedere)