-
Notifications
You must be signed in to change notification settings - Fork 296
/
settings_default.h
2250 lines (2106 loc) · 51.3 KB
/
settings_default.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* settings_default.h - default machine profile - Set for Shapeoko2
* This file is part of the g2core project
*
* Copyright (c) 2012 - 2018 Alden S. Hart, Jr.
*
* This file ("the software") is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2 as published by the
* Free Software Foundation. You should have received a copy of the GNU General Public
* License, version 2 along with the software. If not, see <http://www.gnu.org/licenses/>.
*
* As a special exception, you may use this file as part of a software library without
* restriction. Specifically, if other files instantiate templates or use macros or
* inline functions from this file, or you compile this file and link it with other
* files to produce an executable, this file does not by itself cause the resulting
* executable to be covered by the GNU General Public License. This exception does not
* however invalidate any other reasons why the executable file might be covered by the
* GNU General Public License.
*
* THE SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY
* WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
* SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/* Note: The values in this file are the default settings that are loaded
* into a virgin EEPROM, and can be changed using the config commands.
* After initial load the EEPROM values (or changed values) are used.
*
* System and hardware settings that you shouldn't need to change
* are in hardware.h Application settings that also shouldn't need
* to be changed are in g2core.h
*/
/*
* This file is included to define settings that were not present in the
* SETTINGS_FILE, or if SETTINGS_FILE was omitted.
*
* It does the following for each section
*
* - Define rational machine defaults and Gcode power-on defaults
* - Define rational communications and reporting settings
* - Disable all motors. Motors used must be enabled in other settings file
* - Disable all axes. Axes used must be enabled in other settings file
*/
/***********************************************************************/
/**** Default profile for screw driven machines ************************/
/***********************************************************************/
// ***> NOTE: The init message must be a single line with no CRs or LFs
#ifndef INIT_MESSAGE
#define INIT_MESSAGE "Initializing configs to default settings"
#endif
//*****************************************************************************
//**** GLOBAL / GENERAL SETTINGS **********************************************
//*****************************************************************************
// *** Machine configuration settings *** //
#ifndef JUNCTION_INTEGRATION_TIME
#define JUNCTION_INTEGRATION_TIME 0.75 // {jt: cornering - between 0.05 and 2.00 (max)
#endif
#ifndef CHORDAL_TOLERANCE
#define CHORDAL_TOLERANCE 0.01 // {ct: chordal tolerance for arcs (in mm)
#endif
#ifndef MOTOR_POWER_TIMEOUT
#define MOTOR_POWER_TIMEOUT 2.00 // {mt: motor power timeout in seconds
#endif
#ifndef SOFT_LIMIT_ENABLE
#define SOFT_LIMIT_ENABLE 0 // {sl: 0=off, 1=on
#endif
#ifndef HARD_LIMIT_ENABLE
#define HARD_LIMIT_ENABLE 1 // {lim: 0=off, 1=on
#endif
#ifndef SAFETY_INTERLOCK_ENABLE
#define SAFETY_INTERLOCK_ENABLE 1 // {saf: 0=off, 1=on
#endif
#ifndef SPINDLE_MODE
#define SPINDLE_MODE 1 // {spmo; 0=diabled, 1=plan to stop, 2=continuous
#endif
#ifndef SPINDLE_ENABLE_POLARITY
#define SPINDLE_ENABLE_POLARITY SPINDLE_ACTIVE_HIGH // {spep: 0=active low, 1=active high
#endif
#ifndef SPINDLE_DIR_POLARITY
#define SPINDLE_DIR_POLARITY 0 // {spdp: 0=clockwise is low, 1=clockwise is high
#endif
#ifndef SPINDLE_PAUSE_ON_HOLD
#define SPINDLE_PAUSE_ON_HOLD false // {spph:
#endif
#ifndef SPINDLE_SPINUP_DELAY
#define SPINDLE_SPINUP_DELAY 0 // {spde:
#endif
#ifndef SPINDLE_DWELL_MAX
#define SPINDLE_DWELL_MAX 10000000.0 // maximum allowable dwell time. May be overridden in settings files
#endif
#ifndef SPINDLE_SPEED_MIN
#define SPINDLE_SPEED_MIN 0.0 // {spsn:
#endif
#ifndef SPINDLE_SPEED_MAX
#define SPINDLE_SPEED_MAX 1000000.0 // {spsm:
#endif
#ifndef COOLANT_MIST_POLARITY
#define COOLANT_MIST_POLARITY 1 // {comp: 0=active low, 1=active high
#endif
#ifndef COOLANT_FLOOD_POLARITY
#define COOLANT_FLOOD_POLARITY 1 // {cofp: 0=active low, 1=active high
#endif
#ifndef COOLANT_PAUSE_ON_HOLD
#define COOLANT_PAUSE_ON_HOLD true // {coph:
#endif
#ifndef FEEDHOLD_Z_LIFT
#define FEEDHOLD_Z_LIFT 0 // {zl: mm to lift Z on feedhold
#endif
#ifndef PROBE_REPORT_ENABLE
#define PROBE_REPORT_ENABLE true // {prbr:
#endif
#ifndef MANUAL_FEEDRATE_OVERRIDE_ENABLE
#define MANUAL_FEEDRATE_OVERRIDE_ENABLE false
#endif
#ifndef MANUAL_FEEDRATE_OVERRIDE_PARAMETER
#define MANUAL_FEEDRATE_OVERRIDE_PARAMETER 1.00
#endif
// *** Communications and Reporting Settings *** //
#ifndef USB_SERIAL_PORTS_EXPOSED
#define USB_SERIAL_PORTS_EXPOSED 1 // Valid options are 1 or 2, only!
#endif
#ifndef XIO_ENABLE_FLOW_CONTROL
#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // {ex: FLOW_CONTROL_OFF, FLOW_CONTROL_XON, FLOW_CONTROL_RTS
#endif
#ifndef COMM_MODE
#define COMM_MODE JSON_MODE // {ej: TEXT_MODE, JSON_MODE
#endif
#ifndef TEXT_VERBOSITY
#define TEXT_VERBOSITY TV_VERBOSE // {tv: TV_SILENT, TV_VERBOSE
#endif
#ifndef XIO_UART_MUTES_WHEN_USB_CONNECTED
#define XIO_UART_MUTES_WHEN_USB_CONNECTED 0 // UART will be muted when USB connected (off by default)
#endif
#ifndef JSON_VERBOSITY
#define JSON_VERBOSITY JV_MESSAGES // {jv: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
#endif
#ifndef QUEUE_REPORT_VERBOSITY
#define QUEUE_REPORT_VERBOSITY QR_OFF // {qv: QR_OFF, QR_SINGLE, QR_TRIPLE
#endif
#ifndef STATUS_REPORT_VERBOSITY
#define STATUS_REPORT_VERBOSITY SR_FILTERED // {sv: SR_OFF, SR_FILTERED, SR_VERBOSE
#endif
#ifndef STATUS_REPORT_MIN_MS
#define STATUS_REPORT_MIN_MS 100 // (no JSON) milliseconds - enforces a viable minimum
#endif
#ifndef STATUS_REPORT_INTERVAL_MS
#define STATUS_REPORT_INTERVAL_MS 250 // {si: milliseconds - set $SV=0 to disable
#endif
#ifndef STATUS_REPORT_DEFAULTS // {sr: See Status Reports wiki page
#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","feed","vel","unit","coor","dist","admo","frmo","momo","stat"
// Alternate SRs that report in drawable units
//#define STATUS_REPORT_DEFAULTS "line","vel","mpox","mpoy","mpoz","mpoa","coor","ofsa","ofsx","ofsy","ofsz","dist","unit","stat","homz","homy","homx","momo"
#endif
#ifndef MARLIN_COMPAT_ENABLED
#define MARLIN_COMPAT_ENABLED false // boolean, either true or false
#endif
// *** Gcode Startup Defaults *** //
#ifndef GCODE_DEFAULT_UNITS
#define GCODE_DEFAULT_UNITS MILLIMETERS // {gun: MILLIMETERS or INCHES
#endif
#ifndef GCODE_DEFAULT_PLANE
#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // {gpl: CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
#endif
#ifndef GCODE_DEFAULT_COORD_SYSTEM
#define GCODE_DEFAULT_COORD_SYSTEM G54 // {gco: G54, G55, G56, G57, G58 or G59
#endif
#ifndef GCODE_DEFAULT_PATH_CONTROL
#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS // {gpa: PATH_EXACT_PATH, PATH_EXACT_STOP, PATH_CONTINUOUS
#endif
#ifndef GCODE_DEFAULT_DISTANCE_MODE
#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE // {gdi: ABSOLUTE_DISTANCE_MODE, INCREMENTAL_DISTANCE_MODE
#endif
//*****************************************************************************
//*** Motor Settings **********************************************************
//*****************************************************************************
// MOTOR 1
#ifndef M1_MOTOR_MAP
#define M1_MOTOR_MAP AXIS_X_EXTERNAL // {1ma: AXIS_X, AXIS_Y...
#endif
#ifndef M1_STEP_ANGLE
#define M1_STEP_ANGLE 1.8 // {1sa: degrees per step
#endif
#ifndef M1_TRAVEL_PER_REV
#define M1_TRAVEL_PER_REV 1.25 // {1tr: 1.25 is a typical value for a screw axis
#endif
#ifndef M1_MICROSTEPS
#define M1_MICROSTEPS 8 // {1mi: 1,2,4,8, 16,32 (G2 ONLY)
#endif
#ifndef M1_STEPS_PER_UNIT
#define M1_STEPS_PER_UNIT 0 // {1su: steps to issue per unit of length or degrees of rotation
#endif
#ifndef M1_POLARITY
#define M1_POLARITY 0 // {1po: 0=normal direction, 1=inverted direction
#endif
#ifndef M1_ENABLE_POLARITY
#define M1_ENABLE_POLARITY IO_ACTIVE_LOW // {1ep: IO_ACTIVE_LOW or IO_ACTIVE_HIGH
#endif
#ifndef M1_STEP_POLARITY
#define M1_STEP_POLARITY IO_ACTIVE_HIGH // {1ps: IO_ACTIVE_LOW or IO_ACTIVE_HIGH
#endif
#ifndef M1_POWER_MODE
#define M1_POWER_MODE MOTOR_DISABLED // {1pm: MOTOR_DISABLED, MOTOR_ALWAYS_POWERED, MOTOR_POWERED_IN_CYCLE, MOTOR_POWERED_ONLY_WHEN_MOVING
#endif
#ifndef M1_POWER_LEVEL
#define M1_POWER_LEVEL 0.0 // {1pl: 0.0=no power, 1.0=max power
#endif
// MOTOR 2
#ifndef M2_MOTOR_MAP
#define M2_MOTOR_MAP AXIS_Y_EXTERNAL
#endif
#ifndef M2_STEP_ANGLE
#define M2_STEP_ANGLE 1.8
#endif
#ifndef M2_TRAVEL_PER_REV
#define M2_TRAVEL_PER_REV 40.00
#endif
#ifndef M2_MICROSTEPS
#define M2_MICROSTEPS 8
#endif
#ifndef M2_STEPS_PER_UNIT
#define M2_STEPS_PER_UNIT 0
#endif
#ifndef M2_POLARITY
#define M2_POLARITY 0
#endif
#ifndef M2_ENABLE_POLARITY
#define M2_ENABLE_POLARITY IO_ACTIVE_LOW
#endif
#ifndef M2_STEP_POLARITY
#define M2_STEP_POLARITY IO_ACTIVE_HIGH
#endif
#ifndef M2_POWER_MODE
#define M2_POWER_MODE MOTOR_DISABLED
#endif
#ifndef M2_POWER_LEVEL
#define M2_POWER_LEVEL 0.0
#endif
// MOTOR 3
#ifndef M3_MOTOR_MAP
#define M3_MOTOR_MAP AXIS_Z_EXTERNAL
#endif
#ifndef M3_STEP_ANGLE
#define M3_STEP_ANGLE 1.8
#endif
#ifndef M3_TRAVEL_PER_REV
#define M3_TRAVEL_PER_REV 1.25 // 1.25 is a typical value for a screw axis
#endif
#ifndef M3_MICROSTEPS
#define M3_MICROSTEPS 8
#endif
#ifndef M3_STEPS_PER_UNIT
#define M3_STEPS_PER_UNIT 0
#endif
#ifndef M3_POLARITY
#define M3_POLARITY 0
#endif
#ifndef M3_ENABLE_POLARITY
#define M3_ENABLE_POLARITY IO_ACTIVE_LOW
#endif
#ifndef M3_STEP_POLARITY
#define M3_STEP_POLARITY IO_ACTIVE_HIGH
#endif
#ifndef M3_POWER_MODE
#define M3_POWER_MODE MOTOR_DISABLED
#endif
#ifndef M3_POWER_LEVEL
#define M3_POWER_LEVEL 0.0
#endif
// MOTOR 4
#ifndef M4_MOTOR_MAP
#define M4_MOTOR_MAP AXIS_A_EXTERNAL
#endif
#ifndef M4_STEP_ANGLE
#define M4_STEP_ANGLE 1.8
#endif
#ifndef M4_TRAVEL_PER_REV
#define M4_TRAVEL_PER_REV 360.0 // in degrees if rotary axis (ABC)
#endif
#ifndef M4_MICROSTEPS
#define M4_MICROSTEPS 8
#endif
#ifndef M4_STEPS_PER_UNIT
#define M4_STEPS_PER_UNIT 0
#endif
#ifndef M4_POLARITY
#define M4_POLARITY 0
#endif
#ifndef M4_ENABLE_POLARITY
#define M4_ENABLE_POLARITY IO_ACTIVE_LOW
#endif
#ifndef M4_STEP_POLARITY
#define M4_STEP_POLARITY IO_ACTIVE_HIGH
#endif
#ifndef M4_POWER_MODE
#define M4_POWER_MODE MOTOR_DISABLED
#endif
#ifndef M4_POWER_LEVEL
#define M4_POWER_LEVEL 0.0
#endif
// MOTOR 5
#ifndef M5_MOTOR_MAP
#define M5_MOTOR_MAP AXIS_B_EXTERNAL
#endif
#ifndef M5_STEP_ANGLE
#define M5_STEP_ANGLE 1.8
#endif
#ifndef M5_TRAVEL_PER_REV
#define M5_TRAVEL_PER_REV 360.0
#endif
#ifndef M5_MICROSTEPS
#define M5_MICROSTEPS 8
#endif
#ifndef M5_STEPS_PER_UNIT
#define M5_STEPS_PER_UNIT 0
#endif
#ifndef M5_POLARITY
#define M5_POLARITY 0
#endif
#ifndef M5_ENABLE_POLARITY
#define M5_ENABLE_POLARITY IO_ACTIVE_LOW
#endif
#ifndef M5_STEP_POLARITY
#define M5_STEP_POLARITY IO_ACTIVE_HIGH
#endif
#ifndef M5_POWER_MODE
#define M5_POWER_MODE MOTOR_DISABLED
#endif
#ifndef M5_POWER_LEVEL
#define M5_POWER_LEVEL 0.0
#endif
// MOTOR 6
#ifndef M6_MOTOR_MAP
#define M6_MOTOR_MAP AXIS_C_EXTERNAL
#endif
#ifndef M6_STEP_ANGLE
#define M6_STEP_ANGLE 1.8
#endif
#ifndef M6_TRAVEL_PER_REV
#define M6_TRAVEL_PER_REV 360.0
#endif
#ifndef M6_MICROSTEPS
#define M6_MICROSTEPS 8
#endif
#ifndef M6_STEPS_PER_UNIT
#define M6_STEPS_PER_UNIT 0
#endif
#ifndef M6_POLARITY
#define M6_POLARITY 0
#endif
#ifndef M6_ENABLE_POLARITY
#define M6_ENABLE_POLARITY IO_ACTIVE_LOW
#endif
#ifndef M6_STEP_POLARITY
#define M6_STEP_POLARITY IO_ACTIVE_HIGH
#endif
#ifndef M6_POWER_MODE
#define M6_POWER_MODE MOTOR_DISABLED
#endif
#ifndef M6_POWER_LEVEL
#define M6_POWER_LEVEL 0.0
#endif
//*****************************************************************************
//*** Axis Settings ***********************************************************
//*****************************************************************************
// X AXIS
#ifndef X_AXIS_MODE
#define X_AXIS_MODE AXIS_DISABLED // {xam: see canonical_machine.h cmAxisMode for valid values
#endif
#ifndef X_VELOCITY_MAX
#define X_VELOCITY_MAX 1000.0 // {xvm: G0 max velocity in mm/min
#endif
#ifndef X_FEEDRATE_MAX
#define X_FEEDRATE_MAX 1000.0 // {xfr: G1 max feed rate in mm/min
#endif
#ifndef X_TRAVEL_MIN
#define X_TRAVEL_MIN 0.0 // {xtn: minimum travel for soft limits
#endif
#ifndef X_TRAVEL_MAX
#define X_TRAVEL_MAX 0.0 // {xtm: travel between switches or crashes
#endif
#ifndef X_JERK_MAX
#define X_JERK_MAX 1000.0 // {xjm:
#endif
#ifndef X_JERK_HIGH_SPEED
#define X_JERK_HIGH_SPEED 1000.0 // {xjh:
#endif
#ifndef X_HOMING_INPUT
#define X_HOMING_INPUT 0 // {xhi: input used for homing or 0 to disable
#endif
#ifndef X_HOMING_DIRECTION
#define X_HOMING_DIRECTION 0 // {xhd: 0=search moves negative, 1= search moves positive
#endif
#ifndef X_SEARCH_VELOCITY
#define X_SEARCH_VELOCITY 500.0 // {xsv: minus means move to minimum switch
#endif
#ifndef X_LATCH_VELOCITY
#define X_LATCH_VELOCITY 100.0 // {xlv: mm/min
#endif
#ifndef X_LATCH_BACKOFF
#define X_LATCH_BACKOFF 4.0 // {xlb: mm
#endif
#ifndef X_ZERO_BACKOFF
#define X_ZERO_BACKOFF 2.0 // {xzb: mm
#endif
// Y AXIS
#ifndef Y_AXIS_MODE
#define Y_AXIS_MODE AXIS_DISABLED
#endif
#ifndef Y_VELOCITY_MAX
#define Y_VELOCITY_MAX 1000.0
#endif
#ifndef Y_FEEDRATE_MAX
#define Y_FEEDRATE_MAX 1000.0
#endif
#ifndef Y_TRAVEL_MIN
#define Y_TRAVEL_MIN 0.0
#endif
#ifndef Y_TRAVEL_MAX
#define Y_TRAVEL_MAX 0.0
#endif
#ifndef Y_JERK_MAX
#define Y_JERK_MAX 1000.0
#endif
#ifndef Y_JERK_HIGH_SPEED
#define Y_JERK_HIGH_SPEED 1000.0
#endif
#ifndef Y_HOMING_INPUT
#define Y_HOMING_INPUT 0
#endif
#ifndef Y_HOMING_DIRECTION
#define Y_HOMING_DIRECTION 0
#endif
#ifndef Y_SEARCH_VELOCITY
#define Y_SEARCH_VELOCITY 500.0
#endif
#ifndef Y_LATCH_VELOCITY
#define Y_LATCH_VELOCITY 100.0
#endif
#ifndef Y_LATCH_BACKOFF
#define Y_LATCH_BACKOFF 4.0
#endif
#ifndef Y_ZERO_BACKOFF
#define Y_ZERO_BACKOFF 2.0
#endif
// Z AXIS
#ifndef Z_AXIS_MODE
#define Z_AXIS_MODE AXIS_DISABLED
#endif
#ifndef Z_VELOCITY_MAX
#define Z_VELOCITY_MAX 1000.0
#endif
#ifndef Z_FEEDRATE_MAX
#define Z_FEEDRATE_MAX 1000.0
#endif
#ifndef Z_TRAVEL_MAX
#define Z_TRAVEL_MAX 0.0
#endif
#ifndef Z_TRAVEL_MIN
#define Z_TRAVEL_MIN 0.0
#endif
#ifndef Z_JERK_MAX
#define Z_JERK_MAX 500.0
#endif
#ifndef Z_JERK_HIGH_SPEED
#define Z_JERK_HIGH_SPEED 500.0
#endif
#ifndef Z_HOMING_INPUT
#define Z_HOMING_INPUT 0
#endif
#ifndef Z_HOMING_DIRECTION
#define Z_HOMING_DIRECTION 0
#endif
#ifndef Z_SEARCH_VELOCITY
#define Z_SEARCH_VELOCITY 250.0
#endif
#ifndef Z_LATCH_VELOCITY
#define Z_LATCH_VELOCITY 25.0
#endif
#ifndef Z_LATCH_BACKOFF
#define Z_LATCH_BACKOFF 4.0
#endif
#ifndef Z_ZERO_BACKOFF
#define Z_ZERO_BACKOFF 2.0
#endif
// U AXIS
#ifndef U_AXIS_MODE
#define U_AXIS_MODE AXIS_DISABLED // {xam: see canonical_machine.h cmAxisMode for valid values
#endif
#ifndef U_VELOCITY_MAX
#define U_VELOCITY_MAX 1000.0 // {xvm: G0 max velocity in mm/min
#endif
#ifndef U_FEEDRATE_MAX
#define U_FEEDRATE_MAX 1000.0 // {xfr: G1 max feed rate in mm/min
#endif
#ifndef U_TRAVEL_MIN
#define U_TRAVEL_MIN 0.0 // {xtn: minimum travel for soft limits
#endif
#ifndef U_TRAVEL_MAX
#define U_TRAVEL_MAX 0.0 // {xtm: travel between switches or crashes
#endif
#ifndef U_JERK_MAX
#define U_JERK_MAX 1000.0 // {xjm:
#endif
#ifndef U_JERK_HIGH_SPEED
#define U_JERK_HIGH_SPEED 1000.0 // {xjh:
#endif
#ifndef U_HOMING_INPUT
#define U_HOMING_INPUT 0 // {xhi: input used for homing or 0 to disable
#endif
#ifndef U_HOMING_DIRECTION
#define U_HOMING_DIRECTION 0 // {xhd: 0=search moves negative, 1= search moves positive
#endif
#ifndef U_SEARCH_VELOCITY
#define U_SEARCH_VELOCITY 500.0 // {xsv: minus means move to minimum switch
#endif
#ifndef U_LATCH_VELOCITY
#define U_LATCH_VELOCITY 100.0 // {xlv: mm/min
#endif
#ifndef U_LATCH_BACKOFF
#define U_LATCH_BACKOFF 4.0 // {xlb: mm
#endif
#ifndef U_ZERO_BACKOFF
#define U_ZERO_BACKOFF 2.0 // {xzb: mm
#endif
// V AXIS
#ifndef V_AXIS_MODE
#define V_AXIS_MODE AXIS_DISABLED
#endif
#ifndef V_VELOCITY_MAX
#define V_VELOCITY_MAX 1000.0
#endif
#ifndef V_FEEDRATE_MAX
#define V_FEEDRATE_MAX 1000.0
#endif
#ifndef V_TRAVEL_MIN
#define V_TRAVEL_MIN 0.0
#endif
#ifndef V_TRAVEL_MAX
#define V_TRAVEL_MAX 0.0
#endif
#ifndef V_JERK_MAX
#define V_JERK_MAX 1000.0
#endif
#ifndef V_JERK_HIGH_SPEED
#define V_JERK_HIGH_SPEED 1000.0
#endif
#ifndef V_HOMING_INPUT
#define V_HOMING_INPUT 0
#endif
#ifndef V_HOMING_DIRECTION
#define V_HOMING_DIRECTION 0
#endif
#ifndef V_SEARCH_VELOCITY
#define V_SEARCH_VELOCITY 500.0
#endif
#ifndef V_LATCH_VELOCITY
#define V_LATCH_VELOCITY 100.0
#endif
#ifndef V_LATCH_BACKOFF
#define V_LATCH_BACKOFF 4.0
#endif
#ifndef V_ZERO_BACKOFF
#define V_ZERO_BACKOFF 2.0
#endif
// W AXIS
#ifndef W_AXIS_MODE
#define W_AXIS_MODE AXIS_DISABLED
#endif
#ifndef W_VELOCITY_MAX
#define W_VELOCITY_MAX 1000.0
#endif
#ifndef W_FEEDRATE_MAX
#define W_FEEDRATE_MAX 1000.0
#endif
#ifndef W_TRAVEL_MAX
#define W_TRAVEL_MAX 0.0
#endif
#ifndef W_TRAVEL_MIN
#define W_TRAVEL_MIN 0.0
#endif
#ifndef W_JERK_MAX
#define W_JERK_MAX 500.0
#endif
#ifndef W_JERK_HIGH_SPEED
#define W_JERK_HIGH_SPEED 500.0
#endif
#ifndef W_HOMING_INPUT
#define W_HOMING_INPUT 0
#endif
#ifndef W_HOMING_DIRECTION
#define W_HOMING_DIRECTION 0
#endif
#ifndef W_SEARCH_VELOCITY
#define W_SEARCH_VELOCITY 250.0
#endif
#ifndef W_LATCH_VELOCITY
#define W_LATCH_VELOCITY 25.0
#endif
#ifndef W_LATCH_BACKOFF
#define W_LATCH_BACKOFF 4.0
#endif
#ifndef W_ZERO_BACKOFF
#define W_ZERO_BACKOFF 2.0
#endif
/***************************************************************************************
* Rotary values can be chosen to make the motor react the same as X for testing
* To calculate the speeds here, in Wolfram Alpha-speak:
*
* c=2*pi*r, r=0.609, d=c/360, s=((S*60)/d), S=40 for s
*
* Change r to A_RADIUS, and S to the desired speed, in mm/s or mm/s/s/s.
*
* It will return s= as the value you want to enter.
*
* If the value is over 1 million, the code will divide it by 1 million,
* so you have to pre-multiply it by 1000000.0. (The value is in millions, btw.)
*
* Note that you need floating point values to always have a .0 at the end!
#define A_AXIS_MODE AXIS_RADIUS
#define A_RADIUS (M4_TRAVEL_PER_REV/(2*3.14159628))
#define A_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360) // set to the same speed as X axis
#define A_FEEDRATE_MAX A_VELOCITY_MAX
#define A_TRAVEL_MIN -1.0 // min/max the same means infinite, no limit
#define A_TRAVEL_MAX -1.0
#define A_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#define A_JERK_HIGH_SPEED A_JERK_MAX
#define A_HOMING_INPUT 0
#define A_HOMING_DIRECTION 0
#define A_SEARCH_VELOCITY (A_VELOCITY_MAX * 0.500)
#define A_LATCH_VELOCITY (A_VELOCITY_MAX * 0.100)
#define A_LATCH_BACKOFF 5.0
#define A_ZERO_BACKOFF 2.0
***************************************************************************************/
// A AXIS
#ifndef A_AXIS_MODE
#define A_AXIS_MODE AXIS_DISABLED
#endif
#ifndef A_RADIUS
#define A_RADIUS (M4_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef A_VELOCITY_MAX
#define A_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360) // set to the same speed as X axis
#endif
#ifndef A_FEEDRATE_MAX
#define A_FEEDRATE_MAX A_VELOCITY_MAX
#endif
#ifndef A_TRAVEL_MIN
#define A_TRAVEL_MIN -1.0 // min/max the same means infinite, no limit
#endif
#ifndef A_TRAVEL_MAX
#define A_TRAVEL_MAX -1.0
#endif
#ifndef A_JERK_MAX
#define A_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef A_JERK_HIGH_SPEED
#define A_JERK_HIGH_SPEED A_JERK_MAX
#endif
#ifndef A_HOMING_INPUT
#define A_HOMING_INPUT 0
#endif
#ifndef A_HOMING_DIRECTION
#define A_HOMING_DIRECTION 0
#endif
#ifndef A_SEARCH_VELOCITY
#define A_SEARCH_VELOCITY (A_VELOCITY_MAX * 0.500)
#endif
#ifndef A_LATCH_VELOCITY
#define A_LATCH_VELOCITY (A_VELOCITY_MAX * 0.100)
#endif
#ifndef A_LATCH_BACKOFF
#define A_LATCH_BACKOFF 5.0
#endif
#ifndef A_ZERO_BACKOFF
#define A_ZERO_BACKOFF 2.0
#endif
// B AXIS
#ifndef B_AXIS_MODE
#define B_AXIS_MODE AXIS_DISABLED
#endif
#ifndef B_RADIUS
#define B_RADIUS (M5_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef B_VELOCITY_MAX
#define B_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#endif
#ifndef B_FEEDRATE_MAX
#define B_FEEDRATE_MAX B_VELOCITY_MAX
#endif
#ifndef B_TRAVEL_MIN
#define B_TRAVEL_MIN -1.0
#endif
#ifndef B_TRAVEL_MAX
#define B_TRAVEL_MAX -1.0
#endif
#ifndef B_JERK_MAX
#define B_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef B_JERK_HIGH_SPEED
#define B_JERK_HIGH_SPEED B_JERK_MAX
#endif
#ifndef B_HOMING_INPUT
#define B_HOMING_INPUT 0
#endif
#ifndef B_HOMING_DIRECTION
#define B_HOMING_DIRECTION 0
#endif
#ifndef B_SEARCH_VELOCITY
#define B_SEARCH_VELOCITY (B_VELOCITY_MAX * 0.500)
#endif
#ifndef B_LATCH_VELOCITY
#define B_LATCH_VELOCITY (B_VELOCITY_MAX * 0.100)
#endif
#ifndef B_LATCH_BACKOFF
#define B_LATCH_BACKOFF 5.0
#endif
#ifndef B_ZERO_BACKOFF
#define B_ZERO_BACKOFF 2.0
#endif
// C AXIS
#ifndef C_AXIS_MODE
#define C_AXIS_MODE AXIS_DISABLED
#endif
#ifndef C_RADIUS
#define C_RADIUS (M6_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef C_VELOCITY_MAX
#define C_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#endif
#ifndef C_FEEDRATE_MAX
#define C_FEEDRATE_MAX C_VELOCITY_MAX
#endif
#ifndef C_TRAVEL_MIN
#define C_TRAVEL_MIN -1.0
#endif
#ifndef C_TRAVEL_MAX
#define C_TRAVEL_MAX -1.0
#endif
#ifndef C_JERK_MAX
#define C_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef C_JERK_HIGH_SPEED
#define C_JERK_HIGH_SPEED C_JERK_MAX
#endif
#ifndef C_HOMING_INPUT
#define C_HOMING_INPUT 0
#endif
#ifndef C_HOMING_DIRECTION
#define C_HOMING_DIRECTION 0
#endif
#ifndef C_SEARCH_VELOCITY
#define C_SEARCH_VELOCITY (C_VELOCITY_MAX * 0.500)
#endif
#ifndef C_LATCH_VELOCITY
#define C_LATCH_VELOCITY (C_VELOCITY_MAX * 0.100)
#endif
#ifndef C_LATCH_BACKOFF
#define C_LATCH_BACKOFF 5.0
#endif
#ifndef C_ZERO_BACKOFF
#define C_ZERO_BACKOFF 2.0
#endif
//*****************************************************************************
//*** GPIO Input / Output Settings ********************************************
//*****************************************************************************
// DIGITAL INPUTS
// Set to allow the board to function if not otherwise set up
// (least disruptive settings)
/* Legend:
IO_MODE_DISABLED
IO_ACTIVE_LOW aka NORMALLY_OPEN
IO_ACTIVE_HIGH aka NORMALLY_CLOSED
INPUT_ACTION_NONE
INPUT_ACTION_STOP
INPUT_ACTION_FAST_STOP
INPUT_ACTION_HALT
INPUT_ACTION_RESET
INPUT_FUNCTION_NONE
INPUT_FUNCTION_LIMIT
INPUT_FUNCTION_INTERLOCK
INPUT_FUNCTION_SHUTDOWN
INPUT_FUNCTION_PANIC
*/
// Xmin on v9 board
#ifndef DI1_MODE
#define DI1_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI1_ACTION
#define DI1_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI1_FUNCTION
#define DI1_FUNCTION INPUT_FUNCTION_NONE
#endif
// Xmax
#ifndef DI2_MODE
#define DI2_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI2_ACTION
#define DI2_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI2_FUNCTION
#define DI2_FUNCTION INPUT_FUNCTION_NONE
#endif
// Ymin
#ifndef DI3_MODE
#define DI3_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI3_ACTION
#define DI3_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI3_FUNCTION
#define DI3_FUNCTION INPUT_FUNCTION_NONE
#endif
// Ymax
#ifndef DI4_MODE
#define DI4_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI4_ACTION
#define DI4_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI4_FUNCTION
#define DI4_FUNCTION INPUT_FUNCTION_NONE
#endif
// Zmin
#ifndef DI5_MODE
#define DI5_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI5_ACTION
#define DI5_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI5_FUNCTION
#define DI5_FUNCTION INPUT_FUNCTION_PROBE
#endif
// Zmax
#ifndef DI6_MODE
#define DI6_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI6_ACTION
#define DI6_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI6_FUNCTION
#define DI6_FUNCTION INPUT_FUNCTION_NONE
#endif
// Amin
#ifndef DI7_MODE
#define DI7_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI7_ACTION
#define DI7_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI7_FUNCTION
#define DI7_FUNCTION INPUT_FUNCTION_NONE
#endif
// Amax
#ifndef DI8_MODE
#define DI8_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI8_ACTION
#define DI8_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI8_FUNCTION
#define DI8_FUNCTION INPUT_FUNCTION_NONE
#endif
// Safety line
#ifndef DI9_MODE
#define DI9_MODE IO_ACTIVE_HIGH // Normally closed
#endif
#ifndef DI9_ACTION
#define DI9_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI9_FUNCTION
#define DI9_FUNCTION INPUT_FUNCTION_NONE
#endif
#ifndef DI10_MODE
#define DI10_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI10_ACTION
#define DI10_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI10_FUNCTION
#define DI10_FUNCTION INPUT_FUNCTION_NONE
#endif
#ifndef DI11_MODE
#define DI11_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI11_ACTION
#define DI11_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI11_FUNCTION
#define DI11_FUNCTION INPUT_FUNCTION_NONE
#endif
#ifndef DI12_MODE
#define DI12_MODE IO_ACTIVE_LOW // Normally open
#endif
#ifndef DI12_ACTION
#define DI12_ACTION INPUT_ACTION_NONE
#endif
#ifndef DI12_FUNCTION
#define DI12_FUNCTION INPUT_FUNCTION_NONE
#endif
// DIGITAL OUTPUTS - Currently these are hard-wired to extruders
//Extruder1_PWM
#ifndef DO1_MODE
#define DO1_MODE IO_ACTIVE_HIGH
#endif
//Extruder2_PWM
#ifndef DO2_MODE
#define DO2_MODE IO_ACTIVE_HIGH
#endif
//Fan1A_PWM
#ifndef DO3_MODE
#define DO3_MODE IO_ACTIVE_HIGH
#endif