• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

не все данные записываются в EEPROM

mishgan

Member
Пишу в EEPROM функцией.
Код:
void save() {
String ssid=server.arg("ssid");
String pass=server.arg("pass");
int  tip =server.arg("tip").toInt(); //значения 0, 1 или 2
Serial.println(tip); // значение выводится
EEPROM.begin (256);
EEPROM.write(102,tip); 
sch=String(ssid).length();
EEPROM.write(130 , sch);
for(byte i = 0; i < sch; i++) { EEPROM.write(131+i*2, highByte(ssid[i]));  EEPROM.write(131+i*2+1, lowByte(ssid[i]));}
sch=String(pass).length();
EEPROM.write(180, sch); 
for(byte i = 0; i < sch; i++) { EEPROM.write(181+i*2, highByte(pass[i]));  EEPROM.write(181+i*2+1, lowByte(pass[i]));}
EEPROM.end();
delay(100);
server.send(200, "text/plain","ok");
}
и пытаюсь получить эти значения при запуске

Код:
EEPROM.begin (256);
....
rejrab=EEPROM.read(102);
Serial.println(rejrab); // значение не отображается
....
sch = EEPROM.read(130);
for(byte i = 0; i < sch; i++) {
hi  = EEPROM.read(131+i*2);   
low = EEPROM.read(131+i*2+1);
ssid[i]= word(hi, low);}
ssid[sch] = '\x0';
Serial.println(ssid); // ssid выводится 
sch = EEPROM.read(180);
for(byte i = 0; i < sch; i++) {
hi  = EEPROM.read(181+i*2);   
low = EEPROM.read(181+i*2+1);
pass[i] = word(hi, low);}
pass[sch] = '\x0';
Serial.println(pass); // значение выводится
EEPROM.end();
При старте Serial.println(rejrab); не выводит никакого значения. Serial.println(ssid); и Serial.println(pass); выводят все как надо. Пробовал менять адреса... не помогает. В чем может быть проблема?
 

Atom

Member
не вижу нигде EEPROM.commit();

ps: на самом деле оба параметра записываются фреймворком независимо от вашего желания в другом месте и нет особой нужды их дублировать.
 

mishgan

Member
не вижу нигде EEPROM.commit();

ps: на самом деле оба параметра записываются фреймворком независимо от вашего желания в другом месте и нет особой нужды их дублировать.
есть EEPROM.end() которые тоже записывает. О каких 2х параметрах идет речь?
 

Atom

Member
ssid и password.

по топику: commit() попробуйте вставить. я тоже долго грыз esp, но вразных чипах с разными sdk все идет по разному. И именно commit() был мне в помощь.
 

Atom

Member
бывает. но еще бы хорошо написать тут в чем ошибка была. Чтоб это не просто чат фриков был, а знак "здесь лежат грабли" и другой человек нашел и радовался.
 
Сверху Снизу