mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2025-06-26 09:25:18 -06:00
🚸 Misc. optimizations, cleanup, DWIN fixes… (#27858)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
21559b0c59
commit
122c4116f2
17 changed files with 82 additions and 76 deletions
|
@ -42,7 +42,7 @@ void eeprom_init() {
|
|||
|
||||
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
|
||||
const unsigned eeprom_address = (unsigned)pos;
|
||||
return BL24CXX::writeOneByte(eeprom_address, value);
|
||||
BL24CXX::writeOneByte(eeprom_address, value);
|
||||
}
|
||||
|
||||
uint8_t eeprom_read_byte(uint8_t *pos) {
|
||||
|
|
|
@ -39,7 +39,7 @@ void eeprom_init() {
|
|||
|
||||
void eeprom_write_byte(uint8_t *pos, unsigned char value) {
|
||||
const unsigned eeprom_address = (unsigned)pos;
|
||||
return BL24CXX::writeOneByte(eeprom_address, value);
|
||||
BL24CXX::writeOneByte(eeprom_address, value);
|
||||
}
|
||||
|
||||
uint8_t eeprom_read_byte(uint8_t *pos) {
|
||||
|
|
|
@ -44,7 +44,7 @@ void eeprom_init() { BL24CXX::init(); }
|
|||
|
||||
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
|
||||
const unsigned eeprom_address = (unsigned)pos;
|
||||
return BL24CXX::writeOneByte(eeprom_address, value);
|
||||
BL24CXX::writeOneByte(eeprom_address, value);
|
||||
}
|
||||
|
||||
uint8_t eeprom_read_byte(uint8_t *pos) {
|
||||
|
|
|
@ -42,7 +42,7 @@ void eeprom_init() { BL24CXX::init(); }
|
|||
|
||||
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
|
||||
const unsigned eeprom_address = (unsigned)pos;
|
||||
return BL24CXX::writeOneByte(eeprom_address, value);
|
||||
BL24CXX::writeOneByte(eeprom_address, value);
|
||||
}
|
||||
|
||||
uint8_t eeprom_read_byte(uint8_t *pos) {
|
||||
|
|
|
@ -168,7 +168,7 @@ template <class L, class R> struct IF<true, L, R> { typedef L type; };
|
|||
|
||||
// Helpers
|
||||
#define _RECIP(N) ((N) ? 1.0f / static_cast<float>(N) : 0.0f)
|
||||
#define _ABS(N) ((N) < 0 ? -(N) : (N))
|
||||
#define _ABS(N) ((N) < decltype(N)(0) ? -(N) : (N))
|
||||
#define _LS(N) T(uint32_t(N) << p)
|
||||
#define _RS(N) T(uint32_t(N) >> p)
|
||||
#define _LSE(N) N = T(uint32_t(N) << p)
|
||||
|
@ -640,8 +640,8 @@ struct XYZval {
|
|||
FI void reset() { NUM_AXIS_CODE(x = 0, y = 0, z = 0, i = 0, j = 0, k = 0, u = 0, v = 0, w = 0); }
|
||||
|
||||
// Setters taking struct types and arrays
|
||||
FI void set(const XYval<T> pxy) { XY_CODE(x = pxy.x, y = pxy.y); }
|
||||
FI void set(const XYval<T> pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); }
|
||||
FI void set(const XYval<T> &pxy) { XY_CODE(x = pxy.x, y = pxy.y); }
|
||||
FI void set(const XYval<T> &pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); }
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#if LOGICAL_AXES > NUM_AXES
|
||||
FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
|
@ -743,7 +743,7 @@ struct XYZval {
|
|||
|
||||
// Absolute difference between two objects
|
||||
FI constexpr XYZval<T> diff(const XYZEval<T> &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); }
|
||||
FI constexpr XYZval<T> diff(const XYZval<T> &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); }
|
||||
FI constexpr XYZval<T> diff(const XYZval<T> &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), T(_ABS(z - rs.z)), T(_ABS(i - rs.i)), T(_ABS(j - rs.j)), T(_ABS(k - rs.k)), T(_ABS(u - rs.u)), T(_ABS(v - rs.v)), T(_ABS(w - rs.w)) ); }
|
||||
FI constexpr XYZval<T> diff(const XYval<T> &rs) const { return NUM_AXIS_ARRAY(T(_ABS(x - rs.x)), T(_ABS(y - rs.y)), z, i, j, k, u, v, w ); }
|
||||
|
||||
// Modifier operators
|
||||
|
@ -787,17 +787,17 @@ struct XYZEval {
|
|||
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
|
||||
|
||||
// Setters taking struct types and arrays
|
||||
FI void set(const XYval<T> pxy) { XY_CODE(x = pxy.x, y = pxy.y); }
|
||||
FI void set(const XYval<T> pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); }
|
||||
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM_LC(pxyz)); }
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(const XYval<T> &pxy) { XY_CODE(x = pxy.x, y = pxy.y); }
|
||||
FI void set(const XYval<T> &pxy, const T pz) { XYZ_CODE(x = pxy.x, y = pxy.y, z = pz); }
|
||||
FI void set(const XYZval<T> &pxyz) { set(NUM_AXIS_ELEM_LC(pxyz)); }
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#if LOGICAL_AXES > NUM_AXES
|
||||
FI void set(const T (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
|
||||
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
|
||||
FI void set(LOGICAL_AXIS_ARGS_LC(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
FI void set(const T (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(const XYval<T> &pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
|
||||
FI void set(const XYZval<T> &pxyz, const T pe) { set(pxyz); e = pe; }
|
||||
FI void set(LOGICAL_AXIS_ARGS_LC(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
#if DISTINCT_AXES > LOGICAL_AXES
|
||||
FI void set(const T (&arr)[DISTINCT_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(const T (&arr)[DISTINCT_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -933,9 +933,9 @@ struct XYZarray {
|
|||
};
|
||||
FI void reset() { ZERO(data); }
|
||||
|
||||
FI void set(const int n, const XYval<T> p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); }
|
||||
FI void set(const int n, const XYZval<T> p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYZEval<T> p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYval<T> &p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); }
|
||||
FI void set(const int n, const XYZval<T> &p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYZEval<T> &p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
|
||||
// Setter for all individual args
|
||||
FI void set(const int n OPTARGS_NUM(const T)) { NUM_AXIS_CODE(a[n] = x, b[n] = y, c[n] = z, _i[n] = i, _j[n] = j, _k[n] = k, _u[n] = u, _v[n] = v, _w[n] = w); }
|
||||
|
@ -981,9 +981,9 @@ struct XYZEarray {
|
|||
};
|
||||
FI void reset() { ZERO(data); }
|
||||
|
||||
FI void set(const int n, const XYval<T> p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); }
|
||||
FI void set(const int n, const XYZval<T> p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYZEval<T> p) { LOGICAL_AXIS_CODE(e[n]=p.e, x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYval<T> &p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y,,,,,,,); }
|
||||
FI void set(const int n, const XYZval<T> &p) { NUM_AXIS_CODE(x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
FI void set(const int n, const XYZEval<T> &p) { LOGICAL_AXIS_CODE(e[n]=p.e, x[n]=p.x, y[n]=p.y, z[n]=p.z, i[n]=p.i, j[n]=p.j, k[n]=p.k, u[n]=p.u, v[n]=p.v, w[n]=p.w ); }
|
||||
|
||||
// Setter for all individual args
|
||||
FI void set(const int n OPTARGS_NUM(const T)) { NUM_AXIS_CODE(a[n] = x, b[n] = y, c[n] = z, _i[n] = i, _j[n] = j, _k[n] = k, _u[n] = u, _v[n] = v, _w[n] = w); }
|
||||
|
|
|
@ -268,8 +268,10 @@ typedef struct {
|
|||
|
||||
// If the end point of the line is closer to the nozzle, flip the direction,
|
||||
// moving from the end to the start. On very small lines the optimization isn't worth it.
|
||||
if (dist_end < dist_start && (INTERSECTION_CIRCLE_RADIUS) < ABS(line_length))
|
||||
return print_line_from_here_to_there(e, s);
|
||||
if (dist_end < dist_start && (INTERSECTION_CIRCLE_RADIUS) < ABS(line_length)) {
|
||||
print_line_from_here_to_there(e, s);
|
||||
return;
|
||||
}
|
||||
|
||||
// Decide whether to retract & lift
|
||||
if (dist_start > 2.0) retract_lift_move(s);
|
||||
|
|
|
@ -598,7 +598,7 @@ void GcodeSuite::G33() {
|
|||
LOOP_NUM_AXES(axis) delta_tower_angle_trim[axis] -= a_sum / 3.0f;
|
||||
}
|
||||
|
||||
// adjust delta_height and endstops by the max amount
|
||||
// Adjust delta_height and endstops by the max amount
|
||||
const float z_temp = _MAX(delta_endstop_adj.a, delta_endstop_adj.b, delta_endstop_adj.c);
|
||||
delta_height -= z_temp;
|
||||
LOOP_NUM_AXES(axis) delta_endstop_adj[axis] -= z_temp;
|
||||
|
@ -606,7 +606,7 @@ void GcodeSuite::G33() {
|
|||
recalc_delta_settings();
|
||||
NOMORE(zero_std_dev_min, zero_std_dev);
|
||||
|
||||
// print report
|
||||
// Print report
|
||||
|
||||
if (verbose_level == 3 || verbose_level == 0) {
|
||||
print_calibration_results(z_at_pt, _tower_results, _opposite_results);
|
||||
|
|
|
@ -41,10 +41,10 @@
|
|||
*/
|
||||
void GcodeSuite::M413() {
|
||||
|
||||
if (!parser.seen_any()) return M413_report();
|
||||
|
||||
if (parser.seen('S'))
|
||||
recovery.enable(parser.value_bool());
|
||||
else
|
||||
M413_report();
|
||||
|
||||
#if HAS_PLR_BED_THRESHOLD
|
||||
if (parser.seenval('B'))
|
||||
|
|
|
@ -86,9 +86,10 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) {
|
|||
const float echange = destination.e - current_position.e;
|
||||
// Is this a retract or recover move?
|
||||
if (WITHIN(ABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && fwretract.retracted[active_extruder] == (echange > 0.0)) {
|
||||
current_position.e = destination.e; // Hide a G1-based retract/recover from calculations
|
||||
sync_plan_position_e(); // AND from the planner
|
||||
return fwretract.retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored)
|
||||
current_position.e = destination.e; // Hide a G1-based retract/recover from calculations
|
||||
sync_plan_position_e(); // AND from the planner
|
||||
fwretract.retract(echange < 0.0); // Firmware-based retract/recover (double-retract ignored)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ void GcodeSuite::M951() {
|
|||
if (parser.seenval('H')) mpe_settings.fast_feedrate = MMM_TO_MMS(parser.value_linear_units());
|
||||
if (parser.seenval('D')) mpe_settings.travel_distance = parser.value_linear_units();
|
||||
if (parser.seenval('C')) mpe_settings.compensation_factor = parser.value_float();
|
||||
if (!parser.seen("CDHIJLR")) mpe_settings_report();
|
||||
if (!parser.seen_any()) mpe_settings_report();
|
||||
}
|
||||
|
||||
#endif // MAGNETIC_PARKING_EXTRUDER
|
||||
|
|
|
@ -65,7 +65,10 @@ void GcodeSuite::M106() {
|
|||
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
const uint16_t t = parser.intval('T');
|
||||
if (t > 0) return thermalManager.set_temp_fan_speed(pfan, t);
|
||||
if (t > 0) {
|
||||
thermalManager.set_temp_fan_speed(pfan, t);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
const uint16_t dspeed = parser.seen_test('A') ? thermalManager.fan_speed[active_extruder] : 255;
|
||||
|
|
|
@ -765,15 +765,15 @@
|
|||
#endif
|
||||
|
||||
// Consolidate TMC26X, validate migration (#24373)
|
||||
#define _ISMAX_1(A) defined(A##_MAX_CURRENT)
|
||||
#define _ISSNS_1(A) defined(A##_SENSE_RESISTOR)
|
||||
#if DO(ISMAX,||,ALL_AXIS_NAMES)
|
||||
#define _ISMAX(A) defined(A##_MAX_CURRENT) ||
|
||||
#define _ISSNS(A) defined(A##_SENSE_RESISTOR) ||
|
||||
#if MAP(_ISMAX, ALL_AXIS_NAMES) 0
|
||||
#error "*_MAX_CURRENT is now set with *_CURRENT."
|
||||
#elif DO(ISSNS,||,ALL_AXIS_NAMES)
|
||||
#elif MAP(_ISSNS, ALL_AXIS_NAMES) 0
|
||||
#error "*_SENSE_RESISTOR (in Milli-Ohms) is now set with *_RSENSE (in Ohms), so you must divide values by 1000."
|
||||
#endif
|
||||
#undef _ISMAX_1
|
||||
#undef _ISSNS_1
|
||||
#undef _ISMAX
|
||||
#undef _ISSNS
|
||||
|
||||
// L64xx stepper drivers have been removed
|
||||
#define _L6470 0x6470
|
||||
|
|
|
@ -663,11 +663,6 @@
|
|||
#define BOOT_MARLIN_LOGO_SMALL
|
||||
#endif
|
||||
|
||||
// Flow and feedrate editing
|
||||
#if HAS_EXTRUDERS && ANY(HAS_MARLINUI_MENU, DWIN_CREALITY_LCD, DWIN_LCD_PROUI, MALYAN_LCD, TOUCH_SCREEN)
|
||||
#define HAS_FLOW_EDIT 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TFT Displays
|
||||
*
|
||||
|
|
|
@ -2382,6 +2382,7 @@ void setMoveZ() { hmiValue.axis = Z_AXIS; setPFloatOnClick(Z_MIN_POS, Z_MAX_POS,
|
|||
#endif
|
||||
|
||||
void setSpeed() { setPIntOnClick(SPEED_EDIT_MIN, SPEED_EDIT_MAX); }
|
||||
void setFlow() { setPIntOnClick(FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refresh_e_factor(0); }); }
|
||||
|
||||
#if HAS_HOTEND
|
||||
void applyHotendTemp() { thermalManager.setTargetHotend(menuData.value, 0); }
|
||||
|
@ -2426,8 +2427,6 @@ void setSpeed() { setPIntOnClick(SPEED_EDIT_MIN, SPEED_EDIT_MAX); }
|
|||
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
void setFlow() { setPIntOnClick(FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refresh_e_factor(0); }); }
|
||||
|
||||
// Bed Tramming
|
||||
|
||||
#if ENABLED(LCD_BED_TRAMMING)
|
||||
|
@ -2596,23 +2595,25 @@ void setFlow() { setPIntOnClick(FLOW_EDIT_MIN, FLOW_EDIT_MAX, []{ planner.refres
|
|||
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
|
||||
#define MESH_Z_FDIGITS 2
|
||||
|
||||
void manualMeshStart() {
|
||||
LCD_MESSAGE(MSG_UBL_BUILD_MESH_MENU);
|
||||
gcode.process_subcommands_now(F("G28XYO\nG28Z\nM211S0\nG29S1"));
|
||||
#ifdef MANUAL_PROBE_START_Z
|
||||
const uint8_t line = currentMenu->line(mMeshMoveZItem->pos);
|
||||
DWINUI::drawSignedFloat(hmiData.colorText, hmiData.colorBackground, 3, 2, VALX - 2 * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), MANUAL_PROBE_START_Z);
|
||||
DWINUI::drawSignedFloat(hmiData.colorText, hmiData.colorBackground, 3, MESH_Z_FDIGITS, VALX - 2 * DWINUI::fontWidth(DWIN_FONT_MENU), MBASE(line), MANUAL_PROBE_START_Z);
|
||||
#endif
|
||||
}
|
||||
|
||||
void liveMeshMoveZ() {
|
||||
*menuData.floatPtr = menuData.value / POW(10, 2);
|
||||
*menuData.floatPtr = menuData.value / POW(10, MESH_Z_FDIGITS);
|
||||
if (!planner.is_full()) {
|
||||
planner.synchronize();
|
||||
planner.buffer_line(current_position, manual_feedrate_mm_s[Z_AXIS]);
|
||||
}
|
||||
}
|
||||
void setMMeshMoveZ() { setPFloatOnClick(-1, 1, 2, planner.synchronize, liveMeshMoveZ); }
|
||||
void setMMeshMoveZ() { setPFloatOnClick(-1, 1, MESH_Z_FDIGITS, planner.synchronize, liveMeshMoveZ); }
|
||||
|
||||
void manualMeshContinue() {
|
||||
gcode.process_subcommands_now(F("G29S2"));
|
||||
|
@ -2686,8 +2687,9 @@ void applyMaxAccel() { planner.set_max_acceleration(hmiValue.axis, menuData.valu
|
|||
#endif
|
||||
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
void applyLA_K() { planner.set_advance_k(menuData.value / MINUNITMULT); }
|
||||
void setLA_K() { setPFloatOnClick(0, 10, 3, applyLA_K); }
|
||||
#define LA_FDIGITS 3
|
||||
void applyLA_K() { planner.set_advance_k(menuData.value / POW(10, LA_FDIGITS)); }
|
||||
void setLA_K() { setPFloatOnClick(0, 10, LA_FDIGITS, applyLA_K); }
|
||||
#endif
|
||||
|
||||
#if HAS_X_AXIS
|
||||
|
@ -3515,6 +3517,7 @@ void drawTuneMenu() {
|
|||
if (SET_MENU_R(tuneMenu, selrect({73, 2, 28, 12}), MSG_TUNE, items)) {
|
||||
BACK_ITEM(gotoPrintProcess);
|
||||
EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage);
|
||||
EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]);
|
||||
#if HAS_HOTEND
|
||||
hotendTargetItem = EDIT_ITEM(ICON_HotendTemp, MSG_UBL_SET_TEMP_HOTEND, onDrawHotendTemp, setHotendTemp, &thermalManager.temp_hotend[0].target);
|
||||
#endif
|
||||
|
@ -3529,7 +3532,6 @@ void drawTuneMenu() {
|
|||
#elif ALL(HAS_ZOFFSET_ITEM, MESH_BED_LEVELING, BABYSTEPPING)
|
||||
EDIT_ITEM(ICON_Zoffset, MSG_HOME_OFFSET_Z, onDrawPFloat2Menu, setZOffset, &BABY_Z_VAR);
|
||||
#endif
|
||||
EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]);
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
MENU_ITEM(ICON_FilMan, MSG_FILAMENTCHANGE, onDrawMenuItem, changeFilament);
|
||||
#endif
|
||||
|
@ -3546,8 +3548,8 @@ void drawTuneMenu() {
|
|||
EDIT_ITEM(ICON_JDmm, MSG_JUNCTION_DEVIATION, onDrawPFloat3Menu, setJDmm, &planner.junction_deviation_mm);
|
||||
#endif
|
||||
#if ENABLED(PROUI_ITEM_ADVK)
|
||||
float editable_decimal = planner.get_advance_k();
|
||||
EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &editable_decimal);
|
||||
float editable_k = planner.get_advance_k();
|
||||
EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &editable_k);
|
||||
#endif
|
||||
#if HAS_LOCKSCREEN
|
||||
MENU_ITEM(ICON_Lock, MSG_LOCKSCREEN, onDrawMenuItem, dwinLockScreen);
|
||||
|
@ -3685,8 +3687,8 @@ void drawMotionMenu() {
|
|||
MENU_ITEM(ICON_Homing, MSG_HOMING_FEEDRATE, onDrawSubMenu, drawHomingFRMenu);
|
||||
#endif
|
||||
#if ENABLED(LIN_ADVANCE)
|
||||
float editable_decimal = planner.get_advance_k();
|
||||
EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &editable_decimal);
|
||||
float editable_k = planner.get_advance_k();
|
||||
EDIT_ITEM(ICON_MaxAccelerated, MSG_ADVANCE_K, onDrawPFloat3Menu, setLA_K, &editable_k);
|
||||
#endif
|
||||
#if ENABLED(SHAPING_MENU)
|
||||
MENU_ITEM(ICON_InputShaping, MSG_INPUT_SHAPING, onDrawSubMenu, drawInputShaping_menu);
|
||||
|
@ -3694,8 +3696,8 @@ void drawMotionMenu() {
|
|||
#if ENABLED(ADAPTIVE_STEP_SMOOTHING_TOGGLE)
|
||||
EDIT_ITEM(ICON_UBLActive, MSG_STEP_SMOOTHING, onDrawChkbMenu, setAdaptiveStepSmoothing, &stepper.adaptive_step_smoothing_enabled);
|
||||
#endif
|
||||
EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawSpeedItem, setSpeed, &feedrate_percentage);
|
||||
EDIT_ITEM(ICON_Flow, MSG_FLOW, onDrawPIntMenu, setFlow, &planner.flow_percentage[0]);
|
||||
EDIT_ITEM(ICON_Speed, MSG_SPEED, onDrawPIntMenu, setSpeed, &feedrate_percentage);
|
||||
}
|
||||
updateMenu(motionMenu);
|
||||
}
|
||||
|
@ -4028,9 +4030,10 @@ void drawMaxAccelMenu() {
|
|||
void setSensorResponse() { setPFloatOnClick(0, 1, 4); }
|
||||
void setAmbientXfer() { setPFloatOnClick(0, 1, 4); }
|
||||
#if ENABLED(MPC_INCLUDE_FAN)
|
||||
void onDrawFanAdj(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); }
|
||||
void applyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(menuData.value / POW(10, 4)); }
|
||||
void setFanAdj() { setFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), applyFanAdj); }
|
||||
#define MPC_FAN_FDIGITS 4
|
||||
void onDrawFanAdj(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, MPC_FAN_FDIGITS, thermalManager.temp_hotend[0].fanCoefficient()); }
|
||||
void applyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(menuData.value / POW(10, MPC_FAN_FDIGITS)); }
|
||||
void setFanAdj() { setFloatOnClick(0, 1, MPC_FAN_FDIGITS, thermalManager.temp_hotend[0].fanCoefficient(), applyFanAdj); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -4074,27 +4077,28 @@ void drawMaxAccelMenu() {
|
|||
#endif
|
||||
|
||||
#if ENABLED(PID_EDIT_MENU)
|
||||
void setKp() { setPFloatOnClick(0, 1000, 2); }
|
||||
#define PID_FDIGITS 2
|
||||
void setKp() { setPFloatOnClick(0, 1000, PID_FDIGITS); }
|
||||
void applyPIDi() {
|
||||
*menuData.floatPtr = scalePID_i(menuData.value / POW(10, 2));
|
||||
*menuData.floatPtr = scalePID_i(menuData.value / POW(10, PID_FDIGITS));
|
||||
TERN_(PIDTEMP, thermalManager.updatePID());
|
||||
}
|
||||
void applyPIDd() {
|
||||
*menuData.floatPtr = scalePID_d(menuData.value / POW(10, 2));
|
||||
*menuData.floatPtr = scalePID_d(menuData.value / POW(10, PID_FDIGITS));
|
||||
TERN_(PIDTEMP, thermalManager.updatePID());
|
||||
}
|
||||
void setKi() {
|
||||
menuData.floatPtr = (float*)static_cast<MenuItemPtr*>(currentMenu->selectedItem())->value;
|
||||
const float value = unscalePID_i(*menuData.floatPtr);
|
||||
setFloatOnClick(0, 1000, 2, value, applyPIDi);
|
||||
setFloatOnClick(0, 1000, PID_FDIGITS, value, applyPIDi);
|
||||
}
|
||||
void setKd() {
|
||||
menuData.floatPtr = (float*)static_cast<MenuItemPtr*>(currentMenu->selectedItem())->value;
|
||||
const float value = unscalePID_d(*menuData.floatPtr);
|
||||
setFloatOnClick(0, 1000, 2, value, applyPIDd);
|
||||
setFloatOnClick(0, 1000, PID_FDIGITS, value, applyPIDd);
|
||||
}
|
||||
void onDrawPIDi(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_i(*(float*)static_cast<MenuItemPtr*>(menuitem)->value)); }
|
||||
void onDrawPIDd(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 2, unscalePID_d(*(float*)static_cast<MenuItemPtr*>(menuitem)->value)); }
|
||||
void onDrawPIDi(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, PID_FDIGITS, unscalePID_i(*(float*)static_cast<MenuItemPtr*>(menuitem)->value)); }
|
||||
void onDrawPIDd(MenuItem* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, PID_FDIGITS, unscalePID_d(*(float*)static_cast<MenuItemPtr*>(menuitem)->value)); }
|
||||
#endif // PID_EDIT_MENU
|
||||
|
||||
#endif // HAS_PID_HEATING
|
||||
|
|
|
@ -1505,10 +1505,12 @@ void Planner::check_axes_activity() {
|
|||
|
||||
#if HAS_LEVELING
|
||||
|
||||
constexpr xy_pos_t level_fulcrum = {
|
||||
TERN(Z_SAFE_HOMING, Z_SAFE_HOMING_X_POINT, X_HOME_POS),
|
||||
TERN(Z_SAFE_HOMING, Z_SAFE_HOMING_Y_POINT, Y_HOME_POS)
|
||||
};
|
||||
#if ABL_PLANAR
|
||||
constexpr xy_pos_t level_fulcrum = {
|
||||
TERN(Z_SAFE_HOMING, Z_SAFE_HOMING_X_POINT, X_HOME_POS),
|
||||
TERN(Z_SAFE_HOMING, Z_SAFE_HOMING_Y_POINT, Y_HOME_POS)
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* rx, ry, rz - Cartesian positions in mm
|
||||
|
|
|
@ -249,7 +249,7 @@ typedef struct PlannerBlock {
|
|||
uint32_t cruise_time; // Cruise time in STEP timer counts
|
||||
int32_t e_step_ratio_q30; // Ratio of e steps to block steps.
|
||||
#if ENABLED(INPUT_SHAPING_E_SYNC)
|
||||
uint32_t xy_length_inv_q30; // inverse of block->steps.x + block.steps.y
|
||||
uint32_t xy_length_inv_q30; // Inverse of block->steps.x + block.steps.y
|
||||
#endif
|
||||
#endif
|
||||
#if ANY(S_CURVE_ACCELERATION, SMOOTH_LIN_ADVANCE)
|
||||
|
@ -370,7 +370,6 @@ typedef struct PlannerSettings {
|
|||
};
|
||||
#undef _EASU
|
||||
#undef _DASU
|
||||
#undef _DLIM
|
||||
#endif
|
||||
|
||||
feedRate_t max_feedrate_mm_s[DISTINCT_AXES]; // (mm/s) M203 XYZE - Max speeds
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
# Base Environment for all HC32F460 variants
|
||||
#
|
||||
[HC32F460_base]
|
||||
platform = https://github.com/shadow578/platform-hc32f46x/archive/1.1.0.zip
|
||||
platform_packages = framework-hc32f46x-ddl@https://github.com/shadow578/framework-hc32f46x-ddl/archive/2.2.2.zip
|
||||
platform = https://github.com/shadow578/platform-hc32f46x/archive/1.1.1.zip
|
||||
platform_packages = framework-hc32f46x-ddl@https://github.com/shadow578/framework-hc32f46x-ddl/archive/2.2.3.zip
|
||||
framework-arduino-hc32f46x@https://github.com/shadow578/framework-arduino-hc32f46x/archive/1.2.0.zip
|
||||
board = generic_hc32f460
|
||||
build_src_filter = ${common.default_src_filter} +<src/HAL/HC32> +<src/HAL/shared/backtrace>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue