Bläddra i källkod

Fix: M112 calling kill from interrupt (#9923)

Fix #9906
Scott Lahteine 6 år sedan
förälder
incheckning
649f375494
Inget konto är kopplat till bidragsgivarens mejladress

+ 3
- 1
Marlin/src/HAL/HAL_AVR/MarlinSerial.cpp Visa fil

@@ -81,6 +81,8 @@
81 81
 
82 82
   #if ENABLED(EMERGENCY_PARSER)
83 83
 
84
+    bool killed_by_M112; // = false
85
+
84 86
     #include "../../module/stepper.h"
85 87
 
86 88
     // Currently looking for: M108, M112, M410
@@ -155,7 +157,7 @@
155 157
                 wait_for_user = wait_for_heatup = false;
156 158
                 break;
157 159
               case state_M112:
158
-                kill(PSTR(MSG_KILLED));
160
+                killed_by_M112 = true;
159 161
                 break;
160 162
               case state_M410:
161 163
                 quickstop_stepper();

+ 4
- 0
Marlin/src/HAL/HAL_AVR/MarlinSerial.h Visa fil

@@ -94,6 +94,10 @@
94 94
     extern ring_buffer_pos_t rx_max_enqueued;
95 95
   #endif
96 96
 
97
+  #if ENABLED(EMERGENCY_PARSER)
98
+    extern bool killed_by_M112;
99
+  #endif
100
+
97 101
   class MarlinSerial { //: public Stream
98 102
 
99 103
     public:

+ 3
- 1
Marlin/src/HAL/HAL_DUE/MarlinSerial_Due.cpp Visa fil

@@ -108,6 +108,8 @@
108 108
 
109 109
   #if ENABLED(EMERGENCY_PARSER)
110 110
 
111
+    bool killed_by_M112; // = false
112
+
111 113
     // Currently looking for: M108, M112, M410
112 114
     // If you alter the parser please don't forget to update the capabilities in Conditionals_post.h
113 115
 
@@ -180,7 +182,7 @@
180 182
                 wait_for_user = wait_for_heatup = false;
181 183
                 break;
182 184
               case state_M112:
183
-                kill(PSTR(MSG_KILLED));
185
+                killed_by_M112 = true;
184 186
                 break;
185 187
               case state_M410:
186 188
                 quickstop_stepper();

+ 4
- 0
Marlin/src/HAL/HAL_DUE/MarlinSerial_Due.h Visa fil

@@ -74,6 +74,10 @@
74 74
   extern ring_buffer_pos_t rx_max_enqueued;
75 75
 #endif
76 76
 
77
+#if ENABLED(EMERGENCY_PARSER)
78
+  extern bool killed_by_M112;
79
+#endif
80
+
77 81
 class MarlinSerial {
78 82
 
79 83
 public:

+ 4
- 0
Marlin/src/module/temperature.cpp Visa fil

@@ -750,6 +750,10 @@ void Temperature::manage_heater() {
750 750
     static bool last_pause_state;
751 751
   #endif
752 752
 
753
+  #if ENABLED(EMERGENCY_PARSER)
754
+    if (killed_by_M112) kill(PSTR(MSG_KILLED));
755
+  #endif
756
+
753 757
   if (!temp_meas_ready) return;
754 758
 
755 759
   updateTemperaturesFromRawValues(); // also resets the watchdog

Laddar…
Avbryt
Spara