Some distinct E helpers
This commit is contained in:
@ -134,9 +134,8 @@ float Planner::steps_to_mm[XYZE_N]; // (mm) Millimeters per step
|
||||
|
||||
#if HAS_JUNCTION_DEVIATION
|
||||
float Planner::junction_deviation_mm; // (mm) M205 J
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
float Planner::max_e_jerk // Calculated from junction_deviation_mm
|
||||
[TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
|
||||
#if HAS_LINEAR_E_JERK
|
||||
float Planner::max_e_jerk[DISTINCT_E]; // Calculated from junction_deviation_mm
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -2139,7 +2138,7 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
|
||||
#define MAX_E_JERK(N) TERN(HAS_JUNCTION_DEVIATION, max_e_jerk[E_AXIS_N(N)], max_jerk.e)
|
||||
#define MAX_E_JERK(N) TERN(HAS_LINEAR_E_JERK, max_e_jerk[E_INDEX_N(N)], max_jerk.e)
|
||||
|
||||
/**
|
||||
*
|
||||
@ -2179,24 +2178,18 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
#define ACCEL_IDX extruder
|
||||
#else
|
||||
#define ACCEL_IDX 0
|
||||
#endif
|
||||
|
||||
// Limit acceleration per axis
|
||||
if (block->step_event_count <= cutoff_long) {
|
||||
LIMIT_ACCEL_LONG(A_AXIS, 0);
|
||||
LIMIT_ACCEL_LONG(B_AXIS, 0);
|
||||
LIMIT_ACCEL_LONG(C_AXIS, 0);
|
||||
LIMIT_ACCEL_LONG(E_AXIS, ACCEL_IDX);
|
||||
LIMIT_ACCEL_LONG(E_AXIS, E_INDEX_N(extruder));
|
||||
}
|
||||
else {
|
||||
LIMIT_ACCEL_FLOAT(A_AXIS, 0);
|
||||
LIMIT_ACCEL_FLOAT(B_AXIS, 0);
|
||||
LIMIT_ACCEL_FLOAT(C_AXIS, 0);
|
||||
LIMIT_ACCEL_FLOAT(E_AXIS, ACCEL_IDX);
|
||||
LIMIT_ACCEL_FLOAT(E_AXIS, E_INDEX_N(extruder));
|
||||
}
|
||||
}
|
||||
block->acceleration_steps_per_s2 = accel;
|
||||
|
@ -315,9 +315,8 @@ class Planner {
|
||||
|
||||
#if HAS_JUNCTION_DEVIATION
|
||||
static float junction_deviation_mm; // (mm) M205 J
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
static float max_e_jerk // Calculated from junction_deviation_mm
|
||||
[TERN(DISTINCT_E_FACTORS, EXTRUDERS, 1)];
|
||||
#if HAS_LINEAR_E_JERK
|
||||
static float max_e_jerk[DISTINCT_E]; // Calculated from junction_deviation_mm
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -842,7 +841,7 @@ class Planner {
|
||||
FORCE_INLINE static void recalculate_max_e_jerk() {
|
||||
const float prop = junction_deviation_mm * SQRT(0.5) / (1.0f - SQRT(0.5));
|
||||
LOOP_L_N(i, EXTRUDERS)
|
||||
max_e_jerk[E_AXIS_N(i)] = SQRT(prop * settings.max_acceleration_mm_per_s2[E_AXIS_N(i)]);
|
||||
max_e_jerk[E_INDEX_N(i)] = SQRT(prop * settings.max_acceleration_mm_per_s2[E_INDEX_N(i)]);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -58,7 +58,7 @@ enum StealthIndex : uint8_t { STEALTH_AXIS_XY, STEALTH_AXIS_Z, STEALTH_AXIS_E };
|
||||
#define _TMC_UART_DEFINE(SWHW, IC, ST, AI) TMC_UART_##SWHW##_DEFINE(IC, ST, TMC_##ST##_LABEL, AI)
|
||||
#define TMC_UART_DEFINE(SWHW, ST, AI) _TMC_UART_DEFINE(SWHW, ST##_DRIVER_TYPE, ST, AI##_AXIS)
|
||||
|
||||
#if ENABLED(DISTINCT_E_FACTORS) && E_STEPPERS > 1
|
||||
#if DISTINCT_E > 1
|
||||
#define TMC_SPI_DEFINE_E(AI) TMC_SPI_DEFINE(E##AI, E##AI)
|
||||
#define TMC_UART_DEFINE_E(SWHW, AI) TMC_UART_DEFINE(SWHW, E##AI, E##AI)
|
||||
#else
|
||||
|
Reference in New Issue
Block a user