diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h index 637ea98a57..1c191a3bbd 100644 --- a/Marlin/Conditionals.h +++ b/Marlin/Conditionals.h @@ -442,6 +442,7 @@ #define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1)) #define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1)) #define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1)) + #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET)) #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE)) #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE)) #define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE)) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 0d4ddc9ecd..0bfba2c83b 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -579,6 +579,17 @@ void servo_init() { #endif } +/** + * Stepper Reset (RigidBoard, et.al.) + */ +#if HAS_STEPPER_RESET + void disableStepperDrivers() { + pinMode(STEPPER_RESET_PIN, OUTPUT); + digitalWrite(STEPPER_RESET_PIN, LOW); // drive it down to hold in reset motor driver chips + } + void enableStepperDrivers() { pinMode(STEPPER_RESET_PIN, INPUT); } // set to input, which allows it to be pulled high by pullups +#endif + /** * Marlin entry-point: Set up before the program loop * - Set up the kill pin, filament runout, power hold @@ -601,6 +612,11 @@ void setup() { setup_killpin(); setup_filrunoutpin(); setup_powerhold(); + + #if HAS_STEPPER_RESET + disableStepperDrivers(); + #endif + MYSERIAL.begin(BAUDRATE); SERIAL_PROTOCOLLNPGM("start"); SERIAL_ECHO_START; @@ -656,6 +672,10 @@ void setup() { SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan #endif + #if HAS_STEPPER_RESET + enableStepperDrivers(); + #endif + #ifdef DIGIPOT_I2C digipot_i2c_init(); #endif