diff options
author | David Crocker <dcrocker@eschertech.com> | 2017-07-18 20:25:12 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2017-07-18 20:25:12 +0300 |
commit | 4e31deb2a5a5e0f517ffe55ec1671bafd621a53e (patch) | |
tree | de60248c717efdff8904587041461de73fd11156 /src/Movement/Kinematics/CoreXZKinematics.cpp | |
parent | 6f81b7594ba0a9795dc19b3e3784a21aba544de4 (diff) |
Release 1.19beta10
New features:
Refactored and completed 4-leadscrew bed levelling code
Probe deployment and retraction for G30 and G29 commands is now handled
automatically. You should still include a M401 command before the first
G30 command in bed.g and a M402 command after the last one, so that the
probe deploys and retracts once for the entire sequence instead of once
per G30 command.
M577 now allows separate X and Y spacings, use Sxxx:yyy
Volumetric extrusion is now supported (M200)
Additional tool/heater data is provided to DWC (thanks chrishamm). Using
Heater 0 as a tool heater should now work.
The '(' character in a gcode file now introduces a comment, just as the
';' character does. The comment is terminated at end-of-line. This is
not the same as in some CNC gcodes, where a comment introduced by '(' is
terminated by ')'.
Heater tuning peak detection algorithm changed (but still needs more
work). This may fix some "no peak detected" reports during auto tuning.
The heater dead time is how taken as 60% of the peak delay time intead
of 100%, which results in more aggressive PID parameters.
Bug fixes:
M669 with no parameters now reports the bed offset on a SCARA machine as
well as the other parameters
M671 with no parameters now reports the maximum correction as well as
the leadscrew positions
Heater model max PWM is now set to tuning PWM after auto tuning (thanks
cangelis)
If an HTML file uploaded over USB contained an embedded leading
substring of the EOF string, incorrect data was written to file (thanks
cangelis)
Fixed incorrect movement following a tool change on an IDEX machine
(thanks lars)
RADDS build would not start up
Other changes:
TEMPERATURE_CLOSE_ENOUGH reduced from 2.5C to 1.0C
Reduced the maximum number of random probe points on Duet WiFi/Ethernet
to 32 to avoid running out of memory during delta auto calibration
Simplified the axis orthogonality correction code
Added new bitmap types along with function templates to work on them
Clear HSMCI callback when exiting RepRap module e.g. to flash new
firmware
Use lrintf() instead of round()
DriveMovement structures are now allocated dynamically from a freelist,
to allow more moves to be queued in typical cases. The number free and
minimum ever free is included in the M122 report.
Diffstat (limited to 'src/Movement/Kinematics/CoreXZKinematics.cpp')
-rw-r--r-- | src/Movement/Kinematics/CoreXZKinematics.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/Movement/Kinematics/CoreXZKinematics.cpp b/src/Movement/Kinematics/CoreXZKinematics.cpp index ad4975c0..1d29c8fc 100644 --- a/src/Movement/Kinematics/CoreXZKinematics.cpp +++ b/src/Movement/Kinematics/CoreXZKinematics.cpp @@ -20,13 +20,13 @@ const char *CoreXZKinematics::GetName(bool forStatusReport) const // Convert Cartesian coordinates to motor coordinates bool CoreXZKinematics::CartesianToMotorSteps(const float machinePos[], const float stepsPerMm[], size_t numVisibleAxes, size_t numTotalAxes, int32_t motorPos[]) const { - motorPos[X_AXIS] = (int32_t)roundf(((machinePos[X_AXIS] * axisFactors[X_AXIS]) + (machinePos[Z_AXIS] * axisFactors[Z_AXIS])) * stepsPerMm[X_AXIS]); - motorPos[Y_AXIS] = (int32_t)roundf(machinePos[Y_AXIS] * stepsPerMm[Y_AXIS]); - motorPos[Z_AXIS] = (int32_t)roundf(((machinePos[X_AXIS] * axisFactors[X_AXIS]) - (machinePos[Z_AXIS] * axisFactors[Z_AXIS])) * stepsPerMm[Z_AXIS]); + motorPos[X_AXIS] = lrintf(((machinePos[X_AXIS] * axisFactors[X_AXIS]) + (machinePos[Z_AXIS] * axisFactors[Z_AXIS])) * stepsPerMm[X_AXIS]); + motorPos[Y_AXIS] = lrintf(machinePos[Y_AXIS] * stepsPerMm[Y_AXIS]); + motorPos[Z_AXIS] = lrintf(((machinePos[X_AXIS] * axisFactors[X_AXIS]) - (machinePos[Z_AXIS] * axisFactors[Z_AXIS])) * stepsPerMm[Z_AXIS]); for (size_t axis = XYZ_AXES; axis < numVisibleAxes; ++axis) { - motorPos[axis] = (int32_t)roundf(machinePos[axis] * stepsPerMm[axis]); + motorPos[axis] = lrintf(machinePos[axis] * stepsPerMm[axis]); } return true; } |