소스 검색

Merge pull request #7448 from thinkyhead/bf1_delta_fixes

Prevent damage if DELTA_HEIGHT is set badly
Scott Lahteine 7 년 전
부모
커밋
06541ec885
4개의 변경된 파일447개의 추가작업 그리고 359개의 파일을 삭제
  1. 413
    348
      Marlin/Marlin_main.cpp
  2. 5
    5
      Marlin/endstops.cpp
  3. 16
    1
      Marlin/language_en.h
  4. 13
    5
      Marlin/ultralcd.cpp

+ 413
- 348
Marlin/Marlin_main.cpp
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


+ 5
- 5
Marlin/endstops.cpp 파일 보기

247
   #define _ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX
247
   #define _ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX
248
   #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN
248
   #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN
249
   #define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING
249
   #define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING
250
-  #define _ENDSTOP_HIT(AXIS) SBI(endstop_hit_bits, _ENDSTOP(AXIS, MIN))
250
+  #define _ENDSTOP_HIT(AXIS, MINMAX) SBI(endstop_hit_bits, _ENDSTOP(AXIS, MINMAX))
251
 
251
 
252
   // UPDATE_ENDSTOP_BIT: set the current endstop bits for an endstop to its status
252
   // UPDATE_ENDSTOP_BIT: set the current endstop bits for an endstop to its status
253
   #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT(current_endstop_bits, _ENDSTOP(AXIS, MINMAX), (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)))
253
   #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT(current_endstop_bits, _ENDSTOP(AXIS, MINMAX), (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)))
257
   #define UPDATE_ENDSTOP(AXIS,MINMAX) do { \
257
   #define UPDATE_ENDSTOP(AXIS,MINMAX) do { \
258
       UPDATE_ENDSTOP_BIT(AXIS, MINMAX); \
258
       UPDATE_ENDSTOP_BIT(AXIS, MINMAX); \
259
       if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX)) && stepper.current_block->steps[_AXIS(AXIS)] > 0) { \
259
       if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX)) && stepper.current_block->steps[_AXIS(AXIS)] > 0) { \
260
-        _ENDSTOP_HIT(AXIS); \
260
+        _ENDSTOP_HIT(AXIS, MINMAX); \
261
         stepper.endstop_triggered(_AXIS(AXIS)); \
261
         stepper.endstop_triggered(_AXIS(AXIS)); \
262
       } \
262
       } \
263
     } while(0)
263
     } while(0)
267
     if (G38_move) {
267
     if (G38_move) {
268
       UPDATE_ENDSTOP_BIT(Z, MIN_PROBE);
268
       UPDATE_ENDSTOP_BIT(Z, MIN_PROBE);
269
       if (TEST_ENDSTOP(_ENDSTOP(Z, MIN_PROBE))) {
269
       if (TEST_ENDSTOP(_ENDSTOP(Z, MIN_PROBE))) {
270
-        if      (stepper.current_block->steps[_AXIS(X)] > 0) { _ENDSTOP_HIT(X); stepper.endstop_triggered(_AXIS(X)); }
271
-        else if (stepper.current_block->steps[_AXIS(Y)] > 0) { _ENDSTOP_HIT(Y); stepper.endstop_triggered(_AXIS(Y)); }
272
-        else if (stepper.current_block->steps[_AXIS(Z)] > 0) { _ENDSTOP_HIT(Z); stepper.endstop_triggered(_AXIS(Z)); }
270
+        if      (stepper.current_block->steps[_AXIS(X)] > 0) { _ENDSTOP_HIT(X, MIN); stepper.endstop_triggered(_AXIS(X)); }
271
+        else if (stepper.current_block->steps[_AXIS(Y)] > 0) { _ENDSTOP_HIT(Y, MIN); stepper.endstop_triggered(_AXIS(Y)); }
272
+        else if (stepper.current_block->steps[_AXIS(Z)] > 0) { _ENDSTOP_HIT(Z, MIN); stepper.endstop_triggered(_AXIS(Z)); }
273
         G38_endstop_hit = true;
273
         G38_endstop_hit = true;
274
       }
274
       }
275
     }
275
     }

+ 16
- 1
Marlin/language_en.h 파일 보기

717
   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center")
717
   #define MSG_DELTA_CALIBRATE_CENTER          _UxGT("Calibrate Center")
718
 #endif
718
 #endif
719
 #ifndef MSG_DELTA_SETTINGS
719
 #ifndef MSG_DELTA_SETTINGS
720
-  #define MSG_DELTA_SETTINGS                  _UxGT("Show Delta Settings")
720
+  #define MSG_DELTA_SETTINGS                  _UxGT("Delta Settings")
721
 #endif
721
 #endif
722
 #ifndef MSG_DELTA_AUTO_CALIBRATE
722
 #ifndef MSG_DELTA_AUTO_CALIBRATE
723
   #define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Auto Calibration")
723
   #define MSG_DELTA_AUTO_CALIBRATE            _UxGT("Auto Calibration")
725
 #ifndef MSG_DELTA_HEIGHT_CALIBRATE
725
 #ifndef MSG_DELTA_HEIGHT_CALIBRATE
726
   #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Set Delta Height")
726
   #define MSG_DELTA_HEIGHT_CALIBRATE          _UxGT("Set Delta Height")
727
 #endif
727
 #endif
728
+#ifndef MSG_DELTA_DIAG_ROG
729
+  #define MSG_DELTA_DIAG_ROG                  _UxGT("Diag Rod")
730
+#endif
731
+#ifndef MSG_DELTA_HEIGHT
732
+  #define MSG_DELTA_HEIGHT                    _UxGT("Height")
733
+#endif
734
+#ifndef MSG_DELTA_RADIUS
735
+  #define MSG_DELTA_RADIUS                    _UxGT("Radius")
736
+#endif
728
 #ifndef MSG_INFO_MENU
737
 #ifndef MSG_INFO_MENU
729
   #define MSG_INFO_MENU                       _UxGT("About Printer")
738
   #define MSG_INFO_MENU                       _UxGT("About Printer")
730
 #endif
739
 #endif
840
 #ifndef MSG_FILAMENT_CHANGE_NOZZLE
849
 #ifndef MSG_FILAMENT_CHANGE_NOZZLE
841
   #define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozzle: ")
850
   #define MSG_FILAMENT_CHANGE_NOZZLE          _UxGT("  Nozzle: ")
842
 #endif
851
 #endif
852
+#ifndef MSG_ERR_HOMING_FAILED
853
+  #define MSG_ERR_HOMING_FAILED               _UxGT("Homing failed")
854
+#endif
855
+#ifndef MSG_ERR_PROBING_FAILED
856
+  #define MSG_ERR_PROBING_FAILED              _UxGT("Probing failed")
857
+#endif
843
 
858
 
844
 //
859
 //
845
 // Filament Change screens show up to 3 lines on a 4-line display
860
 // Filament Change screens show up to 3 lines on a 4-line display

+ 13
- 5
Marlin/ultralcd.cpp 파일 보기

2537
     void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); }
2537
     void _goto_tower_z() { _man_probe_pt(cos(RADIANS( 90)) * delta_calibration_radius, sin(RADIANS( 90)) * delta_calibration_radius); }
2538
     void _goto_center()  { _man_probe_pt(0,0); }
2538
     void _goto_center()  { _man_probe_pt(0,0); }
2539
 
2539
 
2540
-    void lcd_delta_G33_settings() {
2540
+    static float _delta_height = DELTA_HEIGHT;
2541
+    void _lcd_set_delta_height() {
2542
+      home_offset[Z_AXIS] = _delta_height - DELTA_HEIGHT;
2543
+      update_software_endstops(Z_AXIS);
2544
+    }
2545
+
2546
+    void lcd_delta_settings() {
2541
       START_MENU();
2547
       START_MENU();
2542
       MENU_BACK(MSG_DELTA_CALIBRATE);
2548
       MENU_BACK(MSG_DELTA_CALIBRATE);
2543
-      float delta_height = DELTA_HEIGHT + home_offset[Z_AXIS], Tz = 0.00;
2544
-      MENU_ITEM_EDIT(float52, "Height", &delta_height, delta_height, delta_height);
2549
+      float Tz = 0.00;
2550
+      MENU_ITEM_EDIT(float52, MSG_DELTA_DIAG_ROG, &delta_diagonal_rod, DELTA_DIAGONAL_ROD - 5.0, DELTA_DIAGONAL_ROD + 5.0);
2551
+      _delta_height = DELTA_HEIGHT + home_offset[Z_AXIS];
2552
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float52, MSG_DELTA_HEIGHT, &_delta_height, _delta_height - 10.0, _delta_height + 10.0, _lcd_set_delta_height);
2545
       MENU_ITEM_EDIT(float43, "Ex", &endstop_adj[A_AXIS], -5.0, 5.0);
2553
       MENU_ITEM_EDIT(float43, "Ex", &endstop_adj[A_AXIS], -5.0, 5.0);
2546
       MENU_ITEM_EDIT(float43, "Ey", &endstop_adj[B_AXIS], -5.0, 5.0);
2554
       MENU_ITEM_EDIT(float43, "Ey", &endstop_adj[B_AXIS], -5.0, 5.0);
2547
       MENU_ITEM_EDIT(float43, "Ez", &endstop_adj[C_AXIS], -5.0, 5.0);
2555
       MENU_ITEM_EDIT(float43, "Ez", &endstop_adj[C_AXIS], -5.0, 5.0);
2548
-      MENU_ITEM_EDIT(float52, "Radius", &delta_radius, DELTA_RADIUS - 5.0, DELTA_RADIUS + 5.0);
2556
+      MENU_ITEM_EDIT(float52, MSG_DELTA_RADIUS, &delta_radius, DELTA_RADIUS - 5.0, DELTA_RADIUS + 5.0);
2549
       MENU_ITEM_EDIT(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0);
2557
       MENU_ITEM_EDIT(float43, "Tx", &delta_tower_angle_trim[A_AXIS], -5.0, 5.0);
2550
       MENU_ITEM_EDIT(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0);
2558
       MENU_ITEM_EDIT(float43, "Ty", &delta_tower_angle_trim[B_AXIS], -5.0, 5.0);
2551
       MENU_ITEM_EDIT(float43, "Tz", &Tz, -5.0, 5.0);
2559
       MENU_ITEM_EDIT(float43, "Tz", &Tz, -5.0, 5.0);
2556
       START_MENU();
2564
       START_MENU();
2557
       MENU_BACK(MSG_MAIN);
2565
       MENU_BACK(MSG_MAIN);
2558
       #if ENABLED(DELTA_AUTO_CALIBRATION)
2566
       #if ENABLED(DELTA_AUTO_CALIBRATION)
2559
-        MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_G33_settings);
2567
+        MENU_ITEM(submenu, MSG_DELTA_SETTINGS, lcd_delta_settings);
2560
         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
2568
         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
2561
         MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1"));
2569
         MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1"));
2562
         #if ENABLED(EEPROM_SETTINGS)
2570
         #if ENABLED(EEPROM_SETTINGS)

Loading…
취소
저장