I can't see the string of code you are talking about above.
Please see my old and new initsd code from SDCard.cpp below:
- OLD firmware that works -
void SDCard::initsd()
{
sdactive = false;
#if SDSS >- 1
#if SDCARDDETECT>-1
if(READ(SDCARDDETECT) != SDCARDDETECTINVERTED)
return;
#endif
/if(dir[0].isOpen())
dir[0].close();*/
if(!fat.begin(SDSS, SPI_FULL_SPEED))
{
Com::printFLN(Com::tSDInitFail);
return;
}
sdactive = true;
Printer::setMenuMode(MENU_MODE_SD_MOUNTED, true);
fat.chdir();
if(selectFile("init.g", true))
{
startPrint();
}
#endif
}
- New 0.92.9 Firmware that doesn't work -
void SDCard::initsd()
{
sdactive = false;
#if SDSS > -1
#if SDCARDDETECT > -1
if(READ(SDCARDDETECT) != SDCARDDETECTINVERTED)
return;
#endif
HAL::pingWatchdog();
HAL::delayMilliseconds(50); // wait for stabilization of contacts, bootup ...
fat.begin(SDSS, SPI_FULL_SPEED); // dummy init of SD_CARD
HAL::delayMilliseconds(50); // wait for init end
HAL::pingWatchdog();
/if(dir[0].isOpen())
dir[0].close();*/
if(!fat.begin(SDSS, SPI_FULL_SPEED))
{
Com::printFLN(Com::tSDInitFail);
sdmode = 100; // prevent automount loop!
return;
}
sdactive = true;
Printer::setMenuMode(MENU_MODE_SD_MOUNTED, true);
HAL::pingWatchdog();
fat.chdir();
if(selectFile("init.g", true))
{
startPrint();
}
#endif
}