diff --git a/embedded/mkstepper-v011/.vs/mkstepper-v011/v14/.atsuo b/embedded/mkstepper-v011/.vs/mkstepper-v011/v14/.atsuo index 0871b8c868f38dfd65e529bf3b267f96084d33da..0ab6b1ad78864c3f23a5c648dcefc4fc12802044 100644 Binary files a/embedded/mkstepper-v011/.vs/mkstepper-v011/v14/.atsuo and b/embedded/mkstepper-v011/.vs/mkstepper-v011/v14/.atsuo differ diff --git a/embedded/mkstepper-v011/mkstepper-v011/stepper.c b/embedded/mkstepper-v011/mkstepper-v011/stepper.c index 53d2df978b03ea8e33dd947eb374c7ec88dc91d3..2a59f03fd635c4a754d8572e49b356223445e9c0 100644 --- a/embedded/mkstepper-v011/mkstepper-v011/stepper.c +++ b/embedded/mkstepper-v011/mkstepper-v011/stepper.c @@ -61,9 +61,12 @@ void stepper_targetspeed_float(stepper_t *stepper, float speed){ void stepper_targetspeed_steps(stepper_t *stepper, uint32_t speed){ uint32_t speedmin = ((speed / (stepper->position_per_200_steps / 200)) * stepper->microsteps); // enforce no division by 0 + // minimum of 1 step / s + // if speed is 0, we leave speed at minimum and set state to not step? (speedmin < 1) ? speedmin = 1 : (0); // timing not accurate to real-world yet - stepper->speed_period = 300000000 / speedmin; + // timer is 48MHz clock on a DIV16, so we have 3 000 000 ticks / s (333ns resolution, wow) + stepper->speed_period = 60000000 / speedmin; } void stepper_update(stepper_t *stepper){