🩹 FT Motion : Update E index

This commit is contained in:
Scott Lahteine 2025-12-19 20:03:00 -06:00
parent 574332c3d3
commit c81e74b478
2 changed files with 23 additions and 3 deletions

View file

@ -389,8 +389,11 @@ bool FTMotion::plan_next_block() {
stepper.last_direction_bits.hz = current_block->direction_bits.hz;
#endif
// Cache the extruder index for this block
TERN_(DISTINCT_E_FACTORS, block_extruder_axis = E_AXIS_N(current_block->extruder));
// Cache the extruder index / axis for this block
#if ENABLED(DISTINCT_E_FACTORS)
stepper_extruder = current_block->extruder;
block_extruder_axis = E_AXIS_N(current_block->extruder);
#endif
const float totalLength = current_block->millimeters;

View file

@ -3623,7 +3623,24 @@ void Stepper::report_positions() {
DIR_WAIT_AFTER();
}
// Start step pulses. Edge stepping will toggle the STEP pin.
/**
* - For every axis drive STEP pins
* - If any axes lack DEDGE stepping:
* - Wait for the longest required Pulse Delay
* - Reset state of all non-DEDGE STEP pins
*
* The stepper_extruder must be pre-filled at this point.
*
* Emits macros of the form: [XYZEIJKUVW]_APPLY_STEP(state, ?always?)
* For the standard E axis this expands to: E_STEP_WRITE(stepper_extruder, state)
*
* TODO: For MIXING_EXTRUDER stepping distribute the steps proportionally to the
* E stepper drivers' STEP pins according to pre-calculated Bresenham factors.
* So the events are timed just like normal E stepping; only the STEP pin varies.
*/
// Start step pulses on all axes including the active Extruder.
// Edge stepping will simply toggle the STEP pin.
#define _FTM_STEP_START(A) A##_APPLY_STEP(step_bits.A, false);
LOGICAL_AXIS_MAP(_FTM_STEP_START);