Stepper: optimization on timing calculations

micros() is now called only once per cycle (instead of 3).

The rollover check is superflous because the "last_step_time" field
is unsigned.
This commit is contained in:
Cristian Maglie 2015-05-28 10:28:27 +02:00
parent 0546bf04e0
commit 1064554b87
1 changed files with 3 additions and 2 deletions

View File

@ -195,10 +195,11 @@ void Stepper::step(int steps_to_move)
// decrement the number of steps, moving one step each time:
while(steps_left > 0) {
unsigned long now = micros();
// move only if the appropriate delay has passed:
if (micros() - this->last_step_time >= this->step_delay || micros() < this->last_step_time) {
if (now - this->last_step_time >= this->step_delay) {
// get the timeStamp of when you stepped:
this->last_step_time = micros();
this->last_step_time = now;
// increment or decrement the step number,
// depending on direction:
if (this->direction == 1) {