dda: recalculate only dedicated axes
This commit is contained in:
parent
5cf1b34924
commit
1bb4d7f7dd
7
dda.c
7
dda.c
|
|
@ -952,7 +952,7 @@ void update_current_position() {
|
|||
|
||||
if (dda != NULL) {
|
||||
uint32_t axis_um;
|
||||
axes_int32_t delta_um, um;
|
||||
axes_int32_t delta_um;
|
||||
|
||||
for (i = X; i < AXIS_COUNT; i++) {
|
||||
axis_um = muldiv(move_state.steps[i],
|
||||
|
|
@ -962,11 +962,10 @@ void update_current_position() {
|
|||
delta_um[i] = (int32_t)get_direction(dda, i) * axis_um;
|
||||
}
|
||||
|
||||
delta_to_axes(delta_um, um);
|
||||
um[E] = delta_um[E];
|
||||
delta_to_axes(delta_um);
|
||||
|
||||
for (i = X; i < AXIS_COUNT; i++) {
|
||||
current_position.axis[i] = dda->endpoint.axis[i] - um[i];
|
||||
current_position.axis[i] = dda->endpoint.axis[i] - delta_um[i];
|
||||
}
|
||||
|
||||
if (dda->endpoint.e_relative) {
|
||||
|
|
|
|||
|
|
@ -56,16 +56,15 @@ void axes_um_to_steps_corexy(const axes_int32_t um, axes_int32_t steps) {
|
|||
steps[Z] = um_to_steps(um[Z], Z);
|
||||
}
|
||||
|
||||
void delta_to_axes_cartesian(const axes_int32_t delta_um, axes_int32_t um) {
|
||||
enum axis_e i;
|
||||
|
||||
for (i = X; i < E; i++) {
|
||||
um[i] = delta_um[i];
|
||||
}
|
||||
void delta_to_axes_cartesian(axes_int32_t delta) {
|
||||
// nothing to do for cartesian
|
||||
}
|
||||
|
||||
void delta_to_axes_corexy(const axes_int32_t delta_um, axes_int32_t um) {
|
||||
um[X] = (delta_um[X] + delta_um[Y]) / 2;
|
||||
um[Y] = (delta_um[X] - delta_um[Y]) / 2;
|
||||
um[Z] = delta_um[Z];
|
||||
void delta_to_axes_corexy(axes_int32_t delta) {
|
||||
// recalculate only dedicated axes
|
||||
int32_t x_axis, y_axis;
|
||||
x_axis = (delta[X] + delta[Y]) / 2;
|
||||
y_axis = (delta[X] - delta[Y]) / 2;
|
||||
delta[X] = x_axis;
|
||||
delta[Y] = y_axis;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,17 +52,16 @@ inline void axes_um_to_steps(const axes_int32_t um, axes_int32_t steps) {
|
|||
#endif
|
||||
}
|
||||
|
||||
void delta_to_axes_cartesian(const axes_int32_t delta_um, axes_int32_t um);
|
||||
void delta_to_axes_corexy(const axes_int32_t delta_um, axes_int32_t um);
|
||||
void delta_to_axes_cartesian(axes_int32_t delta_um);
|
||||
void delta_to_axes_corexy(axes_int32_t delta_um);
|
||||
// void delta_to_axes_scara(const axes_int32_t delta_um, axes_int32_t um);
|
||||
|
||||
static void delta_to_axes(const axes_int32_t, axes_int32_t)
|
||||
__attribute__ ((always_inline));
|
||||
inline void delta_to_axes(const axes_int32_t delta_um, axes_int32_t um) {
|
||||
static void delta_to_axes(axes_int32_t) __attribute__ ((always_inline));
|
||||
inline void delta_to_axes(axes_int32_t delta) {
|
||||
#if defined KINEMATICS_STRAIGHT
|
||||
delta_to_axes_cartesian(delta_um, um);
|
||||
delta_to_axes_cartesian(delta);
|
||||
#elif defined KINEMATICS_COREXY
|
||||
delta_to_axes_corexy(delta_um, um);
|
||||
delta_to_axes_corexy(delta);
|
||||
// #elif defined KINEMATICS_SCARA
|
||||
// delta_to_axes_scara(delta_um, um);
|
||||
#else
|
||||
|
|
|
|||
Loading…
Reference in New Issue