Tags

, ,

Segundo o site oficial do Arduino, cada modelo uC possui uma capacidade distinta de memória sendo que elas são divididas em três tipos:

– Memória FLASH: é a memória de programa, é onde o sketch fica armazenado. O BootLoader tb fica armazenado nesta área (não volátil);
– Memória RAM: é onde o sketch cria e manipula as variáveis quando está sendo executado (volátil);
– Memória EEPROM: é o espaço de memória que pode-se armazenar informações por longos períodos (não volátil).

O arduino MEGA 2560 R3, por exemplo, possui:

– 256 KB de memória FLASH;
– 8 KB de memória SRAM;
– 4 KB de memória EEPROM;

Vejam no link: http://playground.arduino.cc/Learning/Memory

Durante a execução do sketch a memória RAM pode crescer “indiscriminadamente” e causar um “crash” em um projeto mal codificado.
Uma forma bem simples de “monitorar” o uso da memória no decorrer do programa é inserir “pontos de verificação” no programa e analisar o valor da memória livre disponível para uso.
Para tanto, existe uma função bem simples:

int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Assim, pode-se incluir essa pequena função no projeto e fazer chamadas em alguns pontos chaves para verificar o quanto de memória ainda está disponível.

Exemplo de uso:

Serial.print("Free SRAM in bytes: ");
Serial.println(freeRam());

Fica a dica.

Existe uma outra forma bem consagrada, q utiliza a biblioteca MemoryFree.
Vejam os links abaixo para mais detalhes.

USEM SEM MODERAÇÃO!!!

links:

http://jeelabs.org/2011/05/22/atmega-memory-use/
http://www.controllerprojects.com/2011/05/23/determining-sram-usage-on-arduino/
http://playground.arduino.cc/Code/AvailableMemory
http://stackoverflow.com/questions/8649174/checking-memory-footprint-in-arduino