EEPROM. Avrdude. Снова про работу с контроллерами
EEPROM - (Electrically Erasable Programmable Read-Only Memory) область энергонезависимой памяти микроконтроллера, в которую можно записать и прочитать информацию. Зачастую его используют для того, чтобы хранить настройки программы, которые могут меняться в процессе эксплуатации, и которые необходимо хранить при отключенном питании.
Как 3D принтер использует EEPROM?
Рассмотрим на примере Marlin'а. В Marlin Firmware 'из коробки' EEPROM не используется. Параметры конфигуратора (Configuration.h), которые включают возможность его использования, по умолчанию, закомментированы.
#define EEPROM_SETTINGS
#define EEPROM_CHITCHAT
Если включено использование EEPROM, то принтер может хранить и использовать следующие настройки (подсмотрено у буржуев):
- Количество шагов на миллиметр
- Максимальная/минимальная скорость подачи [мм/с]
- Максимальное ускорение [мм/с^2]
- Ускорение
- Ускорение при ретракте
- Настройки PID
- Отступ домашней позиции
- Минимальная скорость подачи во время перемещения [мм/с]
- Минимальное время участка [мс]
- Максимальный скачок скорости по осям X-Y [мм/с]
- Максимальный скачок скорости по оси Z [мм/с]
- Store memory
- Load memory
- Restore Failsafe
- M500 Сохраняет текущие настройки в EEPROM до следующего запуска или выполнения команды M501.
- M501 Читает настройки из EEPROM.
- M502 Сбрасывает настройки на значения по-умолчанию, прописанные в Configurations.h. Если выполнить после неё M500, в EEPROM будут занесены значения по-умолчанию.
- M503 Выводит текущие настройки – ''Те, что записаны в EEPROM.''
Как считать и записать данные в EEPROM?
Аналогично, описанному в статье про бэкап, методу бэкапа прошивки, используя ключ -U. Только в данном случае после него будет указатель на то, что считывать нужно EEPROM.
avrdude.exe -p atmega2560 -c wiring -PCOM5 -b115200 -Ueeprom:r:'printer_eeprom'.eep:iЭтой командой производится чтение данных EEPROM'а в файл 'printer_eeprom.eep'. В случае успеха, на экране вы увидите примерно следующее.Запись тоже не представляет из себя ничего сложного и выполняется аналогичной командой, которая отличается только тем, что в ключе -U стоит не 'r', а 'w'.
В случае успеха, на экране вы увидите примерно следующее сообщение.Как и зачем стирать EEPROM?avrdude.exe -p atmega2560 -c wiring -PCOM5 -b115200 -Ueeprom:w:'printer_eeprom'.eep:i
Для начала,- 'зачем это делать?'. Стирать EEPROM нужно в том случае, если предыдущая прошивка тоже его использовала, и в памяти мог остаться мусор. Где-то я уже натыкался на людей с проблемами, что после перехода с одной прошивки на другую (с Marlin на Repitier ЕМНИП), у них принтер начинал вести себя, скажем так, 'творчески'. Это связанно с тем, что разные прошивки хранят свои данные под разными адресами. И при попытке читать данные из неверного адреса начинается свистопляска.
Затереть EEPROM можно только программно из прошивки, но для этого придётся - на время залить в контроллер специальный скетч. Подробно об этом можно прочитать в официальной документации по Arduino.
Если же стирается EEPROM не в Arduino плате, а в каком-то абстрактном контроллере, то код скетча нужно будет изменить с учётом размера EEPROM в конкретном контроллере на плате. Для этого нужно будет поменять условие окончания в цикле 'For'. Например, для ATmega328, у которой 1kb памяти EEPROM, цикл будет выглядеть так:
for (int i = 0 ; i < 1024; i++) {...}Вывод.
Я довольно долго распинался, а всё для чего? Для того, чтобы подвести к заключению о том, что при бэкапе прошивки, EEPROM тоже можно сохранить, но только в том случае если вам нужны сохранённые в нём настройки. Если же вы готовы ими пожертвовать, то забейте на это. Так же, если вы меняете одну прошивку на другую, или переходите с версии не версию, не поленитесь очистить EEPROM перед заливкой новой прошивки. Ну и заодно мы узнали много нового.
Еще больше интересных статей
Klipper - восстановление прерванной печати
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно выяснилось что у стокового клиппера есть странная особенно...
Настройка Marlin для датчика Biqu microprobe для платы BigTreeTech_SKR_mini_E3_V2.0
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Собираем 3D-принтер своими руками. Пошаговая инструкция. Часть 1.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Как уже анонсировал Серега, я начинаю публиковать цикл статей по сборк...
Комментарии и вопросы
Расчеты по себестоимости уже п...
Тут о том и речь, что пресеты....
эх аудиофилия, такая аудиофили...
Доброго времени суток, знающие...
Всем привет! Все никак не могу...
Такая проблема, 3д принтер не...
Доброго дня всем.Был у меня пр...