Использование динамической памяти Mega328
- Войдите на сайт для отправки комментариев
Ср, 19/12/2018 - 19:35
Пишу код с выбором значений, вот часть кода
switch (cardCode) { case 27780: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 24876: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 24754: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 5406: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 5459: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 27201: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 24732: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 24720: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; case 5379: temp = String("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); break; default: temp = String("карты нет в базе"); }
При компиляции выходит ---Скетч использует 11596 байт (37%) памяти устройства. Всего доступно 30720 байт.Глобальные переменные используют 1481 байт (72%) динамической памяти, оставляя 567 байт для локальных переменных. Максимум: 2048 байт.
Если закоментирую половина CASE то размер использования динамической памятиуменьшается до 42%. Мне надо сделать 40 case выборок, пока только 10. Т.е. памяти не хватит. Как это запихать во флеш память? Пытался FOR сделать, также, более 10ти FOR вываливает ошибку при работе программы, сбивается адресация при выводе этих строк на max7219.
А писать без этой хххххх-ни никак нельзя? Если нельзя, в чем я дофига сомниваюсь, ну засунуть эту ххххх-рень в флеш.
напишите, чего вы пытаетесь добиться. То. что вы делаете десятки одинаковых строк с ИКСами - это явно какой-то костыль, который по нормальному делается не так.
Я имею в виду вот эту бредятину:
Там русские символы для вывода текста на бегущую строку, служебная инфа. Длина строк символов 50 символов максимум в каждой строке.
Человек проходит с RFID картой и на строку выводиться инфа - ФИО, телефон сот и рабочий
Можно и mega2560 применить, но мы же не ищем легких путей )
А так?
Т.е. нужна БД с ФИО и нумерами карт? Тогда строки в флеш если БД константа иначе или наращивать память или другой контроллер с большой памятю. Строки в флеш - это как #5
если строки не меняются - можно запихнуть во флеш макросом F(). как уже подсказали выше.
Если стрки переменные - НИКАК. 40 строк по 50 символов - это уже 2000 байт. а у Уно вся память всего 2048, а надо ведь и на другие переменные место оставить
)))))
Человек проходит с RFID картой и на строку выводиться инфа - ФИО, телефон сот и рабочий
все эти данные можно хранить на самой RFID. а программой только читать. Тогда в программу "поместяться" данные не только 40, но хоть 100500 карт
Человек проходит с RFID картой и на строку выводиться инфа - ФИО, телефон сот и рабочий
все эти данные можно хранить на самой RFID. а программой только читать. Тогда в программу "поместяться" данные не только 40, но хоть 100500 карт
и это было бы правильное решение и, универсальное
То смотря скока места на карте, если класик майфер, то влезета а если какой ультралайт, то там мало.
Спасибо за ответ, завтра попробую на работе.
код с 10-ю строками занимал 72 процента динамики, добавил F, стал занимать 24%
Спасибо за волшебную букву F :)
По поводу карт - у меня Индалла карты виганд26 бит, на них ничего не пишется.
Спасибо за ответ, завтра попробую на работе.
код с 10-ю строками занимал 72 процента динамики, добавил F, стал занимать 24%
Спасибо за волшебную букву F :)
После добавления еще 30 строк должен так и остаться 24% )))