Browse Source

I2C position encoders update (#9533)

Updating I2C position encoders to enable babystepping and Babystep XY when using the ecm microstep correction method. Also changed default method to ECM microstep.
Scott Lahteine 6 years ago
parent
commit
b2f8b4ada5
No account linked to committer's email address
48 changed files with 155 additions and 149 deletions
  1. 1
    1
      .travis.yml
  2. 3
    3
      Marlin/Configuration_adv.h
  3. 3
    7
      Marlin/src/Marlin.cpp
  4. 3
    3
      Marlin/src/config/default/Configuration_adv.h
  5. 3
    3
      Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h
  6. 3
    3
      Marlin/src/config/examples/Anet/A6/Configuration_adv.h
  7. 3
    3
      Marlin/src/config/examples/Anet/A8/Configuration_adv.h
  8. 3
    3
      Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h
  9. 3
    3
      Marlin/src/config/examples/BIBO/TouchX/Configuration_adv.h
  10. 3
    3
      Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h
  11. 3
    3
      Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h
  12. 3
    3
      Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h
  13. 3
    3
      Marlin/src/config/examples/Cartesio/Configuration_adv.h
  14. 3
    3
      Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h
  15. 3
    3
      Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h
  16. 3
    3
      Marlin/src/config/examples/Creality/Ender/Configuration_adv.h
  17. 3
    3
      Marlin/src/config/examples/Felix/Configuration_adv.h
  18. 3
    3
      Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h
  19. 3
    3
      Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h
  20. 3
    3
      Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h
  21. 3
    3
      Marlin/src/config/examples/MakerParts/Configuration_adv.h
  22. 3
    3
      Marlin/src/config/examples/Malyan/M150/Configuration_adv.h
  23. 3
    3
      Marlin/src/config/examples/Malyan/M200/Configuration_adv.h
  24. 3
    3
      Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h
  25. 3
    3
      Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h
  26. 3
    3
      Marlin/src/config/examples/RigidBot/Configuration_adv.h
  27. 3
    3
      Marlin/src/config/examples/SCARA/Configuration_adv.h
  28. 3
    3
      Marlin/src/config/examples/Sanguinololu/Configuration_adv.h
  29. 3
    3
      Marlin/src/config/examples/TheBorg/Configuration_adv.h
  30. 3
    3
      Marlin/src/config/examples/TinyBoy2/Configuration_adv.h
  31. 3
    3
      Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h
  32. 3
    3
      Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h
  33. 3
    3
      Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h
  34. 3
    3
      Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
  35. 3
    3
      Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
  36. 3
    3
      Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h
  37. 3
    3
      Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
  38. 3
    3
      Marlin/src/config/examples/delta/generic/Configuration_adv.h
  39. 3
    3
      Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h
  40. 3
    3
      Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h
  41. 3
    3
      Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h
  42. 3
    3
      Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h
  43. 3
    3
      Marlin/src/config/examples/makibox/Configuration_adv.h
  44. 3
    3
      Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h
  45. 3
    3
      Marlin/src/config/examples/wt150/Configuration_adv.h
  46. 16
    8
      Marlin/src/feature/I2CPositionEncoder.cpp
  47. 4
    2
      Marlin/src/feature/I2CPositionEncoder.h
  48. 2
    2
      Marlin/src/inc/SanityCheck.h

+ 1
- 1
.travis.yml View File

@@ -83,7 +83,7 @@ script:
83 83
   - opt_set TEMP_SENSOR_4 999
84 84
   - opt_set TEMP_SENSOR_BED 1
85 85
   - opt_enable AUTO_BED_LEVELING_UBL DEBUG_LEVELING_FEATURE G26_MESH_EDITING ENABLE_LEVELING_FADE_HEIGHT EEPROM_SETTINGS EEPROM_CHITCHAT G3D_PANEL SKEW_CORRECTION
86
-  - opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING LIN_ADVANCE NANODLP_Z_SYNC
86
+  - opt_enable_adv CUSTOM_USER_MENUS I2C_POSITION_ENCODERS BABYSTEPPING BABYSTEP_XY LIN_ADVANCE NANODLP_Z_SYNC
87 87
   - build_marlin_pio ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
88 88
   #
89 89
   # Add a Sled Z Probe, do non-segmented moves

+ 3
- 3
Marlin/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 7
Marlin/src/Marlin.cpp View File

@@ -202,8 +202,6 @@ millis_t max_inactive_time = 0,
202 202
 
203 203
 #if ENABLED(I2C_POSITION_ENCODERS)
204 204
   I2CPositionEncodersMgr I2CPEM;
205
-  uint8_t blockBufferIndexRef = 0;
206
-  millis_t lastUpdateMillis;
207 205
 #endif
208 206
 
209 207
 /**
@@ -549,12 +547,10 @@ void idle(
549 547
   #endif
550 548
 
551 549
   #if ENABLED(I2C_POSITION_ENCODERS)
552
-    if (planner.blocks_queued() &&
553
-        ( (blockBufferIndexRef != planner.block_buffer_head) ||
554
-          ((lastUpdateMillis + I2CPE_MIN_UPD_TIME_MS) < millis())) ) {
555
-      blockBufferIndexRef = planner.block_buffer_head;
550
+    static millis_t i2cpem_next_update_ms;
551
+    if (planner.blocks_queued() && ELAPSED(millis(), i2cpem_next_update_ms)) {
556 552
       I2CPEM.update();
557
-      lastUpdateMillis = millis();
553
+      i2cpem_next_update_ms = millis() + I2CPE_MIN_UPD_TIME_MS;
558 554
     }
559 555
   #endif
560 556
 

+ 3
- 3
Marlin/src/config/default/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/AlephObjects/TAZ4/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Anet/A6/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Anet/A8/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Azteeg/X5GT/Configuration_adv.h View File

@@ -1513,7 +1513,7 @@
1513 1513
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1514 1514
                                                             // steps per full revolution (motor steps/rev * microstepping)
1515 1515
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1516
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1516
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1517 1517
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1518 1518
                                                             // printer will attempt to correct the error; errors
1519 1519
                                                             // smaller than this are ignored to minimize effects of
@@ -1525,7 +1525,7 @@
1525 1525
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1526 1526
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1527 1527
   //#define I2CPE_ENC_2_INVERT
1528
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1528
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1529 1529
   #define I2CPE_ENC_2_EC_THRESH     0.10
1530 1530
 
1531 1531
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1557,7 +1557,7 @@
1557 1557
    * this setting determines the minimum update time between checks. A value of 100 works well with
1558 1558
    * error rolling average when attempting to correct only for skips and not for vibration.
1559 1559
    */
1560
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1560
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1561 1561
 
1562 1562
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1563 1563
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/BIBO/TouchX/Configuration_adv.h View File

@@ -1517,7 +1517,7 @@
1517 1517
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1518 1518
                                                             // steps per full revolution (motor steps/rev * microstepping)
1519 1519
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1520
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1520
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1521 1521
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1522 1522
                                                             // printer will attempt to correct the error; errors
1523 1523
                                                             // smaller than this are ignored to minimize effects of
@@ -1529,7 +1529,7 @@
1529 1529
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1530 1530
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1531 1531
   //#define I2CPE_ENC_2_INVERT
1532
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1532
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1533 1533
   #define I2CPE_ENC_2_EC_THRESH     0.10
1534 1534
 
1535 1535
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1561,7 +1561,7 @@
1561 1561
    * this setting determines the minimum update time between checks. A value of 100 works well with
1562 1562
    * error rolling average when attempting to correct only for skips and not for vibration.
1563 1563
    */
1564
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1564
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1565 1565
 
1566 1566
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1567 1567
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/BQ/Hephestos/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/BQ/Hephestos_2/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/BQ/WITBOX/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Cartesio/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Creality/CR-10/Configuration_adv.h View File

@@ -1515,7 +1515,7 @@
1515 1515
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1516 1516
                                                             // steps per full revolution (motor steps/rev * microstepping)
1517 1517
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1518
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1518
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1519 1519
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1520 1520
                                                             // printer will attempt to correct the error; errors
1521 1521
                                                             // smaller than this are ignored to minimize effects of
@@ -1527,7 +1527,7 @@
1527 1527
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1528 1528
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1529 1529
   //#define I2CPE_ENC_2_INVERT
1530
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1530
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1531 1531
   #define I2CPE_ENC_2_EC_THRESH     0.10
1532 1532
 
1533 1533
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1559,7 +1559,7 @@
1559 1559
    * this setting determines the minimum update time between checks. A value of 100 works well with
1560 1560
    * error rolling average when attempting to correct only for skips and not for vibration.
1561 1561
    */
1562
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1562
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1563 1563
 
1564 1564
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1565 1565
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Creality/CR-10S/Configuration_adv.h View File

@@ -1506,7 +1506,7 @@
1506 1506
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1507 1507
                                                             // steps per full revolution (motor steps/rev * microstepping)
1508 1508
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1509
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1509
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1510 1510
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1511 1511
                                                             // printer will attempt to correct the error; errors
1512 1512
                                                             // smaller than this are ignored to minimize effects of
@@ -1518,7 +1518,7 @@
1518 1518
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1519 1519
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1520 1520
   //#define I2CPE_ENC_2_INVERT
1521
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1521
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1522 1522
   #define I2CPE_ENC_2_EC_THRESH     0.10
1523 1523
 
1524 1524
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1550,7 +1550,7 @@
1550 1550
    * this setting determines the minimum update time between checks. A value of 100 works well with
1551 1551
    * error rolling average when attempting to correct only for skips and not for vibration.
1552 1552
    */
1553
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1553
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1554 1554
 
1555 1555
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1556 1556
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Creality/Ender/Configuration_adv.h View File

@@ -1506,7 +1506,7 @@
1506 1506
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1507 1507
                                                             // steps per full revolution (motor steps/rev * microstepping)
1508 1508
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1509
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1509
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1510 1510
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1511 1511
                                                             // printer will attempt to correct the error; errors
1512 1512
                                                             // smaller than this are ignored to minimize effects of
@@ -1518,7 +1518,7 @@
1518 1518
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1519 1519
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1520 1520
   //#define I2CPE_ENC_2_INVERT
1521
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1521
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1522 1522
   #define I2CPE_ENC_2_EC_THRESH     0.10
1523 1523
 
1524 1524
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1550,7 +1550,7 @@
1550 1550
    * this setting determines the minimum update time between checks. A value of 100 works well with
1551 1551
    * error rolling average when attempting to correct only for skips and not for vibration.
1552 1552
    */
1553
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1553
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1554 1554
 
1555 1555
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1556 1556
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Felix/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/FolgerTech/i3-2020/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Infitary/i3-M508/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/JGAurora/A5/Configuration_adv.h View File

@@ -1506,7 +1506,7 @@
1506 1506
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1507 1507
                                                             // steps per full revolution (motor steps/rev * microstepping)
1508 1508
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1509
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1509
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1510 1510
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1511 1511
                                                             // printer will attempt to correct the error; errors
1512 1512
                                                             // smaller than this are ignored to minimize effects of
@@ -1518,7 +1518,7 @@
1518 1518
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1519 1519
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1520 1520
   //#define I2CPE_ENC_2_INVERT
1521
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1521
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1522 1522
   #define I2CPE_ENC_2_EC_THRESH     0.10
1523 1523
 
1524 1524
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1550,7 +1550,7 @@
1550 1550
    * this setting determines the minimum update time between checks. A value of 100 works well with
1551 1551
    * error rolling average when attempting to correct only for skips and not for vibration.
1552 1552
    */
1553
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1553
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1554 1554
 
1555 1555
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1556 1556
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/MakerParts/Configuration_adv.h View File

@@ -1513,7 +1513,7 @@
1513 1513
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1514 1514
                                                             // steps per full revolution (motor steps/rev * microstepping)
1515 1515
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1516
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1516
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1517 1517
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1518 1518
                                                             // printer will attempt to correct the error; errors
1519 1519
                                                             // smaller than this are ignored to minimize effects of
@@ -1525,7 +1525,7 @@
1525 1525
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1526 1526
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1527 1527
   //#define I2CPE_ENC_2_INVERT
1528
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1528
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1529 1529
   #define I2CPE_ENC_2_EC_THRESH     0.10
1530 1530
 
1531 1531
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1557,7 +1557,7 @@
1557 1557
    * this setting determines the minimum update time between checks. A value of 100 works well with
1558 1558
    * error rolling average when attempting to correct only for skips and not for vibration.
1559 1559
    */
1560
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1560
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1561 1561
 
1562 1562
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1563 1563
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Malyan/M150/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Malyan/M200/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Micromake/C1/enhanced/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Mks/Sbase/Configuration_adv.h View File

@@ -1520,7 +1520,7 @@
1520 1520
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1521 1521
                                                             // steps per full revolution (motor steps/rev * microstepping)
1522 1522
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1523
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1523
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1524 1524
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1525 1525
                                                             // printer will attempt to correct the error; errors
1526 1526
                                                             // smaller than this are ignored to minimize effects of
@@ -1532,7 +1532,7 @@
1532 1532
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1533 1533
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1534 1534
   //#define I2CPE_ENC_2_INVERT
1535
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1535
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1536 1536
   #define I2CPE_ENC_2_EC_THRESH     0.10
1537 1537
 
1538 1538
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1564,7 +1564,7 @@
1564 1564
    * this setting determines the minimum update time between checks. A value of 100 works well with
1565 1565
    * error rolling average when attempting to correct only for skips and not for vibration.
1566 1566
    */
1567
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1567
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1568 1568
 
1569 1569
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1570 1570
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/RigidBot/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/SCARA/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Sanguinololu/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/TheBorg/Configuration_adv.h View File

@@ -1503,7 +1503,7 @@
1503 1503
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1504 1504
                                                             // steps per full revolution (motor steps/rev * microstepping)
1505 1505
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1506
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1506
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1507 1507
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1508 1508
                                                             // printer will attempt to correct the error; errors
1509 1509
                                                             // smaller than this are ignored to minimize effects of
@@ -1515,7 +1515,7 @@
1515 1515
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1516 1516
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1517 1517
   //#define I2CPE_ENC_2_INVERT
1518
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1518
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1519 1519
   #define I2CPE_ENC_2_EC_THRESH     0.10
1520 1520
 
1521 1521
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1547,7 +1547,7 @@
1547 1547
    * this setting determines the minimum update time between checks. A value of 100 works well with
1548 1548
    * error rolling average when attempting to correct only for skips and not for vibration.
1549 1549
    */
1550
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1550
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1551 1551
 
1552 1552
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1553 1553
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/TinyBoy2/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/UltiMachine/Archim2/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Velleman/K8200/Configuration_adv.h View File

@@ -1525,7 +1525,7 @@
1525 1525
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1526 1526
                                                             // steps per full revolution (motor steps/rev * microstepping)
1527 1527
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1528
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1528
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1529 1529
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1530 1530
                                                             // printer will attempt to correct the error; errors
1531 1531
                                                             // smaller than this are ignored to minimize effects of
@@ -1537,7 +1537,7 @@
1537 1537
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1538 1538
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1539 1539
   //#define I2CPE_ENC_2_INVERT
1540
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1540
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1541 1541
   #define I2CPE_ENC_2_EC_THRESH     0.10
1542 1542
 
1543 1543
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1569,7 +1569,7 @@
1569 1569
    * this setting determines the minimum update time between checks. A value of 100 works well with
1570 1570
    * error rolling average when attempting to correct only for skips and not for vibration.
1571 1571
    */
1572
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1572
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1573 1573
 
1574 1574
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1575 1575
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Velleman/K8400/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/FLSUN/kossel/Configuration_adv.h View File

@@ -1508,7 +1508,7 @@
1508 1508
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1509 1509
                                                             // steps per full revolution (motor steps/rev * microstepping)
1510 1510
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1511
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1511
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1512 1512
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1513 1513
                                                             // printer will attempt to correct the error; errors
1514 1514
                                                             // smaller than this are ignored to minimize effects of
@@ -1520,7 +1520,7 @@
1520 1520
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1521 1521
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1522 1522
   //#define I2CPE_ENC_2_INVERT
1523
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1523
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1524 1524
   #define I2CPE_ENC_2_EC_THRESH     0.10
1525 1525
 
1526 1526
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1552,7 +1552,7 @@
1552 1552
    * this setting determines the minimum update time between checks. A value of 100 works well with
1553 1553
    * error rolling average when attempting to correct only for skips and not for vibration.
1554 1554
    */
1555
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1555
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1556 1556
 
1557 1557
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1558 1558
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/generic/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/kossel_mini/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/kossel_pro/Configuration_adv.h View File

@@ -1519,7 +1519,7 @@
1519 1519
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1520 1520
                                                             // steps per full revolution (motor steps/rev * microstepping)
1521 1521
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1522
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1522
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1523 1523
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1524 1524
                                                             // printer will attempt to correct the error; errors
1525 1525
                                                             // smaller than this are ignored to minimize effects of
@@ -1531,7 +1531,7 @@
1531 1531
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1532 1532
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1533 1533
   //#define I2CPE_ENC_2_INVERT
1534
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1534
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1535 1535
   #define I2CPE_ENC_2_EC_THRESH     0.10
1536 1536
 
1537 1537
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1563,7 +1563,7 @@
1563 1563
    * this setting determines the minimum update time between checks. A value of 100 works well with
1564 1564
    * error rolling average when attempting to correct only for skips and not for vibration.
1565 1565
    */
1566
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1566
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1567 1567
 
1568 1568
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1569 1569
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/delta/kossel_xl/Configuration_adv.h View File

@@ -1514,7 +1514,7 @@
1514 1514
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1515 1515
                                                             // steps per full revolution (motor steps/rev * microstepping)
1516 1516
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1517
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1517
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1518 1518
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1519 1519
                                                             // printer will attempt to correct the error; errors
1520 1520
                                                             // smaller than this are ignored to minimize effects of
@@ -1526,7 +1526,7 @@
1526 1526
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1527 1527
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1528 1528
   //#define I2CPE_ENC_2_INVERT
1529
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1529
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1530 1530
   #define I2CPE_ENC_2_EC_THRESH     0.10
1531 1531
 
1532 1532
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1558,7 +1558,7 @@
1558 1558
    * this setting determines the minimum update time between checks. A value of 100 works well with
1559 1559
    * error rolling average when attempting to correct only for skips and not for vibration.
1560 1560
    */
1561
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1561
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1562 1562
 
1563 1563
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1564 1564
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/gCreate/gMax1.5+/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/makibox/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/tvrrug/Round2/Configuration_adv.h View File

@@ -1512,7 +1512,7 @@
1512 1512
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1513 1513
                                                             // steps per full revolution (motor steps/rev * microstepping)
1514 1514
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1515
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1515
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1516 1516
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1517 1517
                                                             // printer will attempt to correct the error; errors
1518 1518
                                                             // smaller than this are ignored to minimize effects of
@@ -1524,7 +1524,7 @@
1524 1524
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1525 1525
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1526 1526
   //#define I2CPE_ENC_2_INVERT
1527
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1527
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1528 1528
   #define I2CPE_ENC_2_EC_THRESH     0.10
1529 1529
 
1530 1530
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1556,7 +1556,7 @@
1556 1556
    * this setting determines the minimum update time between checks. A value of 100 works well with
1557 1557
    * error rolling average when attempting to correct only for skips and not for vibration.
1558 1558
    */
1559
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1559
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1560 1560
 
1561 1561
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1562 1562
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 3
- 3
Marlin/src/config/examples/wt150/Configuration_adv.h View File

@@ -1513,7 +1513,7 @@
1513 1513
   //#define I2CPE_ENC_1_TICKS_REV     (16 * 200)            // Only needed for rotary encoders; number of stepper
1514 1514
                                                             // steps per full revolution (motor steps/rev * microstepping)
1515 1515
   //#define I2CPE_ENC_1_INVERT                              // Invert the direction of axis travel.
1516
-  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_NONE          // Type of error error correction.
1516
+  #define I2CPE_ENC_1_EC_METHOD     I2CPE_ECM_MICROSTEP     // Type of error error correction.
1517 1517
   #define I2CPE_ENC_1_EC_THRESH     0.10                    // Threshold size for error (in mm) above which the
1518 1518
                                                             // printer will attempt to correct the error; errors
1519 1519
                                                             // smaller than this are ignored to minimize effects of
@@ -1525,7 +1525,7 @@
1525 1525
   #define I2CPE_ENC_2_TICKS_UNIT    2048
1526 1526
   //#define I2CPE_ENC_2_TICKS_REV   (16 * 200)
1527 1527
   //#define I2CPE_ENC_2_INVERT
1528
-  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_NONE
1528
+  #define I2CPE_ENC_2_EC_METHOD     I2CPE_ECM_MICROSTEP
1529 1529
   #define I2CPE_ENC_2_EC_THRESH     0.10
1530 1530
 
1531 1531
   #define I2CPE_ENC_3_ADDR          I2CPE_PRESET_ADDR_Z     // Encoder 3.  Add additional configuration options
@@ -1557,7 +1557,7 @@
1557 1557
    * this setting determines the minimum update time between checks. A value of 100 works well with
1558 1558
    * error rolling average when attempting to correct only for skips and not for vibration.
1559 1559
    */
1560
-  #define I2CPE_MIN_UPD_TIME_MS     100                     // Minimum time in miliseconds between encoder checks.
1560
+  #define I2CPE_MIN_UPD_TIME_MS     4                       // Minimum time in miliseconds between encoder checks.
1561 1561
 
1562 1562
   // Use a rolling average to identify persistant errors that indicate skips, as opposed to vibration and noise.
1563 1563
   #define I2CPE_ERR_ROLLING_AVERAGE

+ 16
- 8
Marlin/src/feature/I2CPositionEncoder.cpp View File

@@ -173,22 +173,30 @@ void I2CPositionEncoder::update() {
173 173
 
174 174
     #if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
175 175
       if (errIdx == 0) {
176
-        // in order to correct for "error" but avoid correcting for noise and non skips
176
+        // In order to correct for "error" but avoid correcting for noise and non-skips
177 177
         // it must be > threshold and have a difference average of < 10 and be < 2000 steps
178 178
         if (labs(error) > threshold * planner.axis_steps_per_mm[encoderAxis] &&
179
-            diffSum < 10 * (I2CPE_ERR_ARRAY_SIZE - 1) && labs(error) < 2000) { //Check for persistent error (skip)
180
-          SERIAL_ECHO(axis_codes[encoderAxis]);
181
-          SERIAL_ECHOPAIR(" diffSum: ", diffSum / (I2CPE_ERR_ARRAY_SIZE - 1));
182
-          SERIAL_ECHOPAIR(" - err detected: ", error / planner.axis_steps_per_mm[encoderAxis]);
183
-          SERIAL_ECHOLNPGM("mm; correcting!");
184
-          thermalManager.babystepsTodo[encoderAxis] = -LROUND(error);
179
+            diffSum < 10 * (I2CPE_ERR_ARRAY_SIZE - 1) && labs(error) < 2000) { // Check for persistent error (skip)
180
+          errPrst[errPrstIdx++] = error; // Error must persist for I2CPE_ERR_PRST_ARRAY_SIZE error cycles. This also serves to improve the average accuracy
181
+          if (errPrstIdx >= I2CPE_ERR_PRST_ARRAY_SIZE) {
182
+            float sumP = 0;
183
+            LOOP_L_N(i, I2CPE_ERR_PRST_ARRAY_SIZE) sumP += errPrst[i]; 
184
+            const int32_t errorP = int32_t(sumP * (1.0 / (I2CPE_ERR_PRST_ARRAY_SIZE)));
185
+            SERIAL_ECHO(axis_codes[encoderAxis]);
186
+            SERIAL_ECHOPAIR(" - err detected: ", errorP * planner.steps_to_mm[encoderAxis]);
187
+            SERIAL_ECHOLNPGM("mm; correcting!");
188
+            thermalManager.babystepsTodo[encoderAxis] = -LROUND(errorP);
189
+            errPrstIdx = 0;
190
+          }
185 191
         }
192
+        else
193
+          errPrstIdx = 0;
186 194
       }
187 195
     #else
188 196
       if (labs(error) > threshold * planner.axis_steps_per_mm[encoderAxis]) {
189 197
         //SERIAL_ECHOLN(error);
190 198
         //SERIAL_ECHOLN(position);
191
-        thermalManager.babystepsTodo[encoderAxis] = -LROUND(error/2);
199
+        thermalManager.babystepsTodo[encoderAxis] = -LROUND(error / 2);
192 200
       }
193 201
     #endif
194 202
 

+ 4
- 2
Marlin/src/feature/I2CPositionEncoder.h View File

@@ -75,6 +75,7 @@
75 75
 
76 76
 #if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
77 77
   #define I2CPE_ERR_ARRAY_SIZE        32
78
+  #define I2CPE_ERR_PRST_ARRAY_SIZE   10
78 79
 #endif
79 80
 
80 81
 // Error Correction Methods
@@ -135,8 +136,9 @@ class I2CPositionEncoder {
135 136
     //double        positionMm; //calculate
136 137
 
137 138
     #if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
138
-      uint8_t errIdx = 0;
139
-      int     err[I2CPE_ERR_ARRAY_SIZE] = { 0 };
139
+      uint8_t errIdx = 0, errPrstIdx = 0;
140
+      int err[I2CPE_ERR_ARRAY_SIZE] = { 0 },
141
+          errPrst[I2CPE_ERR_PRST_ARRAY_SIZE] = { 0 };
140 142
     #endif
141 143
 
142 144
     //float        positionMm; //calculate

+ 2
- 2
Marlin/src/inc/SanityCheck.h View File

@@ -367,8 +367,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
367 367
  * I2C Position Encoders
368 368
  */
369 369
 #if ENABLED(I2C_POSITION_ENCODERS)
370
-  #if DISABLED(BABYSTEPPING)
371
-    #error "I2C_POSITION_ENCODERS requires BABYSTEPPING."
370
+  #if DISABLED(BABYSTEPPING) || DISABLED(BABYSTEP_XY)
371
+    #error "I2C_POSITION_ENCODERS requires BABYSTEPPING and BABYSTEP_XY."
372 372
   #elif !WITHIN(I2CPE_ENCODER_CNT, 1, 5)
373 373
     #error "I2CPE_ENCODER_CNT must be between 1 and 5."
374 374
   #endif

Loading…
Cancel
Save