ソースを参照

Merge pull request #2 from MarlinFirmware/Development

update
Mehmet Sutas 10年前
コミット
b373826428

+ 1
- 0
Documentation/changelog.md ファイルの表示

@@ -0,0 +1 @@
1
+

+ 44
- 51
Marlin/Configuration.h ファイルの表示

@@ -59,7 +59,7 @@ Here are some standard links for getting your machine calibrated:
59 59
 // The following define selects which electronics board you have.
60 60
 // Please choose the name from boards.h that matches your setup
61 61
 #ifndef MOTHERBOARD
62
-  #define MOTHERBOARD BOARD_ULTIMAKER
62
+  #define MOTHERBOARD BOARD_RAMPS_13_EFB
63 63
 #endif
64 64
 
65 65
 // Define this to set a custom name for your generic Mendel,
@@ -123,8 +123,8 @@ Here are some standard links for getting your machine calibrated:
123 123
 //     #define DUMMY_THERMISTOR_998_VALUE 25
124 124
 //     #define DUMMY_THERMISTOR_999_VALUE 100
125 125
 
126
-#define TEMP_SENSOR_0 -1
127
-#define TEMP_SENSOR_1 -1
126
+#define TEMP_SENSOR_0 1
127
+#define TEMP_SENSOR_1 0
128 128
 #define TEMP_SENSOR_2 0
129 129
 #define TEMP_SENSOR_3 0
130 130
 #define TEMP_SENSOR_BED 0
@@ -301,35 +301,21 @@ your extruder heater takes 2 minutes to hit the target on heating.
301 301
 // Enable this option for Toshiba steppers
302 302
 // #define CONFIG_STEPPERS_TOSHIBA
303 303
 
304
-// coarse Endstop Settings
305
-#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
306
-
307
-#ifndef ENDSTOPPULLUPS
308
-  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
309
-  // #define ENDSTOPPULLUP_XMAX
310
-  // #define ENDSTOPPULLUP_YMAX
311
-  // #define ENDSTOPPULLUP_ZMAX
312
-  // #define ENDSTOPPULLUP_XMIN
313
-  // #define ENDSTOPPULLUP_YMIN
314
-  // #define ENDSTOPPULLUP_ZMIN
315
-#endif
316
-
317
-#ifdef ENDSTOPPULLUPS
318
-  #define ENDSTOPPULLUP_XMAX
319
-  #define ENDSTOPPULLUP_YMAX
320
-  #define ENDSTOPPULLUP_ZMAX
321
-  #define ENDSTOPPULLUP_XMIN
322
-  #define ENDSTOPPULLUP_YMIN
323
-  #define ENDSTOPPULLUP_ZMIN
324
-#endif
325
-
326
-// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
327
-const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
328
-const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
329
-const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
330
-const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
331
-const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
332
-const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
304
+// The pullups are needed if you directly connect a mechanical endstop between the signal and ground pins.
305
+#define ENDSTOPPULLUP_XMAX
306
+#define ENDSTOPPULLUP_YMAX
307
+#define ENDSTOPPULLUP_ZMAX
308
+#define ENDSTOPPULLUP_XMIN
309
+#define ENDSTOPPULLUP_YMIN
310
+#define ENDSTOPPULLUP_ZMIN
311
+
312
+// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
313
+const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
314
+const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
315
+const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
316
+const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
317
+const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
318
+const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
333 319
 //#define DISABLE_MAX_ENDSTOPS
334 320
 //#define DISABLE_MIN_ENDSTOPS
335 321
 
@@ -346,13 +332,14 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
346 332
 #define DISABLE_E false // For all extruders
347 333
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
348 334
 
349
-#define INVERT_X_DIR true     // for Mendel set to false, for Orca set to true
350
-#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
351
-#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
352
-#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
353
-#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
354
-#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
355
-#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
335
+// If you motor turns to wrong direction, you can invert it here:
336
+#define INVERT_X_DIR false
337
+#define INVERT_Y_DIR false
338
+#define INVERT_Z_DIR false
339
+#define INVERT_E0_DIR false
340
+#define INVERT_E1_DIR false
341
+#define INVERT_E2_DIR false
342
+#define INVERT_E3_DIR false
356 343
 
357 344
 // ENDSTOP SETTINGS:
358 345
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
@@ -364,9 +351,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
364 351
 #define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
365 352
 
366 353
 // Travel limits after homing (units are in mm)
367
-#define X_MAX_POS 205
354
+#define X_MAX_POS 200
368 355
 #define X_MIN_POS 0
369
-#define Y_MAX_POS 205
356
+#define Y_MAX_POS 200
370 357
 #define Y_MIN_POS 0
371 358
 #define Z_MAX_POS 200
372 359
 #define Z_MIN_POS 0
@@ -416,6 +403,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
416 403
     #define RIGHT_PROBE_BED_POSITION 170
417 404
     #define FRONT_PROBE_BED_POSITION 20
418 405
     #define BACK_PROBE_BED_POSITION 170
406
+    
407
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this
419 408
 
420 409
     // Set the number of grid points per dimension
421 410
     // You probably don't need more than 3 (squared=9)
@@ -438,8 +427,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
438 427
 
439 428
   // Offsets to the probe relative to the extruder tip (Hotend - Probe)
440 429
   // X and Y offsets must be integers
441
-  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // -left  +right
442
-  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // -front +behind
430
+  #define X_PROBE_OFFSET_FROM_EXTRUDER -25     // Probe on: -left  +right
431
+  #define Y_PROBE_OFFSET_FROM_EXTRUDER -29     // Probe on: -front +behind
443 432
   #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35  // -below (always!)
444 433
 
445 434
   #define Z_RAISE_BEFORE_HOMING 4       // (in mm) Raise Z before homing (G28) for Probe Clearance.
@@ -450,6 +439,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
450 439
   #define Z_RAISE_BEFORE_PROBING 15    //How much the extruder will be raised before traveling to the first probing point.
451 440
   #define Z_RAISE_BETWEEN_PROBINGS 5  //How much the extruder will be raised when traveling from between next probing points
452 441
 
442
+//   #define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" //These commands will be executed in the end of G29 routine.
443
+                                                                            //Useful to retract a deployable probe.
444
+                                                                           
453 445
   //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
454 446
   //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
455 447
 
@@ -497,12 +489,13 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
497 489
 
498 490
 // default settings
499 491
 
500
-#define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}  // default steps per unit for Ultimaker
501
-#define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 25}    // (mm/sec)
502
-#define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
492
+#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,500}  // default steps per unit for Ultimaker
493
+#define DEFAULT_MAX_FEEDRATE          {300, 300, 5, 25}    // (mm/sec)
494
+#define DEFAULT_MAX_ACCELERATION      {3000,3000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
503 495
 
504
-#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
505
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
496
+#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
497
+#define DEFAULT_RETRACT_ACCELERATION  3000   // E acceleration in mm/s^2 for retracts
498
+#define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
506 499
 
507 500
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
508 501
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
@@ -543,11 +536,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
543 536
 // Preheat Constants
544 537
 #define PLA_PREHEAT_HOTEND_TEMP 180
545 538
 #define PLA_PREHEAT_HPB_TEMP 70
546
-#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
539
+#define PLA_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
547 540
 
548 541
 #define ABS_PREHEAT_HOTEND_TEMP 240
549
-#define ABS_PREHEAT_HPB_TEMP 100
550
-#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255
542
+#define ABS_PREHEAT_HPB_TEMP 110
543
+#define ABS_PREHEAT_FAN_SPEED 0   // Insert Value between 0 and 255
551 544
 
552 545
 //==============================LCD and SD support=============================
553 546
 

+ 10
- 5
Marlin/ConfigurationStore.cpp ファイルの表示

@@ -3,7 +3,7 @@
3 3
  *
4 4
  * Configuration and EEPROM storage
5 5
  *
6
- * V15 EEPROM Layout:
6
+ * V16 EEPROM Layout:
7 7
  *
8 8
  *  ver
9 9
  *  axis_steps_per_unit (x4)
@@ -11,6 +11,7 @@
11 11
  *  max_acceleration_units_per_sq_second (x4)
12 12
  *  acceleration
13 13
  *  retract_acceleration
14
+ *  travel_aceeleration
14 15
  *  minimumfeedrate
15 16
  *  mintravelfeedrate
16 17
  *  minsegmenttime
@@ -104,7 +105,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) {
104 105
 // wrong data being written to the variables.
105 106
 // ALSO:  always make sure the variables in the Store and retrieve sections are in the same order.
106 107
 
107
-#define EEPROM_VERSION "V15"
108
+#define EEPROM_VERSION "V16"
108 109
 
109 110
 #ifdef EEPROM_SETTINGS
110 111
 
@@ -118,6 +119,7 @@ void Config_StoreSettings()  {
118 119
   EEPROM_WRITE_VAR(i, max_acceleration_units_per_sq_second);
119 120
   EEPROM_WRITE_VAR(i, acceleration);
120 121
   EEPROM_WRITE_VAR(i, retract_acceleration);
122
+  EEPROM_WRITE_VAR(i, travel_acceleration);
121 123
   EEPROM_WRITE_VAR(i, minimumfeedrate);
122 124
   EEPROM_WRITE_VAR(i, mintravelfeedrate);
123 125
   EEPROM_WRITE_VAR(i, minsegmenttime);
@@ -253,6 +255,7 @@ void Config_RetrieveSettings() {
253 255
 
254 256
     EEPROM_READ_VAR(i, acceleration);
255 257
     EEPROM_READ_VAR(i, retract_acceleration);
258
+    EEPROM_READ_VAR(i, travel_acceleration);
256 259
     EEPROM_READ_VAR(i, minimumfeedrate);
257 260
     EEPROM_READ_VAR(i, mintravelfeedrate);
258 261
     EEPROM_READ_VAR(i, minsegmenttime);
@@ -380,6 +383,7 @@ void Config_ResetDefault() {
380 383
 
381 384
   acceleration = DEFAULT_ACCELERATION;
382 385
   retract_acceleration = DEFAULT_RETRACT_ACCELERATION;
386
+  travel_acceleration = DEFAULT_TRAVEL_ACCELERATION;
383 387
   minimumfeedrate = DEFAULT_MINIMUMFEEDRATE;
384 388
   minsegmenttime = DEFAULT_MINSEGMENTTIME;
385 389
   mintravelfeedrate = DEFAULT_MINTRAVELFEEDRATE;
@@ -516,11 +520,12 @@ void Config_PrintSettings(bool forReplay) {
516 520
   SERIAL_EOL;
517 521
   SERIAL_ECHO_START;
518 522
   if (!forReplay) {
519
-    SERIAL_ECHOLNPGM("Acceleration: S=acceleration, T=retract acceleration");
523
+    SERIAL_ECHOLNPGM("Accelerations: P=printing, R=retract and T=travel");
520 524
     SERIAL_ECHO_START;
521 525
   }
522
-  SERIAL_ECHOPAIR("  M204 S", acceleration );
523
-  SERIAL_ECHOPAIR(" T", retract_acceleration);
526
+  SERIAL_ECHOPAIR("  M204 P", acceleration );
527
+  SERIAL_ECHOPAIR(" R", retract_acceleration);
528
+  SERIAL_ECHOPAIR(" T", travel_acceleration);
524 529
   SERIAL_EOL;
525 530
 
526 531
   SERIAL_ECHO_START;

+ 1
- 0
Marlin/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 2
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 75
- 36
Marlin/Marlin_main.cpp ファイルの表示

@@ -201,6 +201,10 @@
201 201
 #endif
202 202
 
203 203
 float homing_feedrate[] = HOMING_FEEDRATE;
204
+#ifdef ENABLE_AUTO_BED_LEVELING
205
+int xy_travel_speed = XY_TRAVEL_SPEED;
206
+#endif
207
+int homing_bump_divisor[] = HOMING_BUMP_DIVISOR;
204 208
 bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
205 209
 int feedmultiply = 100; //100->1 200->2
206 210
 int saved_feedmultiply;
@@ -780,7 +784,7 @@ void get_command()
780 784
           while(cmdbuffer[bufindw][count] != '*') checksum = checksum^cmdbuffer[bufindw][count++];
781 785
           strchr_pointer = strchr(cmdbuffer[bufindw], '*');
782 786
 
783
-          if( (int)(strtod(strchr_pointer + 1, NULL)) != checksum) {
787
+          if(strtol(strchr_pointer + 1, NULL, 10) != checksum) {
784 788
             SERIAL_ERROR_START;
785 789
             SERIAL_ERRORPGM(MSG_ERR_CHECKSUM_MISMATCH);
786 790
             SERIAL_ERRORLN(gcode_LastN);
@@ -816,7 +820,7 @@ void get_command()
816 820
       }
817 821
       if((strchr(cmdbuffer[bufindw], 'G') != NULL)){
818 822
         strchr_pointer = strchr(cmdbuffer[bufindw], 'G');
819
-        switch((int)((strtod(strchr_pointer + 1, NULL)))){
823
+        switch(strtol(strchr_pointer + 1, NULL, 10)){
820 824
         case 0:
821 825
         case 1:
822 826
         case 2:
@@ -1146,7 +1150,18 @@ static void run_z_probe() {
1146 1150
     st_synchronize();
1147 1151
 
1148 1152
     // move back down slowly to find bed
1149
-    feedrate = homing_feedrate[Z_AXIS]/4;
1153
+    
1154
+    if (homing_bump_divisor[Z_AXIS] >= 1)
1155
+    {
1156
+        feedrate = homing_feedrate[Z_AXIS]/homing_bump_divisor[Z_AXIS];
1157
+    } 
1158
+    else
1159
+    {
1160
+        feedrate = homing_feedrate[Z_AXIS]/10;
1161
+        SERIAL_ECHOLN("Warning: The Homing Bump Feedrate Divisor cannot be less then 1");
1162
+    }
1163
+
1164
+    
1150 1165
     zPosition -= home_retract_mm(Z_AXIS) * 2;
1151 1166
     plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
1152 1167
     st_synchronize();
@@ -1165,7 +1180,7 @@ static void do_blocking_move_to(float x, float y, float z) {
1165 1180
     plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder);
1166 1181
     st_synchronize();
1167 1182
 
1168
-    feedrate = XY_TRAVEL_SPEED;
1183
+    feedrate = xy_travel_speed;
1169 1184
 
1170 1185
     current_position[X_AXIS] = x;
1171 1186
     current_position[Y_AXIS] = y;
@@ -1308,11 +1323,17 @@ static void homeaxis(int axis) {
1308 1323
     st_synchronize();
1309 1324
 
1310 1325
     destination[axis] = 2*home_retract_mm(axis) * axis_home_dir;
1311
-#ifdef DELTA
1312
-    feedrate = homing_feedrate[axis]/10;
1313
-#else
1314
-    feedrate = homing_feedrate[axis]/2 ;
1315
-#endif
1326
+
1327
+    if (homing_bump_divisor[axis] >= 1)
1328
+    {
1329
+        feedrate = homing_feedrate[axis]/homing_bump_divisor[axis];
1330
+    } 
1331
+    else
1332
+    {
1333
+        feedrate = homing_feedrate[axis]/10;
1334
+        SERIAL_ECHOLN("Warning: The Homing Bump Feedrate Divisor cannot be less then 1");
1335
+    }
1336
+
1316 1337
     plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
1317 1338
     st_synchronize();
1318 1339
 #ifdef DELTA
@@ -1771,41 +1792,32 @@ inline void gcode_G28() {
1771 1792
 
1772 1793
   #ifdef AUTO_BED_LEVELING_GRID
1773 1794
 
1774
-    #define MIN_PROBE_EDGE 20 // The probe square sides can be no smaller than this
1775
-
1776 1795
     // Make sure probing points are reachable
1777 1796
 
1778 1797
     #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
1779
-      #error The given LEFT_PROBE_BED_POSITION can't be reached by the probe.
1798
+      #error "The given LEFT_PROBE_BED_POSITION can't be reached by the probe."
1780 1799
     #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
1781
-      #error The given RIGHT_PROBE_BED_POSITION can't be reached by the probe.
1800
+      #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the probe."
1782 1801
     #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
1783
-      #error The given FRONT_PROBE_BED_POSITION can't be reached by the probe.
1802
+      #error "The given FRONT_PROBE_BED_POSITION can't be reached by the probe."
1784 1803
     #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
1785
-      #error The given BACK_PROBE_BED_POSITION can't be reached by the probe.
1786
-
1787
-    // Check if Probe_Offset * Grid Points is greater than Probing Range
1788
-
1789
-    #elif abs(X_PROBE_OFFSET_FROM_EXTRUDER) * (AUTO_BED_LEVELING_GRID_POINTS-1) >= RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION
1790
-      #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
1791
-    #elif abs(Y_PROBE_OFFSET_FROM_EXTRUDER) * (AUTO_BED_LEVELING_GRID_POINTS-1) >= BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION
1792
-      #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS"
1804
+      #error "The given BACK_PROBE_BED_POSITION can't be reached by the probe."
1793 1805
     #endif
1794 1806
 
1795 1807
   #else // !AUTO_BED_LEVELING_GRID
1796 1808
 
1797 1809
     #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X
1798
-      #error The given ABL_PROBE_PT_1_X can't be reached by the probe.
1810
+      #error "The given ABL_PROBE_PT_1_X can't be reached by the probe."
1799 1811
     #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X
1800
-      #error The given ABL_PROBE_PT_2_X can't be reached by the probe.
1812
+      #error "The given ABL_PROBE_PT_2_X can't be reached by the probe."
1801 1813
     #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X
1802
-      #error The given ABL_PROBE_PT_3_X can't be reached by the probe.
1814
+      #error "The given ABL_PROBE_PT_3_X can't be reached by the probe."
1803 1815
     #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y
1804
-      #error The given ABL_PROBE_PT_1_Y can't be reached by the probe.
1816
+      #error "The given ABL_PROBE_PT_1_Y can't be reached by the probe."
1805 1817
     #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y
1806
-      #error The given ABL_PROBE_PT_2_Y can't be reached by the probe.
1818
+      #error "The given ABL_PROBE_PT_2_Y can't be reached by the probe."
1807 1819
     #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y
1808
-      #error The given ABL_PROBE_PT_3_Y can't be reached by the probe.
1820
+      #error "The given ABL_PROBE_PT_3_Y can't be reached by the probe."
1809 1821
     #endif
1810 1822
 
1811 1823
   #endif // !AUTO_BED_LEVELING_GRID
@@ -1821,6 +1833,8 @@ inline void gcode_G28() {
1821 1833
    *  P  Set the size of the grid that will be probed (P x P points).
1822 1834
    *     Example: "G29 P4"
1823 1835
    *
1836
+   *  S  Set the XY travel speed between probe points (in mm/min)
1837
+   *
1824 1838
    *  V  Set the verbose level (0-4). Example: "G29 V3"
1825 1839
    *
1826 1840
    *  T  Generate a Bed Topology Report. Example: "G29 P5 T" for a detailed report.
@@ -1877,11 +1891,13 @@ inline void gcode_G28() {
1877 1891
         SERIAL_PROTOCOLPGM("G29 Auto Bed Leveling\n");
1878 1892
 
1879 1893
       int auto_bed_leveling_grid_points = code_seen('P') ? code_value_long() : AUTO_BED_LEVELING_GRID_POINTS;
1880
-      if (auto_bed_leveling_grid_points < 2 || auto_bed_leveling_grid_points > AUTO_BED_LEVELING_GRID_POINTS) {
1894
+      if (auto_bed_leveling_grid_points < 2) {
1881 1895
         SERIAL_PROTOCOLPGM("?Number of probed (P)oints is implausible (2 minimum).\n");
1882 1896
         return;
1883 1897
       }
1884 1898
 
1899
+      xy_travel_speed = code_seen('S') ? code_value_long() : XY_TRAVEL_SPEED;
1900
+
1885 1901
       int left_probe_bed_position = code_seen('L') ? code_value_long() : LEFT_PROBE_BED_POSITION,
1886 1902
           right_probe_bed_position = code_seen('R') ? code_value_long() : RIGHT_PROBE_BED_POSITION,
1887 1903
           front_probe_bed_position = code_seen('F') ? code_value_long() : FRONT_PROBE_BED_POSITION,
@@ -2110,6 +2126,11 @@ inline void gcode_G28() {
2110 2126
     #ifdef Z_PROBE_SLED
2111 2127
       dock_sled(true, -SLED_DOCKING_OFFSET); // dock the probe, correcting for over-travel
2112 2128
     #endif
2129
+    
2130
+    #ifdef Z_PROBE_END_SCRIPT
2131
+      enquecommands_P(PSTR(Z_PROBE_END_SCRIPT));
2132
+      st_synchronize();
2133
+    #endif
2113 2134
   }
2114 2135
 
2115 2136
   #ifndef Z_PROBE_SLED
@@ -3257,16 +3278,34 @@ inline void gcode_M203() {
3257 3278
 }
3258 3279
 
3259 3280
 /**
3260
- * M204: Set Default Acceleration and/or Default Filament Acceleration in mm/sec^2 (M204 S3000 T7000)
3281
+ * M204: Set Accelerations in mm/sec^2 (M204 P1200 R3000 T3000)
3261 3282
  *
3262
- *    S = normal moves
3263
- *    T = filament only moves
3283
+ *    P = Printing moves
3284
+ *    R = Retract only (no X, Y, Z) moves
3285
+ *    T = Travel (non printing) moves
3264 3286
  *
3265 3287
  *  Also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate
3266 3288
  */
3267 3289
 inline void gcode_M204() {
3268
-  if (code_seen('S')) acceleration = code_value();
3269
-  if (code_seen('T')) retract_acceleration = code_value();
3290
+  if (code_seen('P'))
3291
+  {
3292
+    acceleration = code_value();
3293
+    SERIAL_ECHOPAIR("Setting Printing Acceleration: ", acceleration );
3294
+    SERIAL_EOL;
3295
+  }
3296
+  if (code_seen('R'))
3297
+  {
3298
+    retract_acceleration = code_value();
3299
+    SERIAL_ECHOPAIR("Setting Retract Acceleration: ", retract_acceleration );
3300
+    SERIAL_EOL;
3301
+  }
3302
+  if (code_seen('T'))
3303
+  {
3304
+    travel_acceleration = code_value();
3305
+    SERIAL_ECHOPAIR("Setting Travel Acceleration: ", travel_acceleration );
3306
+    SERIAL_EOL;
3307
+  }
3308
+  
3270 3309
 }
3271 3310
 
3272 3311
 /**
@@ -4218,7 +4257,7 @@ inline void gcode_M350() {
4218 4257
  */
4219 4258
 inline void gcode_M351() {
4220 4259
   #if defined(X_MS1_PIN) && X_MS1_PIN > -1
4221
-    if (code_seen('S')) switch((int)code_value()) {
4260
+    if (code_seen('S')) switch(code_value_long()) {
4222 4261
       case 1:
4223 4262
         for(int i=0;i<NUM_AXIS;i++) if (code_seen(axis_codes[i])) microstep_ms(i, code_value(), -1);
4224 4263
         if (code_seen('B')) microstep_ms(4, code_value(), -1);
@@ -4417,7 +4456,7 @@ void process_commands() {
4417 4456
   }
4418 4457
 
4419 4458
   else if (code_seen('M')) {
4420
-    switch( (int)code_value() ) {
4459
+    switch( code_value_long() ) {
4421 4460
       #ifdef ULTIPANEL
4422 4461
         case 0: // M0 - Unconditional stop - Wait for user button press on LCD
4423 4462
         case 1: // M1 - Conditional stop - Wait for user button press on LCD

+ 7
- 2
Marlin/example_configurations/Hephestos/Configuration.h ファイルの表示

@@ -413,6 +413,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
413 413
     #define RIGHT_PROBE_BED_POSITION 170
414 414
     #define FRONT_PROBE_BED_POSITION 20
415 415
     #define BACK_PROBE_BED_POSITION 170
416
+    
417
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this
416 418
 
417 419
     // Set the number of grid points per dimension
418 420
     // You probably don't need more than 3 (squared=9)
@@ -498,8 +500,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
498 500
 #define DEFAULT_MAX_FEEDRATE          {250, 250, 3.3, 25}    // (mm/sec)
499 501
 #define DEFAULT_MAX_ACCELERATION      {3000,3000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
500 502
 
501
-#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
502
-#define DEFAULT_RETRACT_ACCELERATION  1000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
503
+#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
504
+#define DEFAULT_RETRACT_ACCELERATION  1000   // E acceleration in mm/s^2 for retracts
505
+#define DEFAULT_TRAVEL_ACCELERATION   1000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
506
+
507
+
503 508
 
504 509
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
505 510
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/Hephestos/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 2
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 6
- 2
Marlin/example_configurations/K8200/Configuration.h ファイルの表示

@@ -419,6 +419,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
419 419
     #define FRONT_PROBE_BED_POSITION 20
420 420
     #define BACK_PROBE_BED_POSITION 170
421 421
 
422
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this    
423
+    
422 424
     // Set the number of grid points per dimension
423 425
     // You probably don't need more than 3 (squared=9)
424 426
     #define AUTO_BED_LEVELING_GRID_POINTS 2
@@ -503,8 +505,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
503 505
 #define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 500}    // (mm/sec)
504 506
 #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
505 507
 
506
-#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
507
-#define DEFAULT_RETRACT_ACCELERATION  1000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
508
+#define DEFAULT_ACCELERATION          1000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
509
+#define DEFAULT_RETRACT_ACCELERATION  1000   // E acceleration in mm/s^2 for retracts
510
+#define DEFAULT_TRAVEL_ACCELERATION   1000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
511
+
508 512
 
509 513
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
510 514
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/K8200/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 3
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 7
- 2
Marlin/example_configurations/SCARA/Configuration.h ファイルの表示

@@ -443,6 +443,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
443 443
     #define FRONT_PROBE_BED_POSITION 20
444 444
     #define BACK_PROBE_BED_POSITION 170
445 445
 
446
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this    
447
+    
446 448
     // Set the number of grid points per dimension
447 449
     // You probably don't need more than 3 (squared=9)
448 450
     #define AUTO_BED_LEVELING_GRID_POINTS 2
@@ -528,8 +530,11 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
528 530
 #define DEFAULT_MAX_FEEDRATE          {300, 300, 30, 25}    // (mm/sec)
529 531
 #define DEFAULT_MAX_ACCELERATION      {300,300,20,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
530 532
 
531
-#define DEFAULT_ACCELERATION          400    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
532
-#define DEFAULT_RETRACT_ACCELERATION  2000  // X, Y, Z and E max acceleration in mm/s^2 for retracts
533
+#define DEFAULT_ACCELERATION          400    // X, Y, Z and E acceleration in mm/s^2 for printing moves
534
+#define DEFAULT_RETRACT_ACCELERATION  2000   // E acceleration in mm/s^2 for retracts
535
+#define DEFAULT_TRAVEL_ACCELERATION   400    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
536
+
537
+
533 538
 
534 539
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
535 540
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/SCARA/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 3
215 215
 #define Y_HOME_RETRACT_MM 3
216 216
 #define Z_HOME_RETRACT_MM 3
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 #ifdef SCARA
219 220
 	#define QUICK_HOME //SCARA needs Quickhome

+ 5
- 2
Marlin/example_configurations/WITBOX/Configuration.h ファイルの表示

@@ -413,6 +413,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
413 413
     #define FRONT_PROBE_BED_POSITION 20
414 414
     #define BACK_PROBE_BED_POSITION 170
415 415
 
416
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this
417
+    
416 418
     // Set the number of grid points per dimension
417 419
     // You probably don't need more than 3 (squared=9)
418 420
     #define AUTO_BED_LEVELING_GRID_POINTS 2
@@ -497,8 +499,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
497 499
 #define DEFAULT_MAX_FEEDRATE          {350, 350, 7.2, 80}    // (mm/sec)
498 500
 #define DEFAULT_MAX_ACCELERATION      {1000,1000,10,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
499 501
 
500
-#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
501
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
502
+#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
503
+#define DEFAULT_RETRACT_ACCELERATION  3000   // E acceleration in mm/s^2 for retracts
504
+#define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
502 505
 
503 506
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
504 507
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/WITBOX/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 2
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 4
- 2
Marlin/example_configurations/delta/Configuration.h ファイルの表示

@@ -440,8 +440,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
440 440
 #define DEFAULT_MAX_FEEDRATE          {500, 500, 500, 25}    // (mm/sec)
441 441
 #define DEFAULT_MAX_ACCELERATION      {9000,9000,9000,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
442 442
 
443
-#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
444
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
443
+#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
444
+#define DEFAULT_RETRACT_ACCELERATION  3000   // E acceleration in mm/s^2 for retracts
445
+#define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
446
+
445 447
 
446 448
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
447 449
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/delta/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5 
215 215
 #define Y_HOME_RETRACT_MM 5 
216 216
 #define Z_HOME_RETRACT_MM 5 // deltas need the same for all three axis
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 
218 219
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
219 220
 

+ 5
- 2
Marlin/example_configurations/makibox/Configuration.h ファイルの表示

@@ -411,6 +411,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
411 411
     #define FRONT_PROBE_BED_POSITION 20
412 412
     #define BACK_PROBE_BED_POSITION 170
413 413
 
414
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this    
415
+    
414 416
     // Set the number of grid points per dimension
415 417
     // You probably don't need more than 3 (squared=9)
416 418
     #define AUTO_BED_LEVELING_GRID_POINTS 2
@@ -495,8 +497,9 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
495 497
 #define DEFAULT_MAX_FEEDRATE          {60, 60, 20, 45}         // (mm/sec)    
496 498
 #define DEFAULT_MAX_ACCELERATION      {2000,2000,30,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
497 499
 
498
-#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
499
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
500
+#define DEFAULT_ACCELERATION          3000    // X, Y, Z and E acceleration in mm/s^2 for printing moves
501
+#define DEFAULT_RETRACT_ACCELERATION  3000   // E acceleration in mm/s^2 for retracts
502
+#define DEFAULT_TRAVEL_ACCELERATION   3000    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
500 503
 
501 504
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
502 505
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/makibox/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 2
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 6
- 2
Marlin/example_configurations/tvrrug/Round2/Configuration.h ファイルの表示

@@ -412,6 +412,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
412 412
     #define RIGHT_PROBE_BED_POSITION 170
413 413
     #define FRONT_PROBE_BED_POSITION 20
414 414
     #define BACK_PROBE_BED_POSITION 170
415
+    
416
+    #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this    
415 417
 
416 418
     // Set the number of grid points per dimension
417 419
     // You probably don't need more than 3 (squared=9)
@@ -501,8 +503,10 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
501 503
 #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
502 504
 
503 505
 /* MICHEL: This has an impact on the "ripples" in print walls */
504
-#define DEFAULT_ACCELERATION          500    // X, Y, Z and E max acceleration in mm/s^2 for printing moves
505
-#define DEFAULT_RETRACT_ACCELERATION  3000   // X, Y, Z and E max acceleration in mm/s^2 for retracts
506
+#define DEFAULT_ACCELERATION          500    // X, Y, Z and E acceleration in mm/s^2 for printing moves
507
+#define DEFAULT_RETRACT_ACCELERATION  3000   // E acceleration in mm/s^2 for retracts
508
+#define DEFAULT_TRAVEL_ACCELERATION   500    // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
509
+
506 510
 
507 511
 // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
508 512
 // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).

+ 1
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h ファイルの表示

@@ -214,6 +214,7 @@
214 214
 #define X_HOME_RETRACT_MM 5
215 215
 #define Y_HOME_RETRACT_MM 5
216 216
 #define Z_HOME_RETRACT_MM 1
217
+#define HOMING_BUMP_DIVISOR {10, 10, 20}  // Re-Bump Speed Divisor (Divides the Homing Feedrate)
217 218
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
218 219
 
219 220
 #define AXIS_RELATIVE_MODES {false, false, false, false}

+ 3
- 0
Marlin/language_en.h ファイルの表示

@@ -233,6 +233,9 @@
233 233
 #ifndef MSG_A_RETRACT
234 234
 #define MSG_A_RETRACT                       "A-retract"
235 235
 #endif
236
+#ifndef MSG_A_TRAVEL
237
+#define MSG_A_TRAVEL                        "A-travel"
238
+#endif
236 239
 #ifndef MSG_XSTEPS
237 240
 #define MSG_XSTEPS                          "Xsteps/mm"
238 241
 #endif

+ 16
- 10
Marlin/planner.cpp ファイルの表示

@@ -67,8 +67,9 @@ float max_feedrate[NUM_AXIS]; // set the max speeds
67 67
 float axis_steps_per_unit[NUM_AXIS];
68 68
 unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software
69 69
 float minimumfeedrate;
70
-float acceleration;         // Normal acceleration mm/s^2  THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
70
+float acceleration;         // Normal acceleration mm/s^2  THIS IS THE DEFAULT ACCELERATION for all printing moves. M204 SXXXX
71 71
 float retract_acceleration; //  mm/s^2   filament pull-pack and push-forward  while standing still in the other axis M204 TXXXX
72
+float travel_acceleration;  // Travel acceleration mm/s^2  THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
72 73
 float max_xy_jerk; //speed than can be stopped at once, if i understand correctly.
73 74
 float max_z_jerk;
74 75
 float max_e_jerk;
@@ -907,19 +908,24 @@ Having the real displacement of the head, we can calculate the total movement le
907 908
   {
908 909
     block->acceleration_st = ceil(retract_acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
909 910
   }
911
+  else if(block->steps_e == 0)
912
+  {
913
+    block->acceleration_st = ceil(travel_acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
914
+  }
910 915
   else
911 916
   {
912 917
     block->acceleration_st = ceil(acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
913
-    // Limit acceleration per axis
914
-    if(((float)block->acceleration_st * (float)block->steps_x / (float)block->step_event_count) > axis_steps_per_sqr_second[X_AXIS])
915
-      block->acceleration_st = axis_steps_per_sqr_second[X_AXIS];
916
-    if(((float)block->acceleration_st * (float)block->steps_y / (float)block->step_event_count) > axis_steps_per_sqr_second[Y_AXIS])
917
-      block->acceleration_st = axis_steps_per_sqr_second[Y_AXIS];
918
-    if(((float)block->acceleration_st * (float)block->steps_e / (float)block->step_event_count) > axis_steps_per_sqr_second[E_AXIS])
919
-      block->acceleration_st = axis_steps_per_sqr_second[E_AXIS];
920
-    if(((float)block->acceleration_st * (float)block->steps_z / (float)block->step_event_count ) > axis_steps_per_sqr_second[Z_AXIS])
921
-      block->acceleration_st = axis_steps_per_sqr_second[Z_AXIS];
922 918
   }
919
+  // Limit acceleration per axis
920
+  if(((float)block->acceleration_st * (float)block->steps_x / (float)block->step_event_count) > axis_steps_per_sqr_second[X_AXIS])
921
+    block->acceleration_st = axis_steps_per_sqr_second[X_AXIS];
922
+  if(((float)block->acceleration_st * (float)block->steps_y / (float)block->step_event_count) > axis_steps_per_sqr_second[Y_AXIS])
923
+    block->acceleration_st = axis_steps_per_sqr_second[Y_AXIS];
924
+  if(((float)block->acceleration_st * (float)block->steps_e / (float)block->step_event_count) > axis_steps_per_sqr_second[E_AXIS])
925
+    block->acceleration_st = axis_steps_per_sqr_second[E_AXIS];
926
+  if(((float)block->acceleration_st * (float)block->steps_z / (float)block->step_event_count ) > axis_steps_per_sqr_second[Z_AXIS])
927
+    block->acceleration_st = axis_steps_per_sqr_second[Z_AXIS];
928
+ 
923 929
   block->acceleration = block->acceleration_st / steps_per_mm;
924 930
   block->acceleration_rate = (long)((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0)));
925 931
 

+ 1
- 0
Marlin/planner.h ファイルの表示

@@ -112,6 +112,7 @@ extern unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201
112 112
 extern float minimumfeedrate;
113 113
 extern float acceleration;         // Normal acceleration mm/s^2  THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX
114 114
 extern float retract_acceleration; //  mm/s^2   filament pull-pack and push-forward  while standing still in the other axis M204 TXXXX
115
+extern float travel_acceleration;  // Travel acceleration mm/s^2  THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX
115 116
 extern float max_xy_jerk; //speed than can be stopped at once, if i understand correctly.
116 117
 extern float max_z_jerk;
117 118
 extern float max_e_jerk;

+ 1
- 0
Marlin/ultralcd.cpp ファイルの表示

@@ -903,6 +903,7 @@ static void lcd_control_motion_menu() {
903 903
   MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 100, 99000, reset_acceleration_rates);
904 904
   MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates);
905 905
   MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000);
906
+  MENU_ITEM_EDIT(float5, MSG_A_TRAVEL, &travel_acceleration, 100, 99000);
906 907
   MENU_ITEM_EDIT(float52, MSG_XSTEPS, &axis_steps_per_unit[X_AXIS], 5, 9999);
907 908
   MENU_ITEM_EDIT(float52, MSG_YSTEPS, &axis_steps_per_unit[Y_AXIS], 5, 9999);
908 909
   MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);

+ 2
- 2
README.md ファイルの表示

@@ -27,11 +27,11 @@ We are actively looking for testers. So please try the current development versi
27 27
 [![Coverity Scan Build Status](https://scan.coverity.com/projects/2224/badge.svg)](https://scan.coverity.com/projects/2224)
28 28
 [![Travis Build Status](https://travis-ci.org/MarlinFirmware/Marlin.svg)](https://travis-ci.org/MarlinFirmware/Marlin)
29 29
 
30
-What bugs are we working on: [Bug Fixing Round 2](https://github.com/MarlinFirmware/Marlin/milestones/Bug%20Fixing%20Round%202)
30
+What bugs are we working on: [Bug Fixing Round 3](https://github.com/MarlinFirmware/Marlin/milestones/Bug%20Fixing%20Round%203)
31 31
 
32 32
 ## Contact
33 33
 
34
-__IRC:__ #marlin-firmware @freenode ([WebChat Client](https://webchat.freenode.net/?channels=marlin-firmware), [Archive](http://energymonitor-dk.dns4e.net/marlin-firmware-log/))
34
+__IRC:__ #marlin-firmware @freenode ([WebChat Client](https://webchat.freenode.net/?channels=marlin-firmware)
35 35
 
36 36
 __Mailing List:__ marlin@lists.0l.de ([Subscribe](http://lists.0l.de/mailman/listinfo/marlin), [Archive](http://lists.0l.de/pipermail/marlin/))
37 37
 

読み込み中…
キャンセル
保存