Why is actualposition updated every 2 ms, not every 1 ms?

This commit is contained in:
Hakan Bastedt
2024-01-04 22:23:52 +01:00
parent 484c984e49
commit 93405efd63

View File

@@ -47,6 +47,7 @@ void cb_set_outputs(void) // Master outputs gets here, slave inputs, first opera
CurPosScale = Obj.EncPosScale; CurPosScale = Obj.EncPosScale;
PosScaleRes = 1.0 / double(CurPosScale); PosScaleRes = 1.0 / double(CurPosScale);
} }
Obj.StepGenOut1.ActualPosition = Obj.StepGenIn1.CommandedPosition;
} }
void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
@@ -199,7 +200,12 @@ void sync0Handler(void)
} }
void handleStepper(void) void handleStepper(void)
{ {
now = micros(); now = micros();
deltaT = now - back_then;
Obj.DiffT = deltaT;
back_then = now;
#if 0
const int32_t stepsPerMM = 1000; const int32_t stepsPerMM = 1000;
// Update the actual position // Update the actual position
pulsesToGo = stepsPerMM * (Obj.StepGenIn1.CommandedPosition - actualPosition); pulsesToGo = stepsPerMM * (Obj.StepGenIn1.CommandedPosition - actualPosition);
@@ -207,15 +213,15 @@ void handleStepper(void)
// Get new end position // Get new end position
forwardDirection = pulsesToGo > 1 ? 1 : 0; forwardDirection = pulsesToGo > 1 ? 1 : 0;
// Set direction pin // Set direction pin
deltaT = now - back_then;
Obj.DiffT = deltaT;
if (pulsesToGo != 0) if (pulsesToGo != 0)
{ {
digitalWrite(STEPPER_DIR_PIN, forwardDirection); // I think one should really wait a bit when changed digitalWrite(STEPPER_DIR_PIN, forwardDirection); // I think one should really wait a bit when changed
makePulses(1000, abs((int)pulsesToGo)); // Make the pulses using hardware timer makePulses(900, abs((int)pulsesToGo)); // Make the pulses using hardware timer
} }
actualPosition = Obj.StepGenIn1.CommandedPosition; actualPosition = Obj.StepGenIn1.CommandedPosition;
back_then = now; Obj.StepGenOut1.ActualPosition = Obj.StepGenIn1.CommandedPosition;
#endif
} }
void ESC_interrupt_enable(uint32_t mask) void ESC_interrupt_enable(uint32_t mask)