diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp index 44abf722f2..9704669d61 100644 --- a/Marlin/src/MarlinCore.cpp +++ b/Marlin/src/MarlinCore.cpp @@ -991,6 +991,20 @@ void setup() { SETUP_RUN(HAL_init()); + // Early-disable MAX6675, as it can flood on SPI bus and prevent TMC and others to init correctly + // thermalManager.init() called too late to do this + #if HAS_MAX6675 + #if ENABLED(HEATER_0_USES_MAX6675) + SET_OUTPUT(MAX6675_SS_PIN); // Setup CS pin + WRITE(MAX6675_SS_PIN, HIGH); // Disable TT_MAX6675 + #endif + #if ENABLED(HEATER_1_USES_MAX6675) + SET_OUTPUT(MAX6675_SS2_PIN); // Setup CS pin + WRITE(MAX6675_SS2_PIN, HIGH); // Disable TT_MAX6675 + #endif + DELAY_NS(100); // Ensure 100ns delay + #endif + #if HAS_L64XX SETUP_RUN(L64xxManager.init()); // Set up SPI, init drivers #endif diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index b476b35593..666004a37a 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2256,16 +2256,12 @@ void Temperature::disable_all_heaters() { #if COUNT_6675 > 1 #define WRITE_MAX6675(V) do{ switch (hindex) { case 1: WRITE(MAX6675_SS2_PIN, V); break; default: WRITE(MAX6675_SS_PIN, V); } }while(0) - #define SET_OUTPUT_MAX6675() do{ switch (hindex) { case 1: SET_OUTPUT(MAX6675_SS2_PIN); break; default: SET_OUTPUT(MAX6675_SS_PIN); } }while(0) #elif HEATER_1_USES_MAX6675 #define WRITE_MAX6675(V) WRITE(MAX6675_SS2_PIN, V) - #define SET_OUTPUT_MAX6675() SET_OUTPUT(MAX6675_SS2_PIN) #else #define WRITE_MAX6675(V) WRITE(MAX6675_SS_PIN, V) - #define SET_OUTPUT_MAX6675() SET_OUTPUT(MAX6675_SS_PIN) #endif - SET_OUTPUT_MAX6675(); WRITE_MAX6675(LOW); // enable TT_MAX6675 DELAY_NS(100); // Ensure 100ns delay