Boa tarde pessoal,

Ao tentar aprimorar o projeto de menu configurável, tentei o uso de matriz multidimensional.
Minha ideia é usar uma matriz [X[Y][Z].


Na teoria funcionaria muito bem, mas na pratica apareceu um bug que ainda não

consegui determinar a causa.

Neste projeto alem desta matriz tridimensional, eu uso 2 outras unidimensionais.

Ao listar na serial ou no LCD a matriz tridimensional, a lista falha .

A anexei uma listagem da falha apresentada.

Se eu remover a biblioteca e a instancia do LCD, a listagem fica normal,
ou se remover as duas outras matrizes unidirecional, também lista normal.

Alguém já teve este tipo de problema?

Anexo Sketch e listagem com falha.

IDE Arduíno versão 1.8.9.

O Arduíno ao carregar o sketch não ocupa muita memoria:

Sketch uses 7096 bytes (23%) of program storage space. Maximum is 30720 bytes.
Global variables use 1322 bytes (64%) of dynamic memory, leaving 726 bytes for local variables.
Maximum is 2048 bytes.

RV

Exibições: 280

Anexos

Responder esta

Respostas a este tópico

Boa tarde Rui, 

De acordo com  o que informou, tudo indica que seu sketch completo esta ultrapassando a capacidade de memória RAM do ATMega 328 ( apenas 2K Bytes).

https://www.arduino.cc/en/Tutorial/Memory

Sugiro que faça o mesmo teste em um Arduino Mega .  SRAM =  8K bytes

Abraços. 

Boa tarde  José Gustavo Abreu Murta,

obrigado pela sugestão.

A memoria do Atmega328, realmente é de 2048 bytes.

  • SRAM (memória de acesso aleatório estática) é onde o sketch cria e manipula variáveis
  • ​​quando é executado.

Se olhar o texto no final da pagina principal do meu tópico, o sketch  está 

usando some 64%  deste espaço.  1322 bytes de 2048 sobrando 726.

Antes de criar este poste eu testei colocando esta matriz tridimensional na memoria flash:

                                         const String strNvl[3][4][5] PROGMEM = { ..................................

afim de reduzir o uso da memoria SRAM, e mesmo assim o problema persistiu.

RV

Vai fazer o teste com o Arduino Mega?

No momento estou sem cabo USB de UNO e MEGA.

A maresia come tudo.

Mas mesmo que funcione com o mega, quero entender porque não funciona com

o Atmega328.

Quero entender o que está errado.

RV

Também suponho que seja falta de memória. Por via das dúvidas, fiz um teste no ESP32 (512KB SRAM) e funcionou normalmente.

É estranho, pois qdo usa as variáveis na memoria flash, reduz o uso da memoria RAM e então deveria funcionar corretamente,

vou fazer um teste,

vou diminuir o tamanho de cada string e ver se funfa.

Somei o tamanho de todas strings e deu 432 bytes somente.

Com strings reduzidas.

Sketch uses 7012 bytes (22%) of program storage space. Maximum is 30720 bytes.
Global variables use 1238 bytes (60%) of dynamic memory, leaving 810 bytes for local variables. Maximum is 2048 bytes.

RV

ola boa tarde eu testei no meu Arduino uno r3. deu certo. vc mencionou que não tava listando as seguintes característica.conferi no meu monitor serial e funcionou listou as seguintes características.

214 BrancoK        <-          
220 AzulY             <-
221 AmareloY      <-
222 VerdeY          <-
223 VermelhoY     <-
224 BrancoY        <-
230 AzulZ             <-
231 AmareloZ      <-
232 VerdeZ          <-
233 VermelhoZ     <-

234 BrancoZ        <-

obs: "quando carreguei para meu Arduino o meu sketch ocupa a seguinte memória"

O sketch usa 6018 bytes (18%) de espaço de armazenamento para programas. O máximo são 32256 bytes.
Variáveis globais usam 1178 bytes (57%) de memória dinâmica, deixando 870 bytes para variáveis locais. O máximo são 2048 bytes.

Obrigado JSB.

Rui veja o que eu achei. Acho que matei a charada.

https://www.arduino.cc/reference/en/language/variables/utilities/pr...

When an instruction like :

Serial.print("Write something on  the Serial Monitor");

is used, the string to be printed is normally saved in RAM. If your sketch prints a lot of stuff on the Serial Monitor, you can easily fill the RAM.

It is often convenient when working with large amounts of text, such as a project with an LCD display, to setup an array of strings. Because strings themselves are arrays, this is in actually an example of a two-dimensional array.

Obrigado Gustavo,

pode ser isto mesmo.

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço