Fix and improve EEPROM storage (#12054)
* Clean up Temperature PID * Improve EEPROM read/write/validate * Group `SINGLENOZZLE` saved settings * Group planner saved settings * Group filament change saved settings * Group skew saved settings * Group `FWRETRACT` saved settings
This commit is contained in:
@ -163,7 +163,7 @@ void I2CPositionEncoder::update() {
|
||||
//SERIAL_ECHOLN(error);
|
||||
|
||||
#ifdef I2CPE_ERR_THRESH_ABORT
|
||||
if (ABS(error) > I2CPE_ERR_THRESH_ABORT * planner.axis_steps_per_mm[encoderAxis]) {
|
||||
if (ABS(error) > I2CPE_ERR_THRESH_ABORT * planner.settings.axis_steps_per_mm[encoderAxis]) {
|
||||
//kill("Significant Error");
|
||||
SERIAL_ECHOPGM("Axis error greater than set threshold, aborting!");
|
||||
SERIAL_ECHOLN(error);
|
||||
@ -175,7 +175,7 @@ void I2CPositionEncoder::update() {
|
||||
if (errIdx == 0) {
|
||||
// In order to correct for "error" but avoid correcting for noise and non-skips
|
||||
// it must be > threshold and have a difference average of < 10 and be < 2000 steps
|
||||
if (ABS(error) > threshold * planner.axis_steps_per_mm[encoderAxis] &&
|
||||
if (ABS(error) > threshold * planner.settings.axis_steps_per_mm[encoderAxis] &&
|
||||
diffSum < 10 * (I2CPE_ERR_ARRAY_SIZE - 1) && ABS(error) < 2000) { // Check for persistent error (skip)
|
||||
errPrst[errPrstIdx++] = error; // Error must persist for I2CPE_ERR_PRST_ARRAY_SIZE error cycles. This also serves to improve the average accuracy
|
||||
if (errPrstIdx >= I2CPE_ERR_PRST_ARRAY_SIZE) {
|
||||
@ -193,14 +193,14 @@ void I2CPositionEncoder::update() {
|
||||
errPrstIdx = 0;
|
||||
}
|
||||
#else
|
||||
if (ABS(error) > threshold * planner.axis_steps_per_mm[encoderAxis]) {
|
||||
if (ABS(error) > threshold * planner.settings.axis_steps_per_mm[encoderAxis]) {
|
||||
//SERIAL_ECHOLN(error);
|
||||
//SERIAL_ECHOLN(position);
|
||||
thermalManager.babystepsTodo[encoderAxis] = -LROUND(error / 2);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (ABS(error) > I2CPE_ERR_CNT_THRESH * planner.axis_steps_per_mm[encoderAxis]) {
|
||||
if (ABS(error) > I2CPE_ERR_CNT_THRESH * planner.settings.axis_steps_per_mm[encoderAxis]) {
|
||||
const millis_t ms = millis();
|
||||
if (ELAPSED(ms, nextErrorCountTime)) {
|
||||
SERIAL_ECHOPAIR("Large error on ", axis_codes[encoderAxis]);
|
||||
@ -284,7 +284,7 @@ int32_t I2CPositionEncoder::get_axis_error_steps(const bool report) {
|
||||
//int32_t stepperTicks = stepper.position(encoderAxis);
|
||||
|
||||
// With a rotary encoder we're concerned with ticks/rev; whereas with a linear we're concerned with ticks/mm
|
||||
stepperTicksPerUnit = (type == I2CPE_ENC_TYPE_ROTARY) ? stepperTicks : planner.axis_steps_per_mm[encoderAxis];
|
||||
stepperTicksPerUnit = (type == I2CPE_ENC_TYPE_ROTARY) ? stepperTicks : planner.settings.axis_steps_per_mm[encoderAxis];
|
||||
|
||||
//convert both 'ticks' into same units / base
|
||||
encoderCountInStepperTicksScaled = LROUND((stepperTicksPerUnit * encoderTicks) / encoderTicksPerUnit);
|
||||
@ -444,14 +444,14 @@ void I2CPositionEncoder::calibrate_steps_mm(const uint8_t iter) {
|
||||
SERIAL_ECHOLNPGM("mm.");
|
||||
|
||||
//Calculate new axis steps per unit
|
||||
old_steps_mm = planner.axis_steps_per_mm[encoderAxis];
|
||||
old_steps_mm = planner.settings.axis_steps_per_mm[encoderAxis];
|
||||
new_steps_mm = (old_steps_mm * travelDistance) / travelledDistance;
|
||||
|
||||
SERIAL_ECHOLNPAIR("Old steps per mm: ", old_steps_mm);
|
||||
SERIAL_ECHOLNPAIR("New steps per mm: ", new_steps_mm);
|
||||
|
||||
//Save new value
|
||||
planner.axis_steps_per_mm[encoderAxis] = new_steps_mm;
|
||||
planner.settings.axis_steps_per_mm[encoderAxis] = new_steps_mm;
|
||||
|
||||
if (iter > 1) {
|
||||
total += new_steps_mm;
|
||||
|
@ -155,7 +155,7 @@ class I2CPositionEncoder {
|
||||
case I2CPE_ENC_TYPE_LINEAR:
|
||||
return count / encoderTicksPerUnit;
|
||||
case I2CPE_ENC_TYPE_ROTARY:
|
||||
return (count * stepperTicks) / (encoderTicksPerUnit * planner.axis_steps_per_mm[encoderAxis]);
|
||||
return (count * stepperTicks) / (encoderTicksPerUnit * planner.settings.axis_steps_per_mm[encoderAxis]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,7 +199,7 @@ class I2CPositionEncoder {
|
||||
case I2CPE_ENC_TYPE_LINEAR:
|
||||
return encoderTicksPerUnit;
|
||||
case I2CPE_ENC_TYPE_ROTARY:
|
||||
return (int)((encoderTicksPerUnit / stepperTicks) * planner.axis_steps_per_mm[encoderAxis]);
|
||||
return (int)((encoderTicksPerUnit / stepperTicks) * planner.settings.axis_steps_per_mm[encoderAxis]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -803,7 +803,7 @@
|
||||
save_ubl_active_state_and_disable(); // Disable bed level correction for probing
|
||||
|
||||
do_blocking_move_to(0.5f * (MESH_MAX_X - (MESH_MIN_X)), 0.5f * (MESH_MAX_Y - (MESH_MIN_Y)), in_height);
|
||||
//, MIN(planner.max_feedrate_mm_s[X_AXIS], planner.max_feedrate_mm_s[Y_AXIS]) * 0.5f);
|
||||
//, MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f);
|
||||
planner.synchronize();
|
||||
|
||||
SERIAL_PROTOCOLPGM("Place shim under nozzle");
|
||||
|
@ -43,34 +43,32 @@ FWRetract fwretract; // Single instance - this calls the constructor
|
||||
// private:
|
||||
|
||||
#if EXTRUDERS > 1
|
||||
bool FWRetract::retracted_swap[EXTRUDERS]; // Which extruders are swap-retracted
|
||||
bool FWRetract::retracted_swap[EXTRUDERS]; // Which extruders are swap-retracted
|
||||
#endif
|
||||
|
||||
// public:
|
||||
|
||||
bool FWRetract::autoretract_enabled, // M209 S - Autoretract switch
|
||||
FWRetract::retracted[EXTRUDERS]; // Which extruders are currently retracted
|
||||
float FWRetract::retract_length, // M207 S - G10 Retract length
|
||||
FWRetract::retract_feedrate_mm_s, // M207 F - G10 Retract feedrate
|
||||
FWRetract::retract_zlift, // M207 Z - G10 Retract hop size
|
||||
FWRetract::retract_recover_length, // M208 S - G11 Recover length
|
||||
FWRetract::retract_recover_feedrate_mm_s, // M208 F - G11 Recover feedrate
|
||||
FWRetract::swap_retract_length, // M207 W - G10 Swap Retract length
|
||||
FWRetract::swap_retract_recover_length, // M208 W - G11 Swap Recover length
|
||||
FWRetract::swap_retract_recover_feedrate_mm_s, // M208 R - G11 Swap Recover feedrate
|
||||
FWRetract::current_retract[EXTRUDERS], // Retract value used by planner
|
||||
fwretract_settings_t FWRetract::settings; // M207 S F Z W, M208 S F W R
|
||||
|
||||
#if ENABLED(FWRETRACT_AUTORETRACT)
|
||||
bool FWRetract::autoretract_enabled; // M209 S - Autoretract switch
|
||||
#endif
|
||||
|
||||
bool FWRetract::retracted[EXTRUDERS]; // Which extruders are currently retracted
|
||||
|
||||
float FWRetract::current_retract[EXTRUDERS], // Retract value used by planner
|
||||
FWRetract::current_hop;
|
||||
|
||||
void FWRetract::reset() {
|
||||
autoretract_enabled = false;
|
||||
retract_length = RETRACT_LENGTH;
|
||||
retract_feedrate_mm_s = RETRACT_FEEDRATE;
|
||||
retract_zlift = RETRACT_ZLIFT;
|
||||
retract_recover_length = RETRACT_RECOVER_LENGTH;
|
||||
retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE;
|
||||
swap_retract_length = RETRACT_LENGTH_SWAP;
|
||||
swap_retract_recover_length = RETRACT_RECOVER_LENGTH_SWAP;
|
||||
swap_retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE_SWAP;
|
||||
settings.retract_length = RETRACT_LENGTH;
|
||||
settings.retract_feedrate_mm_s = RETRACT_FEEDRATE;
|
||||
settings.retract_zlift = RETRACT_ZLIFT;
|
||||
settings.retract_recover_length = RETRACT_RECOVER_LENGTH;
|
||||
settings.retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE;
|
||||
settings.swap_retract_length = RETRACT_LENGTH_SWAP;
|
||||
settings.swap_retract_recover_length = RETRACT_RECOVER_LENGTH_SWAP;
|
||||
settings.swap_retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE_SWAP;
|
||||
current_hop = 0.0;
|
||||
|
||||
for (uint8_t i = 0; i < EXTRUDERS; ++i) {
|
||||
@ -132,7 +130,7 @@ void FWRetract::retract(const bool retracting
|
||||
unscale_e = RECIPROCAL(planner.e_factor[active_extruder]),
|
||||
unscale_fr = 100.0 / feedrate_percentage, // Disable feedrate scaling for retract moves
|
||||
base_retract = (
|
||||
(swapping ? swap_retract_length : retract_length)
|
||||
(swapping ? settings.swap_retract_length : settings.retract_length)
|
||||
#if ENABLED(RETRACT_SYNC_MIXING)
|
||||
* (MIXING_STEPPERS)
|
||||
#endif
|
||||
@ -152,7 +150,7 @@ void FWRetract::retract(const bool retracting
|
||||
if (retracting) {
|
||||
// Retract by moving from a faux E position back to the current E position
|
||||
feedrate_mm_s = (
|
||||
retract_feedrate_mm_s * unscale_fr
|
||||
settings.retract_feedrate_mm_s * unscale_fr
|
||||
#if ENABLED(RETRACT_SYNC_MIXING)
|
||||
* (MIXING_STEPPERS)
|
||||
#endif
|
||||
@ -162,9 +160,9 @@ void FWRetract::retract(const bool retracting
|
||||
planner.synchronize(); // Wait for move to complete
|
||||
|
||||
// Is a Z hop set, and has the hop not yet been done?
|
||||
if (retract_zlift > 0.01 && !current_hop) { // Apply hop only once
|
||||
current_hop += retract_zlift; // Add to the hop total (again, only once)
|
||||
feedrate_mm_s = planner.max_feedrate_mm_s[Z_AXIS] * unscale_fr; // Maximum Z feedrate
|
||||
if (settings.retract_zlift > 0.01 && !current_hop) { // Apply hop only once
|
||||
current_hop += settings.retract_zlift; // Add to the hop total (again, only once)
|
||||
feedrate_mm_s = planner.settings.max_feedrate_mm_s[Z_AXIS] * unscale_fr; // Maximum Z feedrate
|
||||
prepare_move_to_destination(); // Raise up, set_current_to_destination
|
||||
planner.synchronize(); // Wait for move to complete
|
||||
}
|
||||
@ -173,12 +171,12 @@ void FWRetract::retract(const bool retracting
|
||||
// If a hop was done and Z hasn't changed, undo the Z hop
|
||||
if (current_hop) {
|
||||
current_hop = 0.0;
|
||||
feedrate_mm_s = planner.max_feedrate_mm_s[Z_AXIS] * unscale_fr; // Z feedrate to max
|
||||
feedrate_mm_s = planner.settings.max_feedrate_mm_s[Z_AXIS] * unscale_fr; // Z feedrate to max
|
||||
prepare_move_to_destination(); // Lower Z, set_current_to_destination
|
||||
planner.synchronize(); // Wait for move to complete
|
||||
}
|
||||
|
||||
const float extra_recover = swapping ? swap_retract_recover_length : retract_recover_length;
|
||||
const float extra_recover = swapping ? settings.swap_retract_recover_length : settings.retract_recover_length;
|
||||
if (extra_recover != 0.0) {
|
||||
current_position[E_AXIS] -= extra_recover; // Adjust the current E position by the extra amount to recover
|
||||
sync_plan_position_e(); // Sync the planner position so the extra amount is recovered
|
||||
@ -186,7 +184,7 @@ void FWRetract::retract(const bool retracting
|
||||
|
||||
current_retract[active_extruder] = 0.0;
|
||||
feedrate_mm_s = (
|
||||
(swapping ? swap_retract_recover_feedrate_mm_s : retract_recover_feedrate_mm_s) * unscale_fr
|
||||
(swapping ? settings.swap_retract_recover_feedrate_mm_s : settings.retract_recover_feedrate_mm_s) * unscale_fr
|
||||
#if ENABLED(RETRACT_SYNC_MIXING)
|
||||
* (MIXING_STEPPERS)
|
||||
#endif
|
||||
|
@ -19,15 +19,13 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* fwretract.h - Define firmware-based retraction interface
|
||||
*/
|
||||
|
||||
#ifndef FWRETRACT_H
|
||||
#define FWRETRACT_H
|
||||
|
||||
#include "../inc/MarlinConfig.h"
|
||||
#include "../inc/MarlinConfigPre.h"
|
||||
|
||||
class FWRetract {
|
||||
private:
|
||||
@ -36,17 +34,16 @@ private:
|
||||
#endif
|
||||
|
||||
public:
|
||||
static bool autoretract_enabled, // M209 S - Autoretract switch
|
||||
retracted[EXTRUDERS]; // Which extruders are currently retracted
|
||||
static float retract_length, // M207 S - G10 Retract length
|
||||
retract_feedrate_mm_s, // M207 F - G10 Retract feedrate
|
||||
retract_zlift, // M207 Z - G10 Retract hop size
|
||||
retract_recover_length, // M208 S - G11 Recover length
|
||||
retract_recover_feedrate_mm_s, // M208 F - G11 Recover feedrate
|
||||
swap_retract_length, // M207 W - G10 Swap Retract length
|
||||
swap_retract_recover_length, // M208 W - G11 Swap Recover length
|
||||
swap_retract_recover_feedrate_mm_s, // M208 R - G11 Swap Recover feedrate
|
||||
current_retract[EXTRUDERS], // Retract value used by planner
|
||||
static fwretract_settings_t settings;
|
||||
|
||||
#if ENABLED(FWRETRACT_AUTORETRACT)
|
||||
static bool autoretract_enabled; // M209 S - Autoretract switch
|
||||
#else
|
||||
constexpr static bool autoretract_enabled = false;
|
||||
#endif
|
||||
|
||||
static bool retracted[EXTRUDERS]; // Which extruders are currently retracted
|
||||
static float current_retract[EXTRUDERS], // Retract value used by planner
|
||||
current_hop; // Hop value used by planner
|
||||
|
||||
FWRetract() { reset(); }
|
||||
@ -54,7 +51,7 @@ public:
|
||||
static void reset();
|
||||
|
||||
static void refresh_autoretract() {
|
||||
for (uint8_t i = 0; i < EXTRUDERS; i++) retracted[i] = false;
|
||||
LOOP_L_N(i, EXTRUDERS) retracted[i] = false;
|
||||
}
|
||||
|
||||
static void enable_autoretract(const bool enable) {
|
||||
@ -72,5 +69,3 @@ public:
|
||||
};
|
||||
|
||||
extern FWRetract fwretract;
|
||||
|
||||
#endif // FWRETRACT_H
|
||||
|
@ -25,7 +25,7 @@
|
||||
* This may be combined with related G-codes if features are consolidated.
|
||||
*/
|
||||
|
||||
#include "../inc/MarlinConfig.h"
|
||||
#include "../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
@ -59,8 +59,7 @@ static float resume_position[XYZE];
|
||||
|
||||
AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||
|
||||
float filament_change_unload_length[EXTRUDERS],
|
||||
filament_change_load_length[EXTRUDERS];
|
||||
fil_change_settings_t fc_settings[EXTRUDERS];
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#include "../sd/cardreader.h"
|
||||
@ -191,14 +190,14 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
|
||||
// Fast Load Filament
|
||||
if (fast_load_length) {
|
||||
#if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0
|
||||
const float saved_acceleration = planner.retract_acceleration;
|
||||
planner.retract_acceleration = FILAMENT_CHANGE_FAST_LOAD_ACCEL;
|
||||
const float saved_acceleration = planner.settings.retract_acceleration;
|
||||
planner.settings.retract_acceleration = FILAMENT_CHANGE_FAST_LOAD_ACCEL;
|
||||
#endif
|
||||
|
||||
do_pause_e_move(fast_load_length, FILAMENT_CHANGE_FAST_LOAD_FEEDRATE);
|
||||
|
||||
#if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0
|
||||
planner.retract_acceleration = saved_acceleration;
|
||||
planner.settings.retract_acceleration = saved_acceleration;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -295,18 +294,18 @@ bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
|
||||
safe_delay(FILAMENT_UNLOAD_DELAY);
|
||||
|
||||
// Quickly purge
|
||||
do_pause_e_move(FILAMENT_UNLOAD_RETRACT_LENGTH + FILAMENT_UNLOAD_PURGE_LENGTH, planner.max_feedrate_mm_s[E_AXIS]);
|
||||
do_pause_e_move(FILAMENT_UNLOAD_RETRACT_LENGTH + FILAMENT_UNLOAD_PURGE_LENGTH, planner.settings.max_feedrate_mm_s[E_AXIS]);
|
||||
|
||||
// Unload filament
|
||||
#if FILAMENT_CHANGE_UNLOAD_ACCEL > 0
|
||||
const float saved_acceleration = planner.retract_acceleration;
|
||||
planner.retract_acceleration = FILAMENT_CHANGE_UNLOAD_ACCEL;
|
||||
const float saved_acceleration = planner.settings.retract_acceleration;
|
||||
planner.settings.retract_acceleration = FILAMENT_CHANGE_UNLOAD_ACCEL;
|
||||
#endif
|
||||
|
||||
do_pause_e_move(unload_length, FILAMENT_CHANGE_UNLOAD_FEEDRATE);
|
||||
|
||||
#if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0
|
||||
planner.retract_acceleration = saved_acceleration;
|
||||
planner.settings.retract_acceleration = saved_acceleration;
|
||||
#endif
|
||||
|
||||
// Disable extruders steppers for manual filament changing (only on boards that have separate ENABLE_PINS)
|
||||
@ -559,7 +558,7 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
|
||||
#if ENABLED(FWRETRACT)
|
||||
// If retracted before goto pause
|
||||
if (fwretract.retracted[active_extruder])
|
||||
do_pause_e_move(-fwretract.retract_length, fwretract.retract_feedrate_mm_s);
|
||||
do_pause_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s);
|
||||
#endif
|
||||
|
||||
// If resume_position is negative
|
||||
|
@ -19,15 +19,13 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* feature/pause.h - Pause feature support functions
|
||||
* This may be combined with related G-codes if features are consolidated.
|
||||
*/
|
||||
|
||||
#ifndef _PAUSE_H_
|
||||
#define _PAUSE_H_
|
||||
|
||||
#include "../libs/nozzle.h"
|
||||
|
||||
#include "../inc/MarlinConfigPre.h"
|
||||
@ -62,8 +60,7 @@ enum AdvancedPauseMenuResponse : char {
|
||||
|
||||
extern AdvancedPauseMenuResponse advanced_pause_menu_response;
|
||||
|
||||
extern float filament_change_unload_length[EXTRUDERS],
|
||||
filament_change_load_length[EXTRUDERS];
|
||||
extern fil_change_settings_t fc_settings[EXTRUDERS];
|
||||
|
||||
extern uint8_t did_pause_print;
|
||||
|
||||
@ -89,5 +86,3 @@ bool load_filament(const float &slow_load_length=0, const float &fast_load_lengt
|
||||
const bool pause_for_user=false, const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT DXC_PARAMS);
|
||||
|
||||
bool unload_filament(const float &unload_length, const bool show_lcd=false, const AdvancedPauseMode mode=ADVANCED_PAUSE_MODE_PAUSE_PRINT);
|
||||
|
||||
#endif // _PAUSE_H_
|
||||
|
@ -456,62 +456,62 @@
|
||||
|
||||
static void tmc_debug_loop(const TMC_debug_enum i) {
|
||||
#if AXIS_IS_TMC(X)
|
||||
tmc_status(stepperX, i, planner.axis_steps_per_mm[X_AXIS]);
|
||||
tmc_status(stepperX, i, planner.settings.axis_steps_per_mm[X_AXIS]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(X2)
|
||||
tmc_status(stepperX2, i, planner.axis_steps_per_mm[X_AXIS]);
|
||||
tmc_status(stepperX2, i, planner.settings.axis_steps_per_mm[X_AXIS]);
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Y)
|
||||
tmc_status(stepperY, i, planner.axis_steps_per_mm[Y_AXIS]);
|
||||
tmc_status(stepperY, i, planner.settings.axis_steps_per_mm[Y_AXIS]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Y2)
|
||||
tmc_status(stepperY2, i, planner.axis_steps_per_mm[Y_AXIS]);
|
||||
tmc_status(stepperY2, i, planner.settings.axis_steps_per_mm[Y_AXIS]);
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(Z)
|
||||
tmc_status(stepperZ, i, planner.axis_steps_per_mm[Z_AXIS]);
|
||||
tmc_status(stepperZ, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z2)
|
||||
tmc_status(stepperZ2, i, planner.axis_steps_per_mm[Z_AXIS]);
|
||||
tmc_status(stepperZ2, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(Z3)
|
||||
tmc_status(stepperZ3, i, planner.axis_steps_per_mm[Z_AXIS]);
|
||||
tmc_status(stepperZ3, i, planner.settings.axis_steps_per_mm[Z_AXIS]);
|
||||
#endif
|
||||
|
||||
#if AXIS_IS_TMC(E0)
|
||||
tmc_status(stepperE0, i, planner.axis_steps_per_mm[E_AXIS]);
|
||||
tmc_status(stepperE0, i, planner.settings.axis_steps_per_mm[E_AXIS]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E1)
|
||||
tmc_status(stepperE1, i, planner.axis_steps_per_mm[E_AXIS
|
||||
tmc_status(stepperE1, i, planner.settings.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 1
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E2)
|
||||
tmc_status(stepperE2, i, planner.axis_steps_per_mm[E_AXIS
|
||||
tmc_status(stepperE2, i, planner.settings.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 2
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E3)
|
||||
tmc_status(stepperE3, i, planner.axis_steps_per_mm[E_AXIS
|
||||
tmc_status(stepperE3, i, planner.settings.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 3
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E4)
|
||||
tmc_status(stepperE4, i, planner.axis_steps_per_mm[E_AXIS
|
||||
tmc_status(stepperE4, i, planner.settings.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 4
|
||||
#endif
|
||||
]);
|
||||
#endif
|
||||
#if AXIS_IS_TMC(E5)
|
||||
tmc_status(stepperE5, i, planner.axis_steps_per_mm[E_AXIS
|
||||
tmc_status(stepperE5, i, planner.settings.axis_steps_per_mm[E_AXIS
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
+ 5
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user