Move endstop debug to Endstops
This commit is contained in:
parent
a10451ceed
commit
2e20c53c9d
|
@ -30,8 +30,6 @@ void HAL_analog_pin_state(char buffer[], int8_t pin) {
|
||||||
sprintf(buffer, "Analog in =% 5d", analogRead(pin - analogInputToDigitalPin(0)));
|
sprintf(buffer, "Analog in =% 5d", analogRead(pin - analogInputToDigitalPin(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool endstop_monitor_flag = false;
|
|
||||||
|
|
||||||
#define NAME_FORMAT "%-35s" // one place to specify the format of all the sources of names
|
#define NAME_FORMAT "%-35s" // one place to specify the format of all the sources of names
|
||||||
// "-" left justify, "28" minimum width of name, pad with blanks
|
// "-" left justify, "28" minimum width of name, pad with blanks
|
||||||
|
|
||||||
|
|
|
@ -69,18 +69,6 @@ typedef enum {
|
||||||
TEMPUNIT_F
|
TEMPUNIT_F
|
||||||
} TempUnit;
|
} TempUnit;
|
||||||
|
|
||||||
enum EndstopEnum {
|
|
||||||
X_MIN,
|
|
||||||
Y_MIN,
|
|
||||||
Z_MIN,
|
|
||||||
Z_MIN_PROBE,
|
|
||||||
X_MAX,
|
|
||||||
Y_MAX,
|
|
||||||
Z_MAX,
|
|
||||||
Z2_MIN,
|
|
||||||
Z2_MAX
|
|
||||||
};
|
|
||||||
|
|
||||||
#if ENABLED(EMERGENCY_PARSER)
|
#if ENABLED(EMERGENCY_PARSER)
|
||||||
enum e_parser_state {
|
enum e_parser_state {
|
||||||
state_RESET,
|
state_RESET,
|
||||||
|
|
|
@ -245,9 +245,9 @@ void GcodeSuite::M43() {
|
||||||
|
|
||||||
// Enable or disable endstop monitoring
|
// Enable or disable endstop monitoring
|
||||||
if (parser.seen('E')) {
|
if (parser.seen('E')) {
|
||||||
endstop_monitor_flag = parser.value_bool();
|
endstops.monitor_flag = parser.value_bool();
|
||||||
SERIAL_PROTOCOLPGM("endstop monitor ");
|
SERIAL_PROTOCOLPGM("endstop monitor ");
|
||||||
serialprintPGM(endstop_monitor_flag ? PSTR("en") : PSTR("dis"));
|
serialprintPGM(endstops.monitor_flag ? PSTR("en") : PSTR("dis"));
|
||||||
SERIAL_PROTOCOLLNPGM("abled");
|
SERIAL_PROTOCOLLNPGM("abled");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,3 +450,90 @@ void Endstops::update() {
|
||||||
old_endstop_bits = current_endstop_bits;
|
old_endstop_bits = current_endstop_bits;
|
||||||
|
|
||||||
} // Endstops::update()
|
} // Endstops::update()
|
||||||
|
|
||||||
|
#if ENABLED(PINS_DEBUGGING)
|
||||||
|
|
||||||
|
bool Endstops::monitor_flag = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* monitors endstops & Z probe for changes
|
||||||
|
*
|
||||||
|
* If a change is detected then the LED is toggled and
|
||||||
|
* a message is sent out the serial port
|
||||||
|
*
|
||||||
|
* Yes, we could miss a rapid back & forth change but
|
||||||
|
* that won't matter because this is all manual.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void Endstops::monitor() {
|
||||||
|
|
||||||
|
static uint16_t old_endstop_bits_local = 0;
|
||||||
|
static uint8_t local_LED_status = 0;
|
||||||
|
uint16_t current_endstop_bits_local = 0;
|
||||||
|
|
||||||
|
#if HAS_X_MIN
|
||||||
|
if (READ(X_MIN_PIN)) SBI(current_endstop_bits_local, X_MIN);
|
||||||
|
#endif
|
||||||
|
#if HAS_X_MAX
|
||||||
|
if (READ(X_MAX_PIN)) SBI(current_endstop_bits_local, X_MAX);
|
||||||
|
#endif
|
||||||
|
#if HAS_Y_MIN
|
||||||
|
if (READ(Y_MIN_PIN)) SBI(current_endstop_bits_local, Y_MIN);
|
||||||
|
#endif
|
||||||
|
#if HAS_Y_MAX
|
||||||
|
if (READ(Y_MAX_PIN)) SBI(current_endstop_bits_local, Y_MAX);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MIN
|
||||||
|
if (READ(Z_MIN_PIN)) SBI(current_endstop_bits_local, Z_MIN);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MAX
|
||||||
|
if (READ(Z_MAX_PIN)) SBI(current_endstop_bits_local, Z_MAX);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MIN_PROBE_PIN
|
||||||
|
if (READ(Z_MIN_PROBE_PIN)) SBI(current_endstop_bits_local, Z_MIN_PROBE);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z2_MIN
|
||||||
|
if (READ(Z2_MIN_PIN)) SBI(current_endstop_bits_local, Z2_MIN);
|
||||||
|
#endif
|
||||||
|
#if HAS_Z2_MAX
|
||||||
|
if (READ(Z2_MAX_PIN)) SBI(current_endstop_bits_local, Z2_MAX);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint16_t endstop_change = current_endstop_bits_local ^ old_endstop_bits_local;
|
||||||
|
|
||||||
|
if (endstop_change) {
|
||||||
|
#if HAS_X_MIN
|
||||||
|
if (TEST(endstop_change, X_MIN)) SERIAL_PROTOCOLPAIR(" X_MIN:", !!TEST(current_endstop_bits_local, X_MIN));
|
||||||
|
#endif
|
||||||
|
#if HAS_X_MAX
|
||||||
|
if (TEST(endstop_change, X_MAX)) SERIAL_PROTOCOLPAIR(" X_MAX:", !!TEST(current_endstop_bits_local, X_MAX));
|
||||||
|
#endif
|
||||||
|
#if HAS_Y_MIN
|
||||||
|
if (TEST(endstop_change, Y_MIN)) SERIAL_PROTOCOLPAIR(" Y_MIN:", !!TEST(current_endstop_bits_local, Y_MIN));
|
||||||
|
#endif
|
||||||
|
#if HAS_Y_MAX
|
||||||
|
if (TEST(endstop_change, Y_MAX)) SERIAL_PROTOCOLPAIR(" Y_MAX:", !!TEST(current_endstop_bits_local, Y_MAX));
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MIN
|
||||||
|
if (TEST(endstop_change, Z_MIN)) SERIAL_PROTOCOLPAIR(" Z_MIN:", !!TEST(current_endstop_bits_local, Z_MIN));
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MAX
|
||||||
|
if (TEST(endstop_change, Z_MAX)) SERIAL_PROTOCOLPAIR(" Z_MAX:", !!TEST(current_endstop_bits_local, Z_MAX));
|
||||||
|
#endif
|
||||||
|
#if HAS_Z_MIN_PROBE_PIN
|
||||||
|
if (TEST(endstop_change, Z_MIN_PROBE)) SERIAL_PROTOCOLPAIR(" PROBE:", !!TEST(current_endstop_bits_local, Z_MIN_PROBE));
|
||||||
|
#endif
|
||||||
|
#if HAS_Z2_MIN
|
||||||
|
if (TEST(endstop_change, Z2_MIN)) SERIAL_PROTOCOLPAIR(" Z2_MIN:", !!TEST(current_endstop_bits_local, Z2_MIN));
|
||||||
|
#endif
|
||||||
|
#if HAS_Z2_MAX
|
||||||
|
if (TEST(endstop_change, Z2_MAX)) SERIAL_PROTOCOLPAIR(" Z2_MAX:", !!TEST(current_endstop_bits_local, Z2_MAX));
|
||||||
|
#endif
|
||||||
|
SERIAL_PROTOCOLPGM("\n\n");
|
||||||
|
analogWrite(LED_PIN, local_LED_status);
|
||||||
|
local_LED_status ^= 255;
|
||||||
|
old_endstop_bits_local = current_endstop_bits_local;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // PINS_DEBUGGING
|
||||||
|
|
|
@ -24,10 +24,23 @@
|
||||||
* endstops.h - manages endstops
|
* endstops.h - manages endstops
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ENDSTOPS_H
|
#ifndef __ENDSTOPS_H__
|
||||||
#define ENDSTOPS_H
|
#define __ENDSTOPS_H__
|
||||||
|
|
||||||
#include "../core/enum.h"
|
#include "../inc/MarlinConfig.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
enum EndstopEnum {
|
||||||
|
X_MIN,
|
||||||
|
Y_MIN,
|
||||||
|
Z_MIN,
|
||||||
|
Z_MIN_PROBE,
|
||||||
|
X_MAX,
|
||||||
|
Y_MAX,
|
||||||
|
Z_MAX,
|
||||||
|
Z2_MIN,
|
||||||
|
Z2_MAX
|
||||||
|
};
|
||||||
|
|
||||||
class Endstops {
|
class Endstops {
|
||||||
|
|
||||||
|
@ -37,11 +50,12 @@ class Endstops {
|
||||||
static volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
|
static volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value
|
||||||
|
|
||||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||||
static uint16_t
|
typedef uint16_t esbits_t;
|
||||||
#else
|
#else
|
||||||
static byte
|
typedef byte esbits_t;
|
||||||
#endif
|
#endif
|
||||||
current_endstop_bits, old_endstop_bits;
|
|
||||||
|
static esbits_t current_endstop_bits, old_endstop_bits;
|
||||||
|
|
||||||
Endstops() {};
|
Endstops() {};
|
||||||
|
|
||||||
|
@ -83,6 +97,19 @@ class Endstops {
|
||||||
static void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; }
|
static void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Debugging of endstops
|
||||||
|
#if ENABLED(PINS_DEBUGGING)
|
||||||
|
static bool monitor_flag;
|
||||||
|
static void monitor();
|
||||||
|
FORCE_INLINE static void run_monitor() {
|
||||||
|
if (!monitor_flag) return;
|
||||||
|
static uint8_t monitor_count = 16; // offset this check from the others
|
||||||
|
monitor_count += _BV(1); // 15 Hz
|
||||||
|
monitor_count &= 0x7F;
|
||||||
|
if (!monitor_count) monitor(); // report changes in endstop status
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||||
|
@ -99,4 +126,4 @@ extern Endstops endstops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif // ENDSTOPS_H
|
#endif // __ENDSTOPS_H__
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
|
#if ENABLED(ENDSTOP_INTERRUPTS_FEATURE) || ENABLED(PINS_DEBUGGING)
|
||||||
#include "endstops.h"
|
#include "endstops.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1561,87 +1561,6 @@ void Temperature::set_current_temp_raw() {
|
||||||
temp_meas_ready = true;
|
temp_meas_ready = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(PINS_DEBUGGING)
|
|
||||||
/**
|
|
||||||
* monitors endstops & Z probe for changes
|
|
||||||
*
|
|
||||||
* If a change is detected then the LED is toggled and
|
|
||||||
* a message is sent out the serial port
|
|
||||||
*
|
|
||||||
* Yes, we could miss a rapid back & forth change but
|
|
||||||
* that won't matter because this is all manual.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void endstop_monitor() {
|
|
||||||
static uint16_t old_endstop_bits_local = 0;
|
|
||||||
static uint8_t local_LED_status = 0;
|
|
||||||
uint16_t current_endstop_bits_local = 0;
|
|
||||||
#if HAS_X_MIN
|
|
||||||
if (READ(X_MIN_PIN)) SBI(current_endstop_bits_local, X_MIN);
|
|
||||||
#endif
|
|
||||||
#if HAS_X_MAX
|
|
||||||
if (READ(X_MAX_PIN)) SBI(current_endstop_bits_local, X_MAX);
|
|
||||||
#endif
|
|
||||||
#if HAS_Y_MIN
|
|
||||||
if (READ(Y_MIN_PIN)) SBI(current_endstop_bits_local, Y_MIN);
|
|
||||||
#endif
|
|
||||||
#if HAS_Y_MAX
|
|
||||||
if (READ(Y_MAX_PIN)) SBI(current_endstop_bits_local, Y_MAX);
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MIN
|
|
||||||
if (READ(Z_MIN_PIN)) SBI(current_endstop_bits_local, Z_MIN);
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MAX
|
|
||||||
if (READ(Z_MAX_PIN)) SBI(current_endstop_bits_local, Z_MAX);
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MIN_PROBE_PIN
|
|
||||||
if (READ(Z_MIN_PROBE_PIN)) SBI(current_endstop_bits_local, Z_MIN_PROBE);
|
|
||||||
#endif
|
|
||||||
#if HAS_Z2_MIN
|
|
||||||
if (READ(Z2_MIN_PIN)) SBI(current_endstop_bits_local, Z2_MIN);
|
|
||||||
#endif
|
|
||||||
#if HAS_Z2_MAX
|
|
||||||
if (READ(Z2_MAX_PIN)) SBI(current_endstop_bits_local, Z2_MAX);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint16_t endstop_change = current_endstop_bits_local ^ old_endstop_bits_local;
|
|
||||||
|
|
||||||
if (endstop_change) {
|
|
||||||
#if HAS_X_MIN
|
|
||||||
if (TEST(endstop_change, X_MIN)) SERIAL_PROTOCOLPAIR(" X_MIN:", !!TEST(current_endstop_bits_local, X_MIN));
|
|
||||||
#endif
|
|
||||||
#if HAS_X_MAX
|
|
||||||
if (TEST(endstop_change, X_MAX)) SERIAL_PROTOCOLPAIR(" X_MAX:", !!TEST(current_endstop_bits_local, X_MAX));
|
|
||||||
#endif
|
|
||||||
#if HAS_Y_MIN
|
|
||||||
if (TEST(endstop_change, Y_MIN)) SERIAL_PROTOCOLPAIR(" Y_MIN:", !!TEST(current_endstop_bits_local, Y_MIN));
|
|
||||||
#endif
|
|
||||||
#if HAS_Y_MAX
|
|
||||||
if (TEST(endstop_change, Y_MAX)) SERIAL_PROTOCOLPAIR(" Y_MAX:", !!TEST(current_endstop_bits_local, Y_MAX));
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MIN
|
|
||||||
if (TEST(endstop_change, Z_MIN)) SERIAL_PROTOCOLPAIR(" Z_MIN:", !!TEST(current_endstop_bits_local, Z_MIN));
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MAX
|
|
||||||
if (TEST(endstop_change, Z_MAX)) SERIAL_PROTOCOLPAIR(" Z_MAX:", !!TEST(current_endstop_bits_local, Z_MAX));
|
|
||||||
#endif
|
|
||||||
#if HAS_Z_MIN_PROBE_PIN
|
|
||||||
if (TEST(endstop_change, Z_MIN_PROBE)) SERIAL_PROTOCOLPAIR(" PROBE:", !!TEST(current_endstop_bits_local, Z_MIN_PROBE));
|
|
||||||
#endif
|
|
||||||
#if HAS_Z2_MIN
|
|
||||||
if (TEST(endstop_change, Z2_MIN)) SERIAL_PROTOCOLPAIR(" Z2_MIN:", !!TEST(current_endstop_bits_local, Z2_MIN));
|
|
||||||
#endif
|
|
||||||
#if HAS_Z2_MAX
|
|
||||||
if (TEST(endstop_change, Z2_MAX)) SERIAL_PROTOCOLPAIR(" Z2_MAX:", !!TEST(current_endstop_bits_local, Z2_MAX));
|
|
||||||
#endif
|
|
||||||
SERIAL_PROTOCOLPGM("\n\n");
|
|
||||||
analogWrite(LED_PIN, local_LED_status);
|
|
||||||
local_LED_status ^= 255;
|
|
||||||
old_endstop_bits_local = current_endstop_bits_local;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // PINS_DEBUGGING
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Timer 0 is shared with millies so don't change the prescaler.
|
* Timer 0 is shared with millies so don't change the prescaler.
|
||||||
*
|
*
|
||||||
|
@ -2157,14 +2076,7 @@ void Temperature::isr() {
|
||||||
#endif // BABYSTEPPING
|
#endif // BABYSTEPPING
|
||||||
|
|
||||||
#if ENABLED(PINS_DEBUGGING)
|
#if ENABLED(PINS_DEBUGGING)
|
||||||
extern bool endstop_monitor_flag;
|
endstops.run_monitor(); // report changes in endstop status
|
||||||
// run the endstop monitor at 15Hz
|
|
||||||
static uint8_t endstop_monitor_count = 16; // offset this check from the others
|
|
||||||
if (endstop_monitor_flag) {
|
|
||||||
endstop_monitor_count += _BV(1); // 15 Hz
|
|
||||||
endstop_monitor_count &= 0x7F;
|
|
||||||
if (!endstop_monitor_count) endstop_monitor(); // report changes in endstop status
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
|
#if ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool endstop_monitor_flag = false;
|
|
||||||
|
|
||||||
#define MAX_NAME_LENGTH 35 // one place to specify the format of all the sources of names
|
#define MAX_NAME_LENGTH 35 // one place to specify the format of all the sources of names
|
||||||
// "-" left justify, "35" minimum width of name, pad with blanks
|
// "-" left justify, "35" minimum width of name, pad with blanks
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue