2017-02-21 8 views
-2

nodemcu esp8266 12e의 eeprom에 데이터를 쓰고 있지만 데이터를 쓰는 데 오류가 있습니다. 보드를 다시 시작한 후에는 값이 오래 저장되지 않고 다시 손실됩니다. 이 문제를 해결하는 데 도움이됩니다. 보드에 eeprom에 데이터를 쓸 때 데이터가 eeprom에 기록되지만 보드를 다시 시작하면 값이 손실됩니다.Nodemcu에서 eeprom에 데이터를 쓰는 중 오류가 발생했습니다.

memcpy (msg,message.payload,message.payloadlen); 
    Serial.print(msg); 
    int compare = 1; 
    if (0==(compare=(strncmp("ON",msg,4)))) { 
    val = 1 ; 
    digitalWrite(LED,HIGH); 
    EEPROM.write(addr,val); 
    compare = 1; 
    } 
    else if (0==(compare=(strncmp("OFF",msg,4)))) { 
    val = 0 ; 
    digitalWrite(LED,LOW); 
    EEPROM.write(addr,val); 
    compare = 1; 
    } 

답변

0

그래서 ESP8266에는 실제로 EEPROM이 없습니다. Arduino SDK의 제작자는 대신 가상 EEPROM에 사용할 플래시의 작은 부분 (링커 스크립트에서 실제 크기를 찾을 수 있음)을 매핑합니다.

EEPROM.write(addr, x)을 호출하면 데이터는 가상 EEPROM의 섀도 복사본에 저장되지만 EEPROM.commit();이 호출 될 때까지 플래시에 저장되지 않습니다.