Browse Source

Fix LCD manual movement on kinematic machines (#9655)

pull/1/head
Thomas Moore 7 years ago
committed by Scott Lahteine
parent
commit
cff62042ee
  1. 9
      Marlin/src/lcd/ultralcd.cpp

9
Marlin/src/lcd/ultralcd.cpp

@ -2818,7 +2818,10 @@ void kill_screen(const char* lcd_msg) {
manual_move_offset = 0.0; manual_move_offset = 0.0;
manual_move_axis = (int8_t)NO_AXIS; manual_move_axis = (int8_t)NO_AXIS;
// Set a blocking flag so no new moves can be added until all segments are done // DELTA and SCARA machines use segmented moves, which could fill the planner during the call to
// move_to_destination. This will cause idle() to be called, which can then call this function while the
// previous invocation is being blocked. Modifications to manual_move_offset shouldn't be made while
// processing_manual_move is true or the planner will get out of sync.
processing_manual_move = true; processing_manual_move = true;
prepare_move_to_destination(); // will call set_current_from_destination() prepare_move_to_destination(); // will call set_current_from_destination()
processing_manual_move = false; processing_manual_move = false;
@ -2930,11 +2933,11 @@ void kill_screen(const char* lcd_msg) {
} }
encoderPosition = 0; encoderPosition = 0;
if (lcdDrawUpdate) { if (lcdDrawUpdate) {
const float pos = current_position[axis] const float pos = (processing_manual_move ? destination[axis] : current_position[axis]
#if IS_KINEMATIC #if IS_KINEMATIC
+ manual_move_offset + manual_move_offset
#endif #endif
; );
lcd_implementation_drawedit(name, move_menu_scale >= 0.1 ? ftostr41sign(pos) : ftostr43sign(pos)); lcd_implementation_drawedit(name, move_menu_scale >= 0.1 ? ftostr41sign(pos) : ftostr43sign(pos));
} }
} }

Loading…
Cancel
Save