Илья! писал(а): ↑06 май 2022, 16:47
И в продолжение темы, не могли бы Вы подробно расписать процедуру прошивки: что куда прошивается (память программ, EEPROM)?
В микроконтроллере есть две области энергонезависимой памяти - Основная флеш-память и Пользовательская флеш-память.
Основная флеш-память предназначена для хранения кода программы, и когда вы прошиваете микроконтроллер, код программы загружается именно в основную память. Эту память мы обычно называем просто флеш.
Пользовательская память предназначена для хранения различных настроек программы. Главное отличие от Основной флеш-памяти в том, что её страницы очень маленькие, по 256 байт, и количество этих страниц невелико. В сумме получается 8 кБ Пользовательской памяти.
Хранить в ней можно, в принципе, любую нужную пользователю информацию. Мы используем её для хранения значений объектов словаря CANopen.
Эту память мы обычно называем EEPROM (по историческим причинам).
Илья! писал(а): ↑06 май 2022, 16:47
Почему EEPROM пустая после прошивки?
Не совсем так. Память EEPROM пустая до первого сохранения параметров словаря CANopen. Далее она хранит в себе данные до тех пор, пока через специальные регистры микроконтроллера не будет дана команда на полное её стирания. Но дать эту команду через Юникон нельзя, если что. Если понадобится стереть память - придётся обратиться к документации.
Илья! писал(а): ↑06 май 2022, 16:47
Как и куда сохраняются параметры при редактировании?
При редактировании через UniCON все значения лежат в RAM-памяти. Грубо говоря, все RW-объекты словаря - это просто переменные в программе.
Илья! писал(а): ↑06 май 2022, 16:47
Что куда сохраняется при нажатии кнопки "Сохранить параметры"?
При нажатии на кнопку "Сохранить параметры" значения всех
редактируемых объектов словаря сохраняется в EEPROM.
Ну например - настроили вы коэффициенты регулятора. Так как это переменные, они лежат в RAM. После сброса питания придётся настраивать регуляторы заново.
А если бы вы нажали "Сохранить параметры", то их значения сохранились бы в EEPROM и при включении контроллера драйвер CANopen загрузил бы эти значения в переменные.