Prusa MINI Firmware overview
|
Go to the documentation of this file.
33 #include "../Marlin.h"
36 #include "../gcode/queue.h"
43 #include "../libs/vector_3.h"
46 #if ENABLED(FWRETRACT)
47 #include "../feature/fwretract.h"
50 #if ENABLED(MIXING_EXTRUDER)
51 #include "../feature/mixing.h"
55 #include "../feature/spindle_laser.h"
59 #ifdef MANUAL_FEEDRATE
118 #if ENABLED(MIXING_EXTRUDER)
126 #if ENABLED(S_CURVE_ACCELERATION)
127 uint32_t cruise_rate,
130 acceleration_time_inverse,
131 deceleration_time_inverse;
139 #if ENABLED(LIN_ADVANCE)
140 bool use_advance_lead;
141 uint16_t advance_speed,
160 #if ENABLED(BARICUDA)
161 uint8_t valve_pressure, e_to_p_pressure;
165 uint32_t segment_time_us;
168 #if ENABLED(POWER_LOSS_RECOVERY)
174 #define HAS_POSITION_FLOAT ANY(LIN_ADVANCE, SCARA_FEEDRATE_SCALING, GRADIENT_MIX)
176 #define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1))
179 uint32_t max_acceleration_mm_per_s2[
XYZE_N],
184 retract_acceleration,
190 #if DISABLED(SKEW_CORRECTION)
191 #define XY_SKEW_FACTOR 0
192 #define XZ_SKEW_FACTOR 0
193 #define YZ_SKEW_FACTOR 0
197 #if ENABLED(SKEW_CORRECTION_GCODE)
199 #if ENABLED(SKEW_CORRECTION_FOR_Z)
202 const float xz = XZ_SKEW_FACTOR, yz = YZ_SKEW_FACTOR;
205 const float xy = XY_SKEW_FACTOR,
206 xz = XZ_SKEW_FACTOR, yz = YZ_SKEW_FACTOR;
235 #if ENABLED(DISTINCT_E_FACTORS)
240 static int16_t flow_percentage[
EXTRUDERS];
244 #if DISABLED(NO_VOLUMETRICS)
246 volumetric_area_nominal,
256 #if DISABLED(CLASSIC_JERK)
257 static float junction_deviation_mm;
258 #if ENABLED(LIN_ADVANCE)
259 static float max_e_jerk
260 #if ENABLED(DISTINCT_E_FACTORS)
268 #if HAS_LINEAR_E_JERK
280 #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
281 static float z_fade_height, inverse_z_fade_height;
287 #if ENABLED(LIN_ADVANCE)
288 static float extruder_advance_K[
EXTRUDERS];
291 #if HAS_POSITION_FLOAT
301 #if ENABLED(SD_ABORT_ON_ENDSTOP_HIT)
302 static bool abort_on_endstop_hit;
321 static float previous_nominal_speed_sqr;
326 static uint32_t cutoff_long;
328 #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
329 static float last_fade_z;
332 #if ENABLED(DISABLE_INACTIVE_EXTRUDER)
337 #endif // DISABLE_INACTIVE_EXTRUDER
339 #ifdef XY_FREQUENCY_LIMIT
341 #define MAX_FREQ_TIME_US (uint32_t)(1000000.0 / XY_FREQUENCY_LIMIT)
343 static unsigned char old_direction_bits;
349 volatile static uint32_t block_buffer_runtime_us;
375 e_factor[e] = (flow_percentage[e] * 0.01f
376 #if DISABLED(NO_VOLUMETRICS)
377 * volumetric_multiplier[e]
389 #if ENABLED(FILAMENT_WIDTH_SENSOR)
390 void apply_filament_width_sensor(
const int8_t encoded_ratio);
392 static inline float volumetric_percent(
const bool vol) {
394 ? volumetric_area_nominal / volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]
395 : volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM]
400 #if DISABLED(NO_VOLUMETRICS)
403 filament_size[e] = v;
411 #if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
421 static float z_fade_factor = 1;
422 if (!z_fade_height)
return 1;
423 if (rz >= z_fade_height)
return 0;
424 if (last_fade_z != rz) {
426 z_fade_factor = 1 - rz * inverse_z_fade_height;
428 return z_fade_factor;
431 FORCE_INLINE static void force_fade_recalc() { last_fade_z = -999.999f; }
433 FORCE_INLINE static void set_z_fade_height(
const float &zfh) {
434 z_fade_height = zfh > 0 ? zfh : 0;
435 inverse_z_fade_height =
RECIPROCAL(z_fade_height);
440 return !z_fade_height || rz < z_fade_height;
451 #if ENABLED(SKEW_CORRECTION)
453 FORCE_INLINE static void skew(
float &cx,
float &cy,
const float &cz) {
464 FORCE_INLINE static void unskew(
float &cx,
float &cy,
const float &cz) {
475 #endif // SKEW_CORRECTION
491 #if ENABLED(FWRETRACT)
492 static void apply_retract(
float &rz,
float &e);
494 static void unapply_retract(
float &rz,
float &e);
498 #if HAS_POSITION_MODIFIERS
509 #if ENABLED(SKEW_CORRECTION)
515 #if ENABLED(FWRETRACT)
530 #if ENABLED(FWRETRACT)
531 unapply_retract(pos);
536 #if ENABLED(SKEW_CORRECTION)
540 #endif // HAS_POSITION_MODIFIERS
644 static bool buffer_segment(
const float &
a,
const float &
b,
const float &c,
const float &e
648 ,
const feedRate_t &fr_mm_s,
const uint8_t extruder,
const float &millimeters=0.0
655 ,
const feedRate_t &fr_mm_s,
const uint8_t extruder,
const float &millimeters=0.0
661 , fr_mm_s, extruder, millimeters);
677 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
678 #
if ENABLED(SCARA_FEEDRATE_SCALING)
679 ,
const float &inv_duration=0.0
684 #
if ENABLED(SCARA_FEEDRATE_SCALING)
685 ,
const float &inv_duration=0.0
688 return buffer_line(cart.
x, cart.
y, cart.
z, cart.
e, fr_mm_s, extruder, millimeters
689 #
if ENABLED(SCARA_FEEDRATE_SCALING)
708 static void set_position_mm(
const float &rx,
const float &ry,
const float &rz,
const float &e);
753 #if ENABLED(SD_FINISHED_STEPPERRELEASE) && defined(SD_FINISHED_RELEASECOMMAND)
793 block_buffer_runtime_us -= block->segment_time_us;
809 clear_block_buffer_runtime();
827 static uint16_t block_buffer_runtime() {
835 millis_t bbru = block_buffer_runtime_us;
851 static void clear_block_buffer_runtime() {
859 block_buffer_runtime_us = 0;
869 #if ENABLED(AUTOTEMP)
870 static float autotemp_min, autotemp_max, autotemp_factor;
871 static bool autotemp_enabled;
872 static void getHighESpeed();
873 static void autotemp_M104_M109();
876 #if HAS_LINEAR_E_JERK
877 #pragma GCC diagnostic push
878 #pragma GCC diagnostic ignored "-Wdouble-promotion"
880 #define GET_MAX_E_JERK(N) SQRT(SQRT(0.5) * junction_deviation_mm * (N) * RECIPROCAL(1.0 - SQRT(0.5)))
881 #if ENABLED(DISTINCT_E_FACTORS)
888 #pragma GCC diagnostic pop
903 static float estimate_acceleration_distance(
const float &initial_rate,
const float &target_rate,
const float &accel) {
904 if (accel == 0)
return 0;
905 return (
sq(target_rate) -
sq(initial_rate)) / (accel * 2);
916 static float intersection_distance(
const float &initial_rate,
const float &final_rate,
const float &accel,
const float &distance) {
917 if (accel == 0)
return 0;
918 return (accel * 2 * distance -
sq(initial_rate) +
sq(final_rate)) / (accel * 4);
926 static float max_allowable_speed_sqr(
const float &accel,
const float &target_velocity_sqr,
const float &distance) {
927 return target_velocity_sqr - 2 * accel * distance;
930 #if ENABLED(S_CURVE_ACCELERATION)
934 static float final_speed(
const float &initial_velocity,
const float &accel,
const float &distance) {
935 return SQRT(
sq(initial_velocity) + 2 * accel * distance);
939 static void calculate_trapezoid_for_block(
block_t*
const block,
const float &entry_factor,
const float &exit_factor);
941 static void reverse_pass_kernel(
block_t*
const current,
const block_t *
const next);
942 static void forward_pass_kernel(
const block_t *
const previous,
block_t*
const current,
uint8_t block_index);
944 static void reverse_pass();
945 static void forward_pass();
947 static void recalculate_trapezoids();
949 static void recalculate();
951 #if DISABLED(CLASSIC_JERK)
954 float magnitude_sq = 0;
955 LOOP_XYZE(idx)
if (vector[idx]) magnitude_sq +=
sq(vector[idx]);
956 vector *=
RSQRT(magnitude_sq);
960 float limit_value = max_value;
966 #endif // !CLASSIC_JERK
969 #define PLANNER_XY_FEEDRATE() (_MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]))
#define enable_E2()
Definition: Marlin.h:276
#define WITHIN(N, L, H)
Definition: macros.h:195
BlockFlagBit
Definition: planner.h:63
static void buffer_sync_block()
Definition: planner.cpp:2529
T z
Definition: types.h:286
#define enable_E0()
Definition: Marlin.h:260
static void set_machine_position_mm(const float &a, const float &b, const float &c, const float &e)
Definition: planner.cpp:2721
static void set_max_jerk(const AxisEnum axis, float targetValue)
Definition: planner.cpp:2855
static FORCE_INLINE bool tooColdToExtrude(const uint8_t)
Definition: temperature.h:314
#define SERIAL_CHAR(x)
Definition: serial.h:69
#define Y_MIN_POS
Definition: Configuration_A3ides_2209_MINI.h:985
#define NOLESS(v, n)
Definition: macros.h:127
static FORCE_INLINE void discard_current_block()
Definition: planner.h:820
#define DEFAULT_EJERK
Definition: Configuration_A3ides_2209_MINI.h:733
static FORCE_INLINE void set_machine_position_mm(const abce_pos_t &abce)
Definition: planner.h:719
static FORCE_INLINE bool buffer_segment(abce_pos_t &abce, const feedRate_t &fr_mm_s, const uint8_t extruder, const float &millimeters=0.0)
Definition: planner.h:651
#define RSQRT(x)
Definition: macros.h:282
#define MIXER_POPULATE_BLOCK()
Definition: mixing.h:72
#define sq(x)
Definition: wiring_constants.h:83
T z
Definition: types.h:383
static void synchronize()
Definition: planner.cpp:1556
Definition: planner.h:196
#define LIMIT_ACCEL_LONG(AXIS, INDX)
#define DEFAULT_MAX_ACCELERATION
Definition: Configuration_A3ides_2209_MINI.h:696
#define MINIMAL_STEP_RATE
Definition: planner.cpp:706
feedRate_t min_feedrate_mm_s
Definition: planner.h:186
volatile uint8_t flag
Definition: planner.h:97
static FORCE_INLINE int16_t degTargetHotend(const uint8_t E_NAME)
Definition: temperature.h:562
T x
Definition: types.h:286
static float get_z(const xy_pos_t &pos)
Definition: mesh_bed_leveling.h:107
Planner()
Definition: planner.cpp:232
void disable_e_steppers()
Definition: Marlin.cpp:293
feedRate_t max_feedrate_mm_s[XYZE_N]
Definition: planner.h:182
#define MSG_ERR_COLD_EXTRUDE_STOP
Definition: language.h:242
static matrix_3x3 bed_level_matrix
Definition: planner.h:278
#define enable_E5()
Definition: Marlin.h:300
#define PROGMEM
Definition: pgmspace.h:29
#define CORE_IS_XY
Definition: Conditionals_post.h:101
static cutter_power_t power
Definition: spindle_laser.h:48
GCodeQueue queue
Definition: queue.cpp:28
#define BLOCK_MOD(n)
Definition: planner.h:176
#define RECIPROCAL(x)
Definition: macros.h:273
Planner planner
Definition: planner.cpp:111
constexpr xy_pos_t level_fulcrum
Definition: planner.cpp:1369
#define enable_E3()
Definition: Marlin.h:284
#define UNEAR_ZERO(x)
Definition: macros.h:269
static uint32_t command_sdpos()
Definition: power_loss_recovery.h:135
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
float retract_acceleration
Definition: planner.h:183
#define _MAX(V...)
Definition: macros.h:346
uint32_t acceleration_steps_per_s2
Definition: planner.h:147
static float get_axis_position_mm(const AxisEnum axis)
Definition: planner.cpp:1526
static uint32_t max_acceleration_steps_per_s2[XYZE_N]
Definition: planner.h:253
static bool _buffer_steps(const xyze_long_t &target, const xyze_pos_t &target_float, feedRate_t fr_mm_s, const uint8_t extruder, const float &millimeters=0.0)
Definition: planner.cpp:1578
static bool leveling_active
Definition: planner.h:276
#define MIN_STEPS_PER_SEGMENT
Definition: Configuration_A3ides_2209_MINI_adv.h:1108
static void advance_e(const float &e_move)
Definition: filwidth.h:80
Definition: planner.h:178
static void calculate_volumetric_multipliers()
#define disable_Z()
Definition: Marlin.h:143
static bool is_block_busy(const block_t *const block)
Definition: stepper.cpp:1967
#define PGM_P
Definition: pgmspace.h:30
T e
Definition: types.h:383
static FORCE_INLINE uint8_t movesplanned()
Definition: planner.h:543
uint8_t i
Definition: screen_test_graph.c:72
Definition: planner.h:210
#define _MIN(V...)
Definition: macros.h:333
#define LOOP_XYZE_N(VAR)
Definition: types.h:62
static volatile uint8_t block_buffer_tail
Definition: planner.h:227
AxisEnum
Definition: types.h:36
static void wake_up()
Definition: stepper.cpp:342
static void endstop_triggered(const AxisEnum axis)
Definition: stepper.cpp:2237
#define disable_Y()
Definition: Marlin.h:104
#define enable_Z()
Definition: Marlin.h:142
#define CIRCLE_AREA(R)
Definition: macros.h:102
#define CACHED_SQRT(N, V)
#define LIMIT(v, n1, n2)
Definition: macros.h:139
#define A(CODE)
Definition: macros.h:75
#define IS_KINEMATIC
Definition: Conditionals_LCD.h:545
PrintJobRecovery recovery
abce_ulong_t steps
Definition: planner.h:107
static volatile uint8_t block_buffer_head
Definition: planner.h:227
#define STEPPER_ISR_ENABLED()
Definition: HAL.h:143
float feedRate_t
Definition: types.h:80
static matrix_3x3 transpose(const matrix_3x3 &original)
Definition: vector_3.cpp:131
static void endstop_triggered(const AxisEnum axis)
Definition: planner.cpp:1508
static xyze_pos_t position_float
Definition: planner.h:292
bool extruder_duplication_enabled
Definition: motion.cpp:876
const float yz
Definition: planner.h:206
static void set_axis_position(const AxisEnum a, const int32_t &v)
Definition: stepper.h:446
SpindleLaser cutter
Definition: spindle_laser.cpp:33
static FORCE_INLINE void unapply_modifiers(xyze_pos_t &pos, bool leveling=false)
Definition: planner.h:520
void set_to_identity()
Definition: vector_3.cpp:94
Definition: vector_3.h:73
static FORCE_INLINE block_t * get_next_free_block(uint8_t &next_buffer_head, const uint8_t count=1)
Definition: planner.h:564
uint8_t cutter_power_t
Definition: spindle_laser.h:42
#define HEATER_2_PIN
Definition: pins_COHESION3D_REMIX.h:116
#define X_MIN_POS
Definition: Configuration_A3ides_2209_MINI.h:984
#define NOMORE(v, n)
Definition: macros.h:133
cutter_power_t cutter_power
Definition: planner.h:153
FI T magnitude() const
Definition: types.h:295
int8_t pin_t
Definition: HAL.h:65
#define ABS(a)
Definition: macros.h:266
static volatile uint8_t block_buffer_nonbusy
Definition: planner.h:227
#define MIXER_BLOCK_FIELD
Definition: mixing.h:71
static block_t block_buffer[BLOCK_BUFFER_SIZE]
Definition: planner.h:226
#define E_AXIS_N(E)
Definition: Conditionals_LCD.h:454
static void refresh_positioning()
Definition: planner.cpp:2806
#define AUTO_BED_LEVELING_BILINEAR
Definition: Configuration_A3ides_2209_MINI.h:1092
#define FORCE_INLINE
Definition: macros.h:40
static FORCE_INLINE void clear_block_buffer()
Definition: planner.h:549
T a
Definition: types.h:384
static void finish_and_disable()
Definition: planner.cpp:1517
#define Y_MAX_POS
Definition: Configuration_A3ides_2209_MINI.h:988
#define SERIAL_ECHO_MSG(S)
Definition: serial.h:183
abce_long_t position
Definition: planner.h:108
#define RADIANS(d)
Definition: macros.h:98
T c
Definition: types.h:384
#define PSTR(str)
Definition: pgmspace.h:31
xyze_pos_t current_position
Definition: motion.cpp:102
static FORCE_INLINE void apply_modifiers(xyze_pos_t &pos, bool leveling=false)
Definition: planner.h:499
#define LROUND(x)
Definition: macros.h:285
static FORCE_INLINE bool leveling_active_at_z(const float &)
Definition: planner.h:447
#define HAS_LEVELING
Definition: Conditionals_post.h:1408
void add_correction_steps(const int32_t &da, const int32_t &db, const int32_t &dc, const uint8_t dm, block_t *const block)
#define BLOCK_BUFFER_SIZE
Definition: Configuration_A3ides_2209_MINI_adv.h:1167
void apply_rotation_xyz(const matrix_3x3 &matrix, float &_x, float &_y, float &_z)
Definition: vector_3.cpp:88
void init()
Definition: planner.cpp:234
#define COUNT(a)
Definition: macros.h:200
T b
Definition: types.h:384
float entry_speed_sqr
Definition: planner.h:100
uint32_t acceleration_rate
Definition: planner.h:133
FilamentWidthSensor filwidth
#define X_HOME_POS
Definition: Conditionals_post.h:156
#define ENABLE_STEPPER_DRIVER_INTERRUPT()
Definition: HAL.h:141
static float nominal_mm
Definition: filwidth.h:33
#define LOOP_XYZ(VAR)
Definition: types.h:60
float travel_acceleration
Definition: planner.h:183
#define FLOOR(x)
Definition: macros.h:284
float axis_steps_per_mm[XYZE_N]
Definition: planner.h:181
#define Y_HOME_POS
Definition: Conditionals_post.h:172
#define DISABLED(V...)
Definition: macros.h:178
uint32_t final_rate
Definition: planner.h:147
float millimeters
Definition: planner.h:100
#define CEIL(x)
Definition: macros.h:283
#define HAS_POSITION_FLOAT
Definition: planner.h:174
float nominal_speed_sqr
Definition: planner.h:100
static void refresh_collector(const float proportion=1.0, const uint8_t t=selected_vtool, float(&c)[MIXING_STEPPERS]=collector)
float acceleration
Definition: planner.h:183
static int32_t triggered_position(const AxisEnum axis)
Definition: stepper.cpp:2258
T x
Definition: types.h:383
uint8_t baricuda_valve_pressure
uint32_t max_acceleration_mm_per_s2[XYZE_N]
Definition: planner.h:179
#define SERIAL_ECHOPGM(S)
Definition: serial.h:173
static void reset_acceleration_rates()
Definition: planner.cpp:2788
#define HEATER_1_PIN
Definition: pins_RAMPS_LINUX.h:196
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
#define SERIAL_ECHOLNPAIR(V...)
Definition: serial.h:144
#define enable_X()
Definition: Marlin.h:76
list a
Definition: createSpeedLookupTable.py:29
static FORCE_INLINE void quick_stop()
Definition: stepper.h:375
#define enable_Y()
Definition: Marlin.h:103
#define L(CODE)
Definition: macros.h:76
void disable_all_steppers()
Definition: Marlin.cpp:308
static float get_z_correction(const float &rx0, const float &ry0)
Definition: ubl.h:238
FI void set(const T px)
Definition: types.h:391
#define SQRT(x)
Definition: macros.h:281
#define MANUAL_FEEDRATE
Definition: Configuration_A3ides_2209_MINI_adv.h:521
T x
Definition: types.h:185
float max_entry_speed_sqr
Definition: planner.h:100
#define MIXER_STEPPER_LOOP(VAR)
Definition: mixing.h:68
#define BLOCK_DELAY_FOR_1ST_MOVE
Definition: planner.cpp:109
void do_homing_move(const AxisEnum axis, const float distance, const feedRate_t fr_mm_s=0.0)
Definition: motion.cpp:1232
#define enable_E1()
Definition: Marlin.h:268
const uint8_t[]
Definition: 404_html.c:3
#define DEFAULT_MAX_FEEDRATE
Definition: Configuration_A3ides_2209_MINI.h:687
float bilinear_z_offset(const xy_pos_t &raw)
const float xz
Definition: planner.h:206
uint8_t direction_bits
Definition: planner.h:136
#define DISABLE_STEPPER_DRIVER_INTERRUPT()
Definition: HAL.h:142
#define HYPOT(x, y)
Definition: macros.h:287
static FORCE_INLINE void force_unapply_leveling(xyz_pos_t &raw)
Definition: planner.h:484
#define _BV(bit)
Definition: wiring_constants.h:99
T y
Definition: types.h:286
uint32_t initial_rate
Definition: planner.h:147
static float steps_to_mm[XYZE_N]
Definition: planner.h:254
#define DEFAULT_NOMINAL_FILAMENT_DIA
Definition: Configuration_A3ides_2209_MINI.h:151
static uint16_t cleaning_buffer_counter
Definition: planner.h:231
BlockFlag
Definition: planner.h:79
void inverse_kinematics(const xyz_pos_t &raw)
static FORCE_INLINE bool is_full()
Definition: planner.h:552
#define X_MAX_POS
Definition: Configuration_A3ides_2209_MINI.h:987
#define disable_X()
Definition: Marlin.h:77
#define CBI(A, B)
Definition: macros.h:89
uint32_t step_event_count
Definition: planner.h:110
static void quick_stop()
Definition: planner.cpp:1475
static void set_e_position_mm(const float &e)
Definition: planner.cpp:2764
#define enable_E4()
Definition: Marlin.h:292
#define MSG_ERR_LONG_EXTRUDE_STOP
Definition: language.h:243
void limit_and_warn(float &val, const uint8_t axis, PGM_P const setting_name, const xyze_float_t &max_limit)
Definition: planner.cpp:2812
static bool _populate_block(block_t *const block, bool split_move, const xyze_long_t &target, const xyze_pos_t &target_float, feedRate_t fr_mm_s, const uint8_t extruder, const float &millimeters=0.0)
Definition: planner.cpp:1641
static FORCE_INLINE uint8_t moves_free()
Definition: planner.h:555
#define EXTRUDERS
Definition: Configuration_A3ides_2209_MINI.h:148
#define DEBUGGING(F)
Definition: serial.h:47
#define FAN_COUNT
Definition: Conditionals_post.h:1292
static void check_axes_activity()
Definition: planner.cpp:1180
#define pgm_read_dword(addr)
Definition: pgmspace.h:105
float acceleration
Definition: planner.h:100
#define MINIMUM_PLANNER_SPEED
Definition: Configuration_A3ides_2209_MINI_adv.h:545
uint32_t decelerate_after
Definition: planner.h:123
static FORCE_INLINE float fade_scaling_factor_for_z(const float &)
Definition: planner.h:445
const float xy
Definition: planner.h:205
uint8_t baricuda_e_to_p_pressure
static FORCE_INLINE uint8_t nonbusy_movesplanned()
Definition: planner.h:546
static float triggered_position_mm(const AxisEnum axis)
Definition: planner.cpp:1513
uint32_t nominal_rate
Definition: planner.h:147
#define TEST(n, b)
Definition: macros.h:81
T y
Definition: types.h:185
#define XYZE_N
Definition: Conditionals_LCD.h:453
static int32_t position(const AxisEnum axis)
Definition: stepper.cpp:2214
#define PLANNER_LEVELING
Definition: Conditionals_post.h:1411
static block_t * get_current_block()
Definition: planner.h:769
static void inject_P(PGM_P const pgcode)
Definition: queue.cpp:206
static FORCE_INLINE void set_position_mm(const xyze_pos_t &cart)
Definition: planner.h:709
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 planner_settings_t settings
Definition: planner.h:251
#define SERIAL_ECHOLNPGM(S)
Definition: serial.h:174
static void set_position_mm(const float &rx, const float &ry, const float &rz, const float &e)
Definition: planner.cpp:2741
static void tick()
Definition: planner.h:750
static void apply_leveling(xyz_pos_t &raw)
Definition: planner.cpp:1381
static FORCE_INLINE bool buffer_line(const xyze_pos_t &cart, const feedRate_t &fr_mm_s, const uint8_t extruder, const float millimeters=0.0)
Definition: planner.h:683
static void set_max_feedrate(const uint8_t axis, float targetValue)
Definition: planner.cpp:2841
list b
Definition: createSpeedLookupTable.py:30
void analogWrite(uint32_t ulPin, uint32_t ulValue)
Definition: wiring_analog.c:12
#define LOOP_XYZE(VAR)
Definition: types.h:61
static void set_max_acceleration(const uint8_t axis, float targetValue)
Definition: planner.cpp:2824
void idle()
Definition: Marlin.cpp:629
#define READ(IO)
Definition: fastio.h:95
#define CORE_IS_XZ
Definition: Conditionals_post.h:102
feedRate_t min_travel_feedrate_mm_s
Definition: planner.h:186
static void unapply_leveling(xyz_pos_t &raw)
Definition: planner.cpp:1415
uint32_t accelerate_until
Definition: planner.h:123
Temperature thermalManager
Definition: temperature.cpp:89
#define UNUSED(X)
Definition: stm32f4xx_hal_def.h:74
#define ARRAY_BY_EXTRUDERS1(v1)
Definition: Conditionals_post.h:534
FI void reset()
Definition: types.h:387
static volatile uint8_t block_buffer_planned
Definition: planner.h:227
static constexpr uint8_t extruder
Definition: planner.h:115
uint32_t millis_t
Definition: millis_t.h:26
#define LIMIT_ACCEL_FLOAT(AXIS, INDX)
#define CORE_IS_YZ
Definition: Conditionals_post.h:103
static FORCE_INLINE uint8_t get_current_vtool()
Definition: mixing.h:111
static uint8_t delay_before_delivering
Definition: planner.h:232
constexpr uint8_t active_extruder
Definition: motion.h:107
static void set_position(const int32_t &a, const int32_t &b, const int32_t &c, const int32_t &e)
Definition: stepper.h:437
uint32_t min_segment_time_us
Definition: planner.h:179
#define ENABLED(V...)
Definition: macros.h:177
static FORCE_INLINE bool has_blocks_queued()
Definition: planner.h:762
Planner planner
Definition: planner.cpp:111
T y
Definition: types.h:383
parser
Definition: createSpeedLookupTable.py:14
static void refresh()
Definition: spindle_laser.h:56
#define STEPPER_TIMER_RATE
Definition: HAL.h:133
#define EXTRUDE_MAXLENGTH
Definition: Configuration_A3ides_2209_MINI.h:524
static skew_factor_t skew_factor
Definition: planner.h:299