Iterate over axis bits

This commit is contained in:
Alex Voinea 2023-04-09 15:17:01 +02:00
parent e70344dc94
commit afd4f1d5bc
No known key found for this signature in database
GPG Key ID: 37EDFD565CB33BAD
1 changed files with 10 additions and 2 deletions

View File

@ -416,11 +416,19 @@ void print_hysteresis(int16_t min_z, int16_t max_z, int16_t step){
} }
void update_position_1_step(const uint8_t axis, const uint8_t dir) { void update_position_1_step(const uint8_t axis, const uint8_t dir) {
count_position[axis] += dir & _BV(axis) ? -1L : 1L; for (uint8_t i = X_AXIS, mask = X_AXIS_MASK; i <= Z_AXIS; i++, mask <<= 1) {
if (axis & mask) {
count_position[i] += dir & mask ? -1L : 1L;
}
}
} }
void __attribute__((noinline)) set_axes_dir(const uint8_t axis, const uint8_t dir) { void __attribute__((noinline)) set_axes_dir(const uint8_t axis, const uint8_t dir) {
sm4_set_dir(axis, dir & _BV(axis)); for (uint8_t i = X_AXIS, mask = X_AXIS_MASK; i <= Z_AXIS; i++, mask <<= 1) {
if (axis & mask) {
sm4_set_dir(i, dir & mask);
}
}
} }
/// Accelerate up to max.speed (defined by @min_delay_us) /// Accelerate up to max.speed (defined by @min_delay_us)