0
0
Fork 0
mirror of https://github.com/MarlinFirmware/Marlin.git synced 2025-02-18 07:10:58 +00:00

MARKFORGED_INVERSE (#26516)

This commit is contained in:
jesterhead82 2023-12-13 08:44:11 +01:00 committed by GitHub
parent 775c6bb20e
commit fef74398e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 11 deletions

View file

@ -892,8 +892,16 @@
//#define COREYX
//#define COREZX
//#define COREZY
//#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042
//
// MarkForged Kinematics
// See https://reprap.org/forum/read.php?152,504042
//
//#define MARKFORGED_XY
//#define MARKFORGED_YX
#if ANY(MARKFORGED_XY, MARKFORGED_YX)
//#define MARKFORGED_INVERSE // Enable for an inverted Markforged kinematics belt path
#endif
// Enable for a belt style printer with endless "Z" motion
//#define BELTPRINTER

View file

@ -1990,11 +1990,11 @@ bool Planner::_populate_block(
dm.c = (CORESIGN(dist.b - dist.c) > 0); // Motor C direction
#endif
#elif ENABLED(MARKFORGED_XY)
dm.a = (dist.a + dist.b > 0); // Motor A direction
dm.a = (dist.a TERN(MARKFORGED_INVERSE, -, +) dist.b > 0); // Motor A direction
dm.b = (dist.b > 0); // Motor B direction
#elif ENABLED(MARKFORGED_YX)
dm.a = (dist.a > 0); // Motor A direction
dm.b = (dist.b + dist.a > 0); // Motor B direction
dm.b = (dist.b TERN(MARKFORGED_INVERSE, -, +) dist.a > 0); // Motor B direction
#else
XYZ_CODE(
dm.x = (dist.a > 0),
@ -2062,9 +2062,9 @@ bool Planner::_populate_block(
#elif CORE_IS_YZ
ABS(dist.a), ABS(dist.b + dist.c), ABS(dist.b - dist.c)
#elif ENABLED(MARKFORGED_XY)
ABS(dist.a + dist.b), ABS(dist.b), ABS(dist.c)
ABS(dist.a TERN(MARKFORGED_INVERSE, -, +) dist.b), ABS(dist.b), ABS(dist.c)
#elif ENABLED(MARKFORGED_YX)
ABS(dist.a), ABS(dist.b + dist.a), ABS(dist.c)
ABS(dist.a), ABS(dist.b TERN(MARKFORGED_INVERSE, -, +) dist.a), ABS(dist.c)
#elif IS_SCARA
ABS(dist.a), ABS(dist.b), ABS(dist.c)
#else // default non-h-bot planning
@ -2110,11 +2110,11 @@ bool Planner::_populate_block(
dist_mm.c = CORESIGN(dist.b - dist.c) * mm_per_step[C_AXIS];
#endif
#elif ENABLED(MARKFORGED_XY)
dist_mm.a = (dist.a - dist.b) * mm_per_step[A_AXIS];
dist_mm.a = (dist.a TERN(MARKFORGED_INVERSE, +, -) dist.b) * mm_per_step[A_AXIS];
dist_mm.b = dist.b * mm_per_step[B_AXIS];
#elif ENABLED(MARKFORGED_YX)
dist_mm.a = dist.a * mm_per_step[A_AXIS];
dist_mm.b = (dist.b - dist.a) * mm_per_step[B_AXIS];
dist_mm.b = (dist.b TERN(MARKFORGED_INVERSE, +, -) dist.a) * mm_per_step[B_AXIS];
#else
XYZ_CODE(
dist_mm.a = dist.a * mm_per_step[A_AXIS],

View file

@ -3287,9 +3287,9 @@ void Stepper::_set_position(const abce_long_t &spos) {
// coreyz planning
count_position.set(spos.a, spos.b + spos.c, CORESIGN(spos.b - spos.c));
#elif ENABLED(MARKFORGED_XY)
count_position.set(spos.a - spos.b, spos.b, spos.c);
count_position.set(spos.a TERN(MARKFORGED_INVERSE, +, -) spos.b, spos.b, spos.c);
#elif ENABLED(MARKFORGED_YX)
count_position.set(spos.a, spos.b - spos.a, spos.c);
count_position.set(spos.a, spos.b TERN(MARKFORGED_INVERSE, +, -) spos.a, spos.c);
#endif
SECONDARY_AXIS_CODE(
count_position.i = spos.i,
@ -3382,12 +3382,12 @@ void Stepper::endstop_triggered(const AxisEnum axis) {
) * double(0.5)
#elif ENABLED(MARKFORGED_XY)
axis == CORE_AXIS_1
? count_position[CORE_AXIS_1] - count_position[CORE_AXIS_2]
? count_position[CORE_AXIS_1] ENABLED(MARKFORGED_INVERSE, +, -) count_position[CORE_AXIS_2]
: count_position[CORE_AXIS_2]
#elif ENABLED(MARKFORGED_YX)
axis == CORE_AXIS_1
? count_position[CORE_AXIS_1]
: count_position[CORE_AXIS_2] - count_position[CORE_AXIS_1]
: count_position[CORE_AXIS_2] ENABLED(MARKFORGED_INVERSE, +, -) count_position[CORE_AXIS_1]
#else // !IS_CORE
count_position[axis]
#endif

View file

@ -9,6 +9,7 @@ set -e
use_example_configs Mks/Robin
opt_set MOTHERBOARD BOARD_MKS_ROBIN_MINI EXTRUDERS 1 TEMP_SENSOR_1 0
opt_enable MARKFORGED_XY MARKFORGED_INVERSE
exec_test $1 $2 "MKS Robin mini" "$3"
# cleanup