Есть ли ограничения на размер массива в Arduino Mega 2560?

Я пишу код Arduino с тремя массивами.

Два из них double, а один int. Далее первые два массива содержат около 420 элементов для каждого. Теперь я заметил, что при наличии более 89 элементов в 3-м массиве программа останавливается и застревает в выполнении. Но с числом элементов 89 или меньше он работает без проблем.

В чем может быть проблема?

, 👍-3

Обсуждение

Трудно сказать, не видя вашего кода., @StarCat

Ограничение составляет 32767 элементов. Все остальное - проблема с вашим кодом., @Majenko

Также следите за тем, чтобы не быть слишком близко к максимальному объему памяти. Если места для размещения переменных в стеке недостаточно, программа каким-то образом рухнет., @chrisl

Эти массивы объявляются по размеру во время компиляции? что сообщает IDE, насколько согласовано использование вашей памяти при компиляции программы. Как уже говорилось ранее, трудно помочь, не видя вашего кода., @Chad G


1 ответ


0

Mega имеет 8 КБ памяти.

Вы используете:

  • двойной (то же, что и float на Arduino, см. двойной) , 4 байта * 420 элементов * 2 массива = 3360 байт
  • int (2 байта) * 89 = 178 байт

Всего это 3538 байт

Это около 50 %, поэтому я не знаю, что такое «остальное». Вы можете взглянуть на другой связанный вопрос, который может дать некоторые ответы (например, использование динамической памяти, пробелы в памяти или локальные/стековые переменные): Каковы традиционные способы оптимизировать использование памяти программы?

,