From ea80b2c8fc4209160eed377437610c298312e97f Mon Sep 17 00:00:00 2001 From: ellensp Date: Mon, 19 Oct 2020 21:16:02 +1300 Subject: [PATCH] Ensure A4988 for unspecified driver type (#19798) Co-authored-by: Scott Lahteine --- Marlin/Configuration.h | 8 +-- Marlin/src/inc/Conditionals_LCD.h | 113 +++++++++++++++++++++++++----- Marlin/src/inc/SanityCheck.h | 54 ++++++++++++++ buildroot/tests/teensy35-tests | 3 +- buildroot/tests/teensy41-tests | 3 +- 5 files changed, 156 insertions(+), 25 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1f6b0db946..60f8368517 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -678,15 +678,15 @@ * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ -//#define X_DRIVER_TYPE A4988 -//#define Y_DRIVER_TYPE A4988 -//#define Z_DRIVER_TYPE A4988 +#define X_DRIVER_TYPE A4988 +#define Y_DRIVER_TYPE A4988 +#define Z_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 //#define Z4_DRIVER_TYPE A4988 -//#define E0_DRIVER_TYPE A4988 +#define E0_DRIVER_TYPE A4988 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index cbc75cfb6d..f909112507 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -755,19 +755,7 @@ #define GRID_LOOP(A,B) LOOP_L_N(A, GRID_MAX_POINTS_X) LOOP_L_N(B, GRID_MAX_POINTS_Y) #endif -#ifndef INVERT_X_DIR - #define INVERT_X_DIR false -#endif -#ifndef INVERT_Y_DIR - #define INVERT_Y_DIR false -#endif -#ifndef INVERT_Z_DIR - #define INVERT_Z_DIR false -#endif -#ifndef INVERT_E_DIR - #define INVERT_E_DIR false -#endif - +// Slim menu optimizations #if ENABLED(SLIM_LCD_MENUS) #define BOOT_MARLIN_LOGO_SMALL #endif @@ -786,14 +774,105 @@ #define HAS_CLASSIC_E_JERK 1 #endif -#ifndef SPI_SPEED - #define SPI_SPEED SPI_FULL_SPEED -#endif - #if SERIAL_PORT == -1 || SERIAL_PORT_2 == -1 #define HAS_USB_SERIAL 1 #endif +// Fallback Stepper Driver types +#ifndef X_DRIVER_TYPE + #define X_DRIVER_TYPE A4988 +#endif +#ifndef Y_DRIVER_TYPE + #define Y_DRIVER_TYPE A4988 +#endif +#ifndef Z_DRIVER_TYPE + #define Z_DRIVER_TYPE A4988 +#endif +#if NONE(DUAL_X_CARRIAGE, X_DUAL_STEPPER_DRIVERS) + #undef X2_DRIVER_TYPE +#elif !defined(X2_DRIVER_TYPE) + #define X2_DRIVER_TYPE A4988 +#endif +#if DISABLED(Y_DUAL_STEPPER_DRIVERS) + #undef Y2_DRIVER_TYPE +#elif !defined(Y2_DRIVER_TYPE) + #define Y2_DRIVER_TYPE A4988 +#endif +#if NUM_Z_STEPPER_DRIVERS < 2 + #undef Z2_DRIVER_TYPE +#elif !defined(Z2_DRIVER_TYPE) + #define Z2_DRIVER_TYPE A4988 +#endif +#if NUM_Z_STEPPER_DRIVERS < 3 + #undef Z3_DRIVER_TYPE +#elif !defined(Z3_DRIVER_TYPE) + #define Z3_DRIVER_TYPE A4988 +#endif +#if NUM_Z_STEPPER_DRIVERS < 4 + #undef Z4_DRIVER_TYPE +#elif !defined(Z4_DRIVER_TYPE) + #define Z4_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 1 + #undef E0_DRIVER_TYPE +#elif !defined(E0_DRIVER_TYPE) + #define E0_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 2 + #undef E1_DRIVER_TYPE +#elif !defined(E1_DRIVER_TYPE) + #define E1_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 3 + #undef E2_DRIVER_TYPE +#elif !defined(E2_DRIVER_TYPE) + #define E2_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 4 + #undef E3_DRIVER_TYPE +#elif !defined(E3_DRIVER_TYPE) + #define E3_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 5 + #undef E4_DRIVER_TYPE +#elif !defined(E4_DRIVER_TYPE) + #define E4_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 6 + #undef E5_DRIVER_TYPE +#elif !defined(E5_DRIVER_TYPE) + #define E5_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 7 + #undef E6_DRIVER_TYPE +#elif !defined(E6_DRIVER_TYPE) + #define E6_DRIVER_TYPE A4988 +#endif +#if E_STEPPERS < 8 + #undef E7_DRIVER_TYPE +#elif !defined(E7_DRIVER_TYPE) + #define E7_DRIVER_TYPE A4988 +#endif + +// Fallback axis inverting +#ifndef INVERT_X_DIR + #define INVERT_X_DIR false +#endif +#ifndef INVERT_Y_DIR + #define INVERT_Y_DIR false +#endif +#ifndef INVERT_Z_DIR + #define INVERT_Z_DIR false +#endif +#ifndef INVERT_E_DIR + #define INVERT_E_DIR false +#endif + +// Fallback SPI Speed +#ifndef SPI_SPEED + #define SPI_SPEED SPI_FULL_SPEED +#endif + /** * This setting is also used by M109 when trying to calculate * a ballpark safe margin to prevent wait-forever situation. diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index 9aea18c2d7..657e055241 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -3179,5 +3179,59 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2) #endif #endif +/** + * Sanity check for valid stepper driver types + */ +#define _BAD_DRIVER(A) (defined(A##_DRIVER_TYPE) && !_DRIVER_ID(A##_DRIVER_TYPE)) +#if _BAD_DRIVER(X) + #error "X_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Y) + #error "Y_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Z) + #error "Z_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(X2) + #error "X2_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Y2) + #error "Y2_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Z2) + #error "Z2_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Z3) + #error "Z3_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(Z4) + #error "Z4_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E0) + #error "E0_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E1) + #error "E1_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E2) + #error "E2_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E3) + #error "E3_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E4) + #error "E4_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E5) + #error "E5_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E6) + #error "E6_DRIVER_TYPE is not recognized." +#endif +#if _BAD_DRIVER(E7) + #error "E7_DRIVER_TYPE is not recognized." +#endif +#undef _BAD_DRIVER + // Misc. Cleanup #undef _TEST_PWM diff --git a/buildroot/tests/teensy35-tests b/buildroot/tests/teensy35-tests index c729f212a4..20a0c19726 100755 --- a/buildroot/tests/teensy35-tests +++ b/buildroot/tests/teensy35-tests @@ -112,11 +112,10 @@ exec_test $1 $2 "Teensy 3.5/3.6 COREXZ" # restore_configs opt_set MOTHERBOARD BOARD_TEENSY35_36 -opt_enable Z_MULTI_ENDSTOPS opt_set NUM_Z_STEPPER_DRIVERS 2 +opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG pins_set ramps/RAMPS X_MAX_PIN -1 opt_add Z2_MAX_PIN 2 -opt_enable USE_XMAX_PLUG exec_test $1 $2 "Dual Z with Dual Z endstops" # Clean up diff --git a/buildroot/tests/teensy41-tests b/buildroot/tests/teensy41-tests index 8d32d131e9..415d551f55 100644 --- a/buildroot/tests/teensy41-tests +++ b/buildroot/tests/teensy41-tests @@ -113,11 +113,10 @@ exec_test $1 $2 "Teensy 4.0/4.1 COREXZ" # restore_configs opt_set MOTHERBOARD BOARD_TEENSY41 -opt_enable Z_MULTI_ENDSTOPS +opt_enable Z_MULTI_ENDSTOPS USE_XMAX_PLUG opt_set NUM_Z_STEPPER_DRIVERS 2 pins_set ramps/RAMPS X_MAX_PIN -1 opt_add Z2_MAX_PIN 2 -opt_enable USE_XMAX_PLUG exec_test $1 $2 "Dual Z with Dual Z endstops" # Clean up