Инициализация eeprom что это
Перейти к содержимому

Инициализация eeprom что это

  • автор:

Arduino.ru

Вопрос в сабже. Нужно при прошивке обнулять значения.

вот так не работает — хотя вроде как и должна:

uint8_t EEMEM CntrE1=0;
  • Войдите на сайт для отправки комментариев

Чт, 28/07/2016 — 12:42
Зарегистрирован: 09.11.2012

Вы имеете в виду вот это ?

  • Войдите на сайт для отправки комментариев

Чт, 28/07/2016 — 12:43

DIYMan аватар

Зарегистрирован: 23.11.2015

Ключ -e у avrdude:

Causes a chip erase to be executed. This will reset the contents of the flash ROM and EEPROM to the value ‘0xff’, and clear all lock bits

  • Войдите на сайт для отправки комментариев

Чт, 28/07/2016 — 13:37
Зарегистрирован: 15.10.2014
Araris пишет:

Вы имеете в виду вот это ?

Оно, автор сам написал что не работает.

DIYMan пишет:

-e
Causes a chip erase to be executed. This will reset the contents of the flash ROM and EEPROM to the value ‘0xff’, and clear all lock bits

А если все же обнулять, а предустанавливать ?

  • Войдите на сайт для отправки комментариев

Чт, 28/07/2016 — 14:01

DIYMan аватар

Зарегистрирован: 23.11.2015
rigl пишет:

А если все же обнулять, а предустанавливать ?

-U memtype : op : filename [: format ]

Perform a memory operation. Multiple ‘ -U ’ options can be specified in order to operate on multiple memories on the same command-line invocation. The memtype field specifies the memory type to operate on. Use the ‘ -v ’ option on the command line or the part command from terminal mode to display all the memory types supported by a particular device. Typically, a device’s memory configuration at least contains the memory types flash and eeprom . All memory types currently known are:

One or more bytes of RC oscillator calibration data.

The EEPROM of the device.

Работа с библиотекой EEPROM на ESP32, ESP8266.

EEPROM (Electrically Erasable Programmable Read-Only Memory) — это технология энергонезависимой памяти, которая позволяет хранить данные даже после отключения питания. В ESP32 и ESP8266 флэш-память используется для эмуляции EEPROM, что позволяет сохранять данные даже при перезагрузке устройства.

В ESP32 и ESP8266 флэш-память используется для эмуляции EEPROM, что позволяет сохранять данные даже при перезагрузке устройства.

Применение флэш-памяти: Флэш-память на ESP32 и ESP8266 может быть использована для сохранения различных типов данных, таких как последнее состояние переменной, настройки устройства, количество активаций и многое другое. Это особенно полезно, когда необходимо сохранить данные на длительное время.

Ограничения флэш-памяти: Одним из ограничений флэш-памяти является ограниченное количество операций записи. Вы можете записать данные в нее ограниченное количество раз (обычно 100,000 — 1,000,000 операций записи). Однако вы можете считывать данные сколько угодно раз без ограничений.

Библиотека EEPROM: Для работы с флэш-памятью ESP32 и ESP8266 в Arduino IDE используется библиотека EEPROM. Эта библиотека позволяет вам легко записывать и считывать данные из флэш-памяти, подобно тому, как вы делали это с Arduino EEPROM.

Список всех функций библиотеки EEPROM для ESP32, ESP8266 с подробными описаниями:

1. EEPROM.begin(size):

Инициализирует эмулированную EEPROM с указанным размером size (в байтах). Обычно вызывается в функции setup() .

2. EEPROM.end():

Завершает работу с эмулированной EEPROM и освобождает зарезервированные ресурсы. Необходимо вызывать, когда вы закончили работу с EEPROM.

3. EEPROM.write(address, value):

Записывает значение value (байт) в указанный адрес address в эмулированной EEPROM.

4. EEPROM.read(address):

Считывает байт данных из указанного адреса address в эмулированной EEPROM и возвращает это значение.

5. EEPROM.update(address, value):

Обновляет значение в указанном адресе address в эмулированной EEPROM. Если новое значение отличается от текущего, то происходит запись нового значения.

6. EEPROM.get(address, data):

Считывает данные из указанного адреса address в эмулированной EEPROM и сохраняет их в переменную data . Может использоваться для считывания структур или пользовательских типов данных.

7. EEPROM.put(address, data):

Записывает данные из переменной data в указанный адрес address в эмулированной EEPROM. Может использоваться для записи структур или пользовательских типов данных.

8. EEPROM.commit():

Сохраняет все изменения, внесенные в эмулированную EEPROM, во флэш-памяти. Это необходимо вызвать после операций записи, чтобы изменения вступили в силу.

Пример использования библиотеки EEPROM на ESP32, ESP8266.

Библиотеки включена в стандартный набор библиотек Arduino IDE, предназначенных для разработки программного обеспечения для ESP32 и ESP8266. Поэтому нет необходимости дополнительно устанавливать эту библиотеку после установки платы ESP32 или ESP8266 в Arduino IDE.

При создании проекта и работы с платами ESP32 или ESP8266, вы можете сразу начать использовать функции библиотеки EEPROM, такие как EEPROM.write() , EEPROM.read() , EEPROM.commit() и другие. Эти функции позволяют вам записывать и читать данные из эмулированной памяти, сохраняя информацию даже при перезагрузке устройства.

Запись данных:

Чтобы записать данные в флэш-память, используйте функцию EEPROM.write(address, value) , где address — адрес памяти для записи (от 0 до 511), а value — значение данных (от 0 до 255).

/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html */ #include void setup() < EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт int address = 0; // адрес памяти для записи (от 0 до 511) byte value = 123; // значение данных (от 0 до 255) EEPROM.write(address, value); // Запись данных EEPROM.commit(); // Сохранение изменений >void loop() < // Ваш код здесь >
Чтение данных:

Для чтения данных из флэш-памяти используйте функцию EEPROM.read(address) , где address — адрес памяти для чтения.

/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html */ #include void setup() < EEPROM.begin(512); int address = 0; //адрес памяти для чтения. byte value = EEPROM.read(address); // Чтение данных // Используйте значение данных (value) по вашему усмотрению >void loop() < // Ваш код здесь >
Освобождение ресурсов:

EEPROM.end() — это функция из библиотеки EEPROM, которая выполняет освобождение ресурсов, занимаемых под эмуляцию EEPROM во флэш-памяти ESP32. Эта функция должна быть вызвана после того, как вы закончили работу с библиотекой и больше не планируете записывать или читать данные из EEPROM.

Принцип работы библиотеки EEPROM на ESP32 следующий: при вызове EEPROM.begin(size) , где size — размер эмулируемой памяти, библиотека резервирует определенное количество флэш-памяти для эмуляции EEPROM. Когда вы вызываете EEPROM.write() для записи данных или EEPROM.read() для чтения данных, библиотека обращается к этой зарезервированной части флэш-памяти.

После того, как вы закончили работу с библиотекой EEPROM, чтобы освободить ресурсы, занятые эмуляцией EEPROM, вы должны вызвать EEPROM.end() .

Пример использования EEPROM.end() :

/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html */ #include void setup() < EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт // Работа с EEPROM >void loop() < // Ваш код здесь >void saveData() < // Сохранение данных EEPROM.commit(); EEPROM.end(); // Освобождение ресурсов >

Обратите внимание, что вызов EEPROM.commit() перед EEPROM.end() является важным. Функция EEPROM.commit() сохраняет все изменения, которые вы сделали в эмулируемой EEPROM, во флэш-памяти. После сохранения данных, вызов EEPROM.end() завершает работу с библиотекой и освобождает ресурсы.

Итак, освобождение ресурсов с помощью EEPROM.end() важно для эффективного управления памятью и предотвращения утечек памяти при использовании библиотеки EEPROM на ESP32.

Кода для подсчета количества включений устройства с использованием библиотеки EEPROM.

Этот пример демонстрирует, как использовать библиотеку EEPROM на микроконтроллерах ESP32 и ESP8266 для создания счетчика, который подсчитывает количество включений (перезагрузок) устройства. Библиотека EEPROM позволяет нам сохранять данные в энергонезависимой памяти, которые останутся неизменными даже после выключения питания.

/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html */ #include int address = 0; // адрес памяти для записи (от 0 до 511) byte value_w; // значение данных (от 0 до 255) void setup() < Serial.begin(74880); EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт value_w = EEPROM.read(address); // Чтение данных value_w++; EEPROM.write(address, value_w); // Запись данных EEPROM.commit(); // Сохранение изменений byte value_r = EEPROM.read(address); // Чтение данных // Используйте значение данных (value) по вашему усмотрению Serial.println(); Serial.print("Номер включения устройства: "); Serial.println(value_r); >void loop()

Как это работает:

  1. Подключение библиотеки: Прежде чем начать, мы подключаем библиотеку EEPROM, чтобы получить доступ к функциям для работы с эмулированной энергонезависимой памятью.
  2. Инициализация переменных и адреса: Мы объявляем переменную address , которая будет использоваться как адрес в памяти для хранения количества включений. Мы также создаем переменную value_w , которая будет хранить текущее количество включений.
  3. Функция setup():
    • Мы настраиваем последовательное соединение для вывода данных на монитор порта с помощью Serial.begin(74880) .
    • Инициализируем эмулированную EEPROM с размером 512 байт с помощью EEPROM.begin(512) .
    • Читаем текущее значение (количество включений) из памяти с помощью EEPROM.read(address) .
    • Увеличиваем значение на 1, чтобы учесть текущее включение.
    • Записываем новое значение обратно в память с помощью EEPROM.write(address, value_w) .
    • Сохраняем изменения во флэш-памяти с помощью EEPROM.commit() .
    • Читаем новое значение из памяти и выводим его на монитор порта.
  4. Функция loop(): Эта функция остается пустой, так как в ней нет необходимости для данной задачи.

Кода для подсчета количества включений устройства с использованием библиотеки EEPROM

Итог: Этот код создает счетчик, который увеличивает значение при каждой перезагрузке устройства и сохраняет его в эмулированной энергонезависимой памяти. Таким образом, вы можете отслеживать, сколько раз ваше устройство было включено, даже при перезагрузке или отключении питания. Это полезный способ сохранения и подсчета долгосрочных статистических данных на ESP32 и ESP8266.

Удачи в вашем эксперименте с EEPROM!

Понравился урок. Работа с библиотекой EEPROM на ESP32, ESP8266? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

EEPROM

EEPROM от англ. Electrically Erasable Programmable Read-Only Memory — это электрически стираемое перепрограммируемое ПЗУ (ЭСППЗУ), один из видов энергонезависимой памяти таких, как PROM и EPROM. Память такого типа может стираться и заполняться данными до миллиона раз. Данные, записанные в эту память не исчезают при отключении питания.

Использование

Электроника большинства 3D принтеров поддерживает хранение некоторого объема настроек в своей внутренней памяти. Прошивка Marlin использует EEPROM для хранения настроек принтера и загружает при подаче питания на контроллер. Внимание! Изменение исходного кода и перепрошивка микропрограммы контроллера не изменяет содержимое EEPROM.

Включение / отключение EEPROM

В прошивке Marlin можно как включить использование EEPROM, так и отключить эту возможность. За включение использования EEPROM отвечает строка #define EEPROM_SETTINGS если эта строчка закомментирована, то использование EEPROM отключено. Для включения использования возможности EEPROM требуется расскоментировать строку #define EEPROM_SETTINGS. Данная строка находится в файле Configuration.h

На данный момент, по умолчанию, разработчики Repository версии Marlin отключили использования EEPROM. Это чтобы избежать «непредсказуемые действия / последствия» работы принтера.

Учтите, что если у вас EEPROM включена, то вы всегда можете сбросить на «Установки по умолчанию» (исходя из исходного кода), используя команды M502 с последующим M500.

EEPROM G-коды

  • M500 Сохранение текущих параметров в EEPROM.
  • M501 Чтение всех параметров из EEPROM.
  • M502 сбросить текущие настройки по умолчанию, как указано в Configurations.h (не забудьте потом сохранить изменения командой M500)
  • M503 Печать текущих настроек — Выводит на экран хранящиеся в EEPROM настройки.

Настройки в EEPROM

Когда вы делаете M503 команду она выводет отчет , как это, который будет отличаться в зависимости от конфигурации Marlin :

‘>>> M503 S0’ M92 X80.00 Y80.00 Z4000.00 E1258.14

M203 X500.00 Y500.00 Z2.25 E45.00 M201 X9000 Y9000 Z100 E300 M204 P1500.00 R1500.00 T3000.00 M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00 M206 X0.00 Y0.00 Z0.00 M145 M0 H180 B70 F0 M145 M1 H240 B110 F0 M301 P20.83 I1.04 D104.71 C1.00

Если вы не изменили эти параметры, то они соответствуют содержимому EEPROM.

Очистка EEPROM

EEPROM clear.png

Ссылки

  1. Это авто перевод статьиhttps://github.com/MarlinFirmware/Marlin/wiki/EEPROM с частичными правками человека 🙂

Объясните, что такое инициализация?

Не во всяком аппарате организован такой алгоритм.
Зачастую чистую память нужно инициализировать ручками, записывая в нее нужный код.
Вообще, само понятие «инициализации» — это создание таких условий, после которых аппарат оживает и его можно настраивать дальше, его штатными средствами.

Пример из компьютеров: если стирается флеш-БИОС, машина умирает.
Чтобы такого не происходило (а особенно это неприятно, если микросхема на пайке, а не на кровати), сейчас делают нестираемую часть прошивки, в которой записана процедура восстановления БИОС с внешнего носителя (например, у Асусов сделано так).

Caша писал:
И еще – что такое флэш-память?Я знаю такие:
EEPROM – 24C04,93C46 и т.п.
EPROM(ПЗУ) – 27C512,27C040 и т.п.
Что из этого флэш?Что такое ROM и RAM?В общем я запутался в трех соснах.

RAM — Random Access Memory, память с произвольной выборкой, ОЗУ (оперативное запоминающее устройство). Можно писать, можно читать.
Но обесточил — и она все забыла.

ROM — Read Only Memory, память только для чтения, ПЗУ (постоянное запоминающее устройство).

ПЗУ бывают масочные (т.е., нужный код зашивается в процессе изготовления кристалла), с прожигаемыми перемычками (программируются один раз), электрически программируемые с ультрафиолетовым стиранием (программируются несколько раз, EPROM), электрически перепрограммируемые (можно перепрограммировать, не вынимая из аппаратуры, EEPROM).

Масочные — например, контроллер клавиатуры компьютера.
Там стоит однокристальный универсальный контроллер, в который зашита прямо при изготовлении микросхемы программа, обеспечивающая функцию клавиатуры.

Память с прожигаемыми перемычками существует в основном в виде программируемых логических матриц (ПЛМ), сложных дешифраторов.

Память с УФ стиранием программируется нулями, а единицы записываются сразу во все ячейки, при освещении УФ лампой.

В EEPROM и нули, и единицы записываются электрически.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *