Официальный сайт компании Arduino по адресу arduino.cc
avr ограничение на объем данных размещенных в Flash памяти програмы
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
что скажете, гуру AVR ?
Короче, из много опытов вывода графики (что было под рукой ардуино MegaCore на Atmega128 ) , появился вывод , что
существует некое ограничение (компилятором или железно в 8bit avr ) на размещение констант (иконок, данных,..) в памяти для команд.
дано дисплей, ардуино 8бит и UTFT. шрифты не используются (ибо особо не проконтролируешь потом использование памяти) , програмный код минимален - только вызов иконок.
Опытным путем , докидывая иконки свыше 52% памяти атмеги128 . а это около 65кбайт ! (16битное слово) , то перестает все отображаться - белый экран сразу после заливки скетча.
если же забить 52% иконками , и дальше до 99% забить кодом ( к примеру тестами UTFT , вызовами этих же иконок) - то всё работает!
Ззначит получается что при использовании много шрифтов и иконок, вначале надо написать простенький скетч вызова всего используемого текста, иконок и констант, и проверить скомпилить, и убедиться в том, чтобы объем не превышал 65кбайт . А потом уже смело использовать с остальным кодом.
Для владельцев DUE думаю это не актуально, она 32битная. У UNO atmega328 и так память программ не превышает 65К.
Получается что проблемы могут быть у MEGA atmega2560 .
Для начала хотелось бы увидеть фрагмент чтения из PROGMEM.
не ну то, что адресоваться к памяти более 65к напрямую на 8 битном низзя это то понятно, что вторые - странично
Для начала хотелось бы увидеть фрагмент чтения из PROGMEM.
col=pgm_read_word(&data[tc]); с чтением все ок, да и если бы было не так, ничего бы не рисовалось
не ну то, что адресоваться к памяти более 65к напрямую на 8 битном низзя это то понятно, что вторые - странично
Но ведь не одну иконку читаем over 65k а несколько мелких...
Дело не в 146% PROGMEM, дело в KABOOM! :)
Не совсем понятно, как в описанном случае это произойдет? из за чего получится дикая фрагментация