Bom dia,

estou fazendo um projeto onde tenho que guardar 10 strings de 5000 caracteres, em uma memoria nao volatil. (sera um banco de dados que pode ser modificado, por comando. )

como nao tenho espaco nem na eeprom e nem na ram, pensei em utilizar a flash.

só que o progmem nao oferece uma funcao para gravar e somente para ler.

alguem sabe onde eu encontro esta informacao? pelo que vi so é possivel com o bootloader. eu nao tenho outra saida a nao ser toda vez que for modificar, regravar o programa inteiro??

Exibições: 98

Responder esta

Respostas a este tópico

Cartão SD, pode ser uma alternativa para vc?

como tem espaco na flash, queria colocar tudo la.

mas vou dar uma pesquisada nas placas de SD

A melhor biblioteca de acesso à flash do Arduino que eu conheço é essa: http://arduiniana.org/libraries/flash/

Com ela vc declara variáveis que serão automaticamente salvas na memória flash, se livrando da amolação de lidar com ela diretamente.

Abracadabraço,

Mauro Assis

eu posso usar isso quando eu tiver rodando o programa??! 

ex:

se chegar '1' pela serial, eu leio os 100 proximos valores e gravo na flash.

se chegar '2' imprimo o que foi guardado em todos os arrays.

Cara... não sei, só testando para ver. Eu usei só como leitura.

Tempos atrás eu fiz uma rotina que lê e grava long usando a lib EEPROM.h que vem no Arduino. Vc poderia adaptá-la para string, aí vai:

void WriteLongEEPROM(byte addr, long val)
{
    for(int long offset=0;offset < sizeof(long); offset++)
    {
       long b = (val >> (offset * 8)) & B11111111;
       EEPROM.write(addr+offset,b);
    } 
}

long ReadLongEEPROM(byte addr)
{
     long result = 0;
     for(int long offset=0;offset < sizeof(long); offset++)
     {
         long b=EEPROM.read(addr+offset);
         result = result | (b (offset * 8));
     }
     return result;
}

o unico problema é que a EEPROM só cabe 4k.

vou tentar ver com a flash..se nao der, verei com o SD mesmo....

 obrigado.

PS: um shield com cartão SD também seria uma alternativa.

Acredito que seja possível, porém não sei como seria com o IDE do Arduíno pois você precisaria mudar o Linker. Assim como o Bootloader, o seu programa também pode reescrever a memória do Atmega. Esta escrita é feita em páginas e não byte a byte. De forma ao compilador não utilizar tais páginas reservadas para código você precisa modificar o linker que é o arquivo que define tudo isto. Tendo feito isto basta modificar a memória como descrito na página 269 do datasheet. 

Porém o Arduino convencional não tem memória suficiente para 50KB ou seja 5000 x 10 bytes.

O mais simples é usar uma eeprom externa ou uma flash externa.

Abraços

RSS

Publicidade

Convide um amigo para o Lab!

 Loja Lab de Garagem

Novo!

Garagino Rev1

Por: R$ 29,00

Ou em até 6x de

R$ 5,18 

Novo!

Estação de Solda

Temperatura Ajustável - 50W

Por: R$ 150,00

Ou em até 18x de

R$ 10,00

 

Exclusividade do LdG!

Android 4.0 Mini PC

Por: R$ 195,00

Ou em até 18x de

R$ 13,00

Osciloscópio Digital

(ADS1102C) - 100MHz - 2 Canais

Por: R$ 1920,00

Ou em até 18x de

R$ 127,96

© 2013   Criado por Marcelo Rodrigues.

Badges  |  Relatar um incidente  |  Termos de serviço