Dubbio gestore schede ESP8266

Ciao,

dunque ho questa scheda D1 MINI con interfaccia USB CP2104 e 32MB di flash:

ho difficoltà a capire quale sia, tra le tante, la giusta board da selezionare nel menù del gestore schede dell’ide di arduino. Non ho mai avuto problemi con le classiche Wemos D1 mini lite con 1 MB di flash che ho utilizzato fin’ora, ma adesso in un progetto dove ho necessità di usare l’update del FW via OTA, mi serve più flash.

Usando molto la scrittura su EEPROM nei miei lavori, ho notato che questa board, se associata alla scelta nel gestore board → " LOLIN (WEMOS) D1 MINI PRO, non gestisce bene la cosa.

Vi incollo un codice stupido con cui ho fatto dei test:

#include <EEPROM.h>               // https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM

int addr = 0;           // indice memoria EEPROM

int value = 5;

void setup() {
  Serial.begin(9600);
  EEPROM.begin(512);
  EEPROM.write(addr, value);
  EEPROM.commit();
  delay(200);
}

void loop() {
  Serial.println(EEPROM.read(addr));
  delay(1000);
}

dunque scrivo 5 in EEPROM e stampo correttamente il valore leggendolo dalla EEPROM. Poi commento delle righe e riverso questo codice nella board:

#include <EEPROM.h>               // https://github.com/esp8266/Arduino/tree/master/libraries/EEPROM

int addr = 0;           // indice memoria EEPROM

int value = 5;

void setup() {
  Serial.begin(9600);
  EEPROM.begin(512);
 // EEPROM.write(addr, value);
 // EEPROM.commit();
 // delay(200);
}

void loop() {
  Serial.println(EEPROM.read(addr));
  delay(1000);
}

apro il monitor e stampo 0.

Invece se seleziono ESPino (esp 12 module) tutto funziona bene. Allora poi passo a riversare il codice del mio lavoro, ma noto continui riavvii. Vi incollo un eccezione sollevata:

Panic core_esp8266_main.cpp:206 loop_task

>>>stack>>>

ctx: sys
sp: 3fffeee0 end: 3fffffb0 offset: 0000
3fffeee0:  3ffea454 00000000 00000000 40100eaf  
3fffeef0:  000000fe 00000000 00000000 00000000  
3fffef00:  00000000 00000000 00000000 3ffefbd0  
3fffef10:  c0000000 3fffd9d0 00000000 00000022  
3fffef20:  3fffc200 40102998 3fffc278 40223f82  
3fffef30:  3ffea460 2c9f0300 4000050c 40223fdf  
3fffef40:  40102998 3fffc200 00000022 4022378a  
3fffef50:  40241300 00000030 00000007 ffffffff  
3fffef60:  402412bc 3ffff114 0c97e87a b38373cd  
3fffef70:  7c3ce7a8 ec6f29fb d0f5992f 3ffff148  
3fffef80:  c73ca5ae 3fdb1ce9 d60ac927 00000040  
3fffef90:  3ffff220 00000040 00000000 00000030  
3fffefa0:  402626e0 3fffef3c 40262699 3ffff868  
3fffefb0:  3fffffc0 00000000 00000000 feefeffe  
3fffefc0:  feefeffe feefeffe feefeffe feefeffe  
3fffefd0:  00000000 00000000 0000001f 4010039c  
3fffefe0:  feefeffe feefeffe 3fffc228 40105591  
3fffeff0:  4000050c feefeffe feefeffe feefeffe  
3ffff000:  40241557 00000030 00000019 ffffffff  
3ffff010:  402412bc b03d96d1 d9e67f88 57456c3c  
3ffff020:  72668b3b 54c92cb2 13db565b 7074ec49  
3ffff030:  989c2de2 f9ffffd9 edc99a2c 762e4b4c  
3ffff040:  1cc5bfde 8aa7d6fd 50506c72 00000030  
3ffff050:  db525d4e 682bb894 b0fd829f 6a9eed34  
3ffff060:  800bfabf 60f17aa9 e1e7dfa9 f29fa8ad  
3ffff070:  5c5c5c5c 5c5c5c5c 5c5c5c5c 5c5c5c5c  
3ffff080:  5c5c5c5c 5c5c5c5c 5c5c5c5c 5c5c5c5c  
3ffff090:  a951a6c5 b4146f0b d3b60fc1 12f37bc3  
3ffff0a0:  a30a2ae5 48007b31 3de89a56 730200b4  
3ffff0b0:  130392fa 148707a2 ce9a8748

decodificata:

Decoding stack results[color=#222222][/color]
0x40100eaf: free(void*) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 398[color=#222222][/color]
0x4022378a: loop_task(ETSEvent*) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_main.cpp line 208[color=#222222][/color]
0x4022378a: loop_task(ETSEvent*) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_main.cpp line 208[color=#222222][/color]
0x40241300: br_sha2small_round at src/hash/sha2small.c line 88[color=#222222][/color]
0x40241300: br_sha2small_round at src/hash/sha2small.c line 88[color=#222222][/color]
0x402412bc: br_sha2small_round at src/hash/sha2small.c line 85[color=#222222][/color]
0x402412bc: br_sha2small_round at src/hash/sha2small.c line 85[color=#222222][/color]
0x4010039c: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_main.cpp line 177[color=#222222][/color]
0x40241557: br_sha2small_round at src/hash/sha2small.c line 103[color=#222222][/color]
0x40241557: br_sha2small_round at src/hash/sha2small.c

Potete darmi delle dritte?

Grazie

Ti ho risposto anche di là, ma guardando il link che hai messo dice che è compatibile con la D1 mini pro.

La libreria EEPROM su ESP8266 è molto diversa rispetto a quella utilizzata ad esempio su un AVR, di fatto è un'emulazione: viene riservata parte della memoria flash a questo scopo. Probabilmente la tua scheda non è prevista o è mal-gestita e quindi ti crea l'eccezione.

Io però mi chiedo ha senso usare un'emulazione di EEPROM quando hai un file system che ti consente di scrivere quello che vuoi?
Dai uno sguardo all'esempio incluso ESP8266 -> ConfigFile.ino

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.