Всем доброго времени суток. Недавно начал работать с MicroSD картой. При компиляции моего кода, где используется библиотека SD.h, выводит:
‘’‘Скетч использует 17040 байт (55%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1789 байт (87%) динамической памяти, оставляя 259 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.’‘’
Выяснилось, что библиотека SD.h забирает 1/3 от всей динамической памяти.
Как с этим бороться?
“Может работать нестабильно” и “работает нестабильно” - таки разные вещи.
Но риск же есть
И что? Только тестирование покажет
Взять контроллер, у которого больше динамической памяти.
Мне необходимо использовать именно Nano для этого проекта
“необходимо перевести полтонны кирпичей… но есть условие -использовать велосипед”.
Плату выбирают под задачу.
Данный проект осуществляется на основе корпуса очков виртуальной реальности, места для таких плат как Uno или Mega недостаточно, т.к. должен ещё помещаться ИТУН, ШИМ, аккумуляторы, плата для MicroSD и ЖК дисплей.
Так что приходится перевозить пол тонный кирпичей на велосипеде.
Во-первых, существует куча плат размера нано с куда большей памятью - это например разные стм32, rp2040 или air103.
А во-вторых, если вам нужно создать компактную конструкцию из кучи разных блоков, таких как контроллер, карт-ридер, дисплей и тд - глупо использовать платы Ардуино и готовые модули. В таком случае разрабатывают свою собственную плату , которая уже включает все нужные блоки
А оправдывать выбор неподходящего контроллера размером платы не имеет смысла. Что толку, если плата нано входит в выбранный корпус, если код в ней не будет работать?
Это всё, конечно, дельные советы. Жаль на стадии изначального проектирования их не было.
Когда я делал первую версию проекта пол года назад, мне не нужна была MicroSD, поэтому мне хватало Nano и кучи блоков. Но сейчас, когда нужно дорабатывать проект, вводя MicroSD, обнаруживается куча пробелов. На их решение или на “начатт всё сначала” времени нет.
Думаю, это абсолютный минимум.
Ну, может, если сами перепишете библиотеку, и удастся сэкономить 10-20 байтов памяти. И то вряд ли.
Мне кажется, гораздо перспективнее сокращать объем памяти, используемой остальным кодом, а это более 50% всей динамической памяти. В этом направлении и работайте.
Если нет времени на решение проблем, будущее проекта представляется сомнительным.
У Вас не такой большой выбор, как Вам, возможно, кажется:
- Перепроектировать систему с нуля, добившись сокращения требуемого объема памяти.
- Оставить проект без SD карты.
- Надеяться на то, что система, возможно, будет работать и при 87% занятой памяти.
Просто уясните, что сэкономить память на SD не удастся, и, строя свои дальнейшие планы, исходите из этого.
Изначально это бред. Мечтать построить космический корабль и выбирать какая из Ардуин вмещается в отсек системы телеметрии. Так размышляют дети.
Так не космический корабль же строю. И да, я ребёнок )
Выходит, что придётся перепроектировать
А так ли нужна MicroSD? Что за данные храните? Может можно заменить на EEPROM/Serial flash?
Тогда забейте.
Уверен?