Skip to content

Commit 145f96d

Browse files
thinkyheadvlsi
authored andcommitted
🚸 MarlinUI Endstop Test Screen, and more (MarlinFirmware#25667)
1 parent 943f397 commit 145f96d

21 files changed

+897
-713
lines changed

‎Marlin/Configuration_adv.h

+3
Original file line numberDiff line numberDiff line change
@@ -1426,6 +1426,9 @@
14261426
// Insert a menu for preheating at the top level to allow for quick access
14271427
//#define PREHEAT_SHORTCUT_MENU_ITEM
14281428

1429+
// Add Configuration > Debug Menu > Endstop Test for endstop/probe/runout testing
1430+
//#define LCD_ENDSTOP_TEST
1431+
14291432
#endif // HAS_MARLINUI_MENU
14301433

14311434
#if ANY(HAS_DISPLAY, DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI)

‎Marlin/src/gcode/calibrate/G425.cpp

+18-18
Original file line numberDiff line numberDiff line change
@@ -271,33 +271,33 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t
271271
#if AXIS_CAN_CALIBRATE(X)
272272
_ACASE(X, RIGHT, LEFT);
273273
#endif
274-
#if HAS_Y_AXIS && AXIS_CAN_CALIBRATE(Y)
274+
#if AXIS_CAN_CALIBRATE(Y)
275275
_ACASE(Y, BACK, FRONT);
276276
#endif
277-
#if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
277+
#if AXIS_CAN_CALIBRATE(Z)
278278
case TOP: {
279279
const float measurement = measure(Z_AXIS, -1, true, &m.backlash[TOP], uncertainty);
280280
m.obj_center.z = measurement - dimensions.z / 2;
281281
m.obj_side[TOP] = measurement;
282282
return;
283283
}
284284
#endif
285-
#if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I)
285+
#if AXIS_CAN_CALIBRATE(I)
286286
_PCASE(I);
287287
#endif
288-
#if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J)
288+
#if AXIS_CAN_CALIBRATE(J)
289289
_PCASE(J);
290290
#endif
291-
#if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K)
291+
#if AXIS_CAN_CALIBRATE(K)
292292
_PCASE(K);
293293
#endif
294-
#if HAS_U_AXIS && AXIS_CAN_CALIBRATE(U)
294+
#if AXIS_CAN_CALIBRATE(U)
295295
_PCASE(U);
296296
#endif
297-
#if HAS_V_AXIS && AXIS_CAN_CALIBRATE(V)
297+
#if AXIS_CAN_CALIBRATE(V)
298298
_PCASE(V);
299299
#endif
300-
#if HAS_W_AXIS && AXIS_CAN_CALIBRATE(W)
300+
#if AXIS_CAN_CALIBRATE(W)
301301
_PCASE(W);
302302
#endif
303303
default: return;
@@ -395,7 +395,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
395395
#if ENABLED(CALIBRATION_REPORTING)
396396
inline void report_measured_faces(const measurements_t &m) {
397397
SERIAL_ECHOLNPGM("Sides:");
398-
#if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
398+
#if AXIS_CAN_CALIBRATE(Z)
399399
SERIAL_ECHOLNPGM(" Top: ", m.obj_side[TOP]);
400400
#endif
401401
#if ENABLED(CALIBRATION_MEASURE_LEFT)
@@ -503,58 +503,58 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
503503
SERIAL_ECHOLNPGM(" Right: ", m.backlash[RIGHT]);
504504
#endif
505505
#endif
506-
#if HAS_Y_AXIS && AXIS_CAN_CALIBRATE(Y)
506+
#if AXIS_CAN_CALIBRATE(Y)
507507
#if ENABLED(CALIBRATION_MEASURE_FRONT)
508508
SERIAL_ECHOLNPGM(" Front: ", m.backlash[FRONT]);
509509
#endif
510510
#if ENABLED(CALIBRATION_MEASURE_BACK)
511511
SERIAL_ECHOLNPGM(" Back: ", m.backlash[BACK]);
512512
#endif
513513
#endif
514-
#if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
514+
#if AXIS_CAN_CALIBRATE(Z)
515515
SERIAL_ECHOLNPGM(" Top: ", m.backlash[TOP]);
516516
#endif
517-
#if HAS_I_AXIS && AXIS_CAN_CALIBRATE(I)
517+
#if AXIS_CAN_CALIBRATE(I)
518518
#if ENABLED(CALIBRATION_MEASURE_IMIN)
519519
SERIAL_ECHOLNPGM(" " STR_I_MIN ": ", m.backlash[IMINIMUM]);
520520
#endif
521521
#if ENABLED(CALIBRATION_MEASURE_IMAX)
522522
SERIAL_ECHOLNPGM(" " STR_I_MAX ": ", m.backlash[IMAXIMUM]);
523523
#endif
524524
#endif
525-
#if HAS_J_AXIS && AXIS_CAN_CALIBRATE(J)
525+
#if AXIS_CAN_CALIBRATE(J)
526526
#if ENABLED(CALIBRATION_MEASURE_JMIN)
527527
SERIAL_ECHOLNPGM(" " STR_J_MIN ": ", m.backlash[JMINIMUM]);
528528
#endif
529529
#if ENABLED(CALIBRATION_MEASURE_JMAX)
530530
SERIAL_ECHOLNPGM(" " STR_J_MAX ": ", m.backlash[JMAXIMUM]);
531531
#endif
532532
#endif
533-
#if HAS_K_AXIS && AXIS_CAN_CALIBRATE(K)
533+
#if AXIS_CAN_CALIBRATE(K)
534534
#if ENABLED(CALIBRATION_MEASURE_KMIN)
535535
SERIAL_ECHOLNPGM(" " STR_K_MIN ": ", m.backlash[KMINIMUM]);
536536
#endif
537537
#if ENABLED(CALIBRATION_MEASURE_KMAX)
538538
SERIAL_ECHOLNPGM(" " STR_K_MAX ": ", m.backlash[KMAXIMUM]);
539539
#endif
540540
#endif
541-
#if HAS_U_AXIS && AXIS_CAN_CALIBRATE(U)
541+
#if AXIS_CAN_CALIBRATE(U)
542542
#if ENABLED(CALIBRATION_MEASURE_UMIN)
543543
SERIAL_ECHOLNPGM(" " STR_U_MIN ": ", m.backlash[UMINIMUM]);
544544
#endif
545545
#if ENABLED(CALIBRATION_MEASURE_UMAX)
546546
SERIAL_ECHOLNPGM(" " STR_U_MAX ": ", m.backlash[UMAXIMUM]);
547547
#endif
548548
#endif
549-
#if HAS_V_AXIS && AXIS_CAN_CALIBRATE(V)
549+
#if AXIS_CAN_CALIBRATE(V)
550550
#if ENABLED(CALIBRATION_MEASURE_VMIN)
551551
SERIAL_ECHOLNPGM(" " STR_V_MIN ": ", m.backlash[VMINIMUM]);
552552
#endif
553553
#if ENABLED(CALIBRATION_MEASURE_VMAX)
554554
SERIAL_ECHOLNPGM(" " STR_V_MAX ": ", m.backlash[VMAXIMUM]);
555555
#endif
556556
#endif
557-
#if HAS_W_AXIS && AXIS_CAN_CALIBRATE(W)
557+
#if AXIS_CAN_CALIBRATE(W)
558558
#if ENABLED(CALIBRATION_MEASURE_WMIN)
559559
SERIAL_ECHOLNPGM(" " STR_W_MIN ": ", m.backlash[WMINIMUM]);
560560
#endif
@@ -575,7 +575,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
575575
#if HAS_Y_CENTER && AXIS_CAN_CALIBRATE(Y)
576576
SERIAL_ECHOLNPGM_P(SP_Y_STR, m.pos_error.y);
577577
#endif
578-
#if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
578+
#if AXIS_CAN_CALIBRATE(Z)
579579
SERIAL_ECHOLNPGM_P(SP_Z_STR, m.pos_error.z);
580580
#endif
581581
#if HAS_I_CENTER && AXIS_CAN_CALIBRATE(I)

‎Marlin/src/gcode/calibrate/M425.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,13 @@
4646
void GcodeSuite::M425() {
4747
bool noArgs = true;
4848

49-
auto axis_can_calibrate = [](const uint8_t a) {
50-
#define _CAN_CASE(N) case N##_AXIS: return AXIS_CAN_CALIBRATE(N);
49+
auto axis_can_calibrate = [](const uint8_t a) -> bool {
50+
#define _CAN_CASE(N) case N##_AXIS: return bool(AXIS_CAN_CALIBRATE(N));
5151
switch (a) {
52-
default: return false;
5352
MAIN_AXIS_MAP(_CAN_CASE)
53+
default: break;
5454
}
55+
return false;
5556
};
5657

5758
LOOP_NUM_AXES(a) {

‎Marlin/src/inc/Conditionals_post.h

+48-3
Original file line numberDiff line numberDiff line change
@@ -255,12 +255,14 @@
255255
// Calibration codes only for non-core axes
256256
#if EITHER(BACKLASH_GCODE, CALIBRATION_GCODE)
257257
#if ANY(IS_CORE, MARKFORGED_XY, MARKFORGED_YX)
258-
#define CAN_CALIBRATE(A,B) (_AXIS(A) == B)
258+
#define CAN_CALIBRATE(A,B) TERN0(HAS_##A##_AXIS, (_AXIS(A) == B))
259259
#else
260-
#define CAN_CALIBRATE(A,B) true
260+
#define CAN_CALIBRATE(A,B) ENABLED(HAS_##A##_AXIS)
261261
#endif
262+
#define AXIS_CAN_CALIBRATE(A) CAN_CALIBRATE(A,NORMAL_AXIS)
263+
#else
264+
#define AXIS_CAN_CALIBRATE(A) false
262265
#endif
263-
#define AXIS_CAN_CALIBRATE(A) CAN_CALIBRATE(A,NORMAL_AXIS)
264266

265267
/**
266268
* No adjustable bed on non-cartesians
@@ -2373,6 +2375,49 @@
23732375
#define HAS_Z4_MAX 1
23742376
#endif
23752377

2378+
#if HAS_X_MIN || HAS_X_MAX
2379+
#define HAS_X_ENDSTOP 1
2380+
#endif
2381+
#if HAS_X2_MIN || HAS_X2_MAX
2382+
#define HAS_X2_ENDSTOP 1
2383+
#endif
2384+
#if HAS_Y_MIN || HAS_Y_MAX
2385+
#define HAS_Y_ENDSTOP 1
2386+
#endif
2387+
#if HAS_Y2_MIN || HAS_Y2_MAX
2388+
#define HAS_Y2_ENDSTOP 1
2389+
#endif
2390+
#if HAS_Z_MIN || HAS_Z_MAX
2391+
#define HAS_Z_ENDSTOP 1
2392+
#endif
2393+
#if HAS_Z2_MIN || HAS_Z2_MAX
2394+
#define HAS_Z2_ENDSTOP 1
2395+
#endif
2396+
#if HAS_Z3_MIN || HAS_Z3_MAX
2397+
#define HAS_Z3_ENDSTOP 1
2398+
#endif
2399+
#if HAS_Z4_MIN || HAS_Z4_MAX
2400+
#define HAS_Z4_ENDSTOP 1
2401+
#endif
2402+
#if HAS_I_MIN || HAS_I_MAX
2403+
#define HAS_I_ENDSTOP 1
2404+
#endif
2405+
#if HAS_J_MIN || HAS_J_MAX
2406+
#define HAS_J_ENDSTOP 1
2407+
#endif
2408+
#if HAS_K_MIN || HAS_K_MAX
2409+
#define HAS_K_ENDSTOP 1
2410+
#endif
2411+
#if HAS_U_MIN || HAS_U_MAX
2412+
#define HAS_U_ENDSTOP 1
2413+
#endif
2414+
#if HAS_V_MIN || HAS_V_MAX
2415+
#define HAS_V_ENDSTOP 1
2416+
#endif
2417+
#if HAS_W_MIN || HAS_W_MAX
2418+
#define HAS_W_ENDSTOP 1
2419+
#endif
2420+
23762421
#if HAS_BED_PROBE && PIN_EXISTS(Z_MIN_PROBE)
23772422
#define HAS_Z_MIN_PROBE_PIN 1
23782423
#endif

0 commit comments

Comments
 (0)