Cleanup for dual endstops homing
This commit is contained in:
@ -87,7 +87,7 @@ Stepper stepper; // Singleton
|
||||
block_t* Stepper::current_block = NULL; // A pointer to the block currently being traced
|
||||
|
||||
#if ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
bool Stepper::performing_homing = false;
|
||||
bool Stepper::homing_dual_axis = false;
|
||||
#endif
|
||||
|
||||
#if HAS_MOTOR_CURRENT_PWM
|
||||
@ -166,7 +166,7 @@ bool Stepper::all_steps_done = false;
|
||||
uint32_t Stepper::acceleration_time, Stepper::deceleration_time;
|
||||
|
||||
volatile int32_t Stepper::count_position[NUM_AXIS] = { 0 };
|
||||
volatile signed char Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
||||
int8_t Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
|
||||
|
||||
#if ENABLED(MIXING_EXTRUDER)
|
||||
int32_t Stepper::counter_m[MIXING_STEPPERS];
|
||||
@ -183,7 +183,7 @@ volatile int32_t Stepper::endstops_trigsteps[XYZ];
|
||||
|
||||
#if ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define DUAL_ENDSTOP_APPLY_STEP(A,V) \
|
||||
if (performing_homing) { \
|
||||
if (homing_dual_axis) { \
|
||||
if (A##_HOME_DIR < 0) { \
|
||||
if (!(TEST(endstops.state(), A##_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##_motor) A##_STEP_WRITE(V); \
|
||||
if (!(TEST(endstops.state(), A##2_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##2_motor) A##2_STEP_WRITE(V); \
|
||||
@ -1144,7 +1144,6 @@ void Stepper::set_directions() {
|
||||
HAL_STEP_TIMER_ISR {
|
||||
HAL_timer_isr_prologue(STEP_TIMER_NUM);
|
||||
|
||||
// Call the ISR
|
||||
Stepper::isr();
|
||||
|
||||
HAL_timer_isr_epilogue(STEP_TIMER_NUM);
|
||||
@ -1175,7 +1174,7 @@ void Stepper::isr() {
|
||||
// We need this variable here to be able to use it in the following loop
|
||||
hal_timer_t min_ticks;
|
||||
do {
|
||||
// Enable ISRs so the USART processing latency is reduced
|
||||
// Enable ISRs to reduce USART processing latency
|
||||
ENABLE_ISRS();
|
||||
|
||||
// Run main stepping pulse phase ISR if we have to
|
||||
@ -1193,11 +1192,9 @@ void Stepper::isr() {
|
||||
|
||||
uint32_t interval =
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
// Select the closest interval in time
|
||||
MIN(nextAdvanceISR, nextMainISR)
|
||||
MIN(nextAdvanceISR, nextMainISR) // Nearest time interval
|
||||
#else
|
||||
// The interval is just the remaining time to the stepper ISR
|
||||
nextMainISR
|
||||
nextMainISR // Remaining stepper ISR time
|
||||
#endif
|
||||
;
|
||||
|
||||
@ -1239,7 +1236,7 @@ void Stepper::isr() {
|
||||
next_isr_ticks += interval;
|
||||
|
||||
/**
|
||||
* The following section must be done with global interrupts disabled.
|
||||
* The following section must be done with global interrupts disabled.
|
||||
* We want nothing to interrupt it, as that could mess the calculations
|
||||
* we do for the next value to program in the period register of the
|
||||
* stepper timer and lead to skipped ISRs (if the value we happen to program
|
||||
|
Reference in New Issue
Block a user