CoreXY, dda.c: start by making steps an array.
Goal is to calculate steps in a separate function to allow different methods of steps calculation, which is neccessary for supporting different kinematics types. Accordingly we have to calculate steps for all axes before setting directions and such stuff.
This commit is contained in:
parent
84affe4cd7
commit
a36b96357e
8
dda.c
8
dda.c
|
|
@ -155,8 +155,8 @@ void dda_new_startpoint(void) {
|
||||||
* already.
|
* already.
|
||||||
*/
|
*/
|
||||||
void dda_create(DDA *dda, TARGET *target) {
|
void dda_create(DDA *dda, TARGET *target) {
|
||||||
uint32_t steps;
|
|
||||||
axes_uint32_t delta_um;
|
axes_uint32_t delta_um;
|
||||||
|
axes_int32_t steps;
|
||||||
uint32_t distance, c_limit, c_limit_calc;
|
uint32_t distance, c_limit, c_limit_calc;
|
||||||
enum axis_e i;
|
enum axis_e i;
|
||||||
#ifdef LOOKAHEAD
|
#ifdef LOOKAHEAD
|
||||||
|
|
@ -192,9 +192,9 @@ void dda_create(DDA *dda, TARGET *target) {
|
||||||
for (i = X; i < (target->e_relative ? E : AXIS_COUNT); i++) {
|
for (i = X; i < (target->e_relative ? E : AXIS_COUNT); i++) {
|
||||||
delta_um[i] = (uint32_t)abs32(target->axis[i] - startpoint.axis[i]);
|
delta_um[i] = (uint32_t)abs32(target->axis[i] - startpoint.axis[i]);
|
||||||
|
|
||||||
steps = um_to_steps(target->axis[i], i);
|
steps[i] = um_to_steps(target->axis[i], i);
|
||||||
dda->delta[i] = abs32(steps - startpoint_steps.axis[i]);
|
dda->delta[i] = (uint32_t)abs32(steps[i] - startpoint_steps.axis[i]);
|
||||||
startpoint_steps.axis[i] = steps;
|
startpoint_steps.axis[i] = steps[i];
|
||||||
|
|
||||||
set_direction(dda, i, (target->axis[i] >= startpoint.axis[i])?1:0);
|
set_direction(dda, i, (target->axis[i] >= startpoint.axis[i])?1:0);
|
||||||
#ifdef LOOKAHEAD
|
#ifdef LOOKAHEAD
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue