浏览代码

UI and stall reset for extra TMC axes (#17818)

Scott Lahteine 5 年前
父节点
当前提交
a226b281af
没有帐户链接到提交者的电子邮件

+ 9
- 27
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/stepper_bump_sensitivity_screen.cpp 查看文件

34
   widgets_t w(what);
34
   widgets_t w(what);
35
   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST);
35
   w.precision(0, BaseNumericAdjustmentScreen::DEFAULT_LOWEST);
36
   w.heading(                     GET_TEXT_F(MSG_TMC_HOMING_THRS));
36
   w.heading(                     GET_TEXT_F(MSG_TMC_HOMING_THRS));
37
-  w.color(x_axis)  .adjuster( 2, GET_TEXT_F(MSG_AXIS_X),  getTMCBumpSensitivity(X),
38
-  #if X_SENSORLESS
39
-    true
40
-  #else
41
-    false
42
-  #endif
43
-  );
44
-  w.color(y_axis)  .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y),  getTMCBumpSensitivity(Y),
45
-   #if Y_SENSORLESS
46
-     true
47
-   #else
48
-     false
49
-   #endif
50
-  );
51
-  w.color(z_axis)  .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z),  getTMCBumpSensitivity(Z),
52
-   #if Z_SENSORLESS
53
-     true
54
-   #else
55
-     false
56
-   #endif
57
-  );
37
+  w.color(x_axis)  .adjuster( 2, GET_TEXT_F(MSG_AXIS_X),  getTMCBumpSensitivity(X), ENABLED(X_SENSORLESS));
38
+  w.color(y_axis)  .adjuster( 4, GET_TEXT_F(MSG_AXIS_Y),  getTMCBumpSensitivity(Y), ENABLED(Y_SENSORLESS));
39
+  w.color(z_axis)  .adjuster( 6, GET_TEXT_F(MSG_AXIS_Z),  getTMCBumpSensitivity(Z), ENABLED(Z_SENSORLESS));
58
   w.increments();
40
   w.increments();
59
 }
41
 }
60
 
42
 
61
 bool StepperBumpSensitivityScreen::onTouchHeld(uint8_t tag) {
43
 bool StepperBumpSensitivityScreen::onTouchHeld(uint8_t tag) {
62
   const float increment = getIncrement();
44
   const float increment = getIncrement();
63
   switch (tag) {
45
   switch (tag) {
64
-    case  2: UI_DECREMENT(TMCBumpSensitivity, X ); break;
65
-    case  3: UI_INCREMENT(TMCBumpSensitivity, X ); break;
66
-    case  4: UI_DECREMENT(TMCBumpSensitivity, Y ); break;
67
-    case  5: UI_INCREMENT(TMCBumpSensitivity, Y ); break;
68
-    case  6: UI_DECREMENT(TMCBumpSensitivity, Z ); break;
69
-    case  7: UI_INCREMENT(TMCBumpSensitivity, Z ); break;
46
+    case  2: UI_DECREMENT(TMCBumpSensitivity, X  ); break;
47
+    case  3: UI_INCREMENT(TMCBumpSensitivity, X2 ); break;
48
+    case  4: UI_DECREMENT(TMCBumpSensitivity, Y  ); break;
49
+    case  5: UI_INCREMENT(TMCBumpSensitivity, Y2 ); break;
50
+    case  6: UI_DECREMENT(TMCBumpSensitivity, Z  ); break;
51
+    case  7: UI_INCREMENT(TMCBumpSensitivity, Z2 ); break;
70
     default:
52
     default:
71
       return false;
53
       return false;
72
   }
54
   }

+ 24
- 4
Marlin/src/lcd/extui/ui_api.cpp 查看文件

489
 
489
 
490
     int getTMCBumpSensitivity(const axis_t axis) {
490
     int getTMCBumpSensitivity(const axis_t axis) {
491
       switch (axis) {
491
       switch (axis) {
492
-        TERN_(X_SENSORLESS, case X: return stepperX.homing_threshold());
493
-        TERN_(Y_SENSORLESS, case Y: return stepperY.homing_threshold());
494
-        TERN_(Z_SENSORLESS, case Z: return stepperZ.homing_threshold());
492
+        TERN_(X_SENSORLESS,  case X:  return stepperX.homing_threshold());
493
+        TERN_(X2_SENSORLESS, case X2: return stepperX2.homing_threshold());
494
+        TERN_(Y_SENSORLESS,  case Y:  return stepperY.homing_threshold());
495
+        TERN_(Y2_SENSORLESS, case Y2: return stepperY2.homing_threshold());
496
+        TERN_(Z_SENSORLESS,  case Z:  return stepperZ.homing_threshold());
497
+        TERN_(Z2_SENSORLESS, case Z2: return stepperZ2.homing_threshold());
498
+        TERN_(Z3_SENSORLESS, case Z3: return stepperZ3.homing_threshold());
499
+        TERN_(Z4_SENSORLESS, case Z4: return stepperZ4.homing_threshold());
495
         default: return 0;
500
         default: return 0;
496
       }
501
       }
497
     }
502
     }
500
       switch (axis) {
505
       switch (axis) {
501
         #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
506
         #if X_SENSORLESS || Y_SENSORLESS || Z_SENSORLESS
502
           #if X_SENSORLESS
507
           #if X_SENSORLESS
503
-            case X: stepperX.homing_threshold(value); break;
508
+            case X:  stepperX.homing_threshold(value);  break;
509
+          #endif
510
+          #if X2_SENSORLESS
511
+            case X2: stepperX2.homing_threshold(value); break;
504
           #endif
512
           #endif
505
           #if Y_SENSORLESS
513
           #if Y_SENSORLESS
506
             case Y: stepperY.homing_threshold(value); break;
514
             case Y: stepperY.homing_threshold(value); break;
507
           #endif
515
           #endif
516
+          #if Y2_SENSORLESS
517
+            case Y2: stepperY2.homing_threshold(value); break;
518
+          #endif
508
           #if Z_SENSORLESS
519
           #if Z_SENSORLESS
509
             case Z: stepperZ.homing_threshold(value); break;
520
             case Z: stepperZ.homing_threshold(value); break;
510
           #endif
521
           #endif
522
+          #if Z2_SENSORLESS
523
+            case Z2: stepperZ2.homing_threshold(value); break;
524
+          #endif
525
+          #if Z3_SENSORLESS
526
+            case Z3: stepperZ3.homing_threshold(value); break;
527
+          #endif
528
+          #if Z4_SENSORLESS
529
+            case Z4: stepperZ4.homing_threshold(value); break;
530
+          #endif
511
         #else
531
         #else
512
           UNUSED(value);
532
           UNUSED(value);
513
         #endif
533
         #endif

+ 1
- 1
Marlin/src/lcd/extui/ui_api.h 查看文件

52
 
52
 
53
   static constexpr size_t eeprom_data_size = 48;
53
   static constexpr size_t eeprom_data_size = 48;
54
 
54
 
55
-  enum axis_t     : uint8_t { X, Y, Z };
55
+  enum axis_t     : uint8_t { X, Y, Z, X2, Y2, Z2, Z3, Z4 };
56
   enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5, E6, E7 };
56
   enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5, E6, E7 };
57
   enum heater_t   : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER };
57
   enum heater_t   : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER };
58
   enum fan_t      : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };
58
   enum fan_t      : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };

+ 15
- 3
Marlin/src/lcd/menu/menu_tmc.cpp 查看文件

157
     BACK_ITEM(MSG_TMC_DRIVERS);
157
     BACK_ITEM(MSG_TMC_DRIVERS);
158
     #if X_SENSORLESS
158
     #if X_SENSORLESS
159
       TMC_EDIT_STORED_SGT(X);
159
       TMC_EDIT_STORED_SGT(X);
160
-    #endif
161
-    #if X2_SENSORLESS
162
-      TMC_EDIT_STORED_SGT(X2);
160
+      #if X2_SENSORLESS
161
+        TMC_EDIT_STORED_SGT(X2);
162
+      #endif
163
     #endif
163
     #endif
164
     #if Y_SENSORLESS
164
     #if Y_SENSORLESS
165
       TMC_EDIT_STORED_SGT(Y);
165
       TMC_EDIT_STORED_SGT(Y);
166
+      #if Y2_SENSORLESS
167
+        TMC_EDIT_STORED_SGT(Y2);
168
+      #endif
166
     #endif
169
     #endif
167
     #if Z_SENSORLESS
170
     #if Z_SENSORLESS
168
       TMC_EDIT_STORED_SGT(Z);
171
       TMC_EDIT_STORED_SGT(Z);
172
+      #if Z2_SENSORLESS
173
+        TMC_EDIT_STORED_SGT(Z2);
174
+      #endif
175
+      #if Z3_SENSORLESS
176
+        TMC_EDIT_STORED_SGT(Z3);
177
+      #endif
178
+      #if Z4_SENSORLESS
179
+        TMC_EDIT_STORED_SGT(Z4);
180
+      #endif
169
     #endif
181
     #endif
170
     END_MENU();
182
     END_MENU();
171
   }
183
   }

+ 36
- 62
Marlin/src/module/stepper/trinamic.cpp 查看文件

117
 #endif
117
 #endif
118
 
118
 
119
 #ifndef TMC_BAUD_RATE
119
 #ifndef TMC_BAUD_RATE
120
-  #if HAS_TMC_SW_SERIAL
121
-    // Reduce baud rate for boards not already overriding TMC_BAUD_RATE for software serial.
122
-    // Testing has shown that 115200 is not 100% reliable on AVR platforms, occasionally
123
-    // failing to read status properly. 32-bit platforms typically define an even lower
124
-    // TMC_BAUD_RATE, due to differences in how SoftwareSerial libraries work on different
125
-    // platforms.
126
-    #define TMC_BAUD_RATE 57600
127
-  #else
128
-    #define TMC_BAUD_RATE 115200
129
-  #endif
120
+  // Reduce baud rate for boards not already overriding TMC_BAUD_RATE for software serial.
121
+  // Testing has shown that 115200 is not 100% reliable on AVR platforms, occasionally
122
+  // failing to read status properly. 32-bit platforms typically define an even lower
123
+  // TMC_BAUD_RATE, due to differences in how SoftwareSerial libraries work on different
124
+  // platforms.
125
+  #define TMC_BAUD_RATE TERN(HAS_TMC_SW_SERIAL, 57600, 115200)
130
 #endif
126
 #endif
131
 
127
 
132
 #if HAS_DRIVER(TMC2130)
128
 #if HAS_DRIVER(TMC2130)
158
     pwmconf.pwm_ampl = 180;
154
     pwmconf.pwm_ampl = 180;
159
     st.PWMCONF(pwmconf.sr);
155
     st.PWMCONF(pwmconf.sr);
160
 
156
 
161
-    #if ENABLED(HYBRID_THRESHOLD)
162
-      st.set_pwm_thrs(hyb_thrs);
163
-    #else
164
-      UNUSED(hyb_thrs);
165
-    #endif
157
+    TERN(HYBRID_THRESHOLD, st.set_pwm_thrs(hyb_thrs), UNUSED(hyb_thrs));
166
 
158
 
167
     st.GSTAT(); // Clear GSTAT
159
     st.GSTAT(); // Clear GSTAT
168
   }
160
   }
200
     pwmconf.pwm_ofs = 36;
192
     pwmconf.pwm_ofs = 36;
201
     st.PWMCONF(pwmconf.sr);
193
     st.PWMCONF(pwmconf.sr);
202
 
194
 
203
-    #if ENABLED(HYBRID_THRESHOLD)
204
-      st.set_pwm_thrs(hyb_thrs);
205
-    #else
206
-      UNUSED(hyb_thrs);
207
-    #endif
195
+    TERN(HYBRID_THRESHOLD, st.set_pwm_thrs(hyb_thrs), UNUSED(hyb_thrs));
208
 
196
 
209
     st.GSTAT(); // Clear GSTAT
197
     st.GSTAT(); // Clear GSTAT
210
   }
198
   }
489
     pwmconf.pwm_ofs = 36;
477
     pwmconf.pwm_ofs = 36;
490
     st.PWMCONF(pwmconf.sr);
478
     st.PWMCONF(pwmconf.sr);
491
 
479
 
492
-    #if ENABLED(HYBRID_THRESHOLD)
493
-      st.set_pwm_thrs(hyb_thrs);
494
-    #else
495
-      UNUSED(hyb_thrs);
496
-    #endif
480
+    TERN(HYBRID_THRESHOLD, st.set_pwm_thrs(hyb_thrs), UNUSED(hyb_thrs));
497
 
481
 
498
     st.GSTAT(0b111); // Clear
482
     st.GSTAT(0b111); // Clear
499
     delay(200);
483
     delay(200);
535
     pwmconf.pwm_ofs = 36;
519
     pwmconf.pwm_ofs = 36;
536
     st.PWMCONF(pwmconf.sr);
520
     st.PWMCONF(pwmconf.sr);
537
 
521
 
538
-    #if ENABLED(HYBRID_THRESHOLD)
539
-      st.set_pwm_thrs(hyb_thrs);
540
-    #else
541
-      UNUSED(hyb_thrs);
542
-    #endif
522
+    TERN(HYBRID_THRESHOLD, st.set_pwm_thrs(hyb_thrs), UNUSED(hyb_thrs));
543
 
523
 
544
     st.GSTAT(0b111); // Clear
524
     st.GSTAT(0b111); // Clear
545
     delay(200);
525
     delay(200);
597
     pwmconf.pwm_ampl = 180;
577
     pwmconf.pwm_ampl = 180;
598
     st.PWMCONF(pwmconf.sr);
578
     st.PWMCONF(pwmconf.sr);
599
 
579
 
600
-    #if ENABLED(HYBRID_THRESHOLD)
601
-      st.set_pwm_thrs(hyb_thrs);
602
-    #else
603
-      UNUSED(hyb_thrs);
604
-    #endif
580
+    TERN(HYBRID_THRESHOLD, st.set_pwm_thrs(hyb_thrs), UNUSED(hyb_thrs));
605
 
581
 
606
     st.GSTAT(); // Clear GSTAT
582
     st.GSTAT(); // Clear GSTAT
607
   }
583
   }
700
 }
676
 }
701
 
677
 
702
 void reset_trinamic_drivers() {
678
 void reset_trinamic_drivers() {
703
-  static constexpr bool stealthchop_by_axis[] = {
704
-    #if ENABLED(STEALTHCHOP_XY)
705
-      true
706
-    #else
707
-      false
708
-    #endif
709
-    ,
710
-    #if ENABLED(STEALTHCHOP_Z)
711
-      true
712
-    #else
713
-      false
714
-    #endif
715
-    ,
716
-    #if ENABLED(STEALTHCHOP_E)
717
-      true
718
-    #else
719
-      false
720
-    #endif
721
-  };
679
+  static constexpr bool stealthchop_by_axis[] = { ENABLED(STEALTHCHOP_XY), ENABLED(STEALTHCHOP_Z), ENABLED(STEALTHCHOP_E) };
722
 
680
 
723
   #if AXIS_IS_TMC(X)
681
   #if AXIS_IS_TMC(X)
724
     TMC_INIT(X, STEALTH_AXIS_XY);
682
     TMC_INIT(X, STEALTH_AXIS_XY);
770
   #endif
728
   #endif
771
 
729
 
772
   #if USE_SENSORLESS
730
   #if USE_SENSORLESS
773
-    TERN_(X_SENSORLESS,  stepperX.homing_threshold(X_STALL_SENSITIVITY));
774
-    TERN_(X2_SENSORLESS, stepperX2.homing_threshold(X2_STALL_SENSITIVITY));
775
-    TERN_(Y_SENSORLESS,  stepperY.homing_threshold(Y_STALL_SENSITIVITY));
776
-    TERN_(Y2_SENSORLESS, stepperY2.homing_threshold(Y2_STALL_SENSITIVITY));
777
-    TERN_(Z_SENSORLESS,  stepperZ.homing_threshold(Z_STALL_SENSITIVITY));
778
-    TERN_(Z2_SENSORLESS, stepperZ2.homing_threshold(Z2_STALL_SENSITIVITY));
779
-    TERN_(Z3_SENSORLESS, stepperZ3.homing_threshold(Z3_STALL_SENSITIVITY));
780
-    TERN_(Z4_SENSORLESS, stepperZ4.homing_threshold(Z4_STALL_SENSITIVITY));
731
+    #if X_SENSORLESS
732
+      stepperX.homing_threshold(X_STALL_SENSITIVITY);
733
+      #if AXIS_HAS_STALLGUARD(X2)
734
+        stepperX2.homing_threshold(CAT(TERN(X2_SENSORLESS, X2, X), _STALL_SENSITIVITY));
735
+      #endif
736
+    #endif
737
+    #if Y_SENSORLESS
738
+      stepperY.homing_threshold(Y_STALL_SENSITIVITY);
739
+      #if AXIS_HAS_STALLGUARD(Y2)
740
+        stepperY2.homing_threshold(CAT(TERN(Y2_SENSORLESS, Y2, Y), _STALL_SENSITIVITY));
741
+      #endif
742
+    #endif
743
+    #if Z_SENSORLESS
744
+      stepperZ.homing_threshold(Z_STALL_SENSITIVITY);
745
+      #if AXIS_HAS_STALLGUARD(Z2)
746
+        stepperZ2.homing_threshold(CAT(TERN(Z2_SENSORLESS, Z2, Z), _STALL_SENSITIVITY));
747
+      #endif
748
+      #if AXIS_HAS_STALLGUARD(Z3)
749
+        stepperZ3.homing_threshold(CAT(TERN(Z3_SENSORLESS, Z3, Z), _STALL_SENSITIVITY));
750
+      #endif
751
+      #if AXIS_HAS_STALLGUARD(Z4)
752
+        stepperZ4.homing_threshold(CAT(TERN(Z4_SENSORLESS, Z4, Z), _STALL_SENSITIVITY));
753
+      #endif
754
+    #endif
781
   #endif
755
   #endif
782
 
756
 
783
   #ifdef TMC_ADV
757
   #ifdef TMC_ADV

正在加载...
取消
保存