progmem_far
Макрос PROGMEM_FAR для доступа к константам во флеш-памяти свыше 64 кБ на микроконтроллерах AVR
Установка
Последняя опубликованная версия- Скачайте архив — реестр отдает его уже проверенным.
- В Arduino IDE выберите «Скетч → Подключить библиотеку → Добавить .ZIP библиотеку».
- Укажите скачанный файл — библиотека появится в списке доступных.
SHA-256:57a04db52a70d09113cf404f9fa7fd911a11c27e19ca4a9a7bb6cade2b798ea3progmem_far-1.0.3-57a04db5.zipОписание
На контроллерах AVR с объёмом флеш-памяти больше 64 кБ возникает проблема: если положить слишком много констант в PROGMEM, то стандартные таблицы поиска и строки библиотеки могут оказаться за границей первых 64 кБ и перестанут быть доступны обычными 16-битными адресами. Результат — странное поведение: светодиоды не мигают, вывод данных становится нечитаемым, данные из массивов не загружаются. Эта библиотека добавляет макрос PROGMEM_FAR, который специально размещает константные данные в дальней части памяти, не мешая критическому коду ядра. Для работы с такими данными нужны функции pgm_get_far_address, pgm_get_byte_far и аналоги со строками — они используют более медленные 32-битные адреса, но это позволяет освободить место в начале flash для того, что действительно туда влезть должно.