grblHAL core  20261015
config.h
Go to the documentation of this file.
1 /*
2  config.h - compile time configuration and default setting values
3 
4  Part of grblHAL
5 
6  Copyright (c) 2020-2025 Terje Io
7 
8  grblHAL is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  grblHAL is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with grblHAL. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
32 #ifndef _GRBL_CONFIG_H_
33 #define _GRBL_CONFIG_H_
34 
35 // Compile time only default configuration
36 
41 #ifndef N_AXIS
42 #define N_AXIS 3 // Number of axes
43 #endif
44 
50 #if (!defined AXIS_REMAP_ABC2UVW && (N_AXIS > 3 && N_AXIS < 7)) || defined __DOXYGEN__
51 #define AXIS_REMAP_ABC2UVW Off
52 #endif
53 
57 #if !defined N_SPINDLE || defined __DOXYGEN__
58 #define N_SPINDLE 12
59 #endif
60 
64 #if !defined N_SYS_SPINDLE || defined __DOXYGEN__
65 #define N_SYS_SPINDLE 1
66 #endif
67 
71 #if !defined PLANNER_ADD_MOTION_MODE || defined __DOXYGEN__
72 #define PLANNER_ADD_MOTION_MODE Off // Default disabled. Set to \ref On or 1 to enable.
73 #endif
74 
78 #if !defined BUILD_INFO || defined __DOXYGEN__
79 #define BUILD_INFO ""
80 #endif
81 
96 #if !defined COMPATIBILITY_LEVEL || defined __DOXYGEN__
97 #define COMPATIBILITY_LEVEL 0
98 #endif
99 
108 #if !defined ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
109 #define ENABLE_SPINDLE_LINEARIZATION 0 // Set to 1 to enable spindle RPM linearization. Requires compatible driver if enabled.
110 #endif
111 
115 #if !defined SPINDLE_NPWM_PIECES || defined __DOXYGEN__
116 #define SPINDLE_NPWM_PIECES 4 // Number of pieces for spindle RPM linearization, max 4.
117 #endif
118 
119 // --- Kinematics options ---
120 
121 //#define KINEMATICS_API // Uncomment to add HAL entry points for custom kinematics
122 
127 #if !defined WALL_PLOTTER || defined __DOXYGEN__
128 #define WALL_PLOTTER Off
129 #endif
130 
135 #if !defined DELTA_ROBOT || defined __DOXYGEN__
136 #define DELTA_ROBOT Off
137 #endif
138 
139 // Reduce minimum feedrate for delta robots
140 #if DELTA_ROBOT && !defined MINIMUM_FEED_RATE
141 #define MINIMUM_FEED_RATE 0.1f // (radians/min)
142 #endif
143 
148 #if !defined POLAR_ROBOT || defined __DOXYGEN__
149 #define POLAR_ROBOT Off
150 #endif
151 
156 #if !defined RTCP_AC || defined __DOXYGEN__
157 #define RTCP_AC Off
158 #endif
159 
169 #if !defined COREXY || defined __DOXYGEN__
170 #define COREXY Off
171 #endif
172 
177 //#define ASYMMETRIC_GANGING Y_AXIS // Uncomment to enable
178 
183 //#define ASYMMETRIC_AUTO_SQUARE Y_AXIS // Uncomment to enable
184 
185 // --- End of kinematics ---
186 
187 #include "nuts_bolts.h"
188 
196 #if !defined CHECK_MODE_DELAY || defined __DOXYGEN__
197 #define CHECK_MODE_DELAY 0 // ms
198 #endif
199 
205 #if !defined DEBOUNCE_DELAY || defined __DOXYGEN__
206 #define DEBOUNCE_DELAY 40 // ms
207 #endif
208 
209 #define MAX_TOOL_NUMBER 2147483647 // Limited by max signed 32-bit value - 1
210 
211 // ---------------------------------------------------------------------------------------
212 // ADVANCED CONFIGURATION OPTIONS:
213 
214 // EXPERIMENTAL OPTIONS
215 
216 #define ENABLE_PATH_BLENDING Off // Do NOT enable unless working on adding this feature!
217 
218 #if !defined ENABLE_ACCELERATION_PROFILES || defined __DOXYGEN__
219 #define ENABLE_ACCELERATION_PROFILES Off // Enable to allow G-Code changeable acceleration profiles.
220 #endif
221 
222 #if !defined ENABLE_JERK_ACCELERATION || defined __DOXYGEN__
223 #define ENABLE_JERK_ACCELERATION Off // Enable to use 3rd order acceleration calculations. May need more processing power, a FPU will help.
224 #endif
225 
226 #if !defined CUTTER_COMP_ENABLE || defined __DOXYGEN__
227 #define CUTTER_COMP_ENABLE Off
228 #endif
229 
230 // -
231 
232 // Enables code for debugging purposes. Not for general use and always in constant flux.
233 //#define DEBUG // Uncomment to enable. Default disabled.
234 //#define DEBUGOUT 0 // Uncomment to claim serial port with given instance number and add HAL entry point for debug output.
235 
248 #if !defined REPORT_OVERRIDE_REFRESH_BUSY_COUNT || defined __DOXYGEN__
249 #define REPORT_OVERRIDE_REFRESH_BUSY_COUNT 20 // (1-255)
250 #endif
251 #if !defined REPORT_OVERRIDE_REFRESH_IDLE_COUNT || defined __DOXYGEN__
252 #define REPORT_OVERRIDE_REFRESH_IDLE_COUNT 10 // (1-255) Must be less than or equal to the busy count
253 #endif
254 #if !defined REPORT_WCO_REFRESH_BUSY_COUNT || defined __DOXYGEN__
255 #define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
256 #endif
257 #if !defined REPORT_WCO_REFRESH_IDLE_COUNT || defined __DOXYGEN__
258 #define REPORT_WCO_REFRESH_IDLE_COUNT 10 // (2-255) Must be less than or equal to the busy count
259 #endif
261 
272 #if !defined ACCELERATION_TICKS_PER_SECOND || defined __DOXYGEN__
273 #define ACCELERATION_TICKS_PER_SECOND 100
274 #endif
275 
276 // Sets the maximum step rate allowed to be written as a grblHAL setting. This option enables an error
277 // check in the settings module to prevent settings values that will exceed this limitation. The maximum
278 // step rate is strictly limited by the CPU speed and will change if something other than an AVR running
279 // at 16MHz is used.
280 // NOTE: For now disabled, will enable if flash space permits.
281 //#define MAX_STEP_RATE_HZ 30000 // Hz
282 
293 #if !defined REPORT_ECHO_LINE_RECEIVED || defined __DOXYGEN__
294 #define REPORT_ECHO_LINE_RECEIVED Off // Default disabled. Set to \ref On or 1 to enable.
295 #endif
296 
303 #if !defined TOOL_LENGTH_OFFSET_AXIS || defined __DOXYGEN__
304 #define TOOL_LENGTH_OFFSET_AXIS -1 // Default is all axes.
305 #endif
306 
316 #if !defined MINIMUM_JUNCTION_SPEED || defined __DOXYGEN__
317 #define MINIMUM_JUNCTION_SPEED 0.0f // (mm/min)
318 #endif
319 
327 #if !defined MINIMUM_FEED_RATE || defined __DOXYGEN__
328 #define MINIMUM_FEED_RATE 1.0f // (mm/min)
329 #endif
330 
338 #if !defined N_ARC_CORRECTION || defined __DOXYGEN__
339 #define N_ARC_CORRECTION 12 // Integer (1-255)
340 #endif
341 
353 #if !defined ARC_ANGULAR_TRAVEL_EPSILON || defined __DOXYGEN__
354 #define ARC_ANGULAR_TRAVEL_EPSILON 5E-7f // Float (radians)
355 #endif
356 
361 #if !defined BEZIER_MIN_STEP || defined __DOXYGEN__
362 #define BEZIER_MIN_STEP 0.002f
363 #endif
364 #if !defined BEZIER_MAX_STEP || defined __DOXYGEN__
365 #define BEZIER_MAX_STEP 0.1f
366 #endif
367 #if !defined BEZIER_SIGMA || defined __DOXYGEN__
368 #define BEZIER_SIGMA 0.1f
369 #endif
371 
372 
380 #if !defined DWELL_TIME_STEP || defined __DOXYGEN__
381 #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)
382 #endif
383 
393 #if !defined SEGMENT_BUFFER_SIZE || defined __DOXYGEN__
394 #define SEGMENT_BUFFER_SIZE 10 // Uncomment to override default in stepper.h.
395 #endif
396 
402 #if !defined SET_CHECK_MODE_PROBE_TO_START || defined __DOXYGEN__
403 #define SET_CHECK_MODE_PROBE_TO_START Off // Default disabled. Set to \ref On or 1 to enable.
404 #endif
405 
417 #if !defined HARD_LIMIT_FORCE_STATE_CHECK || defined __DOXYGEN__
418 #define HARD_LIMIT_FORCE_STATE_CHECK Off // Default disabled. Set to \ref On or 1 to enable.
419 #endif
420 
432 #if !defined HOMING_AXIS_SEARCH_SCALAR || defined __DOXYGEN__
433 #define HOMING_AXIS_SEARCH_SCALAR 1.5f // Must be > 1 to ensure limit switch will be engaged.
434 #endif
435 #if !defined HOMING_AXIS_LOCATE_SCALAR || defined __DOXYGEN__
436 #define HOMING_AXIS_LOCATE_SCALAR 10.0f// Must be > 1 to ensure limit switch is cleared.
437 #endif
439 
447 #if !defined ENABLE_RESTORE_NVS_WIPE_ALL || defined __DOXYGEN__
448 #define ENABLE_RESTORE_NVS_WIPE_ALL On
449 #endif
450 #if !defined ENABLE_RESTORE_NVS_DEFAULT_SETTINGS || defined __DOXYGEN__
451 #define ENABLE_RESTORE_NVS_DEFAULT_SETTINGS On
452 #endif
453 #if !defined ENABLE_RESTORE_NVS_CLEAR_PARAMETERS || defined __DOXYGEN__
454 #define ENABLE_RESTORE_NVS_CLEAR_PARAMETERS On
455 #endif
456 #if !defined ENABLE_RESTORE_NVS_DRIVER_PARAMETERS || defined __DOXYGEN__
457 #define ENABLE_RESTORE_NVS_DRIVER_PARAMETERS On
458 #endif
460 
471 #if !defined SETTINGS_RESTORE_DEFAULTS || defined __DOXYGEN__
472 #define SETTINGS_RESTORE_DEFAULTS On
473 #endif
474 #if !defined SETTINGS_RESTORE_PARAMETERS || defined __DOXYGEN__
475 #define SETTINGS_RESTORE_PARAMETERS On
476 #endif
477 #if !defined SETTINGS_RESTORE_STARTUP_LINES || defined __DOXYGEN__
478 #define SETTINGS_RESTORE_STARTUP_LINES On
479 #endif
480 #if !defined SETTINGS_RESTORE_BUILD_INFO || defined __DOXYGEN__
481 #define SETTINGS_RESTORE_BUILD_INFO On
482 #endif
483 #if !defined SETTINGS_RESTORE_DRIVER_PARAMETERS || defined __DOXYGEN__
484 #define SETTINGS_RESTORE_DRIVER_PARAMETERS On
485 #endif
494 #if !defined DISABLE_BUILD_INFO_WRITE_COMMAND || defined __DOXYGEN__
495 #define DISABLE_BUILD_INFO_WRITE_COMMAND Off
496 #endif
498 
512 #if !defined SLEEP_DURATION || defined __DOXYGEN__
513 #define SLEEP_DURATION 5.0f // Number of minutes before sleep mode is entered.
514 #endif
515 
521 #if !defined NVSDATA_BUFFER_ENABLE || defined __DOXYGEN__
522 #define NVSDATA_BUFFER_ENABLE On // Default on, set to \ref off or 0 to disable.
523 #endif
524 
534 #if !defined TOOLSETTER_RADIUS || defined __DOXYGEN__
535 #define TOOLSETTER_RADIUS 5.0f
536 #endif
537 
538 #if !defined ENABLE_BACKLASH_COMPENSATION || defined __DOXYGEN__
539 #define ENABLE_BACKLASH_COMPENSATION Off
540 #endif
541 
542 #if COMPATIBILITY_LEVEL == 0 || defined __DOXYGEN__
547 #if !defined N_TOOLS || defined __DOXYGEN__
548 #define N_TOOLS 0
549 #endif
550 #endif
551 
558 #if !defined SPINDLE_SYNC_ENABLE || defined __DOXYGEN__
559 #define SPINDLE_SYNC_ENABLE Off
560 #endif
561 
568 #if !defined NGC_EXPRESSIONS_ENABLE || defined __DOXYGEN__
569 #define NGC_EXPRESSIONS_ENABLE Off
570 #endif
571 
576 #if !defined NGC_PARAMETERS_ENABLE || defined __DOXYGEN__
577 #define NGC_PARAMETERS_ENABLE On
578 #endif
579 
584 #if (NGC_EXPRESSIONS_ENABLE && !defined NGC_N_ASSIGN_PARAMETERS_PER_BLOCK) || defined __DOXYGEN__
585 #define NGC_N_ASSIGN_PARAMETERS_PER_BLOCK 10
586 #endif
587 
592 #if !defined LATHE_UVW_OPTION || defined __DOXYGEN__
593 #define LATHE_UVW_OPTION Off
594 #endif
595 
596 // Max number of entries in log for PID data reporting, to be used for tuning
597 //#define PID_LOG 1000 // Default disabled. Uncomment to enable.
598 
599 // End compile time only default configuration
600 
601 // ---------------------------------------------------------------------------------------
602 // SETTINGS DEFAULT VALUE OVERRIDES:
603 
604 // General settings (Group_General)
605 
615 
620 #if !defined DEFAULT_REPORT_MACHINE_POSITION || defined __DOXYGEN__
621 #define DEFAULT_REPORT_MACHINE_POSITION On // Default on. Set to \ref Off or 0 to disable.
622 #endif
623 
629 #if !defined DEFAULT_REPORT_BUFFER_STATE || defined __DOXYGEN__
630 #define DEFAULT_REPORT_BUFFER_STATE On // Default on. Set to \ref Off or 0 to disable.
631 #endif
632 
640 #if !defined DEFAULT_REPORT_LINE_NUMBERS || defined __DOXYGEN__
641 #define DEFAULT_REPORT_LINE_NUMBERS On // Default on. Set to \ref Off or 0 to disable.
642 #endif
643 
650 #if !defined DEFAULT_REPORT_CURRENT_FEED_SPEED || defined __DOXYGEN__
651 #define DEFAULT_REPORT_CURRENT_FEED_SPEED On // Default on. Set to \ref Off or 0 to disable.
652 #endif
653 
660 #if !defined DEFAULT_REPORT_PIN_STATE || defined __DOXYGEN__
661 #define DEFAULT_REPORT_PIN_STATE On // Default on. Set to \ref Off or 0 to disable.
662 #endif
663 
670 #if !defined DEFAULT_REPORT_WORK_COORD_OFFSET || defined __DOXYGEN__
671 #define DEFAULT_REPORT_WORK_COORD_OFFSET On // Default on. Set to \ref Off or 0 to disable.
672 #endif
673 
680 #if !defined DEFAULT_REPORT_OVERRIDES || defined __DOXYGEN__
681 #define DEFAULT_REPORT_OVERRIDES On // Default on. Set to \ref Off or 0 to disable.
682 #endif
683 
691 #if !defined DEFAULT_REPORT_PROBE_COORDINATES || defined __DOXYGEN__
692 #define DEFAULT_REPORT_PROBE_COORDINATES On // Default on. Set to \ref Off or 0 to disable.
693 #endif
694 
705 #if !defined DEFAULT_REPORT_SYNC_ON_WCO_CHANGE || defined __DOXYGEN__
706 #define DEFAULT_REPORT_SYNC_ON_WCO_CHANGE On
707 #endif
708 
716 #if !defined DEFAULT_REPORT_PARSER_STATE || defined __DOXYGEN__
717 #define DEFAULT_REPORT_PARSER_STATE Off // Default off. Set to \ref On or 1 to enable.
718 #endif
719 
730 #if !defined DEFAULT_REPORT_ALARM_SUBSTATE || defined __DOXYGEN__
731 #define DEFAULT_REPORT_ALARM_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
732 #endif
733 
743 #if !defined DEFAULT_REPORT_RUN_SUBSTATE || defined __DOXYGEN__
744 #define DEFAULT_REPORT_RUN_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
745 #endif
746 
753 #if !defined DEFAULT_REPORT_WHEN_HOMING || defined __DOXYGEN__
754 #define DEFAULT_REPORT_WHEN_HOMING Off // Default off. Set to \ref On or 1 to enable.
755 #endif
756 
762 #if !defined DEFAULT_REPORT_DISTANCE_TO_GO || defined __DOXYGEN__
763 #define DEFAULT_REPORT_DISTANCE_TO_GO Off // Default off. Set to \ref On or 1 to enable.
764 #endif
765 
767 
772 #if !defined DEFAULT_JUNCTION_DEVIATION || defined __DOXYGEN__
773 #define DEFAULT_JUNCTION_DEVIATION 0.01f // mm
774 #endif
776 
781 #if !defined DEFAULT_ARC_TOLERANCE || defined __DOXYGEN__
782 #define DEFAULT_ARC_TOLERANCE 0.002f // mm
783 #endif
785 
791 #if !defined DEFAULT_REPORT_INCHES || defined __DOXYGEN__
792 #define DEFAULT_REPORT_INCHES Off
793 #endif
795 
801 #if !defined DEFAULT_G73_RETRACT || defined __DOXYGEN__
802 #define DEFAULT_G73_RETRACT 0.1f // mm
803 #endif
805 
810 #if !defined DEFAULT_LASER_MODE || defined __DOXYGEN__
811 #define DEFAULT_LASER_MODE Off
812 #endif
813 #if !defined DEFAULT_LATHE_MODE || defined __DOXYGEN__
814 #define DEFAULT_LATHE_MODE Off
815 #endif
817 
827 #if !defined DEFAULT_LEGACY_RTCOMMANDS || defined __DOXYGEN__
828 #define DEFAULT_LEGACY_RTCOMMANDS On
829 #endif
831 
835 #if !defined DEFAULT_RESET_OVERRIDES || defined __DOXYGEN__
836 #define DEFAULT_RESET_OVERRIDES Off
837 #endif
839 
843 #if !defined DEFAULT_SLEEP_ENABLE || defined __DOXYGEN__
844 #define DEFAULT_SLEEP_ENABLE Off
845 #endif
847 
855 #if !defined DEFAULT_DISABLE_LASER_DURING_HOLD || defined __DOXYGEN__
856 #define DEFAULT_DISABLE_LASER_DURING_HOLD On
857 #endif
859 
865 #if !defined DEFAULT_RESTORE_AFTER_FEED_HOLD || defined __DOXYGEN__
866 #define DEFAULT_RESTORE_AFTER_FEED_HOLD On
867 #endif
869 
879 #if !defined DEFAULT_FORCE_INITIALIZATION_ALARM || defined __DOXYGEN__
880 #define DEFAULT_FORCE_INITIALIZATION_ALARM Off
881 #endif
883 
890 #if !defined DEFAULT_DISABLE_G92_PERSISTENCE || defined __DOXYGEN__
891 #if COMPATIBILITY_LEVEL <= 1
892 #define DEFAULT_DISABLE_G92_PERSISTENCE Off
893 #else
894 #define DEFAULT_DISABLE_G92_PERSISTENCE On
895 #endif
896 #endif
898 
907 #if !defined DEFAULT_PLANNER_BUFFER_BLOCKS || defined __DOXYGEN__
908 #define DEFAULT_PLANNER_BUFFER_BLOCKS 100
909 #endif
911 
921 #if !defined DEFAULT_HOMING_KEEP_STATUS_ON_RESET || defined __DOXYGEN__
922 #define DEFAULT_HOMING_KEEP_STATUS_ON_RESET Off // Default disabled. Set to \ref On or 1 to enable.
923 #endif
925 
932 #if !defined DEFAULT_KEEP_OFFSETS_ON_RESET || defined __DOXYGEN__
933 #define DEFAULT_KEEP_OFFSETS_ON_RESET Off
934 #endif
936 
943 #if !defined DEFAULT_KEEP_RAPIDS_OVR_ON_RESET || defined __DOXYGEN__
944 #define DEFAULT_KEEP_RAPIDS_OVR_ON_RESET Off
945 #endif
947 
954 #if !defined DEFAULT_KEEP_FEED_OVR_ON_RESET || defined __DOXYGEN__
955 #define DEFAULT_KEEP_FEED_OVR_ON_RESET Off
956 #endif
958 
959 
960 // Control signals settings (Group_ControlSignals)
961 
962 #ifndef __DOXYGEN__ // For now do not include in documentation
963 
969 #define SIGNALS_RESET_BIT (1<<0)
970 #define SIGNALS_FEEDHOLD_BIT (1<<1)
971 #define SIGNALS_CYCLESTART_BIT (1<<2)
972 #define SIGNALS_SAFETYDOOR_BIT (1<<3)
973 #define SIGNALS_BLOCKDELETE_BIT (1<<4)
974 #define SIGNALS_STOPDISABLE_BIT (1<<5)
975 #define SIGNALS_ESTOP_BIT (1<<6)
976 #define SIGNALS_PROBE_CONNECTED_BIT (1<<7)
977 #define SIGNALS_MOTOR_FAULT_BIT (1<<8)
978 #define SIGNALS_MOTOR_WARNING_BIT (1<<9)
979 #define SIGNALS_LIMITS_OVERRIDE_BIT (1<<10)
980 #define SIGNALS_SINGLE_BLOCK_BIT (1<<11)
981 #define SIGNALS_TLS_OVERTRAVEL_BIT (1<<12)
982 #define SIGNALS_PROBE_OVERTRAVEL (1<<13)
983 #define SIGNALS_PROBE_TRIGGERED_BIT (1<<14)
984 #define SIGNALS_BITMASK (SIGNALS_RESET_BIT|SIGNALS_FEEDHOLD_BIT|SIGNALS_CYCLESTART_BIT|SIGNALS_SAFETYDOOR_BIT|SIGNALS_BLOCKDELETE_BIT|SIGNALS_STOPDISABLE_BIT|SIGNALS_ESTOP_BIT|SIGNALS_PROBE_CONNECTED_BIT|SIGNALS_MOTOR_FAULT_BIT)
986 
987 #endif
988 
995 #if !defined DEFAULT_CONTROL_SIGNALS_INVERT_MASK || defined __DOXYGEN__
996 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
997 #endif
999 
1014 #if !defined DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK || defined __DOXYGEN__
1015 #define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
1016 #endif
1018 
1019 // Limits settings (Group_Limits)
1020 
1029 #if !defined DEFAULT_LIMIT_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1030 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1031 #endif
1033 
1041 #if !defined DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK || defined __DOXYGEN__
1042 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK 0 // Set to -1 or AXES_BITMASK to disable pullup for all axes
1043 #endif
1045 
1049 #if !defined DEFAULT_SOFT_LIMIT_ENABLE || defined __DOXYGEN__
1050 #define DEFAULT_SOFT_LIMIT_ENABLE Off
1051 #endif
1053 
1057 
1064 #if !defined DEFAULT_HARD_LIMIT_ENABLE || defined __DOXYGEN__
1065 #define DEFAULT_HARD_LIMIT_ENABLE Off
1066 #endif
1067 #if !defined DEFAULT_CHECK_LIMITS_AT_INIT || defined __DOXYGEN__
1068 #define DEFAULT_CHECK_LIMITS_AT_INIT Off
1069 #endif
1070 #if !defined DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY || defined __DOXYGEN__
1071 #define DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY Off
1072 #endif
1073 
1086 
1089 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT || defined __DOXYGEN__
1090 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0f // Float (percent)
1091 #endif
1093 
1097 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN || defined __DOXYGEN__
1098 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5f // Float (mm)
1099 #endif
1101 
1106 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX || defined __DOXYGEN__
1107 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0f // Float (mm)
1108 #endif
1110 
1111 // Coolant settings (Group_Coolant)
1112 
1118 #if !defined DEFAULT_INVERT_COOLANT_FLOOD_PIN || defined __DOXYGEN__
1119 #define DEFAULT_INVERT_COOLANT_FLOOD_PIN Off
1120 #endif
1121 #if !defined DEFAULT_INVERT_COOLANT_MIST_PIN || defined __DOXYGEN__
1122 #define DEFAULT_INVERT_COOLANT_MIST_PIN Off // NOTE: not supported by all drivers.
1123 #endif
1125 
1129 #if !defined DEFAULT_COOLANT_ON_DELAY || defined __DOXYGEN__
1130 #define DEFAULT_COOLANT_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1131 #endif
1133 
1134 // Spindle settings (Group_Spindle)
1135 
1139 #if !defined DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1140 #define DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED Off
1141 #endif
1142 #if !defined DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE || defined __DOXYGEN__
1143 #define DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE Off
1144 #endif
1145 #if !defined DEFAULT_PWM_SPINDLE_ENABLE_RAMP || defined __DOXYGEN__
1146 #define DEFAULT_PWM_SPINDLE_ENABLE_RAMP Off
1147 #endif
1148 #if !defined DEFAULT_PWM_SPINDLE_IGNORE_DELAYS || defined __DOXYGEN__
1149 #define DEFAULT_PWM_SPINDLE_IGNORE_DELAYS Off
1150 #endif
1152 
1157 #if !defined DEFAULT_INVERT_SPINDLE_ENABLE_PIN || defined __DOXYGEN__
1158 #define DEFAULT_INVERT_SPINDLE_ENABLE_PIN Off
1159 #endif
1160 #if !defined DEFAULT_INVERT_SPINDLE_CCW_PIN || defined __DOXYGEN__
1161 #define DEFAULT_INVERT_SPINDLE_CCW_PIN Off // NOTE: not supported by all drivers.
1162 #endif
1163 #if !defined DEFAULT_INVERT_SPINDLE_PWM_PIN || defined __DOXYGEN__
1164 #define DEFAULT_INVERT_SPINDLE_PWM_PIN Off // NOTE: not supported by all drivers.
1165 #endif
1167 
1171 #if !defined DEFAULT_SPINDLE_RPM_MAX || defined __DOXYGEN__
1172 #define DEFAULT_SPINDLE_RPM_MAX 1000.0f // rpm
1173 #endif
1175 
1179 #if !defined DEFAULT_SPINDLE_RPM_MIN || defined __DOXYGEN__
1180 #define DEFAULT_SPINDLE_RPM_MIN 0.0f // rpm
1181 #endif
1183 
1187 #if !defined DEFAULT_SPINDLE_PWM_FREQ || defined __DOXYGEN__
1188 #define DEFAULT_SPINDLE_PWM_FREQ 5000 // Hz
1189 #endif
1191 
1195 #if !defined DEFAULT_SPINDLE_PWM_OFF_VALUE || defined __DOXYGEN__
1196 #define DEFAULT_SPINDLE_PWM_OFF_VALUE 0.0f // Percent
1197 #endif
1199 
1212 #if !defined DEFAULT_SPINDLE_PWM_MIN_VALUE || defined __DOXYGEN__
1213 #define DEFAULT_SPINDLE_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1214 #endif
1216 
1220 #if !defined DEFAULT_SPINDLE_PWM_MAX_VALUE || defined __DOXYGEN__
1221 #define DEFAULT_SPINDLE_PWM_MAX_VALUE 100.0f // Percent
1222 #endif
1224 
1233 #if !defined DEFAULT_SPINDLE_PPR || defined __DOXYGEN__
1234 #define DEFAULT_SPINDLE_PPR 0 // Pulses per revolution.
1235 #endif
1237 
1241 #if !defined DEFAULT_SPINDLE_AT_SPEED_TOLERANCE || defined __DOXYGEN__
1242 #define DEFAULT_SPINDLE_AT_SPEED_TOLERANCE 0.0f // Percent - 0 means not checked
1243 #endif
1245 
1249 #if !defined DEFAULT_SPINDLE_ON_DELAY || defined __DOXYGEN__
1250 #define DEFAULT_SPINDLE_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1251 #endif
1253 
1257 #if !defined DEFAULT_SPINDLE || defined __DOXYGEN__
1258 #define DEFAULT_SPINDLE SPINDLE_PWM0 // Spindle number from spindle_control.h
1259 #endif
1261 
1265 #if !defined DEFAULT_SPINDLE_OFF_DELAY || defined __DOXYGEN__
1266 #define DEFAULT_SPINDLE_OFF_DELAY 0 // milliseconds: 0 or 500 - 20000
1267 #endif
1269 
1270 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1271 
1272 // $9 - Setting_SpindlePWMOptions
1273 // bit 0
1274 // always defaults to on
1275 // bit 1
1276 
1277 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1278 
1279 #ifndef DEFAULT_SPINDLE_P_GAIN
1280 #define DEFAULT_SPINDLE_P_GAIN 1.0f
1281 #endif
1282 #ifndef DEFAULT_SPINDLE_I_GAIN
1283 #define DEFAULT_SPINDLE_I_GAIN 0.01f
1284 #endif
1285 #ifndef DEFAULT_SPINDLE_D_GAIN
1286 #define DEFAULT_SPINDLE_D_GAIN 0.0f
1287 #endif
1288 #ifndef DEFAULT_SPINDLE_I_MAX
1289 #define DEFAULT_SPINDLE_I_MAX 10.0f
1290 #endif
1291 
1292 #if ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
1293 
1298 #if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
1299 #define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
1300 #endif
1301 #if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
1302 #define DEFAULT_RPM_LINE_A1 3.197101e-03f
1303 #endif
1304 #if !defined DEFAULT_RPM_LINE_B1 || defined __DOXYGEN__
1305 #define DEFAULT_RPM_LINE_B1 -3.526076e-1f
1306 #endif
1308 
1313 #if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
1314 #define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
1315 #endif
1316 #if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
1317 #define DEFAULT_RPM_LINE_A2 1.722950e-2f
1318 #endif
1319 #if !defined DEFAULT_RPM_LINE_B2 || defined __DOXYGEN__
1320 #define DEFAULT_RPM_LINE_B2 1.0f,
1321 #endif
1323 
1328 #if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
1329 #define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
1330 #endif
1331 #if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
1332 #define DEFAULT_RPM_LINE_A3 5.901518e-02f
1333 #endif
1334 #if !defined DEFAULT_RPM_LINE_B3 || defined __DOXYGEN__
1335 #define DEFAULT_RPM_LINE_B3 4.881851e+02f
1336 #endif
1338 
1343 #if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
1344 #define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
1345 #endif
1346 #if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
1347 #define DEFAULT_RPM_LINE_A4 1.203413e-01f
1348 #endif
1349 #if !defined DEFAULT_RPM_LINE_B4 || defined __DOXYGEN__
1350 #define DEFAULT_RPM_LINE_B4 1.151360e+03f
1351 #endif
1353 
1354 #endif // ENABLE_SPINDLE_LINEARIZATION
1355 
1356 // Settings for second PWM spindle
1357 
1361 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1362 #define DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED Off
1363 #endif
1364 #if !defined DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE || defined __DOXYGEN__
1365 #define DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE Off
1366 #endif
1367 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_RAMP || defined __DOXYGEN__
1368 #define DEFAULT_PWM_SPINDLE1_ENABLE_RAMP Off
1369 #endif
1370 #if !defined DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS || defined __DOXYGEN__
1371 #define DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS Off
1372 #endif
1374 
1379 #if !defined DEFAULT_INVERT_SPINDLE1_ENABLE_PIN || defined __DOXYGEN__
1380 #define DEFAULT_INVERT_SPINDLE1_ENABLE_PIN Off
1381 #endif
1382 #if !defined DEFAULT_INVERT_SPINDLE1_CCW_PIN || defined __DOXYGEN__
1383 #define DEFAULT_INVERT_SPINDLE1_CCW_PIN Off // NOTE: not supported by all drivers.
1384 #endif
1385 #if !defined DEFAULT_INVERT_SPINDLE1_PWM_PIN || defined __DOXYGEN__
1386 #define DEFAULT_INVERT_SPINDLE1_PWM_PIN Off // NOTE: not supported by all drivers.
1387 #endif
1389 
1393 #if !defined DEFAULT_SPINDLE1_RPM_MAX || defined __DOXYGEN__
1394 #define DEFAULT_SPINDLE1_RPM_MAX 1000.0f // rpm
1395 #endif
1397 
1401 #if !defined DEFAULT_SPINDLE1_RPM_MIN || defined __DOXYGEN__
1402 #define DEFAULT_SPINDLE1_RPM_MIN 0.0f // rpm
1403 #endif
1405 
1409 #if !defined DEFAULT_SPINDLE1_PWM_FREQ || defined __DOXYGEN__
1410 #define DEFAULT_SPINDLE1_PWM_FREQ 5000 // Hz
1411 #endif
1413 
1417 #if !defined DEFAULT_SPINDLE1_PWM_OFF_VALUE || defined __DOXYGEN__
1418 #define DEFAULT_SPINDLE1_PWM_OFF_VALUE 0.0f // Percent
1419 #endif
1421 
1434 #if !defined DEFAULT_SPINDLE1_PWM_MIN_VALUE || defined __DOXYGEN__
1435 #define DEFAULT_SPINDLE1_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1436 #endif
1438 
1442 #if !defined DEFAULT_SPINDLE1_PWM_MAX_VALUE || defined __DOXYGEN__
1443 #define DEFAULT_SPINDLE1_PWM_MAX_VALUE 100.0f // Percent
1444 #endif
1446 
1447 
1448 // Tool change settings (Group_Toolchange)
1449 
1454 #if !defined DEFAULT_TOOLCHANGE_MODE || defined __DOXYGEN__
1455 #define DEFAULT_TOOLCHANGE_MODE 0
1456 #endif
1458 
1462 #if !defined DEFAULT_TOOLCHANGE_PROBING_DISTANCE || defined __DOXYGEN__
1463 #define DEFAULT_TOOLCHANGE_PROBING_DISTANCE 30 // max probing distance in mm for mode 3
1464 #endif
1466 
1470 #if !defined DEFAULT_TOOLCHANGE_FEED_RATE || defined __DOXYGEN__
1471 #define DEFAULT_TOOLCHANGE_FEED_RATE 25.0f // mm/min
1472 #endif
1474 
1479 #if !defined DEFAULT_TOOLCHANGE_SEEK_RATE || defined __DOXYGEN__
1480 #define DEFAULT_TOOLCHANGE_SEEK_RATE 200.0f // mm/min
1481 #endif
1483 
1487 #if !defined DEFAULT_TOOLCHANGE_PULLOFF_RATE || defined __DOXYGEN__
1488 #define DEFAULT_TOOLCHANGE_PULLOFF_RATE 200.0f // mm/min
1489 #endif
1491 
1495 #if !defined DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION || defined __DOXYGEN__
1496 #define DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION Off
1497 #endif
1498 #if !defined DEFAULT_TOOLCHANGE_AT_G30 || defined __DOXYGEN__
1499 #define DEFAULT_TOOLCHANGE_AT_G30 Off
1500 #endif
1501 #if !defined DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF || defined __DOXYGEN__
1502 #define DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF Off
1503 #endif
1505 
1509 #if !defined DEFAULT_PERSIST_TOOL || defined __DOXYGEN__
1510 #define DEFAULT_PERSIST_TOOL Off
1511 #endif
1513 
1517 #if !defined DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 || defined __DOXYGEN__
1518 #define DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 Off
1519 #endif
1520 #if !defined DEFAULT_MACRO_ATC_ERROR_NO_MACRO || defined __DOXYGEN__
1521 #define DEFAULT_MACRO_ATC_ERROR_NO_MACRO Off
1522 #endif
1523 #if !defined DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER || defined __DOXYGEN__
1524 #define DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER Off
1525 #endif
1527 
1528 // Homing settings (Group_Homing)
1529 
1535 
1539 #if !defined DEFAULT_HOMING_ENABLE || defined __DOXYGEN__
1540 #define DEFAULT_HOMING_ENABLE Off // Default disabled. Set to \ref On or 1 to enable.
1541 #endif
1542 
1550 #if !defined DEFAULT_HOMING_SINGLE_AXIS_COMMANDS || defined __DOXYGEN__
1551 #define DEFAULT_HOMING_SINGLE_AXIS_COMMANDS Off // Default disabled. Set to \ref On or 1 to enable.
1552 #endif
1553 
1561 #if !defined DEFAULT_HOMING_INIT_LOCK || defined __DOXYGEN__
1562 #define DEFAULT_HOMING_INIT_LOCK Off // Default disabled. Set to \ref On or 1 to enable.
1563 #endif
1564 
1572 #if !defined DEFAULT_HOMING_FORCE_SET_ORIGIN || defined __DOXYGEN__
1573 #define DEFAULT_HOMING_FORCE_SET_ORIGIN Off // Default disabled. Set to \ref On or 1 to enable.
1574 #endif
1575 
1586 #if !defined DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES || defined __DOXYGEN__
1587 #define DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES Off // Default disabled. Set to \ref On or 1 to enable.
1588 #endif
1590 
1597 #if !defined DEFAULT_HOMING_ALLOW_MANUAL || defined __DOXYGEN__
1598 #define DEFAULT_HOMING_ALLOW_MANUAL Off // Default disabled. Set to \ref On or 1 to enable.
1599 #endif
1600 
1607 #if !defined DEFAULT_HOMING_OVERRIDE_LOCKS || defined __DOXYGEN__
1608 #define DEFAULT_HOMING_OVERRIDE_LOCKS Off // Default disabled. Set to \ref On or 1 to enable.
1609 #endif
1610 
1616 #if !defined DEFAULT_HOMING_USE_LIMIT_SWITCHES || defined __DOXYGEN__
1617 #define DEFAULT_HOMING_USE_LIMIT_SWITCHES Off // Default disabled. Set to \ref On or 1 to enable.
1618 #endif
1620 
1626 #if !defined DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED || defined __DOXYGEN__
1627 #define DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED Off // Default disabled. Set to \ref On or 1 to enable.
1628 #endif
1630 
1636 #if !defined DEFAULT_HOMING_DIR_MASK || defined __DOXYGEN__
1637 #define DEFAULT_HOMING_DIR_MASK 0
1638 #endif
1640 
1644 #if !defined DEFAULT_HOMING_FEED_RATE || defined __DOXYGEN__
1645 #define DEFAULT_HOMING_FEED_RATE 25.0f // mm/min
1646 #endif
1648 
1652 #if !defined DEFAULT_HOMING_SEEK_RATE || defined __DOXYGEN__
1653 #define DEFAULT_HOMING_SEEK_RATE 500.0f // mm/min
1654 #endif
1656 
1660 #if !defined DEFAULT_HOMING_DEBOUNCE_DELAY || defined __DOXYGEN__
1661 #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
1662 #endif
1664 
1668 #if !defined DEFAULT_HOMING_PULLOFF || defined __DOXYGEN__
1669 #define DEFAULT_HOMING_PULLOFF 1.0f // mm
1670 #endif
1672 
1679 #if !defined DEFAULT_N_HOMING_LOCATE_CYCLE || defined __DOXYGEN__
1680 #define DEFAULT_N_HOMING_LOCATE_CYCLE 1 // Integer (1-127)
1681 #endif
1683 
1705 #if !defined DEFAULT_HOMING_CYCLE_0 || defined __DOXYGEN__
1706 #define DEFAULT_HOMING_CYCLE_0 (Z_AXIS_BIT) // REQUIRED: First move Z to clear workspace.
1707 #endif
1709 
1713 #if !defined DEFAULT_HOMING_CYCLE_1 || defined __DOXYGEN__
1714 #if COREXY
1715 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT) // OPTIONAL: Then move X.
1716 #else
1717 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT|Y_AXIS_BIT) // OPTIONAL: Then move X,Y at the same time.
1718 #endif
1719 #endif
1721 
1725 #if !defined DEFAULT_HOMING_CYCLE_2 || defined __DOXYGEN__
1726 #if COREXY
1727 #define DEFAULT_HOMING_CYCLE_2 (Y_AXIS_BIT) // OPTIONAL: Then move Y.
1728 #else
1729 #define DEFAULT_HOMING_CYCLE_2 0 // OPTIONAL: Uncomment and add axes mask to enable
1730 #endif
1731 #endif
1733 
1737 #if (N_AXIS > 3 && !defined DEFAULT_HOMING_CYCLE_3) || defined __DOXYGEN__
1738 #define DEFAULT_HOMING_CYCLE_3 0 // OPTIONAL: Uncomment and add axes mask to enable
1739 #endif
1741 
1746 #if (N_AXIS > 4 && !defined DEFAULT_HOMING_CYCLE_4) || defined __DOXYGEN__
1747 #define DEFAULT_HOMING_CYCLE_4 0 // OPTIONAL: Uncomment and add axes mask to enable
1748 #endif
1750 
1754 #if (N_AXIS > 5 && !defined DEFAULT_HOMING_CYCLE_5) || defined __DOXYGEN__
1755 #define DEFAULT_HOMING_CYCLE_5 0 // OPTIONAL: Uncomment and add axes mask to enable
1756 #endif
1758 
1767 #if !defined DEFAULT_HOME_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1768 #define DEFAULT_HOME_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1769 #endif
1771 
1772 
1773 // Probing settings (Group_Probing)
1774 
1778 #if !defined DEFAULT_PROBE_SIGNAL_INVERT || defined __DOXYGEN__
1779 #define DEFAULT_PROBE_SIGNAL_INVERT Off
1780 #endif
1781 #if !defined DEFAULT_TOOLSETTER_SIGNAL_INVERT || defined __DOXYGEN__
1782 #define DEFAULT_TOOLSETTER_SIGNAL_INVERT Off
1783 #endif
1785 
1789 #if !defined DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1790 #define DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP Off
1791 #endif
1792 #if !defined DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1793 #define DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP Off
1794 #endif
1796 
1805 #if !defined DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES || defined __DOXYGEN__
1806 #define DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES Off
1807 #endif
1808 #if !defined DEFAULT_SOFT_LIMIT_PROBE_CYCLES || defined __DOXYGEN__
1809 #define DEFAULT_SOFT_LIMIT_PROBE_CYCLES Off
1810 #endif
1812 
1813 // Safety door/parking settings (Group_SafetyDoor)
1814 
1815 #ifdef DEFAULT_HOMING_ENABLE
1816 
1834 #if !defined DEFAULT_PARKING_ENABLE || defined __DOXYGEN__
1835 #define DEFAULT_PARKING_ENABLE Off // bit 0
1836 // Enables a special set of M-code commands that enables and disables the parking motion.
1837 // These are controlled by `M56`, `M56 P1`, or `M56 Px` to enable and `M56 P0` to disable.
1838 // The command is modal and will be set after a planner sync. Since it is g-code, it is
1839 // executed in sync with g-code commands. It is not a real-time command.
1840 // NOTE: PARKING_ENABLE is required. By default, M56 is active upon initialization. Use
1841 // DEACTIVATE_PARKING_UPON_INIT to set M56 P0 as the power-up default.
1842 #endif
1843 #if !defined DEFAULT_DEACTIVATE_PARKING_UPON_INIT || defined __DOXYGEN__
1844 #define DEFAULT_DEACTIVATE_PARKING_UPON_INIT Off // bit 1
1845 #endif
1846 #if !defined DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL || defined __DOXYGEN__
1847 #define DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL Off // bit 2
1848 #endif
1850 
1855 #if !defined DEFAULT_PARKING_AXIS || defined __DOXYGEN__
1856 #define DEFAULT_PARKING_AXIS Z_AXIS //
1857 #endif
1859 
1863 #if !defined DEFAULT_PARKING_PULLOUT_INCREMENT || defined __DOXYGEN__
1864 #define DEFAULT_PARKING_PULLOUT_INCREMENT 5.0f //
1865 #endif
1867 
1872 #if !defined DEFAULT_PARKING_PULLOUT_RATE || defined __DOXYGEN__
1873 #define DEFAULT_PARKING_PULLOUT_RATE 100.0f // mm/min.
1874 #endif
1876 
1881 #if !defined DEFAULT_PARKING_TARGET || defined __DOXYGEN__
1882 #define DEFAULT_PARKING_TARGET -5.0f // mm
1883 #endif
1885 
1890 #if !defined DEFAULT_PARKING_RATE || defined __DOXYGEN__
1891 #define DEFAULT_PARKING_RATE 500.0f // mm/min
1892 #endif
1894 
1898 
1903 #if !defined DEFAULT_DOOR_IGNORE_WHEN_IDLE || defined __DOXYGEN__
1904 #define DEFAULT_DOOR_IGNORE_WHEN_IDLE Off
1905 #endif
1910 #if !defined DEFAULT_DOOR_KEEP_COOLANT_ON || defined __DOXYGEN__
1911 #define DEFAULT_DOOR_KEEP_COOLANT_ON Off
1912 #endif
1914 
1920 #if !defined DEFAULT_SAFETY_DOOR_SPINDLE_DELAY || defined __DOXYGEN__
1921 #define DEFAULT_SAFETY_DOOR_SPINDLE_DELAY 4.0f // Float (seconds)
1922 #endif
1924 
1931 #if !defined DEFAULT_SAFETY_DOOR_COOLANT_DELAY || defined __DOXYGEN__
1932 #define DEFAULT_SAFETY_DOOR_COOLANT_DELAY 1.0f // Float (seconds)
1933 #endif
1935 
1936 #endif // DEFAULT_HOMING_ENABLE
1937 
1938 // Jogging settings (Group_Jogging)
1939 
1947 #if !defined DEFAULT_JOG_LIMIT_ENABLE || defined __DOXYGEN__
1948 #define DEFAULT_JOG_LIMIT_ENABLE Off
1949 #endif
1951 
1952 // Stepper settings (Group_Stepper)
1953 
1966 #if !defined DEFAULT_STEP_PULSE_MICROSECONDS || defined __DOXYGEN__
1967 #define DEFAULT_STEP_PULSE_MICROSECONDS 5.0f
1968 #endif
1970 
1979 #if !defined DEFAULT_STEPPER_IDLE_LOCK_TIME || defined __DOXYGEN__
1980 #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // milliseconds
1981 #endif
1983 
1989 #if !defined DEFAULT_STEP_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1990 #define DEFAULT_STEP_SIGNALS_INVERT_MASK 0
1991 #endif
1993 
1999 #if !defined DEFAULT_DIR_SIGNALS_INVERT_MASK || defined __DOXYGEN__
2000 #define DEFAULT_DIR_SIGNALS_INVERT_MASK 0
2001 #endif
2003 
2016 #if !defined DEFAULT_ENABLE_SIGNALS_INVERT_MASK || defined __DOXYGEN__
2017 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2018 #endif
2020 
2026 #if !defined DEFAULT_GANGED_DIRECTION_INVERT_MASK || defined __DOXYGEN__
2027 #define DEFAULT_GANGED_DIRECTION_INVERT_MASK 0
2028 #endif
2030 
2034 #if !defined DEFAULT_STEP_PULSE_DELAY || defined __DOXYGEN__
2035 #define DEFAULT_STEP_PULSE_DELAY 0.0f
2036 #endif
2038 
2045 #if !defined DEFAULT_STEPPER_DEENERGIZE_MASK || defined __DOXYGEN__
2046 #define DEFAULT_STEPPER_DEENERGIZE_MASK 0
2047 #endif
2049 
2056 
2057 #define IS_ROTARY_LETTER(c) (c == 'A' || c == 'B' || c == 'C')
2058 
2059 #if !defined DEFAULT_AXIS_ROTATIONAL_MASK || defined __DOXYGEN__
2060 #if N_AXIS > 3 && IS_ROTARY_LETTER(AXIS3_LETTER)
2061 #define RA3 (1<<3)
2062 #else
2063 #define RA3 0
2064 #endif
2065 #if N_AXIS > 4 && IS_ROTARY_LETTER(AXIS4_LETTER)
2066 #define RA4 (1<<4)
2067 #else
2068 #define RA4 0
2069 #endif
2070 #if N_AXIS > 5 && IS_ROTARY_LETTER(AXIS5_LETTER)
2071 #define RA5 (1<<5)
2072 #else
2073 #define RA5 0
2074 #endif
2075 #if N_AXIS > 6 && IS_ROTARY_LETTER(AXIS6_LETTER)
2076 #define RA6 (1<<6)
2077 #else
2078 #define RA6 0
2079 #endif
2080 #if N_AXIS > 7 && IS_ROTARY_LETTER(AXIS7_LETTER)
2081 #define RA7 (1<<7)
2082 #else
2083 #define RA7 0
2084 #endif
2085 #define DEFAULT_AXIS_ROTATIONAL_MASK (RA3|RA4|RA5|RA6|RA7)
2086 #endif
2088 
2093 #if !defined DEFAULT_ROTARY_FIX_ENABLE || defined __DOXYGEN__
2094 #define DEFAULT_ROTARY_FIX_ENABLE Off
2095 #endif
2097 
2102 #if !defined DEFAULT_STEPPER_ENABLE_DELAY || defined __DOXYGEN__
2103 #define DEFAULT_STEPPER_ENABLE_DELAY 0
2104 #endif
2106 
2112 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE || defined __DOXYGEN__
2113 #define DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE 0
2114 #endif
2116 
2122 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_INVERT || defined __DOXYGEN__
2123 #define DEFAULT_MOTOR_WARNING_SIGNALS_INVERT 0
2124 #endif
2126 
2132 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE || defined __DOXYGEN__
2133 #define DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE 0
2134 #endif
2136 
2142 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_INVERT || defined __DOXYGEN__
2143 #define DEFAULT_MOTOR_FAULT_SIGNALS_INVERT 0
2144 #endif
2146 
2151 #if !defined DEFAULT_AUTOREPORT_INTERVAL || defined __DOXYGEN__
2152 #define DEFAULT_AUTOREPORT_INTERVAL 0
2153 #endif
2155 
2160 #if !defined DEFAULT_TIMEZONE_OFFSET || defined __DOXYGEN__
2161 #define DEFAULT_TIMEZONE_OFFSET 0.0f
2162 #endif
2164 
2170 #if !defined DEFAULT_NO_UNLOCK_AFTER_ESTOP || defined __DOXYGEN__
2171 #define DEFAULT_NO_UNLOCK_AFTER_ESTOP Off
2172 #endif
2174 
2179 #if !defined DEFAULT_RGB_STRIP0_LENGTH || defined __DOXYGEN__
2180 #define DEFAULT_RGB_STRIP0_LENGTH 0
2181 #endif
2183 
2188 #if !defined DEFAULT_RGB_STRIP1_LENGTH || defined __DOXYGEN__
2189 #define DEFAULT_RGB_STRIP1_LENGTH 0
2190 #endif
2192 
2200 #if !defined DEFAULT_AXIS_ROTARY_WRAP_MASK || defined __DOXYGEN__
2201 #define DEFAULT_AXIS_ROTARY_WRAP_MASK 0
2202 #endif
2204 
2209 #if !defined DEFAULT_MODBUS_STREAM_BAUD || defined __DOXYGEN__
2210 #define DEFAULT_MODBUS_STREAM_BAUD 3 // 0 = 2400, 1 = 4800, 2 = 9600, 3 = 19200, 4 = 38400, 5 = 115200
2211 #endif
2213 
2218 #if !defined DEFAULT_MODBUS_STREAM_DATA_BITS || defined __DOXYGEN__
2219 #define DEFAULT_MODBUS_STREAM_DATA_BITS 0 // 0 = 8, 1 = 7
2220 #endif
2223 #if !defined DEFAULT_MODBUS_STREAM_STOP_BITS || defined __DOXYGEN__
2224 #define DEFAULT_MODBUS_STREAM_STOP_BITS 0 // 0 = 1, 1 = 1.5, 2 = 2, 3 = 0.5
2225 #endif
2227 #if !defined DEFAULT_MODBUS_STREAM_PARITY || defined __DOXYGEN__
2228 #define DEFAULT_MODBUS_STREAM_PARITY 0 // 0 = None, 1 = Even, 2 = Odd
2229 #endif
2231 
2235 
2239 #if !defined DEFAULT_FS_SD_AUTOMOUNT || defined __DOXYGEN__
2240 #define DEFAULT_FS_SD_AUTOMOUNT Off // Default disabled. Set to \ref On or 1 to enable.
2241 #endif
2242 
2247 #if !defined DEFAULT_FS_LITTLEFS_HIDDEN || defined __DOXYGEN__
2248 #define DEFAULT_FS_LITTLEFS_HIDDEN Off // Default disabled. Set to \ref On or 1 to enable.
2249 #endif
2250 
2256 #if !defined DEFAULT_FS_HIERACHICAL_LISTING || defined __DOXYGEN__
2257 #define DEFAULT_FS_HIERACHICAL_LISTING Off // Default disabled. Set to \ref On or 1 to enable.
2258 #endif
2260 
2266 #if !defined DEFAULT_MPG_BAUD || defined __DOXYGEN__
2267 #define DEFAULT_MPG_BAUD 1 // 0 = 38400, 1 = 115200, 2 = 230400, 3 = 460800, 4 = 576000, 5 = 921600
2268 #endif
2270 
2271 // Axis settings (Group_XAxis - Group_VAxis)
2272 
2277 #if !defined DEFAULT_X_STEPS_PER_MM || defined __DOXYGEN__
2278 #define DEFAULT_X_STEPS_PER_MM 250.0f
2279 #endif
2280 #if !defined DEFAULT_Y_STEPS_PER_MM || defined __DOXYGEN__
2281 #define DEFAULT_Y_STEPS_PER_MM 250.0f
2282 #endif
2283 #if !defined DEFAULT_Z_STEPS_PER_MM || defined __DOXYGEN__
2284 #define DEFAULT_Z_STEPS_PER_MM 250.0f
2285 #endif
2286 #if (defined A_AXIS && !defined DEFAULT_A_STEPS_PER_MM) || defined __DOXYGEN__
2287 #define DEFAULT_A_STEPS_PER_MM 250.0f
2288 #endif
2289 #if (defined B_AXIS && !defined DEFAULT_B_STEPS_PER_MM) || defined __DOXYGEN__
2290 #define DEFAULT_B_STEPS_PER_MM 250.0f
2291 #endif
2292 #if (defined C_AXIS && !defined DEFAULT_C_STEPS_PER_MM) || defined __DOXYGEN__
2293 #define DEFAULT_C_STEPS_PER_MM 250.0f
2294 #endif
2295 #if (defined U_AXIS && !defined DEFAULT_U_STEPS_PER_MM) || defined __DOXYGEN__
2296 #define DEFAULT_U_STEPS_PER_MM 250.0f
2297 #endif
2298 #if (defined V_AXIS && !defined DEFAULT_V_STEPS_PER_MM) || defined __DOXYGEN__
2299 #define DEFAULT_V_STEPS_PER_MM 250.0f
2300 #endif
2301 #if (defined W_AXIS && !defined DEFAULT_W_STEPS_PER_MM) || defined __DOXYGEN__
2302 #define DEFAULT_W_STEPS_PER_MM 250.0f
2303 #endif
2305 
2310 #if !defined DEFAULT_X_MAX_RATE || defined __DOXYGEN__
2311 #define DEFAULT_X_MAX_RATE 500.0f // mm/min
2312 #endif
2313 #if !defined DEFAULT_Y_MAX_RATE || defined __DOXYGEN__
2314 #define DEFAULT_Y_MAX_RATE 500.0f // mm/min
2315 #endif
2316 #if !defined DEFAULT_Z_MAX_RATE || defined __DOXYGEN__
2317 #define DEFAULT_Z_MAX_RATE 500.0f // mm/min
2318 #endif
2319 #if (defined A_AXIS && !defined DEFAULT_A_MAX_RATE) || defined __DOXYGEN__
2320 #define DEFAULT_A_MAX_RATE 500.0f // mm/min
2321 #endif
2322 #if (defined B_AXIS && !defined DEFAULT_B_MAX_RATE) || defined __DOXYGEN__
2323 #define DEFAULT_B_MAX_RATE 500.0f // mm/min
2324 #endif
2325 #if (defined C_AXIS && !defined DEFAULT_C_MAX_RATE) || defined __DOXYGEN__
2326 #define DEFAULT_C_MAX_RATE 500.0f // mm/min
2327 #endif
2328 #if (defined U_AXIS && !defined DEFAULT_U_MAX_RATE) || defined __DOXYGEN__
2329 #define DEFAULT_U_MAX_RATE 500.0f // mm/min
2330 #endif
2331 #if (defined V_AXIS && !defined DEFAULT_V_MAX_RATE) || defined __DOXYGEN__
2332 #define DEFAULT_V_MAX_RATE 500.0f // mm/min
2333 #endif
2334 #if (defined W_AXIS && !defined DEFAULT_W_MAX_RATE) || defined __DOXYGEN__
2335 #define DEFAULT_W_MAX_RATE 500.0f // mm/min
2336 #endif
2338 
2342 #if !defined DEFAULT_X_ACCELERATION || defined __DOXYGEN__
2343 #define DEFAULT_X_ACCELERATION 10.0f // mm/sec^2
2344 #endif
2345 #if !defined DEFAULT_Y_ACCELERATION || defined __DOXYGEN__
2346 #define DEFAULT_Y_ACCELERATION 10.0f // mm/sec^2
2347 #endif
2348 #if !defined DEFAULT_Z_ACCELERATION || defined __DOXYGEN__
2349 #define DEFAULT_Z_ACCELERATION 10.0f // mm/sec^2
2350 #endif
2351 #if (defined A_AXIS && !defined DEFAULT_A_ACCELERATION) || defined __DOXYGEN__
2352 #define DEFAULT_A_ACCELERATION 10.0f // mm/sec^2
2353 #endif
2354 #if (defined B_AXIS && !defined DEFAULT_B_ACCELERATION) || defined __DOXYGEN__
2355 #define DEFAULT_B_ACCELERATION 10.0f // mm/sec^2
2356 #endif
2357 #if (defined C_AXIS && !defined DEFAULT_C_ACCELERATION) || defined __DOXYGEN__
2358 #define DEFAULT_C_ACCELERATION 10.0f // mm/sec^2
2359 #endif
2360 #if (defined U_AXIS && !defined DEFAULT_U_ACCELERATION) || defined __DOXYGEN__
2361 #define DEFAULT_U_ACCELERATION 10.0f // mm/sec^2
2362 #endif
2363 #if (defined V_AXIS && !defined DEFAULT_V_ACCELERATION) || defined __DOXYGEN__
2364 #define DEFAULT_V_ACCELERATION 10.0f // mm/sec^2
2365 #endif
2366 #if (defined W_AXIS && !defined DEFAULT_W_ACCELERATION) || defined __DOXYGEN__
2367 #define DEFAULT_W_ACCELERATION 10.0f // mm/sec^2
2368 #endif
2370 
2374 #if !defined DEFAULT_X_JERK|| defined __DOXYGEN__
2375 #define DEFAULT_X_JERK (DEFAULT_X_ACCELERATION * 10.0f) // mm/sec^3
2376 #endif
2377 #if !defined DEFAULT_Y_JERK|| defined __DOXYGEN__
2378 #define DEFAULT_Y_JERK (DEFAULT_Y_ACCELERATION * 10.0f) // mm/sec^3
2379 #endif
2380 #if !defined DEFAULT_Z_JERK || defined __DOXYGEN__
2381 #define DEFAULT_Z_JERK (DEFAULT_Z_ACCELERATION * 10.0f) // mm/sec^3
2382 #endif
2383 #if (defined A_AXIS && !defined DEFAULT_A_JERK) || defined __DOXYGEN__
2384 #define DEFAULT_A_JERK (DEFAULT_A_ACCELERATION * 10.0f) // mm/sec^3
2385 #endif
2386 #if (defined B_AXIS && !defined DEFAULT_B_JERK) || defined __DOXYGEN__
2387 #define DEFAULT_B_JERK (DEFAULT_B_ACCELERATION * 10.0f) // mm/sec^3
2388 #endif
2389 #if (defined C_AXIS && !defined DEFAULT_C_JERK) || defined __DOXYGEN__
2390 #define DEFAULT_C_JERK (DEFAULT_C_ACCELERATION * 10.0f) // mm/sec^3
2391 #endif
2392 #if (defined U_AXIS && !defined DEFAULT_U_JERK) || defined __DOXYGEN__
2393 #define DEFAULT_U_JERK (DEFAULT_U_ACCELERATION * 10.0f) // mm/sec^3
2394 #endif
2395 #if (defined V_AXIS && !defined DEFAULT_V_JERK) || defined __DOXYGEN__
2396 #define DEFAULT_V_JERK (DEFAULT_V_ACCELERATION * 10.0f) // mm/sec^3
2397 #endif
2398 #if (defined W_AXIS && !defined DEFAULT_W_JERK) || defined __DOXYGEN__
2399 #define DEFAULT_W_JERK (DEFAULT_W_ACCELERATION * 10.0f) // mm/sec^3
2400 #endif
2402 
2407 #if !defined DEFAULT_X_MAX_TRAVEL || defined __DOXYGEN__
2408 #define DEFAULT_X_MAX_TRAVEL 200.0f // mm
2409 #endif
2410 #if !defined DEFAULT_Y_MAX_TRAVEL || defined __DOXYGEN__
2411 #define DEFAULT_Y_MAX_TRAVEL 200.0f // mm
2412 #endif
2413 #if !defined DEFAULT_Z_MAX_TRAVEL || defined __DOXYGEN__
2414 #define DEFAULT_Z_MAX_TRAVEL 200.0f // mm
2415 #endif
2416 #if (defined A_AXIS && !defined DEFAULT_A_MAX_TRAVEL) || defined __DOXYGEN__
2417 #define DEFAULT_A_MAX_TRAVEL 200.0f // mm
2418 #endif
2419 #if (defined B_AXIS && !defined DEFAULT_B_MAX_TRAVEL) || defined __DOXYGEN__
2420 #define DEFAULT_B_MAX_TRAVEL 200.0f // mm
2421 #endif
2422 #if (defined C_AXIS && !defined DEFAULT_C_MAX_TRAVEL) || defined __DOXYGEN__
2423 #define DEFAULT_C_MAX_TRAVEL 200.0f // mm
2424 #endif
2425 #if (defined U_AXIS && !defined DEFAULT_U_MAX_TRAVEL) || defined __DOXYGEN__
2426 #define DEFAULT_U_MAX_TRAVEL 200.0f // mm
2427 #endif
2428 #if (defined V_AXIS && !defined DEFAULT_V_MAX_TRAVEL) || defined __DOXYGEN__
2429 #define DEFAULT_V_MAX_TRAVEL 200.0f // mm
2430 #endif
2431 #if (defined W_AXIS && !defined DEFAULT_W_MAX_TRAVEL) || defined __DOXYGEN__
2432 #define DEFAULT_W_MAX_TRAVEL 200.0f // mm
2433 #endif
2435 
2440 #if !defined DEFAULT_X_CURRENT || defined __DOXYGEN__
2441 #define DEFAULT_X_CURRENT 500.0f // mA RMS
2442 #endif
2443 #if !defined DEFAULT_Y_CURRENT || defined __DOXYGEN__
2444 #define DEFAULT_Y_CURRENT 500.0f // mA RMS
2445 #endif
2446 #if !defined DEFAULT_Z_CURRENT || defined __DOXYGEN__
2447 #define DEFAULT_Z_CURRENT 500.0f // mA RMS
2448 #endif
2449 #if (defined A_AXIS && !defined DEFAULT_A_CURRENT) || defined __DOXYGEN__
2450 #define DEFAULT_A_CURRENT 500.0f // mA RMS
2451 #endif
2452 #if (defined B_AXIS && !defined DEFAULT_B_CURRENT) || defined __DOXYGEN__
2453 #define DEFAULT_B_CURRENT 500.0f // mA RMS
2454 #endif
2455 #if (defined C_AXIS && !defined DEFAULT_C_CURRENT) || defined __DOXYGEN__
2456 #define DEFAULT_C_CURRENT 500.0f // mA RMS
2457 #endif
2458 #if (defined U_AXIS && !defined DEFAULT_U_CURRENT) || defined __DOXYGEN__
2459 #define DEFAULT_U_CURRENT 500.0f // mA RMS
2460 #endif
2461 #if (defined V_AXIS && !defined DEFAULT_V_CURRENT) || defined __DOXYGEN__
2462 #define DEFAULT_V_CURRENT 500.0f // mA RMS
2463 #endif
2464 #if (defined W_AXIS && !defined DEFAULT_W_CURRENT) || defined __DOXYGEN__
2465 #define DEFAULT_W_CURRENT 500.0f // mA RMS
2466 #endif
2468 
2469 // Sanity checks
2470 
2471 // N_TOOLS may have been defined on the compiler command line.
2472 #if !defined(N_TOOLS)
2473 #define N_TOOLS 0
2474 #elif N_TOOLS > 32
2475 #undef N_TOOLS
2476 #define N_TOOLS 32
2477 #endif
2478 
2479 #if N_SYS_SPINDLE > N_SPINDLE
2480 #undef N_SYS_SPINDLE
2481 #define N_SYS_SPINDLE N_SPINDLE
2482 #endif
2483 
2484 #if N_SYS_SPINDLE < 1
2485 #undef N_SYS_SPINDLE
2486 #define N_SYS_SPINDLE 1
2487 #endif
2488 
2489 #if N_SYS_SPINDLE > 8
2490 #undef N_SYS_SPINDLE
2491 #define N_SYS_SPINDLE 8
2492 #endif
2493 
2494 #if NGC_EXPRESSIONS_ENABLE && !NGC_PARAMETERS_ENABLE
2495 #undef NGC_PARAMETERS_ENABLE
2496 #define NGC_PARAMETERS_ENABLE On
2497 #endif
2498 
2499 #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT)
2500  #error "WCO busy refresh is less than idle refresh."
2501 #endif
2502 #if (REPORT_OVERRIDE_REFRESH_BUSY_COUNT < REPORT_OVERRIDE_REFRESH_IDLE_COUNT)
2503  #error "Override busy refresh is less than idle refresh."
2504 #endif
2505 #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2)
2506  #error "WCO refresh must be greater than one."
2507 #endif
2508 #if (REPORT_OVERRIDE_REFRESH_IDLE_COUNT < 1)
2509  #error "Override refresh must be greater than zero."
2510 #endif
2511 
2512 #if DEFAULT_LASER_MODE && DEFAULT_LATHE_MODE
2513 #error "Cannot enable laser and lathe mode at the same time!"
2514 #endif
2515 
2516 #if LATHE_UVW_OPTION && AXIS_REMAP_ABC2UVW
2517 #warning "Cannot enable lathe UVW option when N_AXIS > 6 or ABC words are remapped!"
2518 #undef LATHE_UVW_OPTION
2519 #define LATHE_UVW_OPTION Off
2520 #endif
2521 
2522 #if DEFAULT_CONTROL_SIGNALS_INVERT_MASK < 0
2523 #undef DEFAULT_CONTROL_SIGNALS_INVERT_MASK
2524 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK SIGNALS_BITMASK
2525 #endif
2526 
2527 #if DEFAULT_LIMIT_SIGNALS_INVERT_MASK < 0
2528 #undef DEFAULT_LIMIT_SIGNALS_INVERT_MASK
2529 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK AXES_BITMASK
2530 #endif
2531 
2532 #if DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK < 0
2533 #undef DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK
2534 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK AXES_BITMASK
2535 #endif
2536 
2537 #if DEFAULT_STEP_SIGNALS_INVERT_MASK < 0
2538 #undef DEFAULT_STEP_SIGNALS_INVERT_MASK
2539 #define DEFAULT_STEP_SIGNALS_INVERT_MASK AXES_BITMASK
2540 #endif
2541 
2542 #if DEFAULT_ENABLE_SIGNALS_INVERT_MASK < 0
2543 #undef DEFAULT_ENABLE_SIGNALS_INVERT_MASK
2544 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2545 #endif
2546 
2547 #if DEFAULT_SPINDLE_ON_DELAY
2548 #if DEFAULT_SPINDLE_ON_DELAY < 500
2549 #undef DEFAULT_SPINDLE_ON_DELAY
2550 #define DEFAULT_SPINDLE_ON_DELAY 500
2551 #elif DEFAULT_SPINDLE_ON_DELAY > 20000
2552 #undef DEFAULT_SPINDLE_ON_DELAY
2553 #define DEFAULT_SPINDLE_ON_DELAY 20000
2554 #endif
2555 #endif
2556 
2557 #if DEFAULT_COOLANT_ON_DELAY
2558 #if DEFAULT_COOLANT_ON_DELAY < 500
2559 #undef DEFAULT_COOLANT_ON_DELAY
2560 #define DEFAULT_COOLANT_ON_DELAY 500
2561 #elif DEFAULT_COOLANT_ON_DELAY > 20000
2562 #undef DEFAULT_COOLANT_ON_DELAY
2563 #define DEFAULT_COOLANT_ON_DELAY 20000
2564 #endif
2565 #endif
2566 
2567 #if DEFAULT_PARKING_ENABLE > 0
2568  #if DEFAULT_HOMING_FORCE_SET_ORIGIN > 0
2569  #error "DEFAULT_HOMING_FORCE_SET_ORIGIN is not supported with DEFAULT_PARKING_ENABLE at this time."
2570  #endif
2571 #endif
2572 
2573 #if DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL > 0
2574  #if DEFAULT_PARKING_ENABLE < 1
2575  #error "DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with DEFAULT_PARKING_ENABLE."
2576  #endif
2577 #endif
2578 
2633 #endif // _GRBL_CONFIG_H_