mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
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:
@ -195,10 +195,11 @@ void Stepper::step(int steps_to_move)
|
|||||||
|
|
||||||
// decrement the number of steps, moving one step each time:
|
// decrement the number of steps, moving one step each time:
|
||||||
while(steps_left > 0) {
|
while(steps_left > 0) {
|
||||||
|
unsigned long now = micros();
|
||||||
// move only if the appropriate delay has passed:
|
// 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:
|
// get the timeStamp of when you stepped:
|
||||||
this->last_step_time = micros();
|
this->last_step_time = now;
|
||||||
// increment or decrement the step number,
|
// increment or decrement the step number,
|
||||||
// depending on direction:
|
// depending on direction:
|
||||||
if (this->direction == 1) {
|
if (this->direction == 1) {
|
||||||
|
Reference in New Issue
Block a user