|
@@ -203,6 +203,8 @@
|
203
|
203
|
* M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
|
204
|
204
|
* M907 - Set digital trimpot motor current using axis codes.
|
205
|
205
|
* M908 - Control digital trimpot directly.
|
|
206
|
+ * M909 - DAC_STEPPER_CURRENT: Print digipot/DAC current value
|
|
207
|
+ * M910 - DAC_STEPPER_CURRENT: Commit digipot/DAC value to external EEPROM via I2C
|
206
|
208
|
* M350 - Set microstepping mode.
|
207
|
209
|
* M351 - Toggle MS1 MS2 pins directly.
|
208
|
210
|
*
|
|
@@ -5643,9 +5645,16 @@ inline void gcode_M907() {
|
5643
|
5645
|
// for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
|
5644
|
5646
|
for (int i = NUM_AXIS; i < DIGIPOT_I2C_NUM_CHANNELS; i++) if (code_seen('B' + i - (NUM_AXIS))) digipot_i2c_set_current(i, code_value());
|
5645
|
5647
|
#endif
|
|
5648
|
+ #if ENABLED(DAC_STEPPER_CURRENT)
|
|
5649
|
+ if (code_seen('S')) {
|
|
5650
|
+ float dac_percent = code_value();
|
|
5651
|
+ for (uint8_t i = 0; i <= 4; i++) dac_current_percent(i, dac_percent);
|
|
5652
|
+ }
|
|
5653
|
+ for (uint8_t i = 0; i < NUM_AXIS; i++) if (code_seen(axis_codes[i])) dac_current_percent(i, code_value());
|
|
5654
|
+ #endif
|
5646
|
5655
|
}
|
5647
|
5656
|
|
5648
|
|
-#if HAS_DIGIPOTSS
|
|
5657
|
+#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
5649
|
5658
|
|
5650
|
5659
|
/**
|
5651
|
5660
|
* M908: Control digital trimpot directly (M908 P<pin> S<current>)
|
|
@@ -5655,9 +5664,23 @@ inline void gcode_M907() {
|
5655
|
5664
|
code_seen('P') ? code_value() : 0,
|
5656
|
5665
|
code_seen('S') ? code_value() : 0
|
5657
|
5666
|
);
|
|
5667
|
+ #ifdef DAC_STEPPER_CURRENT
|
|
5668
|
+ dac_current_raw(
|
|
5669
|
+ code_seen('P') ? code_value_long() : -1,
|
|
5670
|
+ code_seen('S') ? code_value_short() : 0
|
|
5671
|
+ );
|
|
5672
|
+ #endif
|
5658
|
5673
|
}
|
5659
|
5674
|
|
5660
|
|
-#endif // HAS_DIGIPOTSS
|
|
5675
|
+ #if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF
|
|
5676
|
+
|
|
5677
|
+ inline void gcode_M909() { dac_print_values(); }
|
|
5678
|
+
|
|
5679
|
+ inline void gcode_M910() { dac_commit_eeprom(); }
|
|
5680
|
+
|
|
5681
|
+ #endif
|
|
5682
|
+
|
|
5683
|
+#endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT
|
5661
|
5684
|
|
5662
|
5685
|
#if HAS_MICROSTEPS
|
5663
|
5686
|
|
|
@@ -6356,11 +6379,25 @@ void process_next_command() {
|
6356
|
6379
|
gcode_M907();
|
6357
|
6380
|
break;
|
6358
|
6381
|
|
6359
|
|
- #if HAS_DIGIPOTSS
|
|
6382
|
+ #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
|
6383
|
+
|
6360
|
6384
|
case 908: // M908 Control digital trimpot directly.
|
6361
|
6385
|
gcode_M908();
|
6362
|
6386
|
break;
|
6363
|
|
- #endif // HAS_DIGIPOTSS
|
|
6387
|
+
|
|
6388
|
+ #if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF
|
|
6389
|
+
|
|
6390
|
+ case 909: // M909 Print digipot/DAC current value
|
|
6391
|
+ gcode_M909();
|
|
6392
|
+ break;
|
|
6393
|
+
|
|
6394
|
+ case 910: // M910 Commit digipot/DAC value to external EEPROM
|
|
6395
|
+ gcode_M910();
|
|
6396
|
+ break;
|
|
6397
|
+
|
|
6398
|
+ #endif
|
|
6399
|
+
|
|
6400
|
+ #endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT
|
6364
|
6401
|
|
6365
|
6402
|
#if HAS_MICROSTEPS
|
6366
|
6403
|
|