Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

♻️ Always use ISR for BABYSTEPPING #26035

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -2190,7 +2190,6 @@
*/
//#define BABYSTEPPING
#if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // Integration of babystepping into the Stepper ISR
//#define EP_BABYSTEPPING // M293/M294 babystepping with EMERGENCY_PARSER support
//#define BABYSTEP_WITHOUT_HOMING
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement)
Expand Down
4 changes: 0 additions & 4 deletions Marlin/src/HAL/ESP32/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@
#error "FAST_PWM_FAN is not available on TinyBee."
#endif

#if ALL(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
#error "BABYSTEPPING on I2S stream requires INTEGRATED_BABYSTEPPING."
#endif

#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on ESP32 boards."
#endif
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/feature/babystep.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ void Babystep::add_mm(const AxisEnum axis, const_float_t mm) {
steps[BS_AXIS_IND(axis)] = distance;
TERN_(BABYSTEP_DISPLAY_TOTAL, axis_total[BS_TOTAL_IND(axis)] = distance);
TERN_(BABYSTEP_ALWAYS_AVAILABLE, gcode.reset_stepper_timeout());
TERN_(INTEGRATED_BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping());
TERN_(BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping());
}
#endif

Expand All @@ -77,7 +77,7 @@ void Babystep::add_steps(const AxisEnum axis, const int16_t distance) {
steps[BS_AXIS_IND(axis)] += distance;
TERN_(BABYSTEP_DISPLAY_TOTAL, axis_total[BS_TOTAL_IND(axis)] += distance);
TERN_(BABYSTEP_ALWAYS_AVAILABLE, gcode.reset_stepper_timeout());
TERN_(INTEGRATED_BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping());
TERN_(BABYSTEPPING, if (has_steps()) stepper.initiateBabystepping());
}

#if ENABLED(EP_BABYSTEPPING)
Expand Down
9 changes: 2 additions & 7 deletions Marlin/src/feature/babystep.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,8 @@

#include "../inc/MarlinConfigPre.h"

#if ENABLED(INTEGRATED_BABYSTEPPING)
#define BABYSTEPS_PER_SEC 1000UL
#define BABYSTEP_TICKS ((STEPPER_TIMER_RATE) / (BABYSTEPS_PER_SEC))
#else
#define BABYSTEPS_PER_SEC 976UL
#define BABYSTEP_TICKS ((TEMP_TIMER_RATE) / (BABYSTEPS_PER_SEC))
#endif
#define BABYSTEPS_PER_SEC 1000UL
#define BABYSTEP_TICKS ((STEPPER_TIMER_RATE) / (BABYSTEPS_PER_SEC))

#if ANY(IS_CORE, BABYSTEP_XY, I2C_POSITION_ENCODERS)
#define BS_AXIS_IND(A) A
Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/inc/Changes.h
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,8 @@
#error "Z3_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z3_USE_ENDSTOP _ZMAX_' becomes 'Z3_STOP_PIN Z_MAX_PIN')"
#elif defined(Z4_USE_ENDSTOP)
#error "Z4_USE_ENDSTOP is obsolete. Instead set Z4_STOP_PIN directly. (e.g., 'Z4_USE_ENDSTOP _ZMAX_' becomes 'Z4_STOP_PIN Z_MAX_PIN')"
#elif defined(INTEGRATED_BABYSTEPPING)
#error "INTEGRATED_BABYSTEPPING is no longer needed and should be removed."
#endif

// L64xx stepper drivers have been removed
Expand Down
20 changes: 10 additions & 10 deletions Marlin/src/module/stepper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ Stepper stepper; // Singleton
#include "../feature/bedlevel/bdl/bdl.h"
#endif

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
#include "../feature/babystep.h"
#endif

Expand Down Expand Up @@ -273,7 +273,7 @@ uint32_t Stepper::advance_divisor = 0,
#endif
#endif

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
hal_timer_t Stepper::nextBabystepISR = BABYSTEP_NEVER;
#endif

Expand Down Expand Up @@ -1543,7 +1543,7 @@ void Stepper::isr() {
// Define 2.5 msec task for auxilliary functions.
if (!fxdTiCtrl_nextAuxISR) {
endstops.update();
TERN_(INTEGRATED_BABYSTEPPING, if (babystep.has_steps()) babystepping_isr());
TERN_(BABYSTEPPING, if (babystep.has_steps()) babystepping_isr());
fxdTiCtrl_refreshAxisDidMove();
fxdTiCtrl_nextAuxISR = 0.0025f * (STEPPER_TIMER_RATE);
}
Expand Down Expand Up @@ -1574,7 +1574,7 @@ void Stepper::isr() {
nextAdvanceISR = la_interval;
#endif

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
const bool is_babystep = (nextBabystepISR == 0); // 0 = Do Babystepping (XY)Z pulses
if (is_babystep) nextBabystepISR = babystepping_isr();
#endif
Expand All @@ -1583,7 +1583,7 @@ void Stepper::isr() {

if (!nextMainISR) nextMainISR = block_phase_isr(); // Manage acc/deceleration, get next block

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
if (is_babystep) // Avoid ANY stepping too soon after baby-stepping
NOLESS(nextMainISR, (BABYSTEP_TICKS) / 8); // FULL STOP for 125µs after a baby-step

Expand All @@ -1596,7 +1596,7 @@ void Stepper::isr() {
TERN_(INPUT_SHAPING_X, NOMORE(interval, ShapingQueue::peek_x())); // Time until next input shaping echo for X
TERN_(INPUT_SHAPING_Y, NOMORE(interval, ShapingQueue::peek_y())); // Time until next input shaping echo for Y
TERN_(LIN_ADVANCE, NOMORE(interval, nextAdvanceISR)); // Come back early for Linear Advance?
TERN_(INTEGRATED_BABYSTEPPING, NOMORE(interval, nextBabystepISR)); // Come back early for Babystepping?
TERN_(BABYSTEPPING, NOMORE(interval, nextBabystepISR)); // Come back early for Babystepping?

//
// Compute remaining time for each ISR phase
Expand All @@ -1608,7 +1608,7 @@ void Stepper::isr() {
nextMainISR -= interval;
TERN_(HAS_ZV_SHAPING, ShapingQueue::decrement_delays(interval));
TERN_(LIN_ADVANCE, if (nextAdvanceISR != LA_ADV_NEVER) nextAdvanceISR -= interval);
TERN_(INTEGRATED_BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval);
TERN_(BABYSTEPPING, if (nextBabystepISR != BABYSTEP_NEVER) nextBabystepISR -= interval);

} // standard motion control

Expand Down Expand Up @@ -2807,7 +2807,7 @@ hal_timer_t Stepper::block_phase_isr() {

#endif // LIN_ADVANCE

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)

// Timer interrupt for baby-stepping
hal_timer_t Stepper::babystepping_isr() {
Expand Down Expand Up @@ -3669,7 +3669,7 @@ void Stepper::report_positions() {
// No other ISR should ever interrupt this!
void Stepper::do_babystep(const AxisEnum axis, const bool direction) {

IF_DISABLED(INTEGRATED_BABYSTEPPING, cli());
IF_DISABLED(BABYSTEPPING, cli());

switch (axis) {

Expand Down Expand Up @@ -3750,7 +3750,7 @@ void Stepper::report_positions() {
default: break;
}

IF_DISABLED(INTEGRATED_BABYSTEPPING, sei());
IF_DISABLED(BABYSTEPPING, sei());
}

#endif // BABYSTEPPING
Expand Down
4 changes: 2 additions & 2 deletions Marlin/src/module/stepper.h
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ class Stepper {
static bool la_active; // Whether linear advance is used on the present segment.
#endif

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
static constexpr hal_timer_t BABYSTEP_NEVER = HAL_TIMER_TYPE_MAX;
static hal_timer_t nextBabystepISR;
#endif
Expand Down Expand Up @@ -474,7 +474,7 @@ class Stepper {
static void advance_isr();
#endif

#if ENABLED(INTEGRATED_BABYSTEPPING)
#if ENABLED(BABYSTEPPING)
// The Babystepping ISR phase
static hal_timer_t babystepping_isr();
FORCE_INLINE static void initiateBabystepping() {
Expand Down
8 changes: 0 additions & 8 deletions Marlin/src/module/temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,6 @@
#include "stepper.h"
#endif

#if ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
#include "../feature/babystep.h"
#endif

#if ENABLED(FILAMENT_WIDTH_SENSOR)
#include "../feature/filwidth.h"
#endif
Expand Down Expand Up @@ -4122,10 +4118,6 @@ void Temperature::isr() {
// Additional ~1kHz Tasks
//

#if ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
babystep.task();
#endif

// Check fan tachometers
TERN_(HAS_FANCHECK, fan_check.update_tachometers());

Expand Down