TMC2130 Library: @teemuatlut replaces @makertum
This commit is contained in:
@ -36,13 +36,13 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define EEPROM_VERSION "V29"
|
||||
#define EEPROM_VERSION "V30"
|
||||
|
||||
// Change EEPROM version if these are changed:
|
||||
#define EEPROM_OFFSET 100
|
||||
|
||||
/**
|
||||
* V29 EEPROM Layout:
|
||||
* V30 EEPROM Layout:
|
||||
*
|
||||
* 100 Version (char x4)
|
||||
* 104 EEPROM Checksum (uint16_t)
|
||||
@ -128,8 +128,20 @@
|
||||
* 509 M200 D volumetric_enabled (bool)
|
||||
* 510 M200 T D filament_size (float x4) (T0..3)
|
||||
*
|
||||
* 526 Minimum end-point
|
||||
* 1847 (526 + 36 + 9 + 288 + 988) Maximum end-point
|
||||
* TMC2130: 20 bytes
|
||||
* 526 M906 X TMC2130 X-stepper current (uint16_t)
|
||||
* 528 M906 Y TMC2130 Y-stepper current (uint16_t)
|
||||
* 530 M906 Z TMC2130 Z-stepper current (uint16_t)
|
||||
* 532 M906 X2 TMC2130 X2-stepper current (uint16_t)
|
||||
* 534 M906 Y2 TMC2130 Y2-stepper current (uint16_t)
|
||||
* 536 M906 Z2 TMC2130 Z2-stepper current (uint16_t)
|
||||
* 538 M906 E0 TMC2130 E0-stepper current (uint16_t)
|
||||
* 540 M906 E1 TMC2130 E1-stepper current (uint16_t)
|
||||
* 542 M906 E2 TMC2130 E2-stepper current (uint16_t)
|
||||
* 544 M906 E3 TMC2130 E3-stepper current (uint16_t)
|
||||
*
|
||||
* 546 Minimum end-point
|
||||
* 1867 (546 + 36 + 9 + 288 + 988) Maximum end-point
|
||||
*
|
||||
*/
|
||||
#include "Marlin.h"
|
||||
@ -144,6 +156,10 @@
|
||||
#include "mesh_bed_leveling.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
#include "stepper_indirection.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
|
||||
extern void bed_level_virt_interpolate();
|
||||
#endif
|
||||
@ -432,10 +448,78 @@ void Config_Postprocess() {
|
||||
EEPROM_WRITE(dummy);
|
||||
}
|
||||
|
||||
// Save TCM2130 Configuration, and placeholder values
|
||||
uint16_t val;
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
#if ENABLED(X_IS_TMC2130)
|
||||
val = stepperX.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(Y_IS_TMC2130)
|
||||
val = stepperY.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(Z_IS_TMC2130)
|
||||
val = stepperZ.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(X2_IS_TMC2130)
|
||||
val = stepperX2.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(Y2_IS_TMC2130)
|
||||
val = stepperY2.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(Z2_IS_TMC2130)
|
||||
val = stepperZ2.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(E0_IS_TMC2130)
|
||||
val = stepperE0.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(E1_IS_TMC2130)
|
||||
val = stepperE1.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(E2_IS_TMC2130)
|
||||
val = stepperE2.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#if ENABLED(E3_IS_TMC2130)
|
||||
val = stepperE3.getCurrent();
|
||||
#else
|
||||
val = 0;
|
||||
#endif
|
||||
EEPROM_WRITE(val);
|
||||
#else
|
||||
val = 0;
|
||||
for (uint8_t q = 0; q < 10; ++q) EEPROM_WRITE(val);
|
||||
#endif
|
||||
|
||||
if (!eeprom_write_error) {
|
||||
|
||||
uint16_t final_checksum = eeprom_checksum,
|
||||
eeprom_size = eeprom_index;
|
||||
const uint16_t final_checksum = eeprom_checksum,
|
||||
eeprom_size = eeprom_index;
|
||||
|
||||
// Write the EEPROM header
|
||||
eeprom_index = EEPROM_OFFSET;
|
||||
@ -684,6 +768,52 @@ void Config_Postprocess() {
|
||||
if (q < COUNT(filament_size)) filament_size[q] = dummy;
|
||||
}
|
||||
|
||||
uint16_t val;
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(X_IS_TMC2130)
|
||||
stepperX.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(Y_IS_TMC2130)
|
||||
stepperY.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(Z_IS_TMC2130)
|
||||
stepperZ.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(X2_IS_TMC2130)
|
||||
stepperX2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(Y2_IS_TMC2130)
|
||||
stepperY2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(Z2_IS_TMC2130)
|
||||
stepperZ2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(E0_IS_TMC2130)
|
||||
stepperE0.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(E1_IS_TMC2130)
|
||||
stepperE1.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(E2_IS_TMC2130)
|
||||
stepperE2.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
EEPROM_READ(val);
|
||||
#if ENABLED(E3_IS_TMC2130)
|
||||
stepperE3.setCurrent(val, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#else
|
||||
for (uint8_t q = 0; q < 10; q++) EEPROM_READ(val);
|
||||
#endif
|
||||
|
||||
if (eeprom_checksum == stored_checksum) {
|
||||
if (eeprom_read_error)
|
||||
Config_ResetDefault();
|
||||
@ -852,6 +982,39 @@ void Config_ResetDefault() {
|
||||
#endif
|
||||
);
|
||||
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
#if ENABLED(X_IS_TMC2130)
|
||||
stepperX.setCurrent(X_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(Y_IS_TMC2130)
|
||||
stepperY.setCurrent(Y_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(Z_IS_TMC2130)
|
||||
stepperZ.setCurrent(Z_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(X2_IS_TMC2130)
|
||||
stepperX2.setCurrent(X2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(Y2_IS_TMC2130)
|
||||
stepperY2.setCurrent(Y2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(Z2_IS_TMC2130)
|
||||
stepperZ2.setCurrent(Z2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(E0_IS_TMC2130)
|
||||
stepperE0.setCurrent(E0_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(E1_IS_TMC2130)
|
||||
stepperE1.setCurrent(E1_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(E2_IS_TMC2130)
|
||||
stepperE2.setCurrent(E2_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#if ENABLED(E3_IS_TMC2130)
|
||||
stepperE3.setCurrent(E3_MAX_CURRENT, R_SENSE, HOLD_MULTIPLIER);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Config_Postprocess();
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
@ -1184,14 +1347,57 @@ void Config_ResetDefault() {
|
||||
* Auto Bed Leveling
|
||||
*/
|
||||
#if HAS_BED_PROBE
|
||||
if (!forReplay) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOLNPGM("Z-Probe Offset (mm):");
|
||||
}
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Z-Probe Offset (mm):");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M851 Z", zprobe_zoffset);
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TMC2130 stepper driver current
|
||||
*/
|
||||
#if ENABLED(HAVE_TMC2130)
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Stepper driver current:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHO(" M906");
|
||||
#if ENABLED(X_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" X", stepperX.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(Y_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" Y", stepperY.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(Z_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" Z", stepperZ.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(X2_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" X2", stepperX2.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(Y2_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" Y2", stepperY2.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(Z2_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" Z2", stepperZ2.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(E0_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" E0", stepperE0.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(E1_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" E1", stepperE1.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(E2_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" E2", stepperE2.getCurrent());
|
||||
#endif
|
||||
#if ENABLED(E3_IS_TMC2130)
|
||||
SERIAL_ECHOPAIR(" E3", stepperE3.getCurrent());
|
||||
#endif
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // !DISABLE_M503
|
||||
|
Reference in New Issue
Block a user