//Calculate start speeds based on moving axes max start speed constraints. int slowest_start_axis = primary_axis; unsigned long slowest_start_axis_max_interval = max_interval; for(int i = 0; i < NUM_AXIS; i++) if (axis_steps_remaining[i] >0 && i != primary_axis && axis_max_interval[i] * axis_steps_remaining[i] / axis_steps_remaining[slowest_start_axis] > slowest_start_axis_max_interval) { slowest_start_axis = i; slowest_start_axis_max_interval = axis_max_interval[i]; } for(int i = 0; i < NUM_AXIS; i++) if(axis_steps_remaining[i] >0) { new_axis_max_intervals[i] = slowest_start_axis_max_interval * axis_steps_remaining[i] / axis_steps_remaining[slowest_start_axis]; if(i == primary_axis) { max_interval = new_axis_max_intervals[i]; min_speed_steps_per_second = 100000000 / max_interval; } }