Browse Source

Add M907-M910 g-codes support for Printrbot Rev. F

Scott Lahteine 9 years ago
parent
commit
f96bc03081
1 changed files with 41 additions and 4 deletions
  1. 41
    4
      Marlin/Marlin_main.cpp

+ 41
- 4
Marlin/Marlin_main.cpp View File

203
  * M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
203
  * M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
204
  * M907 - Set digital trimpot motor current using axis codes.
204
  * M907 - Set digital trimpot motor current using axis codes.
205
  * M908 - Control digital trimpot directly.
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
  * M350 - Set microstepping mode.
208
  * M350 - Set microstepping mode.
207
  * M351 - Toggle MS1 MS2 pins directly.
209
  * M351 - Toggle MS1 MS2 pins directly.
208
  *
210
  *
5643
     // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
5645
     // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
5644
     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());
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
   #endif
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
    * M908: Control digital trimpot directly (M908 P<pin> S<current>)
5660
    * M908: Control digital trimpot directly (M908 P<pin> S<current>)
5655
       code_seen('P') ? code_value() : 0,
5664
       code_seen('P') ? code_value() : 0,
5656
       code_seen('S') ? code_value() : 0
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
 #if HAS_MICROSTEPS
5685
 #if HAS_MICROSTEPS
5663
 
5686
 
6356
         gcode_M907();
6379
         gcode_M907();
6357
         break;
6380
         break;
6358
 
6381
 
6359
-      #if HAS_DIGIPOTSS
6382
+      #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
6383
+
6360
         case 908: // M908 Control digital trimpot directly.
6384
         case 908: // M908 Control digital trimpot directly.
6361
           gcode_M908();
6385
           gcode_M908();
6362
           break;
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
       #if HAS_MICROSTEPS
6402
       #if HAS_MICROSTEPS
6366
 
6403
 

Loading…
Cancel
Save