Browse Source

Update current position in M852

Scott Lahteine 7 years ago
parent
commit
117fc872a7
1 changed files with 32 additions and 15 deletions
  1. 32
    15
      Marlin/src/gcode/calibrate/M852.cpp

+ 32
- 15
Marlin/src/gcode/calibrate/M852.cpp View File

36
  *  K[yz_factor] - New YZ skew factor
36
  *  K[yz_factor] - New YZ skew factor
37
  */
37
  */
38
 void GcodeSuite::M852() {
38
 void GcodeSuite::M852() {
39
-  const bool ijk = parser.seen('I') || parser.seen('S')
39
+  uint8_t ijk = 0, badval = 0, setval = 0;
40
-    #if ENABLED(SKEW_CORRECTION_FOR_Z)
41
-      || parser.seen('J') || parser.seen('K')
42
-    #endif
43
-  ;
44
-  bool badval = false;
45
 
40
 
46
   if (parser.seen('I') || parser.seen('S')) {
41
   if (parser.seen('I') || parser.seen('S')) {
42
+    ++ijk;
47
     const float value = parser.value_linear_units();
43
     const float value = parser.value_linear_units();
48
-    if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX))
44
+    if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX)) {
49
-      planner.xy_skew_factor = value;
45
+      if (planner.xy_skew_factor != value) {
46
+        planner.xy_skew_factor = value;
47
+        ++setval;
48
+      }
49
+    }
50
     else
50
     else
51
-      badval = true;
51
+      ++badval;
52
   }
52
   }
53
 
53
 
54
   #if ENABLED(SKEW_CORRECTION_FOR_Z)
54
   #if ENABLED(SKEW_CORRECTION_FOR_Z)
55
 
55
 
56
     if (parser.seen('J')) {
56
     if (parser.seen('J')) {
57
+      ++ijk;
57
       const float value = parser.value_linear_units();
58
       const float value = parser.value_linear_units();
58
-      if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX))
59
+      if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX)) {
59
-        planner.xz_skew_factor = value;
60
+        if (planner.xz_skew_factor != value) {
61
+          planner.xz_skew_factor = value;
62
+          ++setval;
63
+        }
64
+      }
60
       else
65
       else
61
-        badval = true;
66
+        ++badval;
62
     }
67
     }
63
 
68
 
64
     if (parser.seen('K')) {
69
     if (parser.seen('K')) {
70
+      ++ijk;
65
       const float value = parser.value_linear_units();
71
       const float value = parser.value_linear_units();
66
-      if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX))
72
+      if (WITHIN(value, SKEW_FACTOR_MIN, SKEW_FACTOR_MAX)) {
67
-        planner.yz_skew_factor = value;
73
+        if (planner.yz_skew_factor != value) {
74
+          planner.yz_skew_factor = value;
75
+          ++setval;
76
+        }
77
+      }
68
       else
78
       else
69
-        badval = true;
79
+        ++badval;
70
     }
80
     }
71
 
81
 
72
   #endif
82
   #endif
74
   if (badval)
84
   if (badval)
75
     SERIAL_ECHOLNPGM(MSG_SKEW_MIN " " STRINGIFY(SKEW_FACTOR_MIN) " " MSG_SKEW_MAX " " STRINGIFY(SKEW_FACTOR_MAX));
85
     SERIAL_ECHOLNPGM(MSG_SKEW_MIN " " STRINGIFY(SKEW_FACTOR_MIN) " " MSG_SKEW_MAX " " STRINGIFY(SKEW_FACTOR_MAX));
76
 
86
 
87
+  // When skew is changed the current position changes
88
+  if (setval) {
89
+    set_current_from_steppers_for_axis(ALL_AXES);
90
+    SYNC_PLAN_POSITION_KINEMATIC();
91
+    report_current_position();
92
+  }
93
+
77
   if (!ijk) {
94
   if (!ijk) {
78
     SERIAL_ECHO_START();
95
     SERIAL_ECHO_START();
79
     SERIAL_ECHOPAIR(MSG_SKEW_FACTOR " XY: ", planner.xy_skew_factor);
96
     SERIAL_ECHOPAIR(MSG_SKEW_FACTOR " XY: ", planner.xy_skew_factor);

Loading…
Cancel
Save