39
39
#endif
40
40
41
41
/* *
42
- * M907: Set digital trimpot motor current using axis codes X [Y] [Z] [E]
42
+ * M907: Set digital trimpot motor current using axis codes X [Y] [Z] [I] [J] [K] [ E]
43
43
* B<current> - Special case for 4th (E) axis
44
44
* S<current> - Special case to set first 3 axes
45
45
*/
@@ -49,15 +49,15 @@ void GcodeSuite::M907() {
49
49
if (!parser.seen (" BS" LOGICAL_AXES_STRING))
50
50
return M907_report ();
51
51
52
- LOOP_LOGICAL_AXES (i) if (parser.seenval (axis_codes[i] )) stepper.set_digipot_current (i, parser.value_int ());
52
+ LOOP_LOGICAL_AXES (i) if (parser.seenval (IAXIS_CHAR (i) )) stepper.set_digipot_current (i, parser.value_int ());
53
53
if (parser.seenval (' B' )) stepper.set_digipot_current (4 , parser.value_int ());
54
54
if (parser.seenval (' S' )) LOOP_LE_N (i, 4 ) stepper.set_digipot_current (i, parser.value_int ());
55
55
56
56
#elif HAS_MOTOR_CURRENT_PWM
57
57
58
58
if (!parser.seen (
59
- #if ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY)
60
- " XY"
59
+ #if ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_I, MOTOR_CURRENT_PWM_J, MOTOR_CURRENT_PWM_K )
60
+ " XY" SECONDARY_AXIS_GANG ( " I " , " J " , " K " )
61
61
#endif
62
62
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
63
63
" Z"
@@ -67,8 +67,11 @@ void GcodeSuite::M907() {
67
67
#endif
68
68
)) return M907_report ();
69
69
70
- #if ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY)
71
- if (parser.seenval (' X' ) || parser.seenval (' Y' )) stepper.set_digipot_current (0 , parser.value_int ());
70
+ #if ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_I, MOTOR_CURRENT_PWM_J, MOTOR_CURRENT_PWM_K)
71
+ if (NUM_AXIS_GANG (
72
+ parser.seenval (' X' ), || parser.seenval (' Y' ), || false ,
73
+ || parser.seenval (' I' ), || parser.seenval (' J' ), || parser.seenval (' K' )
74
+ )) stepper.set_digipot_current (0 , parser.value_int ());
72
75
#endif
73
76
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
74
77
if (parser.seenval (' Z' )) stepper.set_digipot_current (1 , parser.value_int ());
@@ -81,7 +84,7 @@ void GcodeSuite::M907() {
81
84
82
85
#if HAS_MOTOR_CURRENT_I2C
83
86
// this one uses actual amps in floating point
84
- LOOP_LOGICAL_AXES (i) if (parser.seenval (axis_codes[i] )) digipot_i2c.set_current (i, parser.value_float ());
87
+ LOOP_LOGICAL_AXES (i) if (parser.seenval (IAXIS_CHAR (i) )) digipot_i2c.set_current (i, parser.value_float ());
85
88
// Additional extruders use B,C,D for channels 4,5,6.
86
89
// TODO: Change these parameters because 'E' is used. B<index>?
87
90
#if HAS_EXTRUDERS
@@ -95,7 +98,7 @@ void GcodeSuite::M907() {
95
98
const float dac_percent = parser.value_float ();
96
99
LOOP_LE_N (i, 4 ) stepper_dac.set_current_percent (i, dac_percent);
97
100
}
98
- LOOP_LOGICAL_AXES (i) if (parser.seenval (axis_codes[i] )) stepper_dac.set_current_percent (i, parser.value_float ());
101
+ LOOP_LOGICAL_AXES (i) if (parser.seenval (IAXIS_CHAR (i) )) stepper_dac.set_current_percent (i, parser.value_float ());
99
102
#endif
100
103
}
101
104
@@ -104,15 +107,15 @@ void GcodeSuite::M907() {
104
107
void GcodeSuite::M907_report (const bool forReplay/* =true*/ ) {
105
108
report_heading_etc (forReplay, F (STR_STEPPER_MOTOR_CURRENTS));
106
109
#if HAS_MOTOR_CURRENT_PWM
107
- SERIAL_ECHOLNPGM_P ( // PWM-based has 3 values:
108
- PSTR (" M907 X" ), stepper.motor_current_setting [0 ] // X and Y
110
+ SERIAL_ECHOLNPGM_P ( // PWM-based has 3 values:
111
+ PSTR (" M907 X" ), stepper.motor_current_setting [0 ] // X, Y, (I, J, K)
109
112
, SP_Z_STR, stepper.motor_current_setting [1 ] // Z
110
113
, SP_E_STR, stepper.motor_current_setting [2 ] // E
111
114
);
112
115
#elif HAS_MOTOR_CURRENT_SPI
113
116
SERIAL_ECHOPGM (" M907" ); // SPI-based has 5 values:
114
117
LOOP_LOGICAL_AXES (q) { // X Y Z (I J K) E (map to X Y Z (I J K) E0 by default)
115
- SERIAL_CHAR (' ' , axis_codes[q] );
118
+ SERIAL_CHAR (' ' , IAXIS_CHAR (q) );
116
119
SERIAL_ECHO (stepper.motor_current_setting [q]);
117
120
}
118
121
SERIAL_CHAR (' ' , ' B' ); // B (maps to E1 by default)
0 commit comments