Cartão Micro SD como "memória primária" do Arduino

Olá amigos(as), boa tarde!

Gostaria de saber se é possível armazenar código fonte do arduino em cartão SD, acessando-o para execução das rotinas.

Estou fazendo uma aplicação no arduino nano, e devido a quantidade de sensores e componentes, a memória está esgotada, causando problemas de instabilidade no funcionamento.

Alguém pode me dar uma luz?

Muito obrigado desde já! :)

Exibições: 309

Responder esta

Respostas a este tópico

boa tarde Guilherme.

      Sim Guilherme, é possível sim. No entanto não é fácil dizer se isso será viável para você, pois há diversos recursos de programação que são necessários, e muitas implicações disso. Pra se conseguir isso, há um certo trabalho inicial a ser feito (depois, é só ir acrescentando código em cartão SD, já que tem GBytes).

      Uma das maiores dificuldades, é que as CPUs AVR8 não foram concebidas para executarem código 100% relativo (como consegue por exemplo, um x86, ou um equivalente 68k, etc). Outra limitação, provavelmente seria o Compilador, que caso não gere código 100% relativo (quase certo que não gera), tornará a tarefa ainda mais difícil (mas ainda assim é possível, usando as técnicas adequadas).

      Eu nunca usei o "Nano", por isso nem sei quanto de memória ele tem. Assim se a memória for muito pouca (como suspeito que seja), será um desafio a mais.

      Além disso, atente que as CPUs AVR8 podem executar código diretamente de uma memória externa, como uma RAM, EEPROM, Flash, etc, pois podem acessar um "BUS" externo. Mas isto não está disponível para todos os modelos de CPUs AVR8. E não sei qual a CPU usada no "Nano" pra poder afirmar se ela permite isso (provavelmente não). Mas se permitir, há uma pequena possibilidade de vc apenas acrescentar uma memória convencional (ao invés de um SD Card).

    Provavelmente a sugestão do Teodoro, é mais factível e rápida para vc.

    Caso possamos ajudar, post aqui que certamente o faremos.

    Abrçs,

    Elcids

Teodoro e Elcids, boa noite!

Agradeço a atenção de vocês. Desculpem a demora em retornar.

Eu dei uma otimizada no código e, aparentemente, isso resolveu meu problema. Como estou iniciando nesse mundo, tinha muita coisa desnecessária no meu sketch. Conforme fui lendo e entendendo um pouquinho melhor, pude melhora-lo.

Bacana sua explicação de funcionamento Elcids, não conhecia nada sobre isso. Agregou bastante.

Grande abraço.

Bom dia.

Outra coisa bacana que pode ser feito, é guardar as strings em memória flash ao invés de já reservar na RAM.

Existe uma biblioteca que é a <avr/pgmspace.h>, que já traz vários procedimentos para realizar a leitura desses dados.

Veja a referência no site do arduino.cc : Referência

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço