Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MarlinKimbra
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
MarlinKimbra
Commits
4af24b14
Commit
4af24b14
authored
9 years ago
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix M600
parent
d5c9f507
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
27 deletions
+39
-27
Marlin_main.cpp
MarlinKimbra/Marlin_main.cpp
+39
-27
No files found.
MarlinKimbra/Marlin_main.cpp
View file @
4af24b14
...
...
@@ -5521,54 +5521,62 @@ inline void gcode_M503() {
#ifdef FILAMENTCHANGEENABLE
/**
* M600: Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
* M600: Pause for filament change
*
* E[mm] - Retract the filament this far (negative value)
* Z[mm] - Move the Z axis by this distance
* X[mm] - Move to this X position, with Y
* Y[mm] - Move to this Y position, with X
* L[mm] - Retract distance for removal (manual reload)
*
* Default values are used for omitted arguments.
*
*/
inline
void
gcode_M600
()
{
float
target
[
NUM_AXIS
],
fr60
=
feedrate
/
60
;
float
fr60
=
feedrate
/
60
;
filament_changing
=
true
;
for
(
int
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
target
[
i
]
=
lastpos
[
i
]
=
current_position
[
i
];
lastpos
[
i
]
=
destination
[
i
]
=
current_position
[
i
];
#ifdef DELTA
#define
BASICPLAN plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], fr60, active_extruder, active_driver);
#define RUNPLAN calculate_delta(target); BASICPLAN
#define
RUNPLAN calculate_delta(destination); \
plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder, active_driver);
#else
#define BASICPLAN plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder, active_driver);
#define RUNPLAN BASICPLAN
#define RUNPLAN line_to_destination();
#endif
//retract by E
if
(
code_seen
(
'E'
))
target
[
E_AXIS
]
+=
code_value
();
if
(
code_seen
(
'E'
))
destination
[
E_AXIS
]
+=
code_value
();
#ifdef FILAMENTCHANGE_FIRSTRETRACT
else
target
[
E_AXIS
]
+=
FILAMENTCHANGE_FIRSTRETRACT
;
else
destination
[
E_AXIS
]
+=
FILAMENTCHANGE_FIRSTRETRACT
;
#endif
RUNPLAN
;
//lift Z
if
(
code_seen
(
'Z'
))
target
[
Z_AXIS
]
+=
code_value
();
if
(
code_seen
(
'Z'
))
destination
[
Z_AXIS
]
+=
code_value
();
#ifdef FILAMENTCHANGE_ZADD
else
target
[
Z_AXIS
]
+=
FILAMENTCHANGE_ZADD
;
else
destination
[
Z_AXIS
]
+=
FILAMENTCHANGE_ZADD
;
#endif
RUNPLAN
;
//move xy
if
(
code_seen
(
'X'
))
target
[
X_AXIS
]
=
code_value
();
if
(
code_seen
(
'X'
))
destination
[
X_AXIS
]
=
code_value
();
#ifdef FILAMENTCHANGE_XPOS
else
target
[
X_AXIS
]
=
FILAMENTCHANGE_XPOS
;
else
destination
[
X_AXIS
]
=
FILAMENTCHANGE_XPOS
;
#endif
if
(
code_seen
(
'Y'
))
target
[
Y_AXIS
]
=
code_value
();
if
(
code_seen
(
'Y'
))
destination
[
Y_AXIS
]
=
code_value
();
#ifdef FILAMENTCHANGE_YPOS
else
target
[
Y_AXIS
]
=
FILAMENTCHANGE_YPOS
;
else
destination
[
Y_AXIS
]
=
FILAMENTCHANGE_YPOS
;
#endif
RUNPLAN
;
if
(
code_seen
(
'L'
))
target
[
E_AXIS
]
+=
code_value
();
if
(
code_seen
(
'L'
))
destination
[
E_AXIS
]
+=
code_value
();
#ifdef FILAMENTCHANGE_FINALRETRACT
else
target
[
E_AXIS
]
+=
FILAMENTCHANGE_FINALRETRACT
;
else
destination
[
E_AXIS
]
+=
FILAMENTCHANGE_FINALRETRACT
;
#endif
RUNPLAN
;
...
...
@@ -5629,34 +5637,38 @@ inline void gcode_M503() {
}
//return to normal
if
(
code_seen
(
'L'
))
target
[
E_AXIS
]
-=
code_value
();
if
(
code_seen
(
'L'
))
destination
[
E_AXIS
]
-=
code_value
();
#ifdef FILAMENTCHANGE_FINALRETRACT
else
target
[
E_AXIS
]
-=
FILAMENTCHANGE_FINALRETRACT
;
else
destination
[
E_AXIS
]
-=
FILAMENTCHANGE_FINALRETRACT
;
#endif
current_position
[
E_AXIS
]
=
target
[
E_AXIS
];
//the long retract of L is compensated by manual filament feeding
current_position
[
E_AXIS
]
=
destination
[
E_AXIS
];
//the long retract of L is compensated by manual filament feeding
plan_set_e_position
(
current_position
[
E_AXIS
]);
RUNPLAN
;
// should do nothing
lcd_reset_alert_level
();
// HOME X & Y & Z(only Delta)
//gcode_G28(true); Devo trovare un'altra soluzione
#ifdef DELTA
calculate_delta
(
lastpos
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
target
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//move xyz back
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
destination
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//move xyz back
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
lastpos
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//final unretract
#else
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
target
[
Z_AXIS
],
target
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//move xy back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
target
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//move z back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
lastpos
[
E_AXIS
],
fr60
,
active_extruder
,
active_driver
);
//final unretract
// Move XY to starting position, then Z, then E
destination
[
X_AXIS
]
=
lastpos
[
X_AXIS
];
destination
[
Y_AXIS
]
=
lastpos
[
Y_AXIS
];
line_to_destination
();
destination
[
Z_AXIS
]
=
lastpos
[
Z_AXIS
];
line_to_destination
();
destination
[
E_AXIS
]
=
lastpos
[
E_AXIS
];
line_to_destination
();
#endif
#ifdef FILAMENT_RUNOUT_SENSOR
filrunoutEnqueued
=
false
;
#endif
filament_changing
=
false
;
}
/**
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment