• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос esp8266 и eeprom

(_Dan_)

New member
Здравствуйте. Интересует вопрос: есть ли а esp8266 энергонезависимая память?! Если есть, то как произвести запись значения?! Пробовал следующий код:
Код:
#include <EEPROM.h>
int a=0;
int b=123;
int f;
void setup() {
  Serial.begin(115200);
  EEPROM.put(0,b);
  delay(1000);
  EEPROM.get(0,a);
  Serial.println();
}
void loop() {
  Serial.println(a);
  delay(2000);
  Serial.println(b);
  delay(2000);
}
Просто проверял. Должно было записаться число 123 в регистр с адресом "ноль", потом от туда считаться и записаться в переменную "а". Но что-то не вышло.
 

DrJarold

Member
Как пример:
Код:
void SavePrefereseToEPPROM() {
    if ((bool) EEPROM.read(NTP_ADDR) != NTPState)
        EEPROM.write(NTPState, NTP_ADDR);
    if ((bool) EEPROM.read(AUTO_CONNCT_ADDR) != WIFI_ENABLE)
        EEPROM.write(WIFI_ENABLE, AUTO_CONNCT_ADDR);
    if ((bool) EEPROM.read(MAX_TIMERS_ADDR) != MAX_TIMERS)
        EEPROM.write(MAX_TIMERS, MAX_TIMERS_ADDR);
    if ((bool) EEPROM.read(MAX_TEMP_SENSOR_ADDR) != MAX_TEMP_SENSOR)
        EEPROM.write(MAX_TEMP_SENSOR, MAX_TEMP_SENSOR_ADDR);
}
void LoadPreferenceFromEPPROM() {
    NTPState = (bool) EEPROM.read(NTP_ADDR);
    WIFI_ENABLE = (bool) EEPROM.read(AUTO_CONNCT_ADDR);
    MAX_TIMERS = (bool) EEPROM.read(MAX_TIMERS_ADDR);
    MAX_TEMP_SENSOR = (bool) EEPROM.read(MAX_TEMP_SENSOR_ADDR);
}
 

Юрий Ботов

Moderator
Команда форума
Учтите что на самом деле EEPROM у esp это вовсе не EEPROM а кусочек SPI флэша с которого esp грузится.
 
Последнее редактирование:

tretyakov_sa

Moderator
Команда форума
Здравствуйте. Интересует вопрос: есть ли а esp8266 энергонезависимая память?! Если есть, то как произвести запись значения?! Пробовал следующий код:
Код:
#include <EEPROM.h>
int a=0;
int b=123;
int f;
void setup() {
  Serial.begin(115200);
  EEPROM.put(0,b);
  delay(1000);
  EEPROM.get(0,a);
  Serial.println();
}
void loop() {
  Serial.println(a);
  delay(2000);
  Serial.println(b);
  delay(2000);
}
Просто проверял. Должно было записаться число 123 в регистр с адресом "ноль", потом от туда считаться и записаться в переменную "а". Но что-то не вышло.
Для записи нужно либо выполнить EEPROM.commit() или EEPROM.end()
 
Сверху Снизу