|
|
@ -322,7 +322,7 @@ void MarlinSettings::postprocess() {
|
|
|
|
#define EEPROM_WRITE(VAR) HAL::PersistentStore::write_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
|
|
|
|
#define EEPROM_WRITE(VAR) HAL::PersistentStore::write_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
|
|
|
|
#define EEPROM_READ(VAR) HAL::PersistentStore::read_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc, !validating)
|
|
|
|
#define EEPROM_READ(VAR) HAL::PersistentStore::read_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc, !validating)
|
|
|
|
#define EEPROM_READ_ALWAYS(VAR) HAL::PersistentStore::read_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
|
|
|
|
#define EEPROM_READ_ALWAYS(VAR) HAL::PersistentStore::read_data(eeprom_index, (uint8_t*)&VAR, sizeof(VAR), &working_crc)
|
|
|
|
#define EEPROM_ASSERT(TST,ERR) if (!(TST)) do{ SERIAL_ERROR_START(); SERIAL_ERRORLNPGM(ERR); eeprom_error = true; }while(0)
|
|
|
|
#define EEPROM_ASSERT(TST,ERR) if (!(TST)) do{ SERIAL_ERROR_START_P(port); SERIAL_ERRORLNPGM_P(port, ERR); eeprom_error = true; }while(0)
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DEBUG_EEPROM_READWRITE)
|
|
|
|
#if ENABLED(DEBUG_EEPROM_READWRITE)
|
|
|
|
#define _FIELD_TEST(FIELD) \
|
|
|
|
#define _FIELD_TEST(FIELD) \
|
|
|
@ -338,10 +338,16 @@ void MarlinSettings::postprocess() {
|
|
|
|
|
|
|
|
|
|
|
|
bool MarlinSettings::eeprom_error, MarlinSettings::validating;
|
|
|
|
bool MarlinSettings::eeprom_error, MarlinSettings::validating;
|
|
|
|
|
|
|
|
|
|
|
|
bool MarlinSettings::size_error(const uint16_t size) {
|
|
|
|
bool MarlinSettings::size_error(const uint16_t size
|
|
|
|
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
, const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
if (size != datasize()) {
|
|
|
|
if (size != datasize()) {
|
|
|
|
SERIAL_ERROR_START();
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ERRORLNPGM("EEPROM datasize error.");
|
|
|
|
SERIAL_ERROR_START_P(port);
|
|
|
|
|
|
|
|
SERIAL_ERRORLNPGM_P(port, "EEPROM datasize error.");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
@ -350,7 +356,11 @@ void MarlinSettings::postprocess() {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* M500 - Store Configuration
|
|
|
|
* M500 - Store Configuration
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
bool MarlinSettings::save() {
|
|
|
|
bool MarlinSettings::save(
|
|
|
|
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
float dummy = 0.0f;
|
|
|
|
float dummy = 0.0f;
|
|
|
|
char ver[4] = "ERR";
|
|
|
|
char ver[4] = "ERR";
|
|
|
|
|
|
|
|
|
|
|
@ -810,10 +820,10 @@ void MarlinSettings::postprocess() {
|
|
|
|
|
|
|
|
|
|
|
|
// Report storage size
|
|
|
|
// Report storage size
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
SERIAL_ECHO_START_P(port);
|
|
|
|
SERIAL_ECHOPAIR("Settings Stored (", eeprom_size);
|
|
|
|
SERIAL_ECHOPAIR_P(port, "Settings Stored (", eeprom_size);
|
|
|
|
SERIAL_ECHOPAIR(" bytes; crc ", (uint32_t)final_crc);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " bytes; crc ", (uint32_t)final_crc);
|
|
|
|
SERIAL_ECHOLNPGM(")");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, ")");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
eeprom_error |= size_error(eeprom_size);
|
|
|
|
eeprom_error |= size_error(eeprom_size);
|
|
|
@ -834,7 +844,11 @@ void MarlinSettings::postprocess() {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* M501 - Retrieve Configuration
|
|
|
|
* M501 - Retrieve Configuration
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
bool MarlinSettings::_load() {
|
|
|
|
bool MarlinSettings::_load(
|
|
|
|
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
uint16_t working_crc = 0;
|
|
|
|
uint16_t working_crc = 0;
|
|
|
|
|
|
|
|
|
|
|
|
EEPROM_START();
|
|
|
|
EEPROM_START();
|
|
|
@ -852,10 +866,10 @@ void MarlinSettings::postprocess() {
|
|
|
|
stored_ver[1] = '\0';
|
|
|
|
stored_ver[1] = '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
SERIAL_ECHO_START_P(port);
|
|
|
|
SERIAL_ECHOPGM("EEPROM version mismatch ");
|
|
|
|
SERIAL_ECHOPGM_P(port, "EEPROM version mismatch ");
|
|
|
|
SERIAL_ECHOPAIR("(EEPROM=", stored_ver);
|
|
|
|
SERIAL_ECHOPAIR_P(port, "(EEPROM=", stored_ver);
|
|
|
|
SERIAL_ECHOLNPGM(" Marlin=" EEPROM_VERSION ")");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " Marlin=" EEPROM_VERSION ")");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
if (!validating) reset();
|
|
|
|
if (!validating) reset();
|
|
|
|
eeprom_error = true;
|
|
|
|
eeprom_error = true;
|
|
|
@ -1334,28 +1348,28 @@ void MarlinSettings::postprocess() {
|
|
|
|
|
|
|
|
|
|
|
|
eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET));
|
|
|
|
eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET));
|
|
|
|
if (eeprom_error) {
|
|
|
|
if (eeprom_error) {
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
SERIAL_ECHO_START_P(port);
|
|
|
|
SERIAL_ECHOPAIR("Index: ", int(eeprom_index - (EEPROM_OFFSET)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, "Index: ", int(eeprom_index - (EEPROM_OFFSET)));
|
|
|
|
SERIAL_ECHOLNPAIR(" Size: ", datasize());
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " Size: ", datasize());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (working_crc != stored_crc) {
|
|
|
|
else if (working_crc != stored_crc) {
|
|
|
|
eeprom_error = true;
|
|
|
|
eeprom_error = true;
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ERROR_START();
|
|
|
|
SERIAL_ERROR_START_P(port);
|
|
|
|
SERIAL_ERRORPGM("EEPROM CRC mismatch - (stored) ");
|
|
|
|
SERIAL_ERRORPGM_P(port, "EEPROM CRC mismatch - (stored) ");
|
|
|
|
SERIAL_ERROR(stored_crc);
|
|
|
|
SERIAL_ERROR_P(port, stored_crc);
|
|
|
|
SERIAL_ERRORPGM(" != ");
|
|
|
|
SERIAL_ERRORPGM_P(port, " != ");
|
|
|
|
SERIAL_ERROR(working_crc);
|
|
|
|
SERIAL_ERROR_P(port, working_crc);
|
|
|
|
SERIAL_ERRORLNPGM(" (calculated)!");
|
|
|
|
SERIAL_ERRORLNPGM_P(port, " (calculated)!");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (!validating) {
|
|
|
|
else if (!validating) {
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
SERIAL_ECHO_START_P(port);
|
|
|
|
SERIAL_ECHO(version);
|
|
|
|
SERIAL_ECHO_P(port, version);
|
|
|
|
SERIAL_ECHOPAIR(" stored settings retrieved (", eeprom_index - (EEPROM_OFFSET));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " stored settings retrieved (", eeprom_index - (EEPROM_OFFSET));
|
|
|
|
SERIAL_ECHOPAIR(" bytes; crc ", (uint32_t)working_crc);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " bytes; crc ", (uint32_t)working_crc);
|
|
|
|
SERIAL_ECHOLNPGM(")");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, ")");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1368,18 +1382,18 @@ void MarlinSettings::postprocess() {
|
|
|
|
|
|
|
|
|
|
|
|
if (!validating) {
|
|
|
|
if (!validating) {
|
|
|
|
if (!ubl.sanity_check()) {
|
|
|
|
if (!ubl.sanity_check()) {
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
ubl.echo_name();
|
|
|
|
ubl.echo_name();
|
|
|
|
SERIAL_ECHOLNPGM(" initialized.\n");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " initialized.\n");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
eeprom_error = true;
|
|
|
|
eeprom_error = true;
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_PROTOCOLPGM("?Can't enable ");
|
|
|
|
SERIAL_PROTOCOLPGM_P(port, "?Can't enable ");
|
|
|
|
ubl.echo_name();
|
|
|
|
ubl.echo_name();
|
|
|
|
SERIAL_PROTOCOLLNPGM(".");
|
|
|
|
SERIAL_PROTOCOLLNPGM_P(port, ".");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
ubl.reset();
|
|
|
|
ubl.reset();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1387,14 +1401,14 @@ void MarlinSettings::postprocess() {
|
|
|
|
if (ubl.storage_slot >= 0) {
|
|
|
|
if (ubl.storage_slot >= 0) {
|
|
|
|
load_mesh(ubl.storage_slot);
|
|
|
|
load_mesh(ubl.storage_slot);
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHOPAIR("Mesh ", ubl.storage_slot);
|
|
|
|
SERIAL_ECHOPAIR_P(port, "Mesh ", ubl.storage_slot);
|
|
|
|
SERIAL_ECHOLNPGM(" loaded from storage.");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " loaded from storage.");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
ubl.reset();
|
|
|
|
ubl.reset();
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHOLNPGM("UBL System reset()");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "UBL System reset()");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1402,22 +1416,42 @@ void MarlinSettings::postprocess() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT) && DISABLED(DISABLE_M503)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT) && DISABLED(DISABLE_M503)
|
|
|
|
if (!validating) report();
|
|
|
|
if (!validating) report(
|
|
|
|
|
|
|
|
#if NUM_SERIAL > 1
|
|
|
|
|
|
|
|
port
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
EEPROM_FINISH();
|
|
|
|
EEPROM_FINISH();
|
|
|
|
|
|
|
|
|
|
|
|
return !eeprom_error;
|
|
|
|
return !eeprom_error;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool MarlinSettings::validate() {
|
|
|
|
bool MarlinSettings::validate(
|
|
|
|
|
|
|
|
#if NUM_SERIAL > 1
|
|
|
|
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
validating = true;
|
|
|
|
validating = true;
|
|
|
|
const bool success = _load();
|
|
|
|
const bool success = _load(
|
|
|
|
|
|
|
|
#if NUM_SERIAL > 1
|
|
|
|
|
|
|
|
port
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
);
|
|
|
|
validating = false;
|
|
|
|
validating = false;
|
|
|
|
return success;
|
|
|
|
return success;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool MarlinSettings::load() {
|
|
|
|
bool MarlinSettings::load(
|
|
|
|
if (validate()) return _load();
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
if (validate()) return _load(
|
|
|
|
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
port
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
);
|
|
|
|
reset();
|
|
|
|
reset();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1524,9 +1558,15 @@ void MarlinSettings::postprocess() {
|
|
|
|
|
|
|
|
|
|
|
|
#else // !EEPROM_SETTINGS
|
|
|
|
#else // !EEPROM_SETTINGS
|
|
|
|
|
|
|
|
|
|
|
|
bool MarlinSettings::save() {
|
|
|
|
bool MarlinSettings::save(
|
|
|
|
SERIAL_ERROR_START();
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
SERIAL_ERRORLNPGM("EEPROM disabled");
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
|
|
|
|
SERIAL_ERROR_START_P(port);
|
|
|
|
|
|
|
|
SERIAL_ERRORLNPGM_P(port, "EEPROM disabled");
|
|
|
|
|
|
|
|
#endif
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1535,7 +1575,11 @@ void MarlinSettings::postprocess() {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* M502 - Reset Configuration
|
|
|
|
* M502 - Reset Configuration
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void MarlinSettings::reset() {
|
|
|
|
void MarlinSettings::reset(
|
|
|
|
|
|
|
|
#if ADD_PORT_ARG
|
|
|
|
|
|
|
|
const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
static const float tmp1[] PROGMEM = DEFAULT_AXIS_STEPS_PER_UNIT, tmp2[] PROGMEM = DEFAULT_MAX_FEEDRATE;
|
|
|
|
static const float tmp1[] PROGMEM = DEFAULT_AXIS_STEPS_PER_UNIT, tmp2[] PROGMEM = DEFAULT_MAX_FEEDRATE;
|
|
|
|
static const uint32_t tmp3[] PROGMEM = DEFAULT_MAX_ACCELERATION;
|
|
|
|
static const uint32_t tmp3[] PROGMEM = DEFAULT_MAX_ACCELERATION;
|
|
|
|
LOOP_XYZE_N(i) {
|
|
|
|
LOOP_XYZE_N(i) {
|
|
|
@ -1775,22 +1819,25 @@ void MarlinSettings::reset() {
|
|
|
|
postprocess();
|
|
|
|
postprocess();
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
#if ENABLED(EEPROM_CHITCHAT)
|
|
|
|
SERIAL_ECHO_START();
|
|
|
|
SERIAL_ECHO_START_P(port);
|
|
|
|
SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Hardcoded Default Settings Loaded");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if DISABLED(DISABLE_M503)
|
|
|
|
#if DISABLED(DISABLE_M503)
|
|
|
|
|
|
|
|
|
|
|
|
#define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START(); }while(0)
|
|
|
|
#define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START_P(port); }while(0)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* M503 - Report current settings in RAM
|
|
|
|
* M503 - Report current settings in RAM
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Unless specifically disabled, M503 is available even without EEPROM
|
|
|
|
* Unless specifically disabled, M503 is available even without EEPROM
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void MarlinSettings::report(const bool forReplay) {
|
|
|
|
void MarlinSettings::report(const bool forReplay
|
|
|
|
|
|
|
|
#if NUM_SERIAL > 1
|
|
|
|
|
|
|
|
, const int8_t port/*=-1*/
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
) {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Announce current units, in case inches are being displayed
|
|
|
|
* Announce current units, in case inches are being displayed
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -1798,14 +1845,14 @@ void MarlinSettings::reset() {
|
|
|
|
#if ENABLED(INCH_MODE_SUPPORT)
|
|
|
|
#if ENABLED(INCH_MODE_SUPPORT)
|
|
|
|
#define LINEAR_UNIT(N) (float(N) / parser.linear_unit_factor)
|
|
|
|
#define LINEAR_UNIT(N) (float(N) / parser.linear_unit_factor)
|
|
|
|
#define VOLUMETRIC_UNIT(N) (float(N) / (parser.volumetric_enabled ? parser.volumetric_unit_factor : parser.linear_unit_factor))
|
|
|
|
#define VOLUMETRIC_UNIT(N) (float(N) / (parser.volumetric_enabled ? parser.volumetric_unit_factor : parser.linear_unit_factor))
|
|
|
|
SERIAL_ECHOPGM(" G2");
|
|
|
|
SERIAL_ECHOPGM_P(port, " G2");
|
|
|
|
SERIAL_CHAR(parser.linear_unit_factor == 1.0 ? '1' : '0');
|
|
|
|
SERIAL_CHAR_P(port, parser.linear_unit_factor == 1.0 ? '1' : '0');
|
|
|
|
SERIAL_ECHOPGM(" ; Units in ");
|
|
|
|
SERIAL_ECHOPGM_P(port, " ; Units in ");
|
|
|
|
serialprintPGM(parser.linear_unit_factor == 1.0 ? PSTR("mm\n") : PSTR("inches\n"));
|
|
|
|
serialprintPGM(parser.linear_unit_factor == 1.0 ? PSTR("mm\n") : PSTR("inches\n"));
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
#define LINEAR_UNIT(N) (N)
|
|
|
|
#define LINEAR_UNIT(N) (N)
|
|
|
|
#define VOLUMETRIC_UNIT(N) (N)
|
|
|
|
#define VOLUMETRIC_UNIT(N) (N)
|
|
|
|
SERIAL_ECHOLNPGM(" G21 ; Units in mm");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " G21 ; Units in mm");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(ULTIPANEL)
|
|
|
|
#if ENABLED(ULTIPANEL)
|
|
|
@ -1815,18 +1862,18 @@ void MarlinSettings::reset() {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
#if ENABLED(TEMPERATURE_UNITS_SUPPORT)
|
|
|
|
#if ENABLED(TEMPERATURE_UNITS_SUPPORT)
|
|
|
|
#define TEMP_UNIT(N) parser.to_temp_units(N)
|
|
|
|
#define TEMP_UNIT(N) parser.to_temp_units(N)
|
|
|
|
SERIAL_ECHOPGM(" M149 ");
|
|
|
|
SERIAL_ECHOPGM_P(port, " M149 ");
|
|
|
|
SERIAL_CHAR(parser.temp_units_code());
|
|
|
|
SERIAL_CHAR_P(port, parser.temp_units_code());
|
|
|
|
SERIAL_ECHOPGM(" ; Units in ");
|
|
|
|
SERIAL_ECHOPGM_P(port, " ; Units in ");
|
|
|
|
serialprintPGM(parser.temp_units_name());
|
|
|
|
serialprintPGM_P(port, parser.temp_units_name());
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
#define TEMP_UNIT(N) (N)
|
|
|
|
#define TEMP_UNIT(N) (N)
|
|
|
|
SERIAL_ECHOLNPGM(" M149 C ; Units in Celsius");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " M149 C ; Units in Celsius");
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
|
|
|
|
|
|
|
|
#if DISABLED(NO_VOLUMETRICS)
|
|
|
|
#if DISABLED(NO_VOLUMETRICS)
|
|
|
|
|
|
|
|
|
|
|
@ -1835,32 +1882,32 @@ void MarlinSettings::reset() {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM("Filament settings:");
|
|
|
|
SERIAL_ECHOPGM_P(port, "Filament settings:");
|
|
|
|
if (parser.volumetric_enabled)
|
|
|
|
if (parser.volumetric_enabled)
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
else
|
|
|
|
else
|
|
|
|
SERIAL_ECHOLNPGM(" Disabled");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " Disabled");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 D", LINEAR_UNIT(planner.filament_size[0]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M200 D", LINEAR_UNIT(planner.filament_size[0]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T1 D", LINEAR_UNIT(planner.filament_size[1]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M200 T1 D", LINEAR_UNIT(planner.filament_size[1]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T2 D", LINEAR_UNIT(planner.filament_size[2]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M200 T2 D", LINEAR_UNIT(planner.filament_size[2]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if EXTRUDERS > 3
|
|
|
|
#if EXTRUDERS > 3
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T3 D", LINEAR_UNIT(planner.filament_size[3]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M200 T3 D", LINEAR_UNIT(planner.filament_size[3]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if EXTRUDERS > 4
|
|
|
|
#if EXTRUDERS > 4
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T4 D", LINEAR_UNIT(planner.filament_size[4]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M200 T4 D", LINEAR_UNIT(planner.filament_size[4]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif // EXTRUDERS > 4
|
|
|
|
#endif // EXTRUDERS > 4
|
|
|
|
#endif // EXTRUDERS > 3
|
|
|
|
#endif // EXTRUDERS > 3
|
|
|
|
#endif // EXTRUDERS > 2
|
|
|
|
#endif // EXTRUDERS > 2
|
|
|
@ -1868,118 +1915,118 @@ void MarlinSettings::reset() {
|
|
|
|
|
|
|
|
|
|
|
|
if (!parser.volumetric_enabled) {
|
|
|
|
if (!parser.volumetric_enabled) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM(" M200 D0");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " M200 D0");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !NO_VOLUMETRICS
|
|
|
|
#endif // !NO_VOLUMETRICS
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Steps per unit:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Steps per unit:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M92 X", LINEAR_UNIT(planner.axis_steps_per_mm[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M92 X", LINEAR_UNIT(planner.axis_steps_per_mm[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.axis_steps_per_mm[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(planner.axis_steps_per_mm[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.axis_steps_per_mm[Z_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(planner.axis_steps_per_mm[Z_AXIS]));
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS]));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
SERIAL_ECHOPAIR(" M92 T", (int)i);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M92 T", (int)i);
|
|
|
|
SERIAL_ECHOLNPAIR(" E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS + i]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.axis_steps_per_mm[E_AXIS + i]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Maximum feedrates (units/s):");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Maximum feedrates (units/s):");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M203 X", LINEAR_UNIT(planner.max_feedrate_mm_s[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M203 X", LINEAR_UNIT(planner.max_feedrate_mm_s[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_feedrate_mm_s[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(planner.max_feedrate_mm_s[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_feedrate_mm_s[Z_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(planner.max_feedrate_mm_s[Z_AXIS]));
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS]));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
SERIAL_ECHOPAIR(" M203 T", (int)i);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M203 T", (int)i);
|
|
|
|
SERIAL_ECHOLNPAIR(" E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS + i]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.max_feedrate_mm_s[E_AXIS + i]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Maximum Acceleration (units/s2):");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Maximum Acceleration (units/s2):");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M201 X", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M201 X", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Z_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(planner.max_acceleration_mm_per_s2[Z_AXIS]));
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if DISABLED(DISTINCT_E_FACTORS)
|
|
|
|
SERIAL_ECHOPAIR(" E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS]));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
#if ENABLED(DISTINCT_E_FACTORS)
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
for (uint8_t i = 0; i < E_STEPPERS; i++) {
|
|
|
|
SERIAL_ECHOPAIR(" M201 T", (int)i);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M201 T", (int)i);
|
|
|
|
SERIAL_ECHOLNPAIR(" E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS + i]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " E", VOLUMETRIC_UNIT(planner.max_acceleration_mm_per_s2[E_AXIS + i]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M204 P", LINEAR_UNIT(planner.acceleration));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M204 P", LINEAR_UNIT(planner.acceleration));
|
|
|
|
SERIAL_ECHOPAIR(" R", LINEAR_UNIT(planner.retract_acceleration));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " R", LINEAR_UNIT(planner.retract_acceleration));
|
|
|
|
SERIAL_ECHOLNPAIR(" T", LINEAR_UNIT(planner.travel_acceleration));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " T", LINEAR_UNIT(planner.travel_acceleration));
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_us> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Advanced: S<min_feedrate> T<min_travel_feedrate> B<min_segment_time_us> X<max_xy_jerk> Z<max_z_jerk> E<max_e_jerk>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M205 S", LINEAR_UNIT(planner.min_feedrate_mm_s));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M205 S", LINEAR_UNIT(planner.min_feedrate_mm_s));
|
|
|
|
SERIAL_ECHOPAIR(" T", LINEAR_UNIT(planner.min_travel_feedrate_mm_s));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " T", LINEAR_UNIT(planner.min_travel_feedrate_mm_s));
|
|
|
|
SERIAL_ECHOPAIR(" B", planner.min_segment_time_us);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " B", planner.min_segment_time_us);
|
|
|
|
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(planner.max_jerk[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(planner.max_jerk[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(planner.max_jerk[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(planner.max_jerk[Z_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR(" E", LINEAR_UNIT(planner.max_jerk[E_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " E", LINEAR_UNIT(planner.max_jerk[E_AXIS]));
|
|
|
|
|
|
|
|
|
|
|
|
#if HAS_M206_COMMAND
|
|
|
|
#if HAS_M206_COMMAND
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Home offset:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Home offset:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M206 X", LINEAR_UNIT(home_offset[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M206 X", LINEAR_UNIT(home_offset[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(home_offset[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(home_offset[Y_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(home_offset[Z_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " Z", LINEAR_UNIT(home_offset[Z_AXIS]));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if HOTENDS > 1
|
|
|
|
#if HOTENDS > 1
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Hotend offsets:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Hotend offsets:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
for (uint8_t e = 1; e < HOTENDS; e++) {
|
|
|
|
for (uint8_t e = 1; e < HOTENDS; e++) {
|
|
|
|
SERIAL_ECHOPAIR(" M218 T", (int)e);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M218 T", (int)e);
|
|
|
|
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
|
|
|
|
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) ||ENABLED(PARKING_EXTRUDER)
|
|
|
|
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) ||ENABLED(PARKING_EXTRUDER)
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
@ -1992,7 +2039,7 @@ void MarlinSettings::reset() {
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Mesh Bed Leveling:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Mesh Bed Leveling:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
@ -2000,46 +2047,46 @@ void MarlinSettings::reset() {
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
ubl.echo_name();
|
|
|
|
ubl.echo_name();
|
|
|
|
SERIAL_ECHOLNPGM(":");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, ":");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#elif HAS_ABL
|
|
|
|
#elif HAS_ABL
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Auto Bed Leveling:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Auto Bed Leveling:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M420 S", planner.leveling_active ? 1 : 0);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M420 S", planner.leveling_active ? 1 : 0);
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
|
|
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(planner.z_fade_height));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(planner.z_fade_height));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
|
|
|
|
|
|
|
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
|
|
|
|
for (uint8_t py = 0; py < GRID_MAX_POINTS_Y; py++) {
|
|
|
|
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
|
|
|
|
for (uint8_t px = 0; px < GRID_MAX_POINTS_X; px++) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" G29 S3 X", (int)px + 1);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " G29 S3 X", (int)px + 1);
|
|
|
|
SERIAL_ECHOPAIR(" Y", (int)py + 1);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", (int)py + 1);
|
|
|
|
SERIAL_ECHOPGM(" Z");
|
|
|
|
SERIAL_ECHOPGM_P(port, " Z");
|
|
|
|
SERIAL_PROTOCOL_F(LINEAR_UNIT(mbl.z_values[px][py]), 5);
|
|
|
|
SERIAL_PROTOCOL_F_P(port, LINEAR_UNIT(mbl.z_values[px][py]), 5);
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
ubl.report_state();
|
|
|
|
ubl.report_state();
|
|
|
|
SERIAL_ECHOLNPAIR("\nActive Mesh Slot: ", ubl.storage_slot);
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, "\nActive Mesh Slot: ", ubl.storage_slot);
|
|
|
|
SERIAL_ECHOPAIR("EEPROM can hold ", calc_num_meshes());
|
|
|
|
SERIAL_ECHOPAIR_P(port, "EEPROM can hold ", calc_num_meshes());
|
|
|
|
SERIAL_ECHOLNPGM(" meshes.\n");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, " meshes.\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
@ -2047,59 +2094,62 @@ void MarlinSettings::reset() {
|
|
|
|
#endif // HAS_LEVELING
|
|
|
|
#endif // HAS_LEVELING
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Endstop adjustment:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Endstop adjustment:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M666 X", LINEAR_UNIT(delta_endstop_adj[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M666 X", LINEAR_UNIT(delta_endstop_adj[X_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(delta_endstop_adj[Y_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(delta_endstop_adj[Y_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(delta_endstop_adj[Z_AXIS]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " Z", LINEAR_UNIT(delta_endstop_adj[Z_AXIS]));
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Delta settings: L<diagonal_rod> R<radius> H<height> S<segments_per_s> B<calibration radius> XYZ<tower angle corrections>");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Delta settings: L<diagonal_rod> R<radius> H<height> S<segments_per_s> B<calibration radius> XYZ<tower angle corrections>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M665 L", LINEAR_UNIT(delta_diagonal_rod));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M665 L", LINEAR_UNIT(delta_diagonal_rod));
|
|
|
|
SERIAL_ECHOPAIR(" R", LINEAR_UNIT(delta_radius));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " R", LINEAR_UNIT(delta_radius));
|
|
|
|
SERIAL_ECHOPAIR(" H", LINEAR_UNIT(delta_height));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " H", LINEAR_UNIT(delta_height));
|
|
|
|
SERIAL_ECHOPAIR(" S", delta_segments_per_second);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " S", delta_segments_per_second);
|
|
|
|
SERIAL_ECHOPAIR(" B", LINEAR_UNIT(delta_calibration_radius));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " B", LINEAR_UNIT(delta_calibration_radius));
|
|
|
|
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(delta_tower_angle_trim[A_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(delta_tower_angle_trim[A_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(delta_tower_angle_trim[B_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(delta_tower_angle_trim[B_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(delta_tower_angle_trim[C_AXIS]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(delta_tower_angle_trim[C_AXIS]));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
|
|
|
|
|
|
|
|
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
|
|
|
#elif ENABLED(X_DUAL_ENDSTOPS) || ENABLED(Y_DUAL_ENDSTOPS) || ENABLED(Z_DUAL_ENDSTOPS)
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Endstop adjustment:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Endstop adjustment:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPGM(" M666");
|
|
|
|
SERIAL_ECHOPGM_P(port, " M666");
|
|
|
|
#if ENABLED(X_DUAL_ENDSTOPS)
|
|
|
|
#if ENABLED(X_DUAL_ENDSTOPS)
|
|
|
|
SERIAL_ECHOPAIR(" X", LINEAR_UNIT(endstops.x_endstop_adj));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(endstops.x_endstop_adj));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Y_DUAL_ENDSTOPS)
|
|
|
|
#if ENABLED(Y_DUAL_ENDSTOPS)
|
|
|
|
SERIAL_ECHOPAIR(" Y", LINEAR_UNIT(endstops.y_endstop_adj));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(endstops.y_endstop_adj));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Z_DUAL_ENDSTOPS)
|
|
|
|
#if ENABLED(Z_DUAL_ENDSTOPS)
|
|
|
|
SERIAL_ECHOPAIR(" Z", LINEAR_UNIT(endstops.z_endstop_adj));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(endstops.z_endstop_adj));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif // DELTA
|
|
|
|
|
|
|
|
|
|
|
|
#endif // [XYZ]_DUAL_ENDSTOPS
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(ULTIPANEL)
|
|
|
|
#if ENABLED(ULTIPANEL)
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Material heatup parameters:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Material heatup parameters:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (uint8_t i = 0; i < COUNT(lcd_preheat_hotend_temp); i++) {
|
|
|
|
for (uint8_t i = 0; i < COUNT(lcd_preheat_hotend_temp); i++) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M145 S", (int)i);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M145 S", (int)i);
|
|
|
|
SERIAL_ECHOPAIR(" H", TEMP_UNIT(lcd_preheat_hotend_temp[i]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " H", TEMP_UNIT(lcd_preheat_hotend_temp[i]));
|
|
|
|
SERIAL_ECHOPAIR(" B", TEMP_UNIT(lcd_preheat_bed_temp[i]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " B", TEMP_UNIT(lcd_preheat_bed_temp[i]));
|
|
|
|
SERIAL_ECHOLNPAIR(" F", lcd_preheat_fan_speed[i]);
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " F", lcd_preheat_fan_speed[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // ULTIPANEL
|
|
|
|
#endif // ULTIPANEL
|
|
|
|
|
|
|
|
|
|
|
@ -2107,22 +2157,22 @@ void MarlinSettings::reset() {
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("PID settings:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "PID settings:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#if ENABLED(PIDTEMP)
|
|
|
|
#if ENABLED(PIDTEMP)
|
|
|
|
#if HOTENDS > 1
|
|
|
|
#if HOTENDS > 1
|
|
|
|
if (forReplay) {
|
|
|
|
if (forReplay) {
|
|
|
|
HOTEND_LOOP() {
|
|
|
|
HOTEND_LOOP() {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M301 E", e);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M301 E", e);
|
|
|
|
SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, e));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " P", PID_PARAM(Kp, e));
|
|
|
|
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, e)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " I", unscalePID_i(PID_PARAM(Ki, e)));
|
|
|
|
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, e)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " D", unscalePID_d(PID_PARAM(Kd, e)));
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, e));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " C", PID_PARAM(Kc, e));
|
|
|
|
if (e == 0) SERIAL_ECHOPAIR(" L", lpq_len);
|
|
|
|
if (e == 0) SERIAL_ECHOPAIR_P(port, " L", lpq_len);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -2130,23 +2180,23 @@ void MarlinSettings::reset() {
|
|
|
|
// !forReplay || HOTENDS == 1
|
|
|
|
// !forReplay || HOTENDS == 1
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0
|
|
|
|
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " I", unscalePID_i(PID_PARAM(Ki, 0)));
|
|
|
|
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " D", unscalePID_d(PID_PARAM(Kd, 0)));
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING)
|
|
|
|
SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " C", PID_PARAM(Kc, 0));
|
|
|
|
SERIAL_ECHOPAIR(" L", lpq_len);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " L", lpq_len);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // PIDTEMP
|
|
|
|
#endif // PIDTEMP
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(PIDTEMPBED)
|
|
|
|
#if ENABLED(PIDTEMPBED)
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M304 P", thermalManager.bedKp);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M304 P", thermalManager.bedKp);
|
|
|
|
SERIAL_ECHOPAIR(" I", unscalePID_i(thermalManager.bedKi));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " I", unscalePID_i(thermalManager.bedKi));
|
|
|
|
SERIAL_ECHOPAIR(" D", unscalePID_d(thermalManager.bedKd));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " D", unscalePID_d(thermalManager.bedKd));
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif // PIDTEMP || PIDTEMPBED
|
|
|
|
#endif // PIDTEMP || PIDTEMPBED
|
|
|
@ -2154,39 +2204,39 @@ void MarlinSettings::reset() {
|
|
|
|
#if HAS_LCD_CONTRAST
|
|
|
|
#if HAS_LCD_CONTRAST
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("LCD Contrast:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "LCD Contrast:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPAIR(" M250 C", lcd_contrast);
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " M250 C", lcd_contrast);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if ENABLED(FWRETRACT)
|
|
|
|
#if ENABLED(FWRETRACT)
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Retract: S<length> F<units/m> Z<lift>");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Retract: S<length> F<units/m> Z<lift>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M207 S", LINEAR_UNIT(fwretract.retract_length));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M207 S", LINEAR_UNIT(fwretract.retract_length));
|
|
|
|
SERIAL_ECHOPAIR(" W", LINEAR_UNIT(fwretract.swap_retract_length));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " W", LINEAR_UNIT(fwretract.swap_retract_length));
|
|
|
|
SERIAL_ECHOPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(fwretract.retract_feedrate_mm_s)));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " F", MMS_TO_MMM(LINEAR_UNIT(fwretract.retract_feedrate_mm_s)));
|
|
|
|
SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(fwretract.retract_zlift));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " Z", LINEAR_UNIT(fwretract.retract_zlift));
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Recover: S<length> F<units/m>");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Recover: S<length> F<units/m>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M208 S", LINEAR_UNIT(fwretract.retract_recover_length));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M208 S", LINEAR_UNIT(fwretract.retract_recover_length));
|
|
|
|
SERIAL_ECHOPAIR(" W", LINEAR_UNIT(fwretract.swap_retract_recover_length));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " W", LINEAR_UNIT(fwretract.swap_retract_recover_length));
|
|
|
|
SERIAL_ECHOLNPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(fwretract.retract_recover_feedrate_mm_s)));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " F", MMS_TO_MMM(LINEAR_UNIT(fwretract.retract_recover_feedrate_mm_s)));
|
|
|
|
|
|
|
|
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPAIR(" M209 S", fwretract.autoretract_enabled ? 1 : 0);
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " M209 S", fwretract.autoretract_enabled ? 1 : 0);
|
|
|
|
|
|
|
|
|
|
|
|
#endif // FWRETRACT
|
|
|
|
#endif // FWRETRACT
|
|
|
|
|
|
|
|
|
|
|
@ -2196,10 +2246,10 @@ void MarlinSettings::reset() {
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Z-Probe Offset (mm):");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Z-Probe Offset (mm):");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPAIR(" M851 Z", LINEAR_UNIT(zprobe_zoffset));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " M851 Z", LINEAR_UNIT(zprobe_zoffset));
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -2208,18 +2258,18 @@ void MarlinSettings::reset() {
|
|
|
|
#if ENABLED(SKEW_CORRECTION_GCODE)
|
|
|
|
#if ENABLED(SKEW_CORRECTION_GCODE)
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Skew Factor: ");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Skew Factor: ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
#if ENABLED(SKEW_CORRECTION_FOR_Z)
|
|
|
|
#if ENABLED(SKEW_CORRECTION_FOR_Z)
|
|
|
|
SERIAL_ECHO(" M852 I");
|
|
|
|
SERIAL_ECHO_P(port, " M852 I");
|
|
|
|
SERIAL_ECHO_F(LINEAR_UNIT(planner.xy_skew_factor), 6);
|
|
|
|
SERIAL_ECHO_F_P(port, LINEAR_UNIT(planner.xy_skew_factor), 6);
|
|
|
|
SERIAL_ECHOPAIR(" J", LINEAR_UNIT(planner.xz_skew_factor));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " J", LINEAR_UNIT(planner.xz_skew_factor));
|
|
|
|
SERIAL_ECHOLNPAIR(" K", LINEAR_UNIT(planner.yz_skew_factor));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " K", LINEAR_UNIT(planner.yz_skew_factor));
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
SERIAL_ECHO(" M852 S");
|
|
|
|
SERIAL_ECHO_P(port, " M852 S");
|
|
|
|
SERIAL_ECHO_F(LINEAR_UNIT(planner.xy_skew_factor), 6);
|
|
|
|
SERIAL_ECHO_F_P(port, LINEAR_UNIT(planner.xy_skew_factor), 6);
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
@ -2229,44 +2279,44 @@ void MarlinSettings::reset() {
|
|
|
|
#if HAS_TRINAMIC
|
|
|
|
#if HAS_TRINAMIC
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Stepper driver current:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Stepper driver current:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHO(" M906");
|
|
|
|
SERIAL_ECHO_P(port, " M906");
|
|
|
|
#if ENABLED(X_IS_TMC2130) || ENABLED(X_IS_TMC2208)
|
|
|
|
#if ENABLED(X_IS_TMC2130) || ENABLED(X_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" X ", stepperX.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X ", stepperX.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Y_IS_TMC2130) || ENABLED(Y_IS_TMC2208)
|
|
|
|
#if ENABLED(Y_IS_TMC2130) || ENABLED(Y_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" Y ", stepperY.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y ", stepperY.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Z_IS_TMC2130) || ENABLED(Z_IS_TMC2208)
|
|
|
|
#if ENABLED(Z_IS_TMC2130) || ENABLED(Z_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" Z ", stepperZ.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z ", stepperZ.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(X2_IS_TMC2130) || ENABLED(X2_IS_TMC2208)
|
|
|
|
#if ENABLED(X2_IS_TMC2130) || ENABLED(X2_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" X2 ", stepperX2.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X2 ", stepperX2.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Y2_IS_TMC2130) || ENABLED(Y2_IS_TMC2208)
|
|
|
|
#if ENABLED(Y2_IS_TMC2130) || ENABLED(Y2_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" Y2 ", stepperY2.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y2 ", stepperY2.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Z2_IS_TMC2130) || ENABLED(Z2_IS_TMC2208)
|
|
|
|
#if ENABLED(Z2_IS_TMC2130) || ENABLED(Z2_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" Z2 ", stepperZ2.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z2 ", stepperZ2.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(E0_IS_TMC2130) || ENABLED(E0_IS_TMC2208)
|
|
|
|
#if ENABLED(E0_IS_TMC2130) || ENABLED(E0_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" E0 ", stepperE0.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E0 ", stepperE0.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(E1_IS_TMC2130) || ENABLED(E1_IS_TMC2208)
|
|
|
|
#if ENABLED(E1_IS_TMC2130) || ENABLED(E1_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" E1 ", stepperE1.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E1 ", stepperE1.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(E2_IS_TMC2130) || ENABLED(E2_IS_TMC2208)
|
|
|
|
#if ENABLED(E2_IS_TMC2130) || ENABLED(E2_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" E2 ", stepperE2.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E2 ", stepperE2.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(E3_IS_TMC2130) || ENABLED(E3_IS_TMC2208)
|
|
|
|
#if ENABLED(E3_IS_TMC2130) || ENABLED(E3_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" E3 ", stepperE3.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E3 ", stepperE3.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(E4_IS_TMC2130) || ENABLED(E4_IS_TMC2208)
|
|
|
|
#if ENABLED(E4_IS_TMC2130) || ENABLED(E4_IS_TMC2208)
|
|
|
|
SERIAL_ECHOPAIR(" E4 ", stepperE4.getCurrent());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E4 ", stepperE4.getCurrent());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -2275,23 +2325,23 @@ void MarlinSettings::reset() {
|
|
|
|
#if ENABLED(SENSORLESS_HOMING)
|
|
|
|
#if ENABLED(SENSORLESS_HOMING)
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Sensorless homing threshold:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Sensorless homing threshold:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHO(" M914");
|
|
|
|
SERIAL_ECHO_P(port, " M914");
|
|
|
|
#if ENABLED(X_IS_TMC2130)
|
|
|
|
#if ENABLED(X_IS_TMC2130)
|
|
|
|
SERIAL_ECHOPAIR(" X", stepperX.sgt());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X", stepperX.sgt());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(X2_IS_TMC2130)
|
|
|
|
#if ENABLED(X2_IS_TMC2130)
|
|
|
|
SERIAL_ECHOPAIR(" X2 ", stepperX2.sgt());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " X2 ", stepperX2.sgt());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(Y_IS_TMC2130)
|
|
|
|
#if ENABLED(Y_IS_TMC2130)
|
|
|
|
SERIAL_ECHOPAIR(" Y", stepperY.sgt());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y", stepperY.sgt());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ENABLED(X2_IS_TMC2130)
|
|
|
|
#if ENABLED(X2_IS_TMC2130)
|
|
|
|
SERIAL_ECHOPAIR(" Y2 ", stepperY2.sgt());
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Y2 ", stepperY2.sgt());
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -2300,23 +2350,23 @@ void MarlinSettings::reset() {
|
|
|
|
#if ENABLED(LIN_ADVANCE)
|
|
|
|
#if ENABLED(LIN_ADVANCE)
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Linear Advance:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Linear Advance:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M900 K", planner.extruder_advance_k);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M900 K", planner.extruder_advance_k);
|
|
|
|
SERIAL_ECHOLNPAIR(" R", planner.advance_ed_ratio);
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " R", planner.advance_ed_ratio);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if HAS_MOTOR_CURRENT_PWM
|
|
|
|
#if HAS_MOTOR_CURRENT_PWM
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
SERIAL_ECHOLNPGM("Stepper motor currents:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Stepper motor currents:");
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
SERIAL_ECHOPAIR(" M907 X", stepper.motor_current_setting[0]);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M907 X", stepper.motor_current_setting[0]);
|
|
|
|
SERIAL_ECHOPAIR(" Z", stepper.motor_current_setting[1]);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " Z", stepper.motor_current_setting[1]);
|
|
|
|
SERIAL_ECHOPAIR(" E", stepper.motor_current_setting[2]);
|
|
|
|
SERIAL_ECHOPAIR_P(port, " E", stepper.motor_current_setting[2]);
|
|
|
|
SERIAL_EOL();
|
|
|
|
SERIAL_EOL_P(port);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -2325,30 +2375,30 @@ void MarlinSettings::reset() {
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
|
|
|
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
|
|
|
if (!forReplay) {
|
|
|
|
if (!forReplay) {
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Filament load/unload lengths:");
|
|
|
|
SERIAL_ECHOLNPGM_P(port, "Filament load/unload lengths:");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
#if EXTRUDERS == 1
|
|
|
|
#if EXTRUDERS == 1
|
|
|
|
SERIAL_ECHOPAIR(" M603 L", LINEAR_UNIT(filament_change_load_length[0]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 L", LINEAR_UNIT(filament_change_load_length[0]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[0]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[0]));
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
SERIAL_ECHOPAIR(" M603 T0 L", LINEAR_UNIT(filament_change_load_length[0]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 T0 L", LINEAR_UNIT(filament_change_load_length[0]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[0]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[0]));
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M603 T1 L", LINEAR_UNIT(filament_change_load_length[1]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 T1 L", LINEAR_UNIT(filament_change_load_length[1]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[1]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[1]));
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M603 T2 L", LINEAR_UNIT(filament_change_load_length[2]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 T2 L", LINEAR_UNIT(filament_change_load_length[2]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[2]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[2]));
|
|
|
|
#if EXTRUDERS > 3
|
|
|
|
#if EXTRUDERS > 3
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M603 T3 L", LINEAR_UNIT(filament_change_load_length[3]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 T3 L", LINEAR_UNIT(filament_change_load_length[3]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[3]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[3]));
|
|
|
|
#if EXTRUDERS > 4
|
|
|
|
#if EXTRUDERS > 4
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
CONFIG_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M603 T4 L", LINEAR_UNIT(filament_change_load_length[4]));
|
|
|
|
SERIAL_ECHOPAIR_P(port, " M603 T4 L", LINEAR_UNIT(filament_change_load_length[4]));
|
|
|
|
SERIAL_ECHOLNPAIR(" U", LINEAR_UNIT(filament_change_unload_length[4]));
|
|
|
|
SERIAL_ECHOLNPAIR_P(port, " U", LINEAR_UNIT(filament_change_unload_length[4]));
|
|
|
|
#endif // EXTRUDERS > 4
|
|
|
|
#endif // EXTRUDERS > 4
|
|
|
|
#endif // EXTRUDERS > 3
|
|
|
|
#endif // EXTRUDERS > 3
|
|
|
|
#endif // EXTRUDERS > 2
|
|
|
|
#endif // EXTRUDERS > 2
|
|
|
|