|
|
|
@ -89,10 +89,10 @@ void do_steps(){
|
|
|
|
steppers[i].speed--;
|
|
|
|
steppers[i].speed--;
|
|
|
|
|
|
|
|
|
|
|
|
/* limit max speed */
|
|
|
|
/* limit max speed */
|
|
|
|
if(steppers[i].speed >= STEPPERS_MAX_SPEED)
|
|
|
|
if(steppers[i].speed >= STEPPER_MAX_SPEED)
|
|
|
|
steppers[i].speed=STEPPERS_MAX_SPEED;
|
|
|
|
steppers[i].speed=STEPPER_MAX_SPEED;
|
|
|
|
if(steppers[i].speed <= -STEPPERS_MAX_SPEED)
|
|
|
|
if(steppers[i].speed <= -STEPPER_MAX_SPEED)
|
|
|
|
steppers[i].speed=-STEPPERS_MAX_SPEED;
|
|
|
|
steppers[i].speed=-STEPPER_MAX_SPEED;
|
|
|
|
|
|
|
|
|
|
|
|
/* get direction from sign */
|
|
|
|
/* get direction from sign */
|
|
|
|
if(steppers[i].speed>0)
|
|
|
|
if(steppers[i].speed>0)
|
|
|
|
@ -122,7 +122,7 @@ void do_steps(){
|
|
|
|
steppers[i].next_step = timer + 1;
|
|
|
|
steppers[i].next_step = timer + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
printf("motor[%d]: pos %ld\tspeed %d\n", i, steppers[i].pos, steppers[i].speed);
|
|
|
|
printf("motor[%d]: pos %ld\tspeed %ld\n", i, steppers[i].pos, steppers[i].speed);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(steppers[i].homed){
|
|
|
|
if(steppers[i].homed){
|
|
|
|
@ -130,7 +130,8 @@ void do_steps(){
|
|
|
|
old_ramp_to_speed = steppers[i].ramp_to_speed;
|
|
|
|
old_ramp_to_speed = steppers[i].ramp_to_speed;
|
|
|
|
|
|
|
|
|
|
|
|
int32_t swapped_val = rxBuffer[2*i+1]<<8 | (rxBuffer[2*i+2]&0xFF);
|
|
|
|
int32_t swapped_val = rxBuffer[2*i+1]<<8 | (rxBuffer[2*i+2]&0xFF);
|
|
|
|
steppers[i].ramp_to_speed = swapped_val - steppers[i].pos;
|
|
|
|
int32_t scaled_steps = swapped_val * STEPPER_STEPS_PER_ROTATION / UINT16_MAX;
|
|
|
|
|
|
|
|
steppers[i].ramp_to_speed = scaled_steps - steppers[i].pos;
|
|
|
|
|
|
|
|
|
|
|
|
if(old_ramp_to_speed == 0 && steppers[i].ramp_to_speed != 0)
|
|
|
|
if(old_ramp_to_speed == 0 && steppers[i].ramp_to_speed != 0)
|
|
|
|
steppers[i].trigger_step = 1;
|
|
|
|
steppers[i].trigger_step = 1;
|
|
|
|
|