Pages: [1]   Go Down
Author Topic: Memoria RAM  (Read 802 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Qualcuno conosce un comando o una libreria per liberare la memoria RAM allocata all'interno dell'arduino alla fine dell'esecuzione del programma?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 312
Posts: 21606
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La richiesta non è chiara. Un programma non viene mai terminato ma eseguito dal microcontrollore (non da Arduino!) in loop infinito.
Puoi usare la funzione malloc() per far sì che il programma rilasci la memoria allocata per le variabili locali ad una funzione secondaria.
Logged


0
Online Online
Shannon Member
****
Karma: 117
Posts: 10101
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ehm la funzione è la free()
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20168
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino non ha un sistema operativo multitasking percui termini programmi e serve liberare la memoria prima occuparta.
Se hai problemi di memoria Ram ci sono alcune strategie per risparmiare:
* prendere un ATmega piú grande ( un ATmega 1280 o 2560 al posto del 328)
* mettere delle costanti nella flash ( funzione progmem http://www.arduino.cc/en/Reference/PROGMEM)
* memorizzare dati nella EEprom ( libreria EEprom)
* ottimizzare il codice da usare meno variabili

Ciao Uwe
 
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 312
Posts: 21606
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@lesto:
sì, malloc serve a "prenotare temporaneamente" la memoria di una variabile, che poi può essere liberata da free.
Logged


0
Online Online
Shannon Member
****
Karma: 117
Posts: 10101
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nikm666 ha chiesto come "liberare la memoria RAM", che a runtime si fa con le free(), a termine programma invece dovrebbe avvenire completamente da sola a meno che tu non abbia usato la malloc, in quel caso le zone mallocate bisogna liberarle a mano con la free.


nikm666 la tua è comunque una richiesta strana, anche se la RAM vien liberata, il suo contenuto non viene riscritto al volo ma solo quando ce ne è bisogno: infatti è per questo che in C bisogna sempre ricordarsi di inizializzare le variabili, altrimenti ti ritrovi a lavorare con vecchi valori a caso, il famoso garbage(spazzatura).

In oltre quando si toglie la alimentazione la RAM viene completamente cancellata data la sua struttura, altrimenti probabilmente non si userebbero gli hard disk smiley
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: [1]   Go Up
Jump to: