Skip to content

Commit

Permalink
Add some missing parts, mainly related to Trinamic TMC and stealthchop.
Browse files Browse the repository at this point in the history
Thanks to HendrikJan-5D for most of this
  • Loading branch information
DerAndere1 committed May 17, 2021
1 parent 75587df commit b26ef9c
Show file tree
Hide file tree
Showing 12 changed files with 98 additions and 21 deletions.
9 changes: 9 additions & 0 deletions Marlin/src/HAL/STM32F1/MarlinSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,15 @@ constexpr bool IsSerialClassAllowed(const HardwareSerial&) { return false; }
#if AXIS_HAS_HW_SERIAL(Z4)
CHECK_AXIS_SERIAL(Z4);
#endif
#if AXIS_HAS_HW_SERIAL(I)
CHECK_AXIS_SERIAL(I);
#endif
#if AXIS_HAS_HW_SERIAL(J)
CHECK_AXIS_SERIAL(J);
#endif
#if AXIS_HAS_HW_SERIAL(K)
CHECK_AXIS_SERIAL(K);
#endif
#if AXIS_HAS_HW_SERIAL(E0)
CHECK_AXIS_SERIAL(E0);
#endif
Expand Down
7 changes: 7 additions & 0 deletions Marlin/src/HAL/TEENSY40_41/endstop_interrupts.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,11 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));

}
9 changes: 9 additions & 0 deletions Marlin/src/MarlinCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,15 @@ inline void tmc_standby_setup() {
#endif
#if PIN_EXISTS(Z4_STDBY)
SET_INPUT_PULLDOWN(Z4_STDBY_PIN);
#endif
#if PIN_EXISTS(I_STDBY)
SET_INPUT_PULLDOWN(I_STDBY_PIN);
#endif
#if PIN_EXISTS(J_STDBY)
SET_INPUT_PULLDOWN(J_STDBY_PIN);
#endif
#if PIN_EXISTS(K_STDBY)
SET_INPUT_PULLDOWN(K_STDBY_PIN);
#endif
#if PIN_EXISTS(E0_STDBY)
SET_INPUT_PULLDOWN(E0_STDBY_PIN);
Expand Down
18 changes: 9 additions & 9 deletions Marlin/src/core/language.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,9 +338,9 @@
#define STR_I_MIN "w_min"
#define STR_I_MAX "w_max"
#else
#define AXIS4_STR "I"
#define STR_I_MIN "i_min"
#define STR_I_MAX "i_max"
#define AXIS4_STR "A"
#define STR_I_MIN "a_min"
#define STR_I_MAX "a_max"
#endif
#else
#define AXIS4_STR ""
Expand Down Expand Up @@ -372,9 +372,9 @@
#define STR_J_MIN "w_min"
#define STR_J_MAX "w_max"
#else
#define AXIS5_STR "J"
#define STR_J_MIN "j_min"
#define STR_J_MAX "j_max"
#define AXIS5_STR "B"
#define STR_J_MIN "b_min"
#define STR_J_MAX "b_max"
#endif
#else
#define AXIS5_STR ""
Expand Down Expand Up @@ -406,9 +406,9 @@
#define STR_K_MIN "w_min"
#define STR_K_MAX "w_max"
#else
#define AXIS6_STR "K"
#define STR_K_MIN "k_min"
#define STR_K_MAX "k_max"
#define AXIS6_STR "C"
#define STR_K_MIN "c_min"
#define STR_K_MAX "c_max"
#endif
#else
#define AXIS6_STR ""
Expand Down
9 changes: 9 additions & 0 deletions Marlin/src/inc/Conditionals_post.h
Original file line number Diff line number Diff line change
Expand Up @@ -1963,6 +1963,15 @@
#ifndef Z_SLAVE_ADDRESS
#define Z_SLAVE_ADDRESS 0
#endif
#ifndef I_SLAVE_ADDRESS
#define I_SLAVE_ADDRESS 0
#endif
#ifndef J_SLAVE_ADDRESS
#define J_SLAVE_ADDRESS 0
#endif
#ifndef K_SLAVE_ADDRESS
#define K_SLAVE_ADDRESS 0
#endif
#ifndef X2_SLAVE_ADDRESS
#define X2_SLAVE_ADDRESS 0
#endif
Expand Down
23 changes: 18 additions & 5 deletions Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -2641,6 +2641,12 @@ CODE_N(LINEAR_AXES,
INVALID_TMC_ADDRESS(Z3);
#elif AXIS_DRIVER_TYPE_Z4(TMC2209)
INVALID_TMC_ADDRESS(Z4);
#elif AXIS_DRIVER_TYPE_I(TMC2209)
INVALID_TMC_ADDRESS(I);
#elif AXIS_DRIVER_TYPE_J(TMC2209)
INVALID_TMC_ADDRESS(J);
#elif AXIS_DRIVER_TYPE_K(TMC2209)
INVALID_TMC_ADDRESS(K);
#elif AXIS_DRIVER_TYPE_E0(TMC2209)
INVALID_TMC_ADDRESS(E0);
#elif AXIS_DRIVER_TYPE_E1(TMC2209)
Expand Down Expand Up @@ -2910,6 +2916,12 @@ CODE_N(LINEAR_AXES,
#define CS_COMPARE Z2_CS_PIN
#elif IN_CHAIN(Z3)
#define CS_COMPARE Z3_CS_PIN
#elif IN_CHAIN(I)
#define CS_COMPARE I_CS_PIN
#elif IN_CHAIN(J)
#define CS_COMPARE J_CS_PIN
#elif IN_CHAIN(K)
#define CS_COMPARE K_CS_PIN
#elif IN_CHAIN(E0)
#define CS_COMPARE E0_CS_PIN
#elif IN_CHAIN(E1)
Expand All @@ -2929,6 +2941,7 @@ CODE_N(LINEAR_AXES,
#endif
#define BAD_CS_PIN(A) (IN_CHAIN(A) && A##_CS_PIN != CS_COMPARE)
#if BAD_CS_PIN(X ) || BAD_CS_PIN(Y ) || BAD_CS_PIN(Z ) || BAD_CS_PIN(X2) || BAD_CS_PIN(Y2) || BAD_CS_PIN(Z2) || BAD_CS_PIN(Z3) || BAD_CS_PIN(Z4) \
|| BAD_CS_PIN(I) || BAD_CS_PIN(J) || BAD_CS_PIN(K) \
|| BAD_CS_PIN(E0) || BAD_CS_PIN(E1) || BAD_CS_PIN(E2) || BAD_CS_PIN(E3) || BAD_CS_PIN(E4) || BAD_CS_PIN(E5) || BAD_CS_PIN(E6) || BAD_CS_PIN(E7)
#error "All chained TMC drivers must use the same CS pin."
#endif
Expand Down Expand Up @@ -3420,18 +3433,18 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
#error "Z_DRIVER_TYPE is not recognized."
#endif
#if LINEAR_AXES >= 4
#if _BAD_DRIVER(Z)
#if _BAD_DRIVER(I)
#error "I_DRIVER_TYPE is not recognized."
#endif
#endif
#if LINEAR_AXES >= 5
#if _BAD_DRIVER(Z)
#error "I_DRIVER_TYPE is not recognized."
#if _BAD_DRIVER(J)
#error "J_DRIVER_TYPE is not recognized."
#endif
#endif
#if LINEAR_AXES >= 6
#if _BAD_DRIVER(Z)
#error "I_DRIVER_TYPE is not recognized."
#if _BAD_DRIVER(K)
#error "K_DRIVER_TYPE is not recognized."
#endif
#endif

Expand Down
3 changes: 3 additions & 0 deletions Marlin/src/lcd/language/language_en.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ namespace Language_en {
PROGMEM Language_Str MSG_HOME_OFFSET_X = _UxGT("Home Offset X");
PROGMEM Language_Str MSG_HOME_OFFSET_Y = _UxGT("Home Offset Y");
PROGMEM Language_Str MSG_HOME_OFFSET_Z = _UxGT("Home Offset Z");
PROGMEM Language_Str MSG_HOME_OFFSET_I = _UxGT("Home Offset ") AXIS4_STR;
PROGMEM Language_Str MSG_HOME_OFFSET_J = _UxGT("Home Offset ") AXIS5_STR;
PROGMEM Language_Str MSG_HOME_OFFSET_K = _UxGT("Home Offset ") AXIS6_STR;
PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied");
PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Set Origin");
PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
Expand Down
6 changes: 3 additions & 3 deletions Marlin/src/lcd/menu/menu_motion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,13 +346,13 @@ void menu_motion() {
GCODES_ITEM(MSG_AUTO_HOME_Y, PSTR("G28Y"));
GCODES_ITEM(MSG_AUTO_HOME_Z, PSTR("G28Z"));
#if LINEAR_AXES >= 4
GCODES_ITEM(MSG_AUTO_HOME_I, PSTR("G28I"));
GCODES_ITEM(MSG_AUTO_HOME_I, PSTR("G28" I_STR));
#endif
#if LINEAR_AXES >= 5
GCODES_ITEM(MSG_AUTO_HOME_J, PSTR("G28J"));
GCODES_ITEM(MSG_AUTO_HOME_J, PSTR("G28" J_STR));
#endif
#if LINEAR_AXES >= 6
GCODES_ITEM(MSG_AUTO_HOME_K, PSTR("G28K"));
GCODES_ITEM(MSG_AUTO_HOME_K, PSTR("G28" K_STR));
#endif
#endif

Expand Down
3 changes: 3 additions & 0 deletions Marlin/src/module/motion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1443,6 +1443,9 @@ void prepare_line_to_destination() {
case X_AXIS: if (ENABLED(X_SPI_SENSORLESS)) endstops.tmc_spi_homing.x = false; break;
case Y_AXIS: if (ENABLED(Y_SPI_SENSORLESS)) endstops.tmc_spi_homing.y = false; break;
case Z_AXIS: if (ENABLED(Z_SPI_SENSORLESS)) endstops.tmc_spi_homing.z = false; break;
case I_AXIS: if (ENABLED(I_SPI_SENSORLESS)) endstops.tmc_spi_homing.i = false; break;
case J_AXIS: if (ENABLED(J_SPI_SENSORLESS)) endstops.tmc_spi_homing.j = false; break;
case K_AXIS: if (ENABLED(K_SPI_SENSORLESS)) endstops.tmc_spi_homing.k = false; break;
default: break;
}
#endif
Expand Down
6 changes: 3 additions & 3 deletions Marlin/src/module/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1249,13 +1249,13 @@ void MarlinSettings::postprocess() {
tmc_stealth_enabled.Z = stepperZ.get_stored_stealthChop();
#endif
#if AXIS_HAS_STEALTHCHOP(I)
tmc_stealth_enabled.I = stepperI.get_stealthChop_status();
tmc_stealth_enabled.I = stepperI.get_stored_stealthChop();
#endif
#if AXIS_HAS_STEALTHCHOP(J)
tmc_stealth_enabled.J = stepperJ.get_stealthChop_status();
tmc_stealth_enabled.J = stepperJ.get_stored_stealthChop();
#endif
#if AXIS_HAS_STEALTHCHOP(K)
tmc_stealth_enabled.K = stepperK.get_stealthChop_status();
tmc_stealth_enabled.K = stepperK.get_stored_stealthChop();
#endif
#if AXIS_HAS_STEALTHCHOP(X2)
tmc_stealth_enabled.X2 = stepperX2.get_stored_stealthChop();
Expand Down
8 changes: 7 additions & 1 deletion Marlin/src/module/stepper/trinamic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -299,22 +299,28 @@ enum StealthIndex : uint8_t {
#if AXIS_HAS_UART(I)
#ifdef I_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, I, I);
#define I_HAS_HW_SERIAL 1
#else
TMC_UART_DEFINE(SW, I, I);
#define I_HAS_SW_SERIAL 1
#endif
#endif
#if AXIS_HAS_UART(J)
#ifdef J_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, J, J);
#define J_HAS_HW_SERIAL 1
#else
TMC_UART_DEFINE(SW, J, J);
#endif
#define J_HAS_SW_SERIAL 1
#endif
#endif
#if AXIS_HAS_UART(K)
#ifdef K_HARDWARE_SERIAL
TMC_UART_DEFINE(HW, K, K);
#define K_HAS_HW_SERIAL 1
#else
TMC_UART_DEFINE(SW, K, K);
#define K_HAS_SW_SERIAL 1
#endif
#endif

Expand Down
18 changes: 18 additions & 0 deletions Marlin/src/module/stepper/trinamic.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,21 @@ typedef struct {
#ifndef CHOPPER_TIMING_Z
#define CHOPPER_TIMING_Z CHOPPER_TIMING
#endif
#if LINEAR_AXES >= 4
#ifndef CHOPPER_TIMING_I
#define CHOPPER_TIMING_I CHOPPER_TIMING
#endif
#endif
#if LINEAR_AXES >= 5
#ifndef CHOPPER_TIMING_J
#define CHOPPER_TIMING_J CHOPPER_TIMING
#endif
#endif
#if LINEAR_AXES >= 5
#ifndef CHOPPER_TIMING_K
#define CHOPPER_TIMING_K CHOPPER_TIMING
#endif
#endif
#ifndef CHOPPER_TIMING_E
#define CHOPPER_TIMING_E CHOPPER_TIMING
#endif
Expand Down Expand Up @@ -232,6 +247,7 @@ void reset_trinamic_drivers();
// I Stepper
#if AXIS_IS_TMC(I)
extern TMC_CLASS(I, I) stepperI;
static constexpr chopper_timing_t chopper_timing_I = CHOPPER_TIMING_I;
#if ENABLED(SOFTWARE_DRIVER_ENABLE)
#define I_ENABLE_INIT() NOOP
#define I_ENABLE_WRITE(STATE) stepperI.toff((STATE)==I_ENABLE_ON ? chopper_timing.toff : 0)
Expand All @@ -245,6 +261,7 @@ void reset_trinamic_drivers();
// J Stepper
#if AXIS_IS_TMC(J)
extern TMC_CLASS(J, J) stepperJ;
static constexpr chopper_timing_t chopper_timing_J = CHOPPER_TIMING_J;
#if ENABLED(SOFTWARE_DRIVER_ENABLE)
#define J_ENABLE_INIT() NOOP
#define J_ENABLE_WRITE(STATE) stepperJ.toff((STATE)==J_ENABLE_ON ? chopper_timing.toff : 0)
Expand All @@ -258,6 +275,7 @@ void reset_trinamic_drivers();
// K Stepper
#if AXIS_IS_TMC(K)
extern TMC_CLASS(K, K) stepperK;
static constexpr chopper_timing_t chopper_timing_K = CHOPPER_TIMING_K;
#if ENABLED(SOFTWARE_DRIVER_ENABLE)
#define K_ENABLE_INIT() NOOP
#define K_ENABLE_WRITE(STATE) stepperK.toff((STATE)==K_ENABLE_ON ? chopper_timing.toff : 0)
Expand Down

0 comments on commit b26ef9c

Please sign in to comment.