Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2017-06-23 01:01:47 +0300
committerDavid Crocker <dcrocker@eschertech.com>2017-06-23 01:02:03 +0300
commit811de41a7d1083d6871de332717117ae57daa1c5 (patch)
tree674557ac03558f90dc5f679c157814971d8893b2 /src/Movement/Kinematics/Kinematics.cpp
parente2aad9a81ab09087151f89153d506cf33ab32a63 (diff)
Version 1.19beta7
New features: - M291 command is provided to display a message box with options for timeout, acknowledgement and Z jog buttons - M292 command is provided to acknowledge M291 messages - Manual delta calibration and bed compensation is supported (use P0 in the M558 command to indicate that there is no Z probe) - Minimum value for S parameter (maximum heater PWM) in M307 command is reduced from 20% to 1% - Core XYU kinematics are now supported (thanks Lars) - RADDS build now supports 9 motors (thanks Tom) - If a homing move uses parameter S3 instead of S1 then the axis minimum or maximum value is set to the current position instead of vice versa - M589 with no parameters now reports the Duet's own SSID - M589 S"*" now deletes the Duet WiFi's own access point details Bug fixes: - Tool X offsets are now applied on the next move even if it has no Z parameter - The tool change restore point coordinates now take account of X axis mapping - M588 P"*" command (forget all access points) now works - On the Duet WiFi, after using M589 to set up access point parameters, when M552 S2 was sent to start the WiFi module in AP mode it reported "WiFi reported error: invalid access point configuration". The fix also needs DuetWiFiServer version 1.19beta7. - On a delta printer the effector height is limited to reachable values Areas of code refactored (so watch out for new bugs): - G30 bed probing - Baby stepping - Tool offset implementation Upgrade notes: - SSIDs and passwords in M587, M588 and M589 commands must now be enclosed in double quotes - Height map filenames in G29, M374 and M375 commands must now be enclosed in double quotes - On a Duet WiFi you should also upgrade DuetWiFiServer.bin to version 1.19beta7. You do not need to perform a simultaneous upgrade, but M587 and M589 reporting functionality won't work correctly if your DuetWiFiFirmware and DuetWiFiServer versions are out of step.
Diffstat (limited to 'src/Movement/Kinematics/Kinematics.cpp')
-rw-r--r--src/Movement/Kinematics/Kinematics.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Movement/Kinematics/Kinematics.cpp b/src/Movement/Kinematics/Kinematics.cpp
index 058aef71..dd55b2ed 100644
--- a/src/Movement/Kinematics/Kinematics.cpp
+++ b/src/Movement/Kinematics/Kinematics.cpp
@@ -11,6 +11,7 @@
#include "CoreXYKinematics.h"
#include "CoreXZKinematics.h"
#include "ScaraKinematics.h"
+#include "CoreXYUKinematics.h"
#include "RepRap.h"
#include "Platform.h"
@@ -45,9 +46,10 @@ bool Kinematics::IsReachable(float x, float y) const
// Limit the Cartesian position that the user wants to move to
// This default implementation just applies the rectangular limits set up by M208 to those axes that have been homed.
-void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const
+bool Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t axesHomed) const
{
const Platform& platform = reprap.GetPlatform();
+ bool limited = false;
for (size_t axis = 0; axis < numVisibleAxes; axis++)
{
if ((axesHomed & (1 << axis)) != 0)
@@ -56,13 +58,16 @@ void Kinematics::LimitPosition(float coords[], size_t numVisibleAxes, uint16_t a
if (f < platform.AxisMinimum(axis))
{
f = platform.AxisMinimum(axis);
+ limited = true;
}
else if (f > platform.AxisMaximum(axis))
{
f = platform.AxisMaximum(axis);
+ limited = true;
}
}
}
+ return limited;
}
// Return the initial Cartesian coordinates we assume after switching to this kinematics
@@ -91,6 +96,8 @@ void Kinematics::GetAssumedInitialPosition(size_t numAxes, float positions[]) co
return new CoreXZKinematics();
case KinematicsType::scara:
return new ScaraKinematics();
+ case KinematicsType::coreXYU:
+ return new CoreXYUKinematics();
}
}