Problem występuje od początku uruchomienia ESP, na starcie w konsoli już po inicjalizacji jest takeBusControl, następnie relenquishBusControl (ale w tym przypadku dalej jest "blokada" na karcie), później działa loop() - efekt taki sam, po operacji na folderze WebDav efekt identyczny:
Kod: Zaznacz cały
void loop() {
if(millis() < spiBlockoutTime)
blink();
// do it only if there is a need to read FS
if(dav.isClientWaiting()) {
if(initFailed)
return dav.rejectClient(statusMessage);
DBG_PRINTLN ("do it only if there is a need to read FS")
// has other master been using the bus in last few seconds
if(millis() < spiBlockoutTime)
return dav.rejectClient("Marlin is reading from SD card");
DBG_PRINTLN("Marlin is reading from SD card");
// a client is waiting and FS is ready and other SPI master is not using the bus
takeBusControl();
dav.handleClient();
relenquishBusControl();
}
}
loop() reaguje na otwieranie folderu WebDav oraz kopiowanie/kasowanie plików, wygląda to tak, że po udanej operacji "niby zwalnia szynę" ustawia:
Kod: Zaznacz cały
void relenquishBusControl() {
// ------------------------
DBG_PRINTLN("relenquishBusControl");
pinMode(MISO, INPUT);
pinMode(MOSI, INPUT);
pinMode(SCLK, INPUT);
pinMode(SD_CS, INPUT);
LED_OFF;
weHaveBus = false;
}
- niestety przestawienie sygnałów na INPUT niczego nie wnosi bo dalej Marlin nie może przejąć kontroli nad kartą.
W Marlinie przy uruchomieniu Init. SD card w konsoli pojawia się echo:enqueueing "M21", następnie echo:SD init fail.
Ciekawe jak zmodyfikować relenquishBusControl() aby faktycznie drukarka miała dostęp do karty SD.