Если программа более 57% памяти то некорректно работает ?

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Если программа более 57% памяти то некорректно работает ?

#1

Сообщение KulibinOrsk » 10.01.2020{, 16:05}

Контроллер ардуино мини 5В
Опрос датчика температуры и длительности периода(быстрый вход)
Опрос 3-х кнопок (быстрые входа)
сохранение в еепром 5 переменных и их считывание вначале
Вывод на I2C OLED дисплей: ssd1306 текущих и пороговых данных

Есть рабочая программа.
Потребовалось добавить 1 коэффициент и вывести на дисплей. (в итоге после компиляции программа занимает 57%)
Если добавляю в коде то все работает, но при выводе на дисплей приходится добавлять блок вывода строки на дисплей и код увеличивается и тогда начинаются проблемы - перестает адекватно работать. То после выводы замирает, то не выводит текущие данные.
Программу пока не выкладываю т.к. без этого кусочка все работает.
Может кто то сможет подсказать ГЛОБАЛЬНОЕ РЕШЕНИЕ (ну кроме смены контроллера) или хотя бы направление движения.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Если программа более 57% памяти то некорректно работает ?

#2

Сообщение Ingwar » 10.01.2020{, 16:10}

Попробуйте вывести дисплей на отдельную плату и активировать ее один раз в цикле с минимально приемлемой частотой.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Если программа более 57% памяти то некорректно работает ?

#3

Сообщение KulibinOrsk » 10.01.2020{, 17:04}

Ingwar, я пробовал полностью отключать режим изменения уставок и отображения их на дисплее (этот режим на отдельной плате) , но НЕ помогло. Я потому и написал мысль - думаю что связанно это именно с памятью. Хорошо если я ошибаюсь..

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Если программа более 57% памяти то некорректно работает ?

#4

Сообщение Sancho » 10.01.2020{, 17:22}

KulibinOrsk писал(а):
10.01.2020{, 16:05}
в итоге после компиляции программа занимает 57%
А сколько оперативки?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Если программа более 57% памяти то некорректно работает ?

#5

Сообщение KulibinOrsk » 10.01.2020{, 17:58}

Sancho, данные:
Скетч использует 17570 байт (57%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1359 байт (66%) динамической памяти, оставляя 689 байт для локальных переменных. Максимум: 2048 байт.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Если программа более 57% памяти то некорректно работает ?

#6

Сообщение Sancho » 10.01.2020{, 19:02}

KulibinOrsk писал(а):
10.01.2020{, 17:58}
Глобальные переменные используют 1359 байт (66%) динамической памяти, оставляя 689 байт для локальных переменных. Максимум: 2048 байт.
Об этом нужно думать...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Если программа более 57% памяти то некорректно работает ?

#7

Сообщение KulibinOrsk » 11.01.2020{, 10:14}

РЕШЕНО.
Только путем отсечения максимально возможных блоков, переменных и прочего.
Т.е. в программе осталось самое необходимое и то под 99.9 занятости. При добавлении буквально одного блока уже начинает глючить.
На сегодня для работы про мини картинка такая:
Скетч использует 17226 байт (56%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1355 байт (66%) динамической памяти, оставляя 693 байт для локальных переменных. Максимум: 2048 байт.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Если программа более 57% памяти то некорректно работает ?

#8

Сообщение Ingwar » 11.01.2020{, 13:57}

Для максимального освобождения памяти, удалите загрузчик и залейте программу через программатор (через другую Ардуино).
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Ответить

Вернуться в «Спросить у знатоков»