Followup to hotend_offset[Z] patch

This commit is contained in:
Scott Lahteine
2018-08-24 21:26:29 -05:00
parent e2b8fc4f17
commit d1c9517903
9 changed files with 25 additions and 39 deletions

View File

@ -126,7 +126,7 @@ typedef struct SettingsDataStruct {
float home_offset[XYZ]; // M206 XYZ
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
float hotend_offset[XYZ][HOTENDS - 1]; // M218 XYZ
#endif
@ -433,7 +433,7 @@ void MarlinSettings::postprocess() {
#endif
EEPROM_WRITE(home_offset);
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
// Skip hotend 0 which must be 0
for (uint8_t e = 1; e < HOTENDS; e++)
LOOP_XYZ(i) EEPROM_WRITE(hotend_offset[i][e]);
@ -1038,7 +1038,7 @@ void MarlinSettings::postprocess() {
// Hotend Offsets, if any
//
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
// Skip hotend 0 which must be 0
for (uint8_t e = 1; e < HOTENDS; e++)
LOOP_XYZ(i) EEPROM_READ(hotend_offset[i][e]);
@ -1749,16 +1749,8 @@ void MarlinSettings::reset(PORTARG_SOLO) {
ZERO(home_offset);
#endif
#if HOTENDS > 1
constexpr float tmp4[XYZ][HOTENDS] = {
HOTEND_OFFSET_X,
HOTEND_OFFSET_Y
#ifdef HOTEND_OFFSET_Z
, HOTEND_OFFSET_Z
#else
, { 0 }
#endif
};
#if HAS_HOTEND_OFFSET
constexpr float tmp4[XYZ][HOTENDS] = { HOTEND_OFFSET_X, HOTEND_OFFSET_Y, HOTEND_OFFSET_Z };
static_assert(
tmp4[X_AXIS][0] == 0 && tmp4[Y_AXIS][0] == 0 && tmp4[Z_AXIS][0] == 0,
"Offsets for the first hotend must be 0.0."
@ -2163,7 +2155,7 @@ void MarlinSettings::reset(PORTARG_SOLO) {
SERIAL_ECHOLNPAIR_P(port, " Z", LINEAR_UNIT(home_offset[Z_AXIS]));
#endif
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
if (!forReplay) {
CONFIG_ECHO_START;
SERIAL_ECHOLNPGM_P(port, "Hotend offsets:");
@ -2173,9 +2165,7 @@ void MarlinSettings::reset(PORTARG_SOLO) {
SERIAL_ECHOPAIR_P(port, " M218 T", (int)e);
SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
#if HAS_HOTEND_OFFSET_Z
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
#endif
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
SERIAL_EOL_P(port);
}
#endif

View File

@ -102,7 +102,7 @@ void recalc_delta_settings() {
}while(0)
void inverse_kinematics(const float raw[XYZ]) {
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
// Delta hotend offsets must be applied in Cartesian space with no "spoofing"
const float pos[XYZ] = {
raw[X_AXIS] - hotend_offset[X_AXIS][active_extruder],

View File

@ -92,7 +92,7 @@ float destination[XYZE] = { 0 };
uint8_t active_extruder; // = 0;
// Extruder offsets
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
float hotend_offset[XYZ][HOTENDS]; // Initialized by settings.load()
#endif

View File

@ -78,7 +78,7 @@ extern int16_t feedrate_percentage;
extern uint8_t active_extruder;
#if HOTENDS > 1
#if HAS_HOTEND_OFFSET
extern float hotend_offset[XYZ][HOTENDS];
#endif