Prusa MINI Firmware overview
|
|
| XYZ_CONSTS (float, base_min_pos, MIN_POS) |
|
| XYZ_CONSTS (float, base_max_pos, MAX_POS) |
|
| XYZ_CONSTS (float, base_home_pos, HOME_POS) |
|
| XYZ_CONSTS (float, max_length, MAX_LENGTH) |
|
| XYZ_CONSTS (float, home_bump_mm, HOME_BUMP_MM) |
|
| XYZ_CONSTS (signed char, home_dir, HOME_DIR) |
|
void | report_current_position () |
|
void | sync_plan_position () |
|
void | sync_plan_position_e () |
|
void | get_cartesian_from_steppers () |
|
void | set_current_from_steppers_for_axis (const AxisEnum axis) |
|
void | line_to_current_position (const feedRate_t &fr_mm_s) |
|
void | _internal_move_to_destination (const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to (const float rx, const float ry, const float rz, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to (const xy_pos_t &raw, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to (const xyz_pos_t &raw, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to (const xyze_pos_t &raw, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_x (const float &rx, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_y (const float &ry, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_z (const float &rz, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_xy (const float &rx, const float &ry, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_xy (const xy_pos_t &raw, const feedRate_t &fr_mm_s) |
|
void | do_blocking_move_to_xy_z (const xy_pos_t &raw, const float &z, const feedRate_t &fr_mm_s) |
|
void | remember_feedrate_and_scaling () |
|
void | remember_feedrate_scaling_off () |
|
void | restore_feedrate_and_scaling () |
|
void | update_software_endstops (const AxisEnum axis) |
|
void | apply_motion_limits (xyz_pos_t &target) |
|
bool | prepare_move_to_destination_cartesian () |
|
void | prepare_move_to_destination () |
|
uint8_t | axes_need_homing (uint8_t axis_bits) |
|
bool | axis_unhomed_error (uint8_t axis_bits) |
|
feedRate_t | get_homing_bump_feedrate (const AxisEnum axis) |
|
void | do_homing_move (const AxisEnum axis, const float distance, const feedRate_t fr_mm_s=0.0) |
|
void | set_axis_is_at_home (const AxisEnum axis) |
|
void | set_axis_is_not_at_home (const AxisEnum axis) |
|
void | homeaxis (const AxisEnum axis) |
|
◆ DEBUG_OUT
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) |
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.cpp
◆ XYZ_CONSTS
◆ HOMED_FLAGS
◆ _CAN_HOME
#define _CAN_HOME |
( |
|
A | ) |
(axis == _AXIS(A) && ((A##_MIN_PIN > -1 && A##_HOME_DIR < 0) || (A##_MAX_PIN > -1 && A##_HOME_DIR > 0))) |
◆ CAN_HOME_X
◆ CAN_HOME_Y
◆ CAN_HOME_Z
◆ XYZ_CONSTS() [1/6]
XYZ_CONSTS |
( |
float |
, |
|
|
base_min_pos |
, |
|
|
MIN_POS |
|
|
) |
| |
◆ XYZ_CONSTS() [2/6]
XYZ_CONSTS |
( |
float |
, |
|
|
base_max_pos |
, |
|
|
MAX_POS |
|
|
) |
| |
◆ XYZ_CONSTS() [3/6]
XYZ_CONSTS |
( |
float |
, |
|
|
base_home_pos |
, |
|
|
HOME_POS |
|
|
) |
| |
◆ XYZ_CONSTS() [4/6]
XYZ_CONSTS |
( |
float |
, |
|
|
max_length |
, |
|
|
MAX_LENGTH |
|
|
) |
| |
◆ XYZ_CONSTS() [5/6]
XYZ_CONSTS |
( |
float |
, |
|
|
home_bump_mm |
, |
|
|
HOME_BUMP_MM |
|
|
) |
| |
◆ XYZ_CONSTS() [6/6]
XYZ_CONSTS |
( |
signed char |
, |
|
|
home_dir |
, |
|
|
HOME_DIR |
|
|
) |
| |
◆ report_current_position()
void report_current_position |
( |
| ) |
|
Output the current position to serial
◆ 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 |
( |
| ) |
|
◆ 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
◆ 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).
◆ _internal_move_to_destination()
329 prepare_fast_move_to_destination();
◆ do_blocking_move_to() [1/4]
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/2]
◆ do_blocking_move_to_xy() [2/2]
◆ do_blocking_move_to_xy_z()
◆ 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 |
( |
| ) |
|
◆ 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) {
◆ 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)
◆ prepare_move_to_destination_cartesian()
bool prepare_move_to_destination_cartesian |
( |
| ) |
|
Prepare a linear move in a Cartesian setup.
When a mesh-based leveling system is active, moves are segmented according to the configuration of the leveling system.
Return true if 'current_position' was set to 'destination'
For MBL and ABL-BILINEAR only segment moves when X or Y are involved. Otherwise fall through to do a direct single move.
845 #if ENABLED(AUTO_BED_LEVELING_UBL)
848 #elif ENABLED(SEGMENT_LEVELED_MOVES)
849 segmented_line_to_destination(scaled_fr_mm_s);
857 #if ENABLED(MESH_BED_LEVELING)
859 #elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
◆ 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()
◆ 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 | ) |
|
◆ get_homing_bump_feedrate()
Homing bump feedrate (mm/s)
1077 #if HOMING_Z_WITH_PROBE
◆ do_homing_move()
Home an individual linear axis
1243 #if HOMING_Z_WITH_PROBE && HAS_HEATED_BED && ENABLED(WAIT_FOR_BED_HEATER)
1247 LCD_MESSAGEPGM(MSG_BED_HEATING);
1254 const int8_t axis_home_dir =
1255 #if ENABLED(DUAL_X_CARRIAGE)
1259 const bool is_home_dir = (axis_home_dir > 0) == (distance > 0);
1261 #if ENABLED(SENSORLESS_HOMING)
1262 sensorless_t stealth_states;
1267 #if HOMING_Z_WITH_PROBE && QUIET_PROBING
1268 if (axis ==
Z_AXIS) probing_pause(
true);
1272 #if ENABLED(SENSORLESS_HOMING)
1273 stealth_states = start_sensorless_homing_per_axis(axis);
1284 float dist = (distance > 0)?-1.92
F:1.92
F;
1285 target[axis] = dist;
1286 #if IS_KINEMATIC && DISABLED(CLASSIC_JERK)
1309 target[axis] = distance;
1311 #if IS_KINEMATIC && DISABLED(CLASSIC_JERK)
1328 #if HOMING_Z_WITH_PROBE && QUIET_PROBING
1329 if (axis ==
Z_AXIS) probing_pause(
false);
1335 #if ENABLED(SENSORLESS_HOMING)
1336 end_sensorless_homing_per_axis(axis, stealth_states);
◆ 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;
◆ axis_homed
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
◆ 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'
◆ feedrate_mm_s
◆ feedrate_percentage
int16_t feedrate_percentage = 100 |
◆ PROGMEM
◆ cartes
◆ xy_probe_feedrate_mm_s
The workspace can be offset by some commands, or these offsets may be omitted to save on computation.
◆ saved_feedrate_mm_s
float saved_feedrate_mm_s |
|
static |
◆ saved_feedrate_percentage
int16_t saved_feedrate_percentage |
|
static |
◆ soft_endstops_enabled
bool soft_endstops_enabled = true |
◆ soft_endstop
◆ extruder_duplication_enabled
bool extruder_duplication_enabled |
◆ mirrored_duplication_mode
bool mirrored_duplication_mode |
float delta_clip_start_height
T z
Definition: types.h:286
static void set_machine_position_mm(const float &a, const float &b, const float &c, const float &e)
Definition: planner.cpp:2721
#define GET_TEXT(MSG)
Definition: multi_language.h:72
static FORCE_INLINE bool tooColdToExtrude(const uint8_t)
Definition: temperature.h:314
void bilinear_line_to_destination(const feedRate_t &scaled_fr_mm_s, uint16_t x_splits=0xFFFF, uint16_t y_splits=0xFFFF)
#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 Z_MIN_POS
Definition: Configuration_A3ides_2209_MINI.h:986
#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
static bool buffer_segment(const float &a, const float &b, const float &c, const float &e, const feedRate_t &fr_mm_s, const uint8_t extruder, const float &millimeters=0.0)
Definition: planner.cpp:2568
#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
static bool leveling_active
Definition: planner.h:276
#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 validate_homing_move()
Definition: endstops.h:144
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
static float saved_feedrate_mm_s
Definition: motion.cpp:469
static void line_to_destination_cartesian(const feedRate_t &scaled_fr_mm_s, const uint8_t e)
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
#define F(str)
Definition: UHS_macros.h:164
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 Z_MAX_POS
Definition: Configuration_A3ides_2209_MINI.h:989
#define ABS(a)
Definition: macros.h:266
#define Z_PROBE_SPEED_SLOW
Definition: Configuration_A3ides_2209_MINI.h:871
#define pgm_read_byte(addr)
Definition: pgmspace.h:95
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
static FORCE_INLINE bool leveling_active_at_z(const float &)
Definition: planner.h:447
#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
#define DISABLED(V...)
Definition: macros.h:178
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 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
#define SERIAL_ECHOLNPAIR(V...)
Definition: serial.h:144
feedRate_t get_homing_bump_feedrate(const AxisEnum axis)
Definition: motion.cpp:1076
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
#define DEBUG_ECHO(...)
Definition: debug_out.h:75
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 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 DEBUG_ECHOPAIR(...)
Definition: debug_out.h:80
#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
#define HOMING_FEEDRATE_XY
Definition: Configuration_A3ides_2209_MINI.h:1268
#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)
void serialprintPGM(PGM_P str)
Definition: serial.cpp:35
#define SBI(A, B)
Definition: macros.h:85
const xyze_char_t axis_codes
Definition: types.h:486
static void set_position_mm(const float &rx, const float &ry, const float &rz, const float &e)
Definition: planner.cpp:2741
#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
static void line_to_destination(const feedRate_t &scaled_fr_mm_s, uint8_t x_splits=0xFF, uint8_t y_splits=0xFF)
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