Fix G90, G91, M82, M83 rel/abs modes (#15218)
This commit is contained in:
@@ -283,12 +283,31 @@
|
||||
#include "../feature/I2CPositionEncoder.h"
|
||||
#endif
|
||||
|
||||
enum AxisRelative : uint8_t { REL_X, REL_Y, REL_Z, REL_E, E_MODE_ABS, E_MODE_REL };
|
||||
|
||||
class GcodeSuite {
|
||||
public:
|
||||
|
||||
GcodeSuite() {}
|
||||
static uint8_t axis_relative;
|
||||
|
||||
static bool axis_relative_modes[];
|
||||
static inline bool axis_is_relative(const AxisEnum a) {
|
||||
if (a == E_AXIS) {
|
||||
if (TEST(axis_relative, E_MODE_REL)) return true;
|
||||
if (TEST(axis_relative, E_MODE_ABS)) return false;
|
||||
}
|
||||
return TEST(axis_relative, a);
|
||||
}
|
||||
static inline void set_relative_mode(const bool rel) {
|
||||
axis_relative = rel ? _BV(REL_X) | _BV(REL_Y) | _BV(REL_Z) | _BV(REL_E) : 0;
|
||||
}
|
||||
static inline void set_e_relative() {
|
||||
CBI(axis_relative, E_MODE_ABS);
|
||||
SBI(axis_relative, E_MODE_REL);
|
||||
}
|
||||
static inline void set_e_absolute() {
|
||||
CBI(axis_relative, E_MODE_REL);
|
||||
SBI(axis_relative, E_MODE_ABS);
|
||||
}
|
||||
|
||||
#if ENABLED(CNC_WORKSPACE_PLANES)
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user