Prusa MINI Firmware overview
|
Go to the source code of this file.
|
#define | XY_PROBE_FEEDRATE_MM_S xy_probe_feedrate_mm_s |
|
#define | XYZ_DEFS(T, NAME, OPT) |
|
#define | update_workspace_offset(x) NOOP |
|
#define | MOTION_CONDITIONS IsRunning() |
|
#define | NATIVE_TO_LOGICAL(POS, AXIS) (POS) |
|
#define | LOGICAL_TO_NATIVE(POS, AXIS) (POS) |
|
#define | LOGICAL_X_POSITION(POS) NATIVE_TO_LOGICAL(POS, X_AXIS) |
|
#define | LOGICAL_Y_POSITION(POS) NATIVE_TO_LOGICAL(POS, Y_AXIS) |
|
#define | LOGICAL_Z_POSITION(POS) NATIVE_TO_LOGICAL(POS, Z_AXIS) |
|
#define | RAW_X_POSITION(POS) LOGICAL_TO_NATIVE(POS, X_AXIS) |
|
#define | RAW_Y_POSITION(POS) LOGICAL_TO_NATIVE(POS, Y_AXIS) |
|
#define | RAW_Z_POSITION(POS) LOGICAL_TO_NATIVE(POS, Z_AXIS) |
|
|
FORCE_INLINE bool | all_axes_homed () |
|
FORCE_INLINE bool | all_axes_known () |
|
FORCE_INLINE void | set_all_unhomed () |
|
FORCE_INLINE void | set_all_unknown () |
|
FORCE_INLINE bool | homing_needed () |
|
FORCE_INLINE feedRate_t | homing_feedrate (const AxisEnum a) |
|
feedRate_t | get_homing_bump_feedrate (const AxisEnum axis) |
|
FORCE_INLINE float | pgm_read_any (const float *p) |
|
FORCE_INLINE signed char | pgm_read_any (const signed char *p) |
|
| XYZ_DEFS (float, base_min_pos, MIN_POS) |
|
| XYZ_DEFS (float, base_max_pos, MAX_POS) |
|
| XYZ_DEFS (float, base_home_pos, HOME_POS) |
|
| XYZ_DEFS (float, max_length, MAX_LENGTH) |
|
| XYZ_DEFS (float, home_bump_mm, HOME_BUMP_MM) |
|
| XYZ_DEFS (signed char, home_dir, HOME_DIR) |
|
void | apply_motion_limits (xyz_pos_t &target) |
|
void | update_software_endstops (const AxisEnum axis) |
|
void | report_current_position () |
|
void | get_cartesian_from_steppers () |
|
void | set_current_from_steppers_for_axis (const AxisEnum axis) |
|
void | sync_plan_position () |
|
void | sync_plan_position_e () |
|
void | line_to_current_position (const feedRate_t &fr_mm_s=feedrate_mm_s) |
|
void | prepare_move_to_destination () |
|
void | _internal_move_to_destination (const feedRate_t &fr_mm_s=0.0f) |
|
void | prepare_internal_move_to_destination (const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to (const float rx, const float ry, const float rz, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to (const xy_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to (const xyz_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to (const xyze_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_x (const float &rx, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_y (const float &ry, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_z (const float &rz, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_xy (const float &rx, const float &ry, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_xy (const xy_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
FORCE_INLINE void | do_blocking_move_to_xy (const xyz_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
FORCE_INLINE void | do_blocking_move_to_xy (const xyze_pos_t &raw, const feedRate_t &fr_mm_s=0.0f) |
|
void | do_blocking_move_to_xy_z (const xy_pos_t &raw, const float &z, const feedRate_t &fr_mm_s=0.0f) |
|
FORCE_INLINE void | do_blocking_move_to_xy_z (const xyz_pos_t &raw, const float &z, const feedRate_t &fr_mm_s=0.0f) |
|
FORCE_INLINE void | do_blocking_move_to_xy_z (const xyze_pos_t &raw, const float &z, const feedRate_t &fr_mm_s=0.0f) |
|
void | remember_feedrate_and_scaling () |
|
void | remember_feedrate_scaling_off () |
|
void | restore_feedrate_and_scaling () |
|
uint8_t | axes_need_homing (uint8_t axis_bits=0x07) |
|
bool | axis_unhomed_error (uint8_t axis_bits=0x07) |
|
void | set_axis_is_at_home (const AxisEnum axis) |
|
void | set_axis_is_not_at_home (const AxisEnum axis) |
|
void | homeaxis (const AxisEnum axis) |
|
FORCE_INLINE void | toLogical (xy_pos_t &) |
|
FORCE_INLINE void | toLogical (xyz_pos_t &) |
|
FORCE_INLINE void | toLogical (xyze_pos_t &) |
|
FORCE_INLINE void | toNative (xy_pos_t &) |
|
FORCE_INLINE void | toNative (xyz_pos_t &) |
|
FORCE_INLINE void | toNative (xyze_pos_t &) |
|
bool | position_is_reachable (const float &rx, const float &ry) |
|
bool | position_is_reachable (const xy_pos_t &pos) |
|
FORCE_INLINE bool | position_is_reachable_by_probe (const xy_int_t &pos) |
|
FORCE_INLINE bool | position_is_reachable_by_probe (const xy_pos_t &pos) |
|
◆ XY_PROBE_FEEDRATE_MM_S
◆ XYZ_DEFS
#define XYZ_DEFS |
( |
|
T, |
|
|
|
NAME, |
|
|
|
OPT |
|
) |
| |
◆ update_workspace_offset
#define update_workspace_offset |
( |
|
x | ) |
NOOP |
◆ MOTION_CONDITIONS
◆ NATIVE_TO_LOGICAL
#define NATIVE_TO_LOGICAL |
( |
|
POS, |
|
|
|
AXIS |
|
) |
| (POS) |
◆ LOGICAL_TO_NATIVE
#define LOGICAL_TO_NATIVE |
( |
|
POS, |
|
|
|
AXIS |
|
) |
| (POS) |
◆ LOGICAL_X_POSITION
◆ LOGICAL_Y_POSITION
◆ LOGICAL_Z_POSITION
◆ RAW_X_POSITION
◆ RAW_Y_POSITION
◆ RAW_Z_POSITION
◆ all_axes_homed()
◆ all_axes_known()
◆ set_all_unhomed()
◆ set_all_unknown()
◆ homing_needed()
51 #if ENABLED(HOME_AFTER_DEACTIVATE)
◆ homing_feedrate()
◆ get_homing_bump_feedrate()
Homing bump feedrate (mm/s)
1077 #if HOMING_Z_WITH_PROBE
◆ pgm_read_any() [1/2]
◆ pgm_read_any() [2/2]
◆ XYZ_DEFS() [1/6]
XYZ_DEFS |
( |
float |
, |
|
|
base_min_pos |
, |
|
|
MIN_POS |
|
|
) |
| |
◆ XYZ_DEFS() [2/6]
XYZ_DEFS |
( |
float |
, |
|
|
base_max_pos |
, |
|
|
MAX_POS |
|
|
) |
| |
◆ XYZ_DEFS() [3/6]
XYZ_DEFS |
( |
float |
, |
|
|
base_home_pos |
, |
|
|
HOME_POS |
|
|
) |
| |
◆ XYZ_DEFS() [4/6]
XYZ_DEFS |
( |
float |
, |
|
|
max_length |
, |
|
|
MAX_LENGTH |
|
|
) |
| |
◆ XYZ_DEFS() [5/6]
XYZ_DEFS |
( |
float |
, |
|
|
home_bump_mm |
, |
|
|
HOME_BUMP_MM |
|
|
) |
| |
◆ XYZ_DEFS() [6/6]
XYZ_DEFS |
( |
signed char |
, |
|
|
home_dir |
, |
|
|
HOME_DIR |
|
|
) |
| |
◆ apply_motion_limits()
Constrain the given coordinates to the software endstops.
For DELTA/SCARA the XY constraint is based on the smallest radius within the set software endstops.
595 #if HAS_HOTEND_OFFSET && ENABLED(DELTA)
603 const float dist_2 =
HYPOT2(target.
x - offs.
x, target.
y - offs.
y);
604 if (dist_2 > delta_max_radius_2)
605 target *= delta_max_radius /
SQRT(dist_2);
609 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_X)
612 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MAX_SOFTWARE_ENDSTOP_X)
615 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_Y)
618 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MAX_SOFTWARE_ENDSTOP_Y)
624 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MIN_SOFTWARE_ENDSTOP_Z)
627 #if !HAS_SOFTWARE_ENDSTOPS || ENABLED(MAX_SOFTWARE_ENDSTOP_Z)
◆ update_software_endstops()
Software endstops can be used to monitor the open end of an axis that has a hardware endstop on the other end. Or they can prevent axes from moving past endstops and grinding.
To keep doing their job as the coordinate system changes, the software endstop positions must be refreshed to remain at the same positions relative to the machine.
509 #if ENABLED(DUAL_X_CARRIAGE)
516 if (new_tool_index != 0) {
521 else if (dxc_is_duplicating()) {
542 : base_max_pos(axis));
549 delta_max_radius_2 =
sq(delta_max_radius);
556 #elif HAS_HOTEND_OFFSET
561 if (old_tool_index != new_tool_index) {
◆ report_current_position()
void report_current_position |
( |
| ) |
|
Output the current position to serial
◆ get_cartesian_from_steppers()
void get_cartesian_from_steppers |
( |
| ) |
|
Get the stepper positions in the cartes[] array. Forward kinematics are applied for DELTA and SCARA.
The result is in the current coordinate space with leveling applied. The coordinates need to be run through unapply_leveling to obtain the "ideal" coordinates suitable for current_position, etc.
◆ set_current_from_steppers_for_axis()
Set the current_position for an axis based on the stepper positions, removing any leveling that may have been applied.
To prevent small shifts in axis position always call sync_plan_position after updating axes with this.
To keep hosts in sync, always call report_current_position after updating the current_position.
266 #if HAS_POSITION_MODIFIERS
◆ sync_plan_position()
void sync_plan_position |
( |
| ) |
|
sync_plan_position
Set the planner/stepper positions directly from current_position with no kinematic translation. Used for homing axes and cartesian/core syncing.
◆ sync_plan_position_e()
void sync_plan_position_e |
( |
| ) |
|
◆ line_to_current_position()
Move the planner to the current position from wherever it last moved (or from wherever it has been told it is located).
◆ prepare_move_to_destination()
void prepare_move_to_destination |
( |
| ) |
|
Prepare a single move and get ready for the next one
This may result in several calls to planner.buffer_line to do smaller moves for DELTA, SCARA, mesh moves, etc.
Make sure current_position.e and destination.e are good before calling or cold/lengthy extrusion may get missed.
Before exit, current_position is set to destination.
987 #if EITHER(PREVENT_COLD_EXTRUSION, PREVENT_LENGTHY_EXTRUDE)
991 #if ENABLED(PREVENT_COLD_EXTRUSION)
996 #endif // PREVENT_COLD_EXTRUSION
997 #if ENABLED(PREVENT_LENGTHY_EXTRUDE)
1000 #if ENABLED(MIXING_EXTRUDER)
1001 bool ignore_e =
false;
1002 float collector[MIXING_STEPPERS];
1007 constexpr
bool ignore_e =
true;
1014 #endif // PREVENT_LENGTHY_EXTRUDE
1018 #endif // PREVENT_COLD_EXTRUSION || PREVENT_LENGTHY_EXTRUDE
1020 #if ENABLED(DUAL_X_CARRIAGE)
1021 if (dual_x_carriage_unpark())
return;
1032 line_to_destination_kinematic()
◆ _internal_move_to_destination()
329 prepare_fast_move_to_destination();
◆ prepare_internal_move_to_destination()
◆ do_blocking_move_to() [1/4]
Blocking movement and shorthand functions
Plan a move to (X, Y, Z) and set the current_position
364 prepare_internal_fast_move_to_destination();
369 prepare_internal_fast_move_to_destination();
375 prepare_internal_fast_move_to_destination(z_feedrate);
385 prepare_internal_fast_move_to_destination(z_feedrate);
398 prepare_internal_fast_move_to_destination(z_feedrate);
402 prepare_internal_fast_move_to_destination(xy_feedrate);
407 prepare_internal_fast_move_to_destination(z_feedrate);
◆ do_blocking_move_to() [2/4]
◆ do_blocking_move_to() [3/4]
◆ do_blocking_move_to() [4/4]
◆ do_blocking_move_to_x()
◆ do_blocking_move_to_y()
◆ do_blocking_move_to_z()
◆ do_blocking_move_to_xy() [1/4]
◆ do_blocking_move_to_xy() [2/4]
◆ do_blocking_move_to_xy() [3/4]
◆ do_blocking_move_to_xy() [4/4]
◆ do_blocking_move_to_xy_z() [1/3]
◆ do_blocking_move_to_xy_z() [2/3]
◆ do_blocking_move_to_xy_z() [3/3]
◆ remember_feedrate_and_scaling()
void remember_feedrate_and_scaling |
( |
| ) |
|
◆ remember_feedrate_scaling_off()
void remember_feedrate_scaling_off |
( |
| ) |
|
◆ restore_feedrate_and_scaling()
void restore_feedrate_and_scaling |
( |
| ) |
|
◆ axes_need_homing()
1042 #if ENABLED(HOME_AFTER_DEACTIVATE)
1043 #define HOMED_FLAGS axis_known_position
1045 #define HOMED_FLAGS axis_homed
◆ axis_unhomed_error()
bool axis_unhomed_error |
( |
uint8_t |
axis_bits = 0x07 | ) |
|
◆ set_axis_is_at_home()
Set an axis' current position to its home position (after homing).
For Core and Cartesian robots this applies one-to-one when an individual axis has been homed.
DELTA should wait until all homing is done before setting the XYZ current_position to home, because homing is a single operation. In the case where the axis positions are already known and previously homed, DELTA could home to X or Y individually by moving either one to the center. However, homing Z always homes XY and Z.
SCARA should wait until all XY homing is done before setting the XY current_position to home, because neither X nor Y is at home until both are at home. Z can however be homed individually.
Callers must sync the planner position after calling this!
Z Probe Z Homing? Account for the probe's Z offset.
1367 #if ENABLED(DUAL_X_CARRIAGE)
1374 #if ENABLED(MORGAN_SCARA)
1376 #elif ENABLED(DELTA)
1381 : base_home_pos(axis));
1389 #if HAS_BED_PROBE && Z_HOME_DIR < 0
1391 #if HOMING_Z_WITH_PROBE
1405 #if ENABLED(I2C_POSITION_ENCODERS)
1409 #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
◆ set_axis_is_not_at_home()
Set an axis' to be unhomed.
1433 #if ENABLED(I2C_POSITION_ENCODERS)
◆ homeaxis()
Home an individual "raw axis" to its endstop. This applies to XYZ on Cartesian and Core robots, and to the individual ABC steppers on DELTA and SCARA.
At the end of the procedure the axis is marked as homed and the current position of that axis is updated. Kinematic robots should wait till all axes are homed before updating the current position.
1453 if (axis !=
Z_AXIS) {
BUZZ(100, 880);
return; }
1455 #define _CAN_HOME(A) \
1456 (axis == _AXIS(A) && ((A##_MIN_PIN > -1 && A##_HOME_DIR < 0) || (A##_MAX_PIN > -1 && A##_HOME_DIR > 0)))
1457 #if X_SPI_SENSORLESS
1458 #define CAN_HOME_X true
1460 #define CAN_HOME_X _CAN_HOME(X)
1462 #if Y_SPI_SENSORLESS
1463 #define CAN_HOME_Y true
1465 #define CAN_HOME_Y _CAN_HOME(Y)
1467 #if Z_SPI_SENSORLESS
1468 #define CAN_HOME_Z true
1470 #define CAN_HOME_Z _CAN_HOME(Z)
1477 const int axis_home_dir = (
1478 #if ENABLED(DUAL_X_CARRIAGE)
1485 #if HOMING_Z_WITH_PROBE
1490 #if HAS_EXTRA_ENDSTOPS
1492 #if ENABLED(X_DUAL_ENDSTOPS)
1495 #if ENABLED(Y_DUAL_ENDSTOPS)
1498 #if Z_MULTI_ENDSTOPS
1509 #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
1522 #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
1527 const float bump = axis_home_dir * (
1528 #if HOMING_Z_WITH_PROBE
1547 #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH) && DISABLED(BLTOUCH_HS_MODE)
1553 #if HOMING_Z_WITH_PROBE && ENABLED(BLTOUCH)
1558 #if HAS_EXTRA_ENDSTOPS
1559 const bool pos_dir = axis_home_dir > 0;
1560 #if ENABLED(X_DUAL_ENDSTOPS)
1571 #if ENABLED(Y_DUAL_ENDSTOPS)
1582 #if ENABLED(Z_DUAL_ENDSTOPS)
1593 #if ENABLED(Z_TRIPLE_ENDSTOPS)
1599 void (*tempLock) (bool);
1603 if (adj[1] < adj[0]) {
1604 tempLock = lock[0], tempAdj = adj[0];
1605 lock[0] = lock[1], adj[0] = adj[1];
1606 lock[1] = tempLock, adj[1] = tempAdj;
1608 if (adj[2] < adj[1]) {
1609 tempLock = lock[1], tempAdj = adj[1];
1610 lock[1] = lock[2], adj[1] = adj[2];
1611 lock[2] = tempLock, adj[2] = tempAdj;
1613 if (adj[1] < adj[0]) {
1614 tempLock = lock[0], tempAdj = adj[0];
1615 lock[0] = lock[1], adj[0] = adj[1];
1616 lock[1] = tempLock, adj[1] = tempAdj;
1642 #if ENABLED(X_DUAL_ENDSTOPS)
1645 #if ENABLED(Y_DUAL_ENDSTOPS)
1648 #if Z_MULTI_ENDSTOPS
1661 #elif ENABLED(DELTA)
1673 #else // CARTESIAN / CORE
1685 #if HOMING_Z_WITH_PROBE
1689 #ifdef HOMING_BACKOFF_MM
1690 constexpr
xyz_float_t endstop_backoff = HOMING_BACKOFF_MM;
1691 const float backoff_mm = endstop_backoff[
1710 #if ENABLED(FWRETRACT)
1711 if (axis ==
Z_AXIS) fwretract.current_hop = 0.0;
◆ toLogical() [1/3]
◆ toLogical() [2/3]
◆ toLogical() [3/3]
◆ toNative() [1/3]
◆ toNative() [2/3]
◆ toNative() [3/3]
◆ position_is_reachable() [1/2]
bool position_is_reachable |
( |
const float & |
rx, |
|
|
const float & |
ry |
|
) |
| |
position_is_reachable family of functions
327 #if ENABLED(DUAL_X_CARRIAGE)
◆ position_is_reachable() [2/2]
◆ position_is_reachable_by_probe() [1/2]
◆ position_is_reachable_by_probe() [2/2]
◆ axis_homed
Marlin 3D Printer Firmware Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
Based on Sprinter and grbl. Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. motion.h
High-level motion commands to feed the planner Some of these methods may migrate to the planner class.
axis_homed Flags that each linear axis was homed. XYZ on cartesian, ABC on delta, ABZ on SCARA.
axis_known_position Flags that the position is known in each linear axis. Set when homed. Cleared whenever a stepper powers off, potentially losing its position.
◆ axis_known_position
◆ xyz_bits
◆ slop
constexpr float slop = 0.0001 |
|
constexpr |
◆ relative_mode
◆ current_position
Cartesian Current Position Used to track the native machine position as moves are queued. Used by 'line_to_current_position' to do a move after changing it. Used by 'sync_plan_position' to update 'planner.position'.
◆ destination
Cartesian Destination The destination for a move, filled in by G-code movement commands, and expected by functions like 'prepare_move_to_destination'. G-codes can set destination using 'get_destination_from_command'
◆ cartes
◆ xy_probe_feedrate_mm_s
float xy_probe_feedrate_mm_s |
The workspace can be offset by some commands, or these offsets may be omitted to save on computation.
◆ homing_feedrate_mm_s
Feed rates are often configured with mm/m but the planner and stepper like mm/s units.
◆ feedrate_mm_s
◆ feedrate_percentage
int16_t feedrate_percentage |
◆ active_extruder
constexpr uint8_t active_extruder = 0 |
|
constexpr |
◆ hotend_offset
constexpr xyz_pos_t hotend_offset[1] = { { 0 } } |
|
constexpr |
◆ soft_endstops_enabled
bool soft_endstops_enabled |
◆ soft_endstop
◆ extruder_duplication_enabled
bool extruder_duplication_enabled |
◆ mirrored_duplication_mode
bool mirrored_duplication_mode |
float delta_clip_start_height
#define WITHIN(N, L, H)
Definition: macros.h:195
T z
Definition: types.h:286
#define GET_TEXT(MSG)
Definition: multi_language.h:72
static FORCE_INLINE bool tooColdToExtrude(const uint8_t)
Definition: temperature.h:314
#define Y_MIN_POS
Definition: Configuration_A3ides_2209_MINI.h:985
#define NOLESS(v, n)
Definition: macros.h:127
#define HOMING_Z_WITH_PROBE
Definition: Conditionals_LCD.h:505
static void report_positions()
Definition: stepper.cpp:2276
#define sq(x)
Definition: wiring_constants.h:83
T z
Definition: types.h:383
static void synchronize()
Definition: planner.cpp:1556
xyz_pos_t max
Definition: motion.h:139
T x
Definition: types.h:286
#define DEPLOY_PROBE()
Definition: probe.h:60
xyz_pos_t min
Definition: motion.h:139
#define MSG_ERR_COLD_EXTRUDE_STOP
Definition: language.h:242
constexpr xyz_pos_t probe_offset
Definition: probe.h:58
#define Z_PROBE_SPEED_FAST
Definition: Configuration_A3ides_2209_MINI.h:868
#define DEBUG_ECHOLNPGM(...)
Definition: debug_out.h:79
FI XYZEval< float > asLogical() const
Definition: types.h:410
#define DEBUG_XYZ(...)
Definition: debug_out.h:88
Stepper stepper
Definition: stepper.cpp:82
#define _MAX(V...)
Definition: macros.h:346
static float get_axis_position_mm(const AxisEnum axis)
Definition: planner.cpp:1526
uint8_t axis_homed
Definition: motion.cpp:91
#define SERIAL_ECHOPAIR(V...)
Definition: serial.h:114
#define MIN_STEPS_PER_SEGMENT
Definition: Configuration_A3ides_2209_MINI_adv.h:1108
void do_blocking_move_to_xy_z(const xy_pos_t &raw, const float &z, const feedRate_t &fr_mm_s)
Definition: motion.cpp:461
#define UBL_SEGMENTED
Definition: Conditionals_post.h:1403
void do_blocking_move_to_xy(const float &rx, const float &ry, const feedRate_t &fr_mm_s)
Definition: motion.cpp:454
#define Z_HOME_DIR
Definition: Configuration_A3ides_2209_MINI.h:975
static FORCE_INLINE void set_z2_lock(const bool state)
Definition: stepper.h:422
#define PGM_P
Definition: pgmspace.h:30
T e
Definition: types.h:383
void set_axis_is_at_home(const AxisEnum axis)
Definition: motion.cpp:1361
I2CPositionEncodersMgr I2CPEM
#define HYPOT2(x, y)
Definition: macros.h:100
#define _MIN(V...)
Definition: macros.h:333
AxisEnum
Definition: types.h:36
static float saved_feedrate_mm_s
Definition: motion.cpp:469
void forward_kinematics_SCARA(const float &a, const float &b)
xy_float_t xy_pos_t
Definition: types.h:159
#define DEBUG_ECHOLNPAIR(...)
Definition: debug_out.h:82
#define IS_KINEMATIC
Definition: Conditionals_LCD.h:545
#define SERIAL_ECHO_START()
Definition: serial.h:179
#define SERIAL_ECHOLN(x)
Definition: serial.h:72
static void unhomed(const AxisEnum axis)
Definition: I2CPositionEncoder.h:230
void remember_feedrate_and_scaling()
Definition: motion.cpp:471
float feedRate_t
Definition: types.h:80
#define sprintf_P(s,...)
Definition: pgmspace.h:72
FI void set(const T px)
Definition: types.h:290
bool soft_endstops_enabled
Definition: motion.cpp:486
#define strlen_P(s)
Definition: pgmspace.h:61
abc_float_t delta_endstop_adj
static FORCE_INLINE void unapply_modifiers(xyze_pos_t &pos, bool leveling=false)
Definition: planner.h:520
static FORCE_INLINE bool deploy()
Definition: bltouch.h:72
bool prepare_move_to_destination_cartesian()
Definition: motion.cpp:841
#define X_MIN_POS
Definition: Configuration_A3ides_2209_MINI.h:984
#define NOMORE(v, n)
Definition: macros.h:133
#define ABS(a)
Definition: macros.h:266
#define Z_PROBE_SPEED_SLOW
Definition: Configuration_A3ides_2209_MINI.h:871
FORCE_INLINE bool all_axes_known()
Definition: motion.h:45
#define pgm_read_byte(addr)
Definition: pgmspace.h:95
const feedRate_t homing_feedrate_mm_s[XYZ]
void prepare_internal_move_to_destination(const feedRate_t &fr_mm_s=0.0f)
Definition: motion.h:186
#define Y_MAX_POS
Definition: Configuration_A3ides_2209_MINI.h:988
#define SERIAL_ECHO_MSG(S)
Definition: serial.h:183
xyze_pos_t current_position
Definition: motion.cpp:102
int16_t feedrate_percentage
Definition: motion.cpp:139
bool position_is_reachable(const float &rx, const float &ry)
Definition: motion.h:325
#define Z_CLEARANCE_BETWEEN_PROBES
Definition: Configuration_A3ides_2209_MINI.h:893
#define HAS_LEVELING
Definition: Conditionals_post.h:1408
const feedRate_t homing_feedrate_mm_s[XYZ] PROGMEM
Definition: motion.cpp:142
void line_to_current_position(const feedRate_t &fr_mm_s)
Definition: motion.cpp:285
void do_blocking_move_to(const float rx, const float ry, const float rz, const feedRate_t &fr_mm_s)
Definition: motion.cpp:344
xyz_pos_t cartes
Definition: motion.cpp:152
void scara_set_axis_is_at_home(const AxisEnum axis)
void sync_plan_position()
Definition: motion.cpp:216
#define REMEMBER(N, X, V...)
Definition: utility.h:76
FORCE_INLINE bool position_is_reachable_by_probe(const xy_int_t &pos)
Definition: motion.h:358
void
Definition: png.h:1083
float delta_safe_distance_from_top()
static void refresh_collector(const float proportion=1.0, const uint8_t t=selected_vtool, float(&c)[MIXING_STEPPERS]=collector)
T x
Definition: types.h:383
#define pgm_read_float(addr)
Definition: pgmspace.h:109
#define XY_PROBE_FEEDRATE_MM_S
Definition: motion.h:77
static bool buffer_line(const float &rx, const float &ry, const float &rz, const float &e, const feedRate_t &fr_mm_s, const uint8_t extruder, const float millimeters=0.0)
Definition: planner.cpp:2663
feedRate_t feedrate_mm_s
Definition: motion.cpp:138
void do_blocking_move_to_xy(const float &rx, const float &ry, const feedRate_t &fr_mm_s=0.0f)
Definition: motion.cpp:454
#define SERIAL_ECHOLNPAIR(V...)
Definition: serial.h:144
feedRate_t get_homing_bump_feedrate(const AxisEnum axis)
Definition: motion.cpp:1076
list a
Definition: createSpeedLookupTable.py:29
void scara_report_positions()
#define Z_HOME_BUMP_MM
Definition: Configuration_A3ides_2209_MINI_adv.h:457
static FORCE_INLINE void set_separate_multi_axis(const bool state)
Definition: stepper.h:410
uint8_t axis_known_position
Definition: motion.cpp:91
FI void set(const T px)
Definition: types.h:391
#define SQRT(x)
Definition: macros.h:281
T x
Definition: types.h:185
#define MIXER_STEPPER_LOOP(VAR)
Definition: mixing.h:68
#define DEBUG_POS(...)
Definition: debug_out.h:87
void do_homing_move(const AxisEnum axis, const float distance, const feedRate_t fr_mm_s=0.0)
Definition: motion.cpp:1232
static float z2_endstop_adj
Definition: endstops.h:51
void get_cartesian_from_steppers()
Definition: motion.cpp:232
const uint8_t[]
Definition: 404_html.c:3
T y
Definition: types.h:286
static float steps_to_mm[XYZE_N]
Definition: planner.h:254
xyze_pos_t destination
Definition: motion.cpp:110
FORCE_INLINE feedRate_t homing_feedrate(const AxisEnum a)
Definition: motion.h:93
#define X_MAX_POS
Definition: Configuration_A3ides_2209_MINI.h:987
#define CBI(A, B)
Definition: macros.h:89
constexpr uint8_t xyz_bits
Definition: motion.h:43
constexpr xyz_pos_t hotend_offset[1]
Definition: motion.h:136
static void set_e_position_mm(const float &e)
Definition: planner.cpp:2764
#define MSG_ERR_LONG_EXTRUDE_STOP
Definition: language.h:243
void prepare_move_to_destination()
Definition: motion.cpp:984
void apply_motion_limits(xyz_pos_t &target)
Definition: motion.cpp:589
#define DEBUGGING(F)
Definition: serial.h:47
uint8_t axes_need_homing(uint8_t axis_bits)
Definition: motion.cpp:1041
#define STOW_PROBE()
Definition: probe.h:61
#define TEST(n, b)
Definition: macros.h:81
#define MMM_TO_MMS(MM_M)
Definition: types.h:83
static void homed(const AxisEnum axis)
Definition: I2CPositionEncoder.h:225
T y
Definition: types.h:185
void do_blocking_move_to_xy_z(const xy_pos_t &raw, const float &z, const feedRate_t &fr_mm_s=0.0f)
Definition: motion.cpp:461
#define HOMING_BUMP_DIVISOR
Definition: Configuration_A3ides_2209_MINI_adv.h:458
void forward_kinematics_DELTA(const float &z1, const float &z2, const float &z3)
FORCE_INLINE float pgm_read_any(const float *p)
Definition: motion.h:110
constexpr float slop
Definition: motion.h:60
#define SBI(A, B)
Definition: macros.h:85
const xyze_char_t axis_codes
Definition: types.h:486
uint8_t axis_homed
Definition: motion.cpp:91
void _internal_move_to_destination(const feedRate_t &fr_mm_s=0.0f)
Definition: motion.cpp:311
static void set_position_mm(const float &rx, const float &ry, const float &rz, const float &e)
Definition: planner.cpp:2741
uint8_t axis_known_position
Definition: motion.cpp:91
#define MMS_SCALED(V)
Definition: types.h:85
axis_limits_t soft_endstop
Definition: motion.cpp:489
Temperature thermalManager
Definition: temperature.cpp:89
Endstops endstops
Definition: endstops.cpp:51
static FORCE_INLINE uint8_t get_current_vtool()
Definition: mixing.h:111
#define BUZZ(d, f)
Definition: buzzer.h:126
constexpr uint8_t active_extruder
Definition: motion.h:107
static FORCE_INLINE void set_z_lock(const bool state)
Definition: stepper.h:421
#define ENABLED(V...)
Definition: macros.h:177
Planner planner
Definition: planner.cpp:111
FORCE_INLINE bool all_axes_homed()
Definition: motion.h:44
T y
Definition: types.h:383
static int16_t saved_feedrate_percentage
Definition: motion.cpp:470
static FORCE_INLINE bool stow()
Definition: bltouch.h:73
#define EXTRUDE_MAXLENGTH
Definition: Configuration_A3ides_2209_MINI.h:524