1
0
mirror of https://github.com/MarlinFirmware/Marlin.git synced 2024-11-27 22:08:02 +00:00

Fix: M112 calling kill from interrupt (#9922)

Fix #9906
This commit is contained in:
Scott Lahteine 2018-03-03 23:13:53 -06:00 committed by GitHub
parent 7450b7c36e
commit b6fa55aa37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 8 deletions

View File

@ -80,6 +80,8 @@
#if ENABLED(EMERGENCY_PARSER) #if ENABLED(EMERGENCY_PARSER)
bool killed_by_M112; // = false
#include "stepper.h" #include "stepper.h"
#include "language.h" #include "language.h"
@ -155,7 +157,7 @@
wait_for_user = wait_for_heatup = false; wait_for_user = wait_for_heatup = false;
break; break;
case state_M112: case state_M112:
kill(PSTR(MSG_KILLED)); killed_by_M112 = true;
break; break;
case state_M410: case state_M410:
quickstop_stepper(); quickstop_stepper();

View File

@ -21,13 +21,12 @@
*/ */
/** /**
MarlinSerial.h - Hardware serial library for Wiring * MarlinSerial.h - Hardware serial library for Wiring
Copyright (c) 2006 Nicholas Zambetti. All right reserved. * Copyright (c) 2006 Nicholas Zambetti. All right reserved.
*
Modified 28 September 2010 by Mark Sproul * Modified 28 September 2010 by Mark Sproul
Modified 14 February 2016 by Andreas Hardtung (added tx buffer) * Modified 14 February 2016 by Andreas Hardtung (added tx buffer)
*/
*/
#ifndef MARLINSERIAL_H #ifndef MARLINSERIAL_H
#define MARLINSERIAL_H #define MARLINSERIAL_H
@ -102,6 +101,10 @@
extern ring_buffer_pos_t rx_max_enqueued; extern ring_buffer_pos_t rx_max_enqueued;
#endif #endif
#if ENABLED(EMERGENCY_PARSER)
extern bool killed_by_M112;
#endif
class MarlinSerial { //: public Stream class MarlinSerial { //: public Stream
public: public:

View File

@ -744,6 +744,10 @@ void Temperature::manage_heater() {
static bool last_pause_state; static bool last_pause_state;
#endif #endif
#if ENABLED(EMERGENCY_PARSER)
if (killed_by_M112) kill(PSTR(MSG_KILLED));
#endif
if (!temp_meas_ready) return; if (!temp_meas_ready) return;
updateTemperaturesFromRawValues(); // also resets the watchdog updateTemperaturesFromRawValues(); // also resets the watchdog