Browse Source

Fix M503 output for M907 motor current (#19777)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
vanilla_fb_2.0.x
Sten Uusvali 4 years ago
committed by GitHub
parent
commit
6fed11896b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      Marlin/src/module/settings.cpp
  2. 2
      Marlin/src/module/stepper.cpp

22
Marlin/src/module/settings.cpp

@ -3719,19 +3719,25 @@ void MarlinSettings::reset() {
CONFIG_ECHO_HEADING("Stepper motor currents:"); CONFIG_ECHO_HEADING("Stepper motor currents:");
CONFIG_ECHO_START(); CONFIG_ECHO_START();
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM
SERIAL_ECHOLNPAIR_P( SERIAL_ECHOLNPAIR_P( // PWM-based has 3 values:
PSTR(" M907 X"), stepper.motor_current_setting[0] PSTR(" M907 X"), stepper.motor_current_setting[0] // X and Y
, SP_Z_STR, stepper.motor_current_setting[1] , SP_Z_STR, stepper.motor_current_setting[1] // Z
, SP_E_STR, stepper.motor_current_setting[2] , SP_E_STR, stepper.motor_current_setting[2] // E
); );
#elif HAS_MOTOR_CURRENT_SPI #elif HAS_MOTOR_CURRENT_SPI
SERIAL_ECHOPGM(" M907"); SERIAL_ECHOPGM(" M907"); // SPI-based has 5 values:
LOOP_L_N(q, MOTOR_CURRENT_COUNT) { LOOP_XYZE(q) { // X Y Z E (map to X Y Z E0 by default)
SERIAL_CHAR(' '); SERIAL_CHAR(' ', axis_codes[q]);
SERIAL_CHAR(axis_codes[q]);
SERIAL_ECHO(stepper.motor_current_setting[q]); SERIAL_ECHO(stepper.motor_current_setting[q]);
} }
SERIAL_CHAR(' ', 'B'); // B (maps to E1 by default)
SERIAL_ECHOLN(stepper.motor_current_setting[4]);
#endif #endif
#elif HAS_MOTOR_CURRENT_I2C // i2c-based has any number of values
// Values sent over i2c are not stored.
// Indexes map directly to drivers, not axes.
#elif HAS_MOTOR_CURRENT_DAC // DAC-based has 4 values, for X Y Z E
// Values sent over i2c are not stored. Uses indirect mapping.
#endif #endif
/** /**

2
Marlin/src/module/stepper.cpp

@ -2962,7 +2962,7 @@ void Stepper::report_positions() {
#if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_SPI || HAS_MOTOR_CURRENT_PWM
void Stepper::set_digipot_current(const uint8_t driver, const int16_t current) { void Stepper::set_digipot_current(const uint8_t driver, const int16_t current) {
if (WITHIN(driver, 0, COUNT(motor_current_setting) - 1)) if (WITHIN(driver, 0, MOTOR_CURRENT_COUNT - 1))
motor_current_setting[driver] = current; // update motor_current_setting motor_current_setting[driver] = current; // update motor_current_setting
if (!initialized) return; if (!initialized) return;

Loading…
Cancel
Save