Ogólnie komponuję sterowanie zaworem CO przez centralę zbierającą dane z czujnika. Jest zatem para czujnik ESP8266 klient WiFI i centrala ESP8266 access point.
W jakimś momencie muszę pobrać plik z centrali do pamięci flash czujnika.
Problem w tym, że sekwencyjny zapis do flash przechodzi bez czkawki tylko jeśli WiFi nie nawiązało połączenia.
Odizolowałem kod na tyle, że zwykły zapis sekwencyjny bufora pełnego zer ukończy się poprawnie tylko jeśli zakomentuję WiFi.begin (czego nie zakładam robić).
Jak to możliwe że samo połączenie WiFi powoduje exception w pętli zapisu do flash ??
Dlaczego aktywne połączenie Wifi zakłóca zapis do flash ??
Odnotowałem że nie dzieje się tak podczas odczytu zaś exception pojawia się dokładnie po zapisaniu 32-go bloku 1024 bajtów.
Code: Select all
/*
WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.begin("ssid", "passwd");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println("Connected.");
*/ - if commented out it would complete fine
char fnam[] = "/server.bin";
uint8_t buf[1024] = {0};
yield();
Serial.flush();
LittleFS.remove(fnam);
Serial.flush();
File f = LittleFS.open(fnam, "w");
int len = 0;
if (!f)
Serial.println("error file not opened");
else {
Serial.println("opened");
while (len < 200) {
yield();
Serial.flush();
f.write(buf, 1024);
delay(100);
len++;
}
f.flush();
}
f.close();
