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 перед заливкой новой прошивки. Ну и заодно мы узнали много нового.
Еще больше интересных статей
Вплавляем гайки правильно!
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Давненько ничего не писал здесь, т.к. не было под...
Выравнивание стола Elegoo Neptune 3 PRO: по мотивам SkittlesL0ve, но без напильника
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
В этой статье я поделюсь с вами своим успешным опытом выравнивания сто...
GCODE: Основы
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Плюшки от ПавлушкиПосле написания предыдущей...
Комментарии и вопросы
Если количество выливаемого сп...
А при чём здесь это? Мы же изн...
мне мало области печати к1макс...
печатал pla на FF5m. Выскочил...
Почему-то начали отходить подд...
Собственно на К1мах через смен...
Помогите разобраться, АБС печа...