Fix MAX6675 SPI init conflict with TMC and others

This commit is contained in:
PingWin 2020-11-10 14:08:17 +03:00
parent 53e79224fc
commit b3a2b1a6b9
2 changed files with 14 additions and 4 deletions

View file

@ -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

View file

@ -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