grblHAL core  20260619
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 1
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 #include "nuts_bolts.h"
120 
121 //#define KINEMATICS_API // Uncomment to add HAL entry points for custom kinematics
122 
123 
128 #if !defined WALL_PLOTTER || defined __DOXYGEN__
129 #define WALL_PLOTTER Off
130 #endif
131 
136 #if !defined DELTA_ROBOT || defined __DOXYGEN__
137 #define DELTA_ROBOT Off
138 #endif
139 
140 // Reduce minimum feedrate for delta robots
141 #if DELTA_ROBOT && !defined MINIMUM_FEED_RATE
142 #define MINIMUM_FEED_RATE 0.1f // (radians/min)
143 #endif
144 
149 #if !defined POLAR_ROBOT || defined __DOXYGEN__
150 #define POLAR_ROBOT Off
151 #endif
152 
162 #if !defined COREXY || defined __DOXYGEN__
163 #define COREXY Off
164 #endif
165 
170 //#define ASYMMETRIC_GANGING Y_AXIS // Uncomment to enable
171 
176 //#define ASYMMETRIC_AUTO_SQUARE Y_AXIS // Uncomment to enable
177 
185 #if !defined CHECK_MODE_DELAY || defined __DOXYGEN__
186 #define CHECK_MODE_DELAY 0 // ms
187 #endif
188 
194 #if !defined DEBOUNCE_DELAY || defined __DOXYGEN__
195 #define DEBOUNCE_DELAY 40 // ms
196 #endif
197 
198 #define MAX_TOOL_NUMBER 2147483647 // Limited by max signed 32-bit value - 1
199 
200 // ---------------------------------------------------------------------------------------
201 // ADVANCED CONFIGURATION OPTIONS:
202 
203 // EXPERIMENTAL OPTIONS
204 
205 #define ENABLE_PATH_BLENDING Off // Do NOT enable unless working on adding this feature!
206 
207 #if !defined ENABLE_ACCELERATION_PROFILES || defined __DOXYGEN__
208 #define ENABLE_ACCELERATION_PROFILES Off // Enable to allow G-Code changeable acceleration profiles.
209 #endif
210 
211 #if !defined ENABLE_JERK_ACCELERATION || defined __DOXYGEN__
212 #define ENABLE_JERK_ACCELERATION Off // Enable to use 3rd order acceleration calculations. May need more processing power, a FPU will help.
213 #endif
214 
215 // -
216 
217 // Enables code for debugging purposes. Not for general use and always in constant flux.
218 //#define DEBUG // Uncomment to enable. Default disabled.
219 //#define DEBUGOUT 0 // Uncomment to claim serial port with given instance number and add HAL entry point for debug output.
220 
233 #if !defined REPORT_OVERRIDE_REFRESH_BUSY_COUNT || defined __DOXYGEN__
234 #define REPORT_OVERRIDE_REFRESH_BUSY_COUNT 20 // (1-255)
235 #endif
236 #if !defined REPORT_OVERRIDE_REFRESH_IDLE_COUNT || defined __DOXYGEN__
237 #define REPORT_OVERRIDE_REFRESH_IDLE_COUNT 10 // (1-255) Must be less than or equal to the busy count
238 #endif
239 #if !defined REPORT_WCO_REFRESH_BUSY_COUNT || defined __DOXYGEN__
240 #define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
241 #endif
242 #if !defined REPORT_WCO_REFRESH_IDLE_COUNT || defined __DOXYGEN__
243 #define REPORT_WCO_REFRESH_IDLE_COUNT 10 // (2-255) Must be less than or equal to the busy count
244 #endif
246 
257 #if !defined ACCELERATION_TICKS_PER_SECOND || defined __DOXYGEN__
258 #define ACCELERATION_TICKS_PER_SECOND 100
259 #endif
260 
261 // Sets the maximum step rate allowed to be written as a grblHAL setting. This option enables an error
262 // check in the settings module to prevent settings values that will exceed this limitation. The maximum
263 // step rate is strictly limited by the CPU speed and will change if something other than an AVR running
264 // at 16MHz is used.
265 // NOTE: For now disabled, will enable if flash space permits.
266 //#define MAX_STEP_RATE_HZ 30000 // Hz
267 
278 #if !defined REPORT_ECHO_LINE_RECEIVED || defined __DOXYGEN__
279 #define REPORT_ECHO_LINE_RECEIVED Off // Default disabled. Set to \ref On or 1 to enable.
280 #endif
281 
288 #if !defined TOOL_LENGTH_OFFSET_AXIS || defined __DOXYGEN__
289 #define TOOL_LENGTH_OFFSET_AXIS -1 // Default is all axes.
290 #endif
291 
301 #if !defined MINIMUM_JUNCTION_SPEED || defined __DOXYGEN__
302 #define MINIMUM_JUNCTION_SPEED 0.0f // (mm/min)
303 #endif
304 
312 #if !defined MINIMUM_FEED_RATE || defined __DOXYGEN__
313 #define MINIMUM_FEED_RATE 1.0f // (mm/min)
314 #endif
315 
323 #if !defined N_ARC_CORRECTION || defined __DOXYGEN__
324 #define N_ARC_CORRECTION 12 // Integer (1-255)
325 #endif
326 
338 #if !defined ARC_ANGULAR_TRAVEL_EPSILON || defined __DOXYGEN__
339 #define ARC_ANGULAR_TRAVEL_EPSILON 5E-7f // Float (radians)
340 #endif
341 
346 #if !defined BEZIER_MIN_STEP || defined __DOXYGEN__
347 #define BEZIER_MIN_STEP 0.002f
348 #endif
349 #if !defined BEZIER_MAX_STEP || defined __DOXYGEN__
350 #define BEZIER_MAX_STEP 0.1f
351 #endif
352 #if !defined BEZIER_SIGMA || defined __DOXYGEN__
353 #define BEZIER_SIGMA 0.1f
354 #endif
356 
357 
365 #if !defined DWELL_TIME_STEP || defined __DOXYGEN__
366 #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)
367 #endif
368 
378 #if !defined SEGMENT_BUFFER_SIZE || defined __DOXYGEN__
379 #define SEGMENT_BUFFER_SIZE 10 // Uncomment to override default in stepper.h.
380 #endif
381 
387 #if !defined SET_CHECK_MODE_PROBE_TO_START || defined __DOXYGEN__
388 #define SET_CHECK_MODE_PROBE_TO_START Off // Default disabled. Set to \ref On or 1 to enable.
389 #endif
390 
402 #if !defined HARD_LIMIT_FORCE_STATE_CHECK || defined __DOXYGEN__
403 #define HARD_LIMIT_FORCE_STATE_CHECK Off // Default disabled. Set to \ref On or 1 to enable.
404 #endif
405 
417 #if !defined HOMING_AXIS_SEARCH_SCALAR || defined __DOXYGEN__
418 #define HOMING_AXIS_SEARCH_SCALAR 1.5f // Must be > 1 to ensure limit switch will be engaged.
419 #endif
420 #if !defined HOMING_AXIS_LOCATE_SCALAR || defined __DOXYGEN__
421 #define HOMING_AXIS_LOCATE_SCALAR 10.0f// Must be > 1 to ensure limit switch is cleared.
422 #endif
424 
432 #if !defined ENABLE_RESTORE_NVS_WIPE_ALL || defined __DOXYGEN__
433 #define ENABLE_RESTORE_NVS_WIPE_ALL On
434 #endif
435 #if !defined ENABLE_RESTORE_NVS_DEFAULT_SETTINGS || defined __DOXYGEN__
436 #define ENABLE_RESTORE_NVS_DEFAULT_SETTINGS On
437 #endif
438 #if !defined ENABLE_RESTORE_NVS_CLEAR_PARAMETERS || defined __DOXYGEN__
439 #define ENABLE_RESTORE_NVS_CLEAR_PARAMETERS On
440 #endif
441 #if !defined ENABLE_RESTORE_NVS_DRIVER_PARAMETERS || defined __DOXYGEN__
442 #define ENABLE_RESTORE_NVS_DRIVER_PARAMETERS On
443 #endif
445 
456 #if !defined SETTINGS_RESTORE_DEFAULTS || defined __DOXYGEN__
457 #define SETTINGS_RESTORE_DEFAULTS On
458 #endif
459 #if !defined SETTINGS_RESTORE_PARAMETERS || defined __DOXYGEN__
460 #define SETTINGS_RESTORE_PARAMETERS On
461 #endif
462 #if !defined SETTINGS_RESTORE_STARTUP_LINES || defined __DOXYGEN__
463 #define SETTINGS_RESTORE_STARTUP_LINES On
464 #endif
465 #if !defined SETTINGS_RESTORE_BUILD_INFO || defined __DOXYGEN__
466 #define SETTINGS_RESTORE_BUILD_INFO On
467 #endif
468 #if !defined SETTINGS_RESTORE_DRIVER_PARAMETERS || defined __DOXYGEN__
469 #define SETTINGS_RESTORE_DRIVER_PARAMETERS On
470 #endif
479 #if !defined DISABLE_BUILD_INFO_WRITE_COMMAND || defined __DOXYGEN__
480 #define DISABLE_BUILD_INFO_WRITE_COMMAND Off
481 #endif
483 
497 #if !defined SLEEP_DURATION || defined __DOXYGEN__
498 #define SLEEP_DURATION 5.0f // Number of minutes before sleep mode is entered.
499 #endif
500 
506 #if !defined NVSDATA_BUFFER_ENABLE || defined __DOXYGEN__
507 #define NVSDATA_BUFFER_ENABLE On // Default on, set to \ref off or 0 to disable.
508 #endif
509 
519 #if !defined TOOLSETTER_RADIUS || defined __DOXYGEN__
520 #define TOOLSETTER_RADIUS 5.0f
521 #endif
522 
523 #if !defined ENABLE_BACKLASH_COMPENSATION || defined __DOXYGEN__
524 #define ENABLE_BACKLASH_COMPENSATION Off
525 #endif
526 
527 #if COMPATIBILITY_LEVEL == 0 || defined __DOXYGEN__
532 #if !defined N_TOOLS || defined __DOXYGEN__
533 #define N_TOOLS 0
534 #endif
535 #endif
536 
543 #if !defined SPINDLE_SYNC_ENABLE || defined __DOXYGEN__
544 #define SPINDLE_SYNC_ENABLE Off
545 #endif
546 
553 #if !defined NGC_EXPRESSIONS_ENABLE || defined __DOXYGEN__
554 #define NGC_EXPRESSIONS_ENABLE On
555 #endif
556 
561 #if !defined NGC_PARAMETERS_ENABLE || defined __DOXYGEN__
562 #define NGC_PARAMETERS_ENABLE On
563 #endif
564 
569 #if (NGC_EXPRESSIONS_ENABLE && !defined NGC_N_ASSIGN_PARAMETERS_PER_BLOCK) || defined __DOXYGEN__
570 #define NGC_N_ASSIGN_PARAMETERS_PER_BLOCK 10
571 #endif
572 
577 #if !defined LATHE_UVW_OPTION || defined __DOXYGEN__
578 #define LATHE_UVW_OPTION Off
579 #endif
580 
581 // Max number of entries in log for PID data reporting, to be used for tuning
582 //#define PID_LOG 1000 // Default disabled. Uncomment to enable.
583 
584 // End compile time only default configuration
585 
586 // ---------------------------------------------------------------------------------------
587 // SETTINGS DEFAULT VALUE OVERRIDES:
588 
589 // General settings (Group_General)
590 
600 
605 #if !defined DEFAULT_REPORT_MACHINE_POSITION || defined __DOXYGEN__
606 #define DEFAULT_REPORT_MACHINE_POSITION On // Default on. Set to \ref Off or 0 to disable.
607 #endif
608 
614 #if !defined DEFAULT_REPORT_BUFFER_STATE || defined __DOXYGEN__
615 #define DEFAULT_REPORT_BUFFER_STATE On // Default on. Set to \ref Off or 0 to disable.
616 #endif
617 
625 #if !defined DEFAULT_REPORT_LINE_NUMBERS || defined __DOXYGEN__
626 #define DEFAULT_REPORT_LINE_NUMBERS On // Default on. Set to \ref Off or 0 to disable.
627 #endif
628 
635 #if !defined DEFAULT_REPORT_CURRENT_FEED_SPEED || defined __DOXYGEN__
636 #define DEFAULT_REPORT_CURRENT_FEED_SPEED On // Default on. Set to \ref Off or 0 to disable.
637 #endif
638 
645 #if !defined DEFAULT_REPORT_PIN_STATE || defined __DOXYGEN__
646 #define DEFAULT_REPORT_PIN_STATE On // Default on. Set to \ref Off or 0 to disable.
647 #endif
648 
655 #if !defined DEFAULT_REPORT_WORK_COORD_OFFSET || defined __DOXYGEN__
656 #define DEFAULT_REPORT_WORK_COORD_OFFSET On // Default on. Set to \ref Off or 0 to disable.
657 #endif
658 
665 #if !defined DEFAULT_REPORT_OVERRIDES || defined __DOXYGEN__
666 #define DEFAULT_REPORT_OVERRIDES On // Default on. Set to \ref Off or 0 to disable.
667 #endif
668 
676 #if !defined DEFAULT_REPORT_PROBE_COORDINATES || defined __DOXYGEN__
677 #define DEFAULT_REPORT_PROBE_COORDINATES On // Default on. Set to \ref Off or 0 to disable.
678 #endif
679 
690 #if !defined DEFAULT_REPORT_SYNC_ON_WCO_CHANGE || defined __DOXYGEN__
691 #define DEFAULT_REPORT_SYNC_ON_WCO_CHANGE On
692 #endif
693 
701 #if !defined DEFAULT_REPORT_PARSER_STATE || defined __DOXYGEN__
702 #define DEFAULT_REPORT_PARSER_STATE Off // Default off. Set to \ref On or 1 to enable.
703 #endif
704 
715 #if !defined DEFAULT_REPORT_ALARM_SUBSTATE || defined __DOXYGEN__
716 #define DEFAULT_REPORT_ALARM_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
717 #endif
718 
728 #if !defined DEFAULT_REPORT_RUN_SUBSTATE || defined __DOXYGEN__
729 #define DEFAULT_REPORT_RUN_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
730 #endif
731 
738 #if !defined DEFAULT_REPORT_WHEN_HOMING || defined __DOXYGEN__
739 #define DEFAULT_REPORT_WHEN_HOMING Off // Default off. Set to \ref On or 1 to enable.
740 #endif
741 
747 #if !defined DEFAULT_REPORT_DISTANCE_TO_GO || defined __DOXYGEN__
748 #define DEFAULT_REPORT_DISTANCE_TO_GO Off // Default off. Set to \ref On or 1 to enable.
749 #endif
750 
752 
757 #if !defined DEFAULT_JUNCTION_DEVIATION || defined __DOXYGEN__
758 #define DEFAULT_JUNCTION_DEVIATION 0.01f // mm
759 #endif
761 
766 #if !defined DEFAULT_ARC_TOLERANCE || defined __DOXYGEN__
767 #define DEFAULT_ARC_TOLERANCE 0.002f // mm
768 #endif
770 
776 #if !defined DEFAULT_REPORT_INCHES || defined __DOXYGEN__
777 #define DEFAULT_REPORT_INCHES Off
778 #endif
780 
786 #if !defined DEFAULT_G73_RETRACT || defined __DOXYGEN__
787 #define DEFAULT_G73_RETRACT 0.1f // mm
788 #endif
790 
795 #if !defined DEFAULT_LASER_MODE || defined __DOXYGEN__
796 #define DEFAULT_LASER_MODE Off
797 #endif
798 #if !defined DEFAULT_LATHE_MODE || defined __DOXYGEN__
799 #define DEFAULT_LATHE_MODE Off
800 #endif
802 
812 #if !defined DEFAULT_LEGACY_RTCOMMANDS || defined __DOXYGEN__
813 #define DEFAULT_LEGACY_RTCOMMANDS On
814 #endif
816 
820 #if !defined DEFAULT_RESET_OVERRIDES || defined __DOXYGEN__
821 #define DEFAULT_RESET_OVERRIDES Off
822 #endif
824 
828 #if !defined DEFAULT_SLEEP_ENABLE || defined __DOXYGEN__
829 #define DEFAULT_SLEEP_ENABLE Off
830 #endif
832 
840 #if !defined DEFAULT_DISABLE_LASER_DURING_HOLD || defined __DOXYGEN__
841 #define DEFAULT_DISABLE_LASER_DURING_HOLD On
842 #endif
844 
850 #if !defined DEFAULT_RESTORE_AFTER_FEED_HOLD || defined __DOXYGEN__
851 #define DEFAULT_RESTORE_AFTER_FEED_HOLD On
852 #endif
854 
864 #if !defined DEFAULT_FORCE_INITIALIZATION_ALARM || defined __DOXYGEN__
865 #define DEFAULT_FORCE_INITIALIZATION_ALARM Off
866 #endif
868 
875 #if !defined DEFAULT_DISABLE_G92_PERSISTENCE || defined __DOXYGEN__
876 #if COMPATIBILITY_LEVEL <= 1
877 #define DEFAULT_DISABLE_G92_PERSISTENCE Off
878 #else
879 #define DEFAULT_DISABLE_G92_PERSISTENCE On
880 #endif
881 #endif
883 
892 #if !defined DEFAULT_PLANNER_BUFFER_BLOCKS || defined __DOXYGEN__
893 #define DEFAULT_PLANNER_BUFFER_BLOCKS 100
894 #endif
896 
906 #if !defined DEFAULT_HOMING_KEEP_STATUS_ON_RESET || defined __DOXYGEN__
907 #define DEFAULT_HOMING_KEEP_STATUS_ON_RESET Off // Default disabled. Set to \ref On or 1 to enable.
908 #endif
910 
917 #if !defined DEFAULT_KEEP_OFFSETS_ON_RESET || defined __DOXYGEN__
918 #define DEFAULT_KEEP_OFFSETS_ON_RESET Off
919 #endif
921 
928 #if !defined DEFAULT_KEEP_RAPIDS_OVR_ON_RESET || defined __DOXYGEN__
929 #define DEFAULT_KEEP_RAPIDS_OVR_ON_RESET Off
930 #endif
932 
939 #if !defined DEFAULT_KEEP_FEED_OVR_ON_RESET || defined __DOXYGEN__
940 #define DEFAULT_KEEP_FEED_OVR_ON_RESET Off
941 #endif
943 
944 
945 // Control signals settings (Group_ControlSignals)
946 
947 #ifndef __DOXYGEN__ // For now do not include in documentation
948 
954 #define SIGNALS_RESET_BIT (1<<0)
955 #define SIGNALS_FEEDHOLD_BIT (1<<1)
956 #define SIGNALS_CYCLESTART_BIT (1<<2)
957 #define SIGNALS_SAFETYDOOR_BIT (1<<3)
958 #define SIGNALS_BLOCKDELETE_BIT (1<<4)
959 #define SIGNALS_STOPDISABLE_BIT (1<<5)
960 #define SIGNALS_ESTOP_BIT (1<<6)
961 #define SIGNALS_PROBE_CONNECTED_BIT (1<<7)
962 #define SIGNALS_MOTOR_FAULT_BIT (1<<8)
963 #define SIGNALS_MOTOR_WARNING_BIT (1<<9)
964 #define SIGNALS_LIMITS_OVERRIDE_BIT (1<<10)
965 #define SIGNALS_SINGLE_BLOCK_BIT (1<<11)
966 #define SIGNALS_TLS_OVERTRAVEL_BIT (1<<12)
967 #define SIGNALS_PROBE_OVERTRAVEL (1<<13)
968 #define SIGNALS_PROBE_TRIGGERED_BIT (1<<14)
969 #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)
971 
972 #endif
973 
980 #if !defined DEFAULT_CONTROL_SIGNALS_INVERT_MASK || defined __DOXYGEN__
981 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
982 #endif
984 
999 #if !defined DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK || defined __DOXYGEN__
1000 #define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
1001 #endif
1003 
1004 // Limits settings (Group_Limits)
1005 
1014 #if !defined DEFAULT_LIMIT_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1015 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1016 #endif
1018 
1026 #if !defined DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK || defined __DOXYGEN__
1027 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK 0 // Set to -1 or AXES_BITMASK to disable pullup for all axes
1028 #endif
1030 
1034 #if !defined DEFAULT_SOFT_LIMIT_ENABLE || defined __DOXYGEN__
1035 #define DEFAULT_SOFT_LIMIT_ENABLE Off
1036 #endif
1038 
1042 
1049 #if !defined DEFAULT_HARD_LIMIT_ENABLE || defined __DOXYGEN__
1050 #define DEFAULT_HARD_LIMIT_ENABLE Off
1051 #endif
1052 #if !defined DEFAULT_CHECK_LIMITS_AT_INIT || defined __DOXYGEN__
1053 #define DEFAULT_CHECK_LIMITS_AT_INIT Off
1054 #endif
1055 #if !defined DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY || defined __DOXYGEN__
1056 #define DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY Off
1057 #endif
1058 
1071 
1074 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT || defined __DOXYGEN__
1075 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0f // Float (percent)
1076 #endif
1078 
1082 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN || defined __DOXYGEN__
1083 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5f // Float (mm)
1084 #endif
1086 
1091 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX || defined __DOXYGEN__
1092 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0f // Float (mm)
1093 #endif
1095 
1096 // Coolant settings (Group_Coolant)
1097 
1103 #if !defined DEFAULT_INVERT_COOLANT_FLOOD_PIN || defined __DOXYGEN__
1104 #define DEFAULT_INVERT_COOLANT_FLOOD_PIN Off
1105 #endif
1106 #if !defined DEFAULT_INVERT_COOLANT_MIST_PIN || defined __DOXYGEN__
1107 #define DEFAULT_INVERT_COOLANT_MIST_PIN Off // NOTE: not supported by all drivers.
1108 #endif
1110 
1114 #if !defined DEFAULT_COOLANT_ON_DELAY || defined __DOXYGEN__
1115 #define DEFAULT_COOLANT_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1116 #endif
1118 
1119 // Spindle settings (Group_Spindle)
1120 
1124 #if !defined DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1125 #define DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED Off
1126 #endif
1127 #if !defined DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE || defined __DOXYGEN__
1128 #define DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE Off
1129 #endif
1130 #if !defined DEFAULT_PWM_SPINDLE_ENABLE_RAMP || defined __DOXYGEN__
1131 #define DEFAULT_PWM_SPINDLE_ENABLE_RAMP Off
1132 #endif
1133 #if !defined DEFAULT_PWM_SPINDLE_IGNORE_DELAYS || defined __DOXYGEN__
1134 #define DEFAULT_PWM_SPINDLE_IGNORE_DELAYS Off
1135 #endif
1137 
1142 #if !defined DEFAULT_INVERT_SPINDLE_ENABLE_PIN || defined __DOXYGEN__
1143 #define DEFAULT_INVERT_SPINDLE_ENABLE_PIN Off
1144 #endif
1145 #if !defined DEFAULT_INVERT_SPINDLE_CCW_PIN || defined __DOXYGEN__
1146 #define DEFAULT_INVERT_SPINDLE_CCW_PIN Off // NOTE: not supported by all drivers.
1147 #endif
1148 #if !defined DEFAULT_INVERT_SPINDLE_PWM_PIN || defined __DOXYGEN__
1149 #define DEFAULT_INVERT_SPINDLE_PWM_PIN Off // NOTE: not supported by all drivers.
1150 #endif
1152 
1156 #if !defined DEFAULT_SPINDLE_RPM_MAX || defined __DOXYGEN__
1157 #define DEFAULT_SPINDLE_RPM_MAX 1000.0f // rpm
1158 #endif
1160 
1164 #if !defined DEFAULT_SPINDLE_RPM_MIN || defined __DOXYGEN__
1165 #define DEFAULT_SPINDLE_RPM_MIN 0.0f // rpm
1166 #endif
1168 
1172 #if !defined DEFAULT_SPINDLE_PWM_FREQ || defined __DOXYGEN__
1173 #define DEFAULT_SPINDLE_PWM_FREQ 5000 // Hz
1174 #endif
1176 
1180 #if !defined DEFAULT_SPINDLE_PWM_OFF_VALUE || defined __DOXYGEN__
1181 #define DEFAULT_SPINDLE_PWM_OFF_VALUE 0.0f // Percent
1182 #endif
1184 
1197 #if !defined DEFAULT_SPINDLE_PWM_MIN_VALUE || defined __DOXYGEN__
1198 #define DEFAULT_SPINDLE_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1199 #endif
1201 
1205 #if !defined DEFAULT_SPINDLE_PWM_MAX_VALUE || defined __DOXYGEN__
1206 #define DEFAULT_SPINDLE_PWM_MAX_VALUE 100.0f // Percent
1207 #endif
1209 
1218 #if !defined DEFAULT_SPINDLE_PPR || defined __DOXYGEN__
1219 #define DEFAULT_SPINDLE_PPR 0 // Pulses per revolution.
1220 #endif
1222 
1226 #if !defined DEFAULT_SPINDLE_AT_SPEED_TOLERANCE || defined __DOXYGEN__
1227 #define DEFAULT_SPINDLE_AT_SPEED_TOLERANCE 0.0f // Percent - 0 means not checked
1228 #endif
1230 
1234 #if !defined DEFAULT_SPINDLE_ON_DELAY || defined __DOXYGEN__
1235 #define DEFAULT_SPINDLE_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1236 #endif
1238 
1242 #if !defined DEFAULT_SPINDLE || defined __DOXYGEN__
1243 #define DEFAULT_SPINDLE SPINDLE_PWM0 // Spindle number from spindle_control.h
1244 #endif
1246 
1250 #if !defined DEFAULT_SPINDLE_OFF_DELAY || defined __DOXYGEN__
1251 #define DEFAULT_SPINDLE_OFF_DELAY 0 // milliseconds: 0 or 500 - 20000
1252 #endif
1254 
1255 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1256 
1257 // $9 - Setting_SpindlePWMOptions
1258 // bit 0
1259 // always defaults to on
1260 // bit 1
1261 
1262 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1263 
1264 #ifndef DEFAULT_SPINDLE_P_GAIN
1265 #define DEFAULT_SPINDLE_P_GAIN 1.0f
1266 #endif
1267 #ifndef DEFAULT_SPINDLE_I_GAIN
1268 #define DEFAULT_SPINDLE_I_GAIN 0.01f
1269 #endif
1270 #ifndef DEFAULT_SPINDLE_D_GAIN
1271 #define DEFAULT_SPINDLE_D_GAIN 0.0f
1272 #endif
1273 #ifndef DEFAULT_SPINDLE_I_MAX
1274 #define DEFAULT_SPINDLE_I_MAX 10.0f
1275 #endif
1276 
1277 #if ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
1278 
1283 #if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
1284 #define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
1285 #endif
1286 #if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
1287 #define DEFAULT_RPM_LINE_A1 3.197101e-03f
1288 #endif
1289 #if !defined DEFAULT_RPM_LINE_B1 || defined __DOXYGEN__
1290 #define DEFAULT_RPM_LINE_B1 -3.526076e-1f
1291 #endif
1293 
1298 #if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
1299 #define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
1300 #endif
1301 #if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
1302 #define DEFAULT_RPM_LINE_A2 1.722950e-2f
1303 #endif
1304 #if !defined DEFAULT_RPM_LINE_B2 || defined __DOXYGEN__
1305 #define DEFAULT_RPM_LINE_B2 1.0f,
1306 #endif
1308 
1313 #if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
1314 #define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
1315 #endif
1316 #if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
1317 #define DEFAULT_RPM_LINE_A3 5.901518e-02f
1318 #endif
1319 #if !defined DEFAULT_RPM_LINE_B3 || defined __DOXYGEN__
1320 #define DEFAULT_RPM_LINE_B3 4.881851e+02f
1321 #endif
1323 
1328 #if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
1329 #define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
1330 #endif
1331 #if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
1332 #define DEFAULT_RPM_LINE_A4 1.203413e-01f
1333 #endif
1334 #if !defined DEFAULT_RPM_LINE_B4 || defined __DOXYGEN__
1335 #define DEFAULT_RPM_LINE_B4 1.151360e+03f
1336 #endif
1338 
1339 #endif // ENABLE_SPINDLE_LINEARIZATION
1340 
1341 // Settings for second PWM spindle
1342 
1346 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1347 #define DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED Off
1348 #endif
1349 #if !defined DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE || defined __DOXYGEN__
1350 #define DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE Off
1351 #endif
1352 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_RAMP || defined __DOXYGEN__
1353 #define DEFAULT_PWM_SPINDLE1_ENABLE_RAMP Off
1354 #endif
1355 #if !defined DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS || defined __DOXYGEN__
1356 #define DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS Off
1357 #endif
1359 
1364 #if !defined DEFAULT_INVERT_SPINDLE1_ENABLE_PIN || defined __DOXYGEN__
1365 #define DEFAULT_INVERT_SPINDLE1_ENABLE_PIN Off
1366 #endif
1367 #if !defined DEFAULT_INVERT_SPINDLE1_CCW_PIN || defined __DOXYGEN__
1368 #define DEFAULT_INVERT_SPINDLE1_CCW_PIN Off // NOTE: not supported by all drivers.
1369 #endif
1370 #if !defined DEFAULT_INVERT_SPINDLE1_PWM_PIN || defined __DOXYGEN__
1371 #define DEFAULT_INVERT_SPINDLE1_PWM_PIN Off // NOTE: not supported by all drivers.
1372 #endif
1374 
1378 #if !defined DEFAULT_SPINDLE1_RPM_MAX || defined __DOXYGEN__
1379 #define DEFAULT_SPINDLE1_RPM_MAX 1000.0f // rpm
1380 #endif
1382 
1386 #if !defined DEFAULT_SPINDLE1_RPM_MIN || defined __DOXYGEN__
1387 #define DEFAULT_SPINDLE1_RPM_MIN 0.0f // rpm
1388 #endif
1390 
1394 #if !defined DEFAULT_SPINDLE1_PWM_FREQ || defined __DOXYGEN__
1395 #define DEFAULT_SPINDLE1_PWM_FREQ 5000 // Hz
1396 #endif
1398 
1402 #if !defined DEFAULT_SPINDLE1_PWM_OFF_VALUE || defined __DOXYGEN__
1403 #define DEFAULT_SPINDLE1_PWM_OFF_VALUE 0.0f // Percent
1404 #endif
1406 
1419 #if !defined DEFAULT_SPINDLE1_PWM_MIN_VALUE || defined __DOXYGEN__
1420 #define DEFAULT_SPINDLE1_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1421 #endif
1423 
1427 #if !defined DEFAULT_SPINDLE1_PWM_MAX_VALUE || defined __DOXYGEN__
1428 #define DEFAULT_SPINDLE1_PWM_MAX_VALUE 100.0f // Percent
1429 #endif
1431 
1432 
1433 // Tool change settings (Group_Toolchange)
1434 
1439 #if !defined DEFAULT_TOOLCHANGE_MODE || defined __DOXYGEN__
1440 #define DEFAULT_TOOLCHANGE_MODE 0
1441 #endif
1443 
1447 #if !defined DEFAULT_TOOLCHANGE_PROBING_DISTANCE || defined __DOXYGEN__
1448 #define DEFAULT_TOOLCHANGE_PROBING_DISTANCE 30 // max probing distance in mm for mode 3
1449 #endif
1451 
1455 #if !defined DEFAULT_TOOLCHANGE_FEED_RATE || defined __DOXYGEN__
1456 #define DEFAULT_TOOLCHANGE_FEED_RATE 25.0f // mm/min
1457 #endif
1459 
1464 #if !defined DEFAULT_TOOLCHANGE_SEEK_RATE || defined __DOXYGEN__
1465 #define DEFAULT_TOOLCHANGE_SEEK_RATE 200.0f // mm/min
1466 #endif
1468 
1472 #if !defined DEFAULT_TOOLCHANGE_PULLOFF_RATE || defined __DOXYGEN__
1473 #define DEFAULT_TOOLCHANGE_PULLOFF_RATE 200.0f // mm/min
1474 #endif
1476 
1480 #if !defined DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION || defined __DOXYGEN__
1481 #define DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION Off
1482 #endif
1483 #if !defined DEFAULT_TOOLCHANGE_AT_G30 || defined __DOXYGEN__
1484 #define DEFAULT_TOOLCHANGE_AT_G30 Off
1485 #endif
1486 #if !defined DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF || defined __DOXYGEN__
1487 #define DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF Off
1488 #endif
1490 
1494 #if !defined DEFAULT_PERSIST_TOOL || defined __DOXYGEN__
1495 #define DEFAULT_PERSIST_TOOL Off
1496 #endif
1498 
1502 #if !defined DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 || defined __DOXYGEN__
1503 #define DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 Off
1504 #endif
1505 #if !defined DEFAULT_MACRO_ATC_ERROR_NO_MACRO || defined __DOXYGEN__
1506 #define DEFAULT_MACRO_ATC_ERROR_NO_MACRO Off
1507 #endif
1508 #if !defined DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER || defined __DOXYGEN__
1509 #define DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER Off
1510 #endif
1512 
1513 // Homing settings (Group_Homing)
1514 
1520 
1524 #if !defined DEFAULT_HOMING_ENABLE || defined __DOXYGEN__
1525 #define DEFAULT_HOMING_ENABLE Off // Default disabled. Set to \ref On or 1 to enable.
1526 #endif
1527 
1535 #if !defined DEFAULT_HOMING_SINGLE_AXIS_COMMANDS || defined __DOXYGEN__
1536 #define DEFAULT_HOMING_SINGLE_AXIS_COMMANDS Off // Default disabled. Set to \ref On or 1 to enable.
1537 #endif
1538 
1546 #if !defined DEFAULT_HOMING_INIT_LOCK || defined __DOXYGEN__
1547 #define DEFAULT_HOMING_INIT_LOCK Off // Default disabled. Set to \ref On or 1 to enable.
1548 #endif
1549 
1557 #if !defined DEFAULT_HOMING_FORCE_SET_ORIGIN || defined __DOXYGEN__
1558 #define DEFAULT_HOMING_FORCE_SET_ORIGIN Off // Default disabled. Set to \ref On or 1 to enable.
1559 #endif
1560 
1571 #if !defined DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES || defined __DOXYGEN__
1572 #define DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES Off // Default disabled. Set to \ref On or 1 to enable.
1573 #endif
1575 
1582 #if !defined DEFAULT_HOMING_ALLOW_MANUAL || defined __DOXYGEN__
1583 #define DEFAULT_HOMING_ALLOW_MANUAL Off // Default disabled. Set to \ref On or 1 to enable.
1584 #endif
1585 
1592 #if !defined DEFAULT_HOMING_OVERRIDE_LOCKS || defined __DOXYGEN__
1593 #define DEFAULT_HOMING_OVERRIDE_LOCKS Off // Default disabled. Set to \ref On or 1 to enable.
1594 #endif
1595 
1601 #if !defined DEFAULT_HOMING_USE_LIMIT_SWITCHES || defined __DOXYGEN__
1602 #define DEFAULT_HOMING_USE_LIMIT_SWITCHES Off // Default disabled. Set to \ref On or 1 to enable.
1603 #endif
1605 
1611 #if !defined DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED || defined __DOXYGEN__
1612 #define DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED Off // Default disabled. Set to \ref On or 1 to enable.
1613 #endif
1615 
1621 #if !defined DEFAULT_HOMING_DIR_MASK || defined __DOXYGEN__
1622 #define DEFAULT_HOMING_DIR_MASK 0
1623 #endif
1625 
1629 #if !defined DEFAULT_HOMING_FEED_RATE || defined __DOXYGEN__
1630 #define DEFAULT_HOMING_FEED_RATE 25.0f // mm/min
1631 #endif
1633 
1637 #if !defined DEFAULT_HOMING_SEEK_RATE || defined __DOXYGEN__
1638 #define DEFAULT_HOMING_SEEK_RATE 500.0f // mm/min
1639 #endif
1641 
1645 #if !defined DEFAULT_HOMING_DEBOUNCE_DELAY || defined __DOXYGEN__
1646 #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
1647 #endif
1649 
1653 #if !defined DEFAULT_HOMING_PULLOFF || defined __DOXYGEN__
1654 #define DEFAULT_HOMING_PULLOFF 1.0f // mm
1655 #endif
1657 
1664 #if !defined DEFAULT_N_HOMING_LOCATE_CYCLE || defined __DOXYGEN__
1665 #define DEFAULT_N_HOMING_LOCATE_CYCLE 1 // Integer (1-127)
1666 #endif
1668 
1690 #if !defined DEFAULT_HOMING_CYCLE_0 || defined __DOXYGEN__
1691 #define DEFAULT_HOMING_CYCLE_0 (Z_AXIS_BIT) // REQUIRED: First move Z to clear workspace.
1692 #endif
1694 
1698 #if !defined DEFAULT_HOMING_CYCLE_1 || defined __DOXYGEN__
1699 #if COREXY
1700 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT) // OPTIONAL: Then move X.
1701 #else
1702 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT|Y_AXIS_BIT) // OPTIONAL: Then move X,Y at the same time.
1703 #endif
1704 #endif
1706 
1710 #if !defined DEFAULT_HOMING_CYCLE_2 || defined __DOXYGEN__
1711 #if COREXY
1712 #define DEFAULT_HOMING_CYCLE_2 (Y_AXIS_BIT) // OPTIONAL: Then move Y.
1713 #else
1714 #define DEFAULT_HOMING_CYCLE_2 0 // OPTIONAL: Uncomment and add axes mask to enable
1715 #endif
1716 #endif
1718 
1722 #if (N_AXIS > 3 && !defined DEFAULT_HOMING_CYCLE_3) || defined __DOXYGEN__
1723 #define DEFAULT_HOMING_CYCLE_3 0 // OPTIONAL: Uncomment and add axes mask to enable
1724 #endif
1726 
1731 #if (N_AXIS > 4 && !defined DEFAULT_HOMING_CYCLE_4) || defined __DOXYGEN__
1732 #define DEFAULT_HOMING_CYCLE_4 0 // OPTIONAL: Uncomment and add axes mask to enable
1733 #endif
1735 
1739 #if (N_AXIS > 5 && !defined DEFAULT_HOMING_CYCLE_5) || defined __DOXYGEN__
1740 #define DEFAULT_HOMING_CYCLE_5 0 // OPTIONAL: Uncomment and add axes mask to enable
1741 #endif
1743 
1752 #if !defined DEFAULT_HOME_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1753 #define DEFAULT_HOME_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1754 #endif
1756 
1757 
1758 // Probing settings (Group_Probing)
1759 
1763 #if !defined DEFAULT_PROBE_SIGNAL_INVERT || defined __DOXYGEN__
1764 #define DEFAULT_PROBE_SIGNAL_INVERT Off
1765 #endif
1766 #if !defined DEFAULT_TOOLSETTER_SIGNAL_INVERT || defined __DOXYGEN__
1767 #define DEFAULT_TOOLSETTER_SIGNAL_INVERT Off
1768 #endif
1770 
1774 #if !defined DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1775 #define DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP Off
1776 #endif
1777 #if !defined DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1778 #define DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP Off
1779 #endif
1781 
1790 #if !defined DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES || defined __DOXYGEN__
1791 #define DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES Off
1792 #endif
1793 #if !defined DEFAULT_SOFT_LIMIT_PROBE_CYCLES || defined __DOXYGEN__
1794 #define DEFAULT_SOFT_LIMIT_PROBE_CYCLES Off
1795 #endif
1797 
1798 // Safety door/parking settings (Group_SafetyDoor)
1799 
1800 #ifdef DEFAULT_HOMING_ENABLE
1801 
1819 #if !defined DEFAULT_PARKING_ENABLE || defined __DOXYGEN__
1820 #define DEFAULT_PARKING_ENABLE Off // bit 0
1821 // Enables a special set of M-code commands that enables and disables the parking motion.
1822 // These are controlled by `M56`, `M56 P1`, or `M56 Px` to enable and `M56 P0` to disable.
1823 // The command is modal and will be set after a planner sync. Since it is g-code, it is
1824 // executed in sync with g-code commands. It is not a real-time command.
1825 // NOTE: PARKING_ENABLE is required. By default, M56 is active upon initialization. Use
1826 // DEACTIVATE_PARKING_UPON_INIT to set M56 P0 as the power-up default.
1827 #endif
1828 #if !defined DEFAULT_DEACTIVATE_PARKING_UPON_INIT || defined __DOXYGEN__
1829 #define DEFAULT_DEACTIVATE_PARKING_UPON_INIT Off // bit 1
1830 #endif
1831 #if !defined DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL || defined __DOXYGEN__
1832 #define DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL Off // bit 2
1833 #endif
1835 
1840 #if !defined DEFAULT_PARKING_AXIS || defined __DOXYGEN__
1841 #define DEFAULT_PARKING_AXIS Z_AXIS //
1842 #endif
1844 
1848 #if !defined DEFAULT_PARKING_PULLOUT_INCREMENT || defined __DOXYGEN__
1849 #define DEFAULT_PARKING_PULLOUT_INCREMENT 5.0f //
1850 #endif
1852 
1857 #if !defined DEFAULT_PARKING_PULLOUT_RATE || defined __DOXYGEN__
1858 #define DEFAULT_PARKING_PULLOUT_RATE 100.0f // mm/min.
1859 #endif
1861 
1866 #if !defined DEFAULT_PARKING_TARGET || defined __DOXYGEN__
1867 #define DEFAULT_PARKING_TARGET -5.0f // mm
1868 #endif
1870 
1875 #if !defined DEFAULT_PARKING_RATE || defined __DOXYGEN__
1876 #define DEFAULT_PARKING_RATE 500.0f // mm/min
1877 #endif
1879 
1883 
1888 #if !defined DEFAULT_DOOR_IGNORE_WHEN_IDLE || defined __DOXYGEN__
1889 #define DEFAULT_DOOR_IGNORE_WHEN_IDLE Off
1890 #endif
1895 #if !defined DEFAULT_DOOR_KEEP_COOLANT_ON || defined __DOXYGEN__
1896 #define DEFAULT_DOOR_KEEP_COOLANT_ON Off
1897 #endif
1899 
1905 #if !defined DEFAULT_SAFETY_DOOR_SPINDLE_DELAY || defined __DOXYGEN__
1906 #define DEFAULT_SAFETY_DOOR_SPINDLE_DELAY 4.0f // Float (seconds)
1907 #endif
1909 
1916 #if !defined DEFAULT_SAFETY_DOOR_COOLANT_DELAY || defined __DOXYGEN__
1917 #define DEFAULT_SAFETY_DOOR_COOLANT_DELAY 1.0f // Float (seconds)
1918 #endif
1920 
1921 #endif // DEFAULT_HOMING_ENABLE
1922 
1923 // Jogging settings (Group_Jogging)
1924 
1932 #if !defined DEFAULT_JOG_LIMIT_ENABLE || defined __DOXYGEN__
1933 #define DEFAULT_JOG_LIMIT_ENABLE Off
1934 #endif
1936 
1937 // Stepper settings (Group_Stepper)
1938 
1951 #if !defined DEFAULT_STEP_PULSE_MICROSECONDS || defined __DOXYGEN__
1952 #define DEFAULT_STEP_PULSE_MICROSECONDS 5.0f
1953 #endif
1955 
1964 #if !defined DEFAULT_STEPPER_IDLE_LOCK_TIME || defined __DOXYGEN__
1965 #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // milliseconds
1966 #endif
1968 
1974 #if !defined DEFAULT_STEP_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1975 #define DEFAULT_STEP_SIGNALS_INVERT_MASK 0
1976 #endif
1978 
1984 #if !defined DEFAULT_DIR_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1985 #define DEFAULT_DIR_SIGNALS_INVERT_MASK 0
1986 #endif
1988 
2001 #if !defined DEFAULT_ENABLE_SIGNALS_INVERT_MASK || defined __DOXYGEN__
2002 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2003 #endif
2005 
2011 #if !defined DEFAULT_GANGED_DIRECTION_INVERT_MASK || defined __DOXYGEN__
2012 #define DEFAULT_GANGED_DIRECTION_INVERT_MASK 0
2013 #endif
2015 
2019 #if !defined DEFAULT_STEP_PULSE_DELAY || defined __DOXYGEN__
2020 #define DEFAULT_STEP_PULSE_DELAY 0.0f
2021 #endif
2023 
2030 #if !defined DEFAULT_STEPPER_DEENERGIZE_MASK || defined __DOXYGEN__
2031 #define DEFAULT_STEPPER_DEENERGIZE_MASK 0
2032 #endif
2034 
2041 
2042 #define IS_ROTARY_LETTER(c) (c == 'A' || c == 'B' || c == 'C')
2043 
2044 #if !defined DEFAULT_AXIS_ROTATIONAL_MASK || defined __DOXYGEN__
2045 #if N_AXIS > 3 && IS_ROTARY_LETTER(AXIS3_LETTER)
2046 #define RA3 (1<<3)
2047 #else
2048 #define RA3 0
2049 #endif
2050 #if N_AXIS > 4 && IS_ROTARY_LETTER(AXIS4_LETTER)
2051 #define RA4 (1<<4)
2052 #else
2053 #define RA4 0
2054 #endif
2055 #if N_AXIS > 5 && IS_ROTARY_LETTER(AXIS5_LETTER)
2056 #define RA5 (1<<5)
2057 #else
2058 #define RA5 0
2059 #endif
2060 #if N_AXIS > 6 && IS_ROTARY_LETTER(AXIS6_LETTER)
2061 #define RA6 (1<<6)
2062 #else
2063 #define RA6 0
2064 #endif
2065 #if N_AXIS > 7 && IS_ROTARY_LETTER(AXIS7_LETTER)
2066 #define RA7 (1<<7)
2067 #else
2068 #define RA7 0
2069 #endif
2070 #define DEFAULT_AXIS_ROTATIONAL_MASK (RA3|RA4|RA5|RA6|RA7)
2071 #endif
2073 
2078 #if !defined DEFAULT_STEPPER_ENABLE_DELAY || defined __DOXYGEN__
2079 #define DEFAULT_STEPPER_ENABLE_DELAY 0
2080 #endif
2082 
2088 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE || defined __DOXYGEN__
2089 #define DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE 0
2090 #endif
2092 
2098 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_INVERT || defined __DOXYGEN__
2099 #define DEFAULT_MOTOR_WARNING_SIGNALS_INVERT 0
2100 #endif
2102 
2108 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE || defined __DOXYGEN__
2109 #define DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE 0
2110 #endif
2112 
2118 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_INVERT || defined __DOXYGEN__
2119 #define DEFAULT_MOTOR_FAULT_SIGNALS_INVERT 0
2120 #endif
2122 
2127 #if !defined DEFAULT_AUTOREPORT_INTERVAL || defined __DOXYGEN__
2128 #define DEFAULT_AUTOREPORT_INTERVAL 0
2129 #endif
2131 
2136 #if !defined DEFAULT_TIMEZONE_OFFSET || defined __DOXYGEN__
2137 #define DEFAULT_TIMEZONE_OFFSET 0.0f
2138 #endif
2140 
2146 #if !defined DEFAULT_NO_UNLOCK_AFTER_ESTOP || defined __DOXYGEN__
2147 #define DEFAULT_NO_UNLOCK_AFTER_ESTOP Off
2148 #endif
2150 
2155 #if !defined DEFAULT_RGB_STRIP0_LENGTH || defined __DOXYGEN__
2156 #define DEFAULT_RGB_STRIP0_LENGTH 0
2157 #endif
2159 
2164 #if !defined DEFAULT_RGB_STRIP1_LENGTH || defined __DOXYGEN__
2165 #define DEFAULT_RGB_STRIP1_LENGTH 0
2166 #endif
2168 
2176 #if !defined DEFAULT_AXIS_ROTARY_WRAP_MASK || defined __DOXYGEN__
2177 #define DEFAULT_AXIS_ROTARY_WRAP_MASK 0
2178 #endif
2180 
2185 #if !defined DEFAULT_MODBUS_STREAM_BAUD || defined __DOXYGEN__
2186 #define DEFAULT_MODBUS_STREAM_BAUD 3 // 0 = 2400, 1 = 4800, 2 = 9600, 3 = 19200, 4 = 38400, 5 = 115200
2187 #endif
2189 
2194 #if !defined DEFAULT_MODBUS_STREAM_DATA_BITS || defined __DOXYGEN__
2195 #define DEFAULT_MODBUS_STREAM_DATA_BITS 0 // 0 = 8, 1 = 7
2196 #endif
2199 #if !defined DEFAULT_MODBUS_STREAM_STOP_BITS || defined __DOXYGEN__
2200 #define DEFAULT_MODBUS_STREAM_STOP_BITS 0 // 0 = 1, 1 = 1.5, 2 = 2, 3 = 0.5
2201 #endif
2203 #if !defined DEFAULT_MODBUS_STREAM_PARITY || defined __DOXYGEN__
2204 #define DEFAULT_MODBUS_STREAM_PARITY 0 // 0 = None, 1 = Even, 2 = Odd
2205 #endif
2207 
2211 
2215 #if !defined DEFAULT_FS_SD_AUTOMOUNT || defined __DOXYGEN__
2216 #define DEFAULT_FS_SD_AUTOMOUNT Off // Default disabled. Set to \ref On or 1 to enable.
2217 #endif
2218 
2223 #if !defined DEFAULT_FS_LITTLEFS_HIDDEN || defined __DOXYGEN__
2224 #define DEFAULT_FS_LITTLEFS_HIDDEN Off // Default disabled. Set to \ref On or 1 to enable.
2225 #endif
2226 
2232 #if !defined DEFAULT_FS_HIERACHICAL_LISTING || defined __DOXYGEN__
2233 #define DEFAULT_FS_HIERACHICAL_LISTING Off // Default disabled. Set to \ref On or 1 to enable.
2234 #endif
2236 
2237 // Axis settings (Group_XAxis - Group_VAxis)
2238 
2243 #if !defined DEFAULT_X_STEPS_PER_MM || defined __DOXYGEN__
2244 #define DEFAULT_X_STEPS_PER_MM 250.0f
2245 #endif
2246 #if !defined DEFAULT_Y_STEPS_PER_MM || defined __DOXYGEN__
2247 #define DEFAULT_Y_STEPS_PER_MM 250.0f
2248 #endif
2249 #if !defined DEFAULT_Z_STEPS_PER_MM || defined __DOXYGEN__
2250 #define DEFAULT_Z_STEPS_PER_MM 250.0f
2251 #endif
2252 #if (defined A_AXIS && !defined DEFAULT_A_STEPS_PER_MM) || defined __DOXYGEN__
2253 #define DEFAULT_A_STEPS_PER_MM 250.0f
2254 #endif
2255 #if (defined B_AXIS && !defined DEFAULT_B_STEPS_PER_MM) || defined __DOXYGEN__
2256 #define DEFAULT_B_STEPS_PER_MM 250.0f
2257 #endif
2258 #if (defined C_AXIS && !defined DEFAULT_C_STEPS_PER_MM) || defined __DOXYGEN__
2259 #define DEFAULT_C_STEPS_PER_MM 250.0f
2260 #endif
2261 #if (defined U_AXIS && !defined DEFAULT_U_STEPS_PER_MM) || defined __DOXYGEN__
2262 #define DEFAULT_U_STEPS_PER_MM 250.0f
2263 #endif
2264 #if (defined V_AXIS && !defined DEFAULT_V_STEPS_PER_MM) || defined __DOXYGEN__
2265 #define DEFAULT_V_STEPS_PER_MM 250.0f
2266 #endif
2267 #if (defined W_AXIS && !defined DEFAULT_W_STEPS_PER_MM) || defined __DOXYGEN__
2268 #define DEFAULT_W_STEPS_PER_MM 250.0f
2269 #endif
2271 
2276 #if !defined DEFAULT_X_MAX_RATE || defined __DOXYGEN__
2277 #define DEFAULT_X_MAX_RATE 500.0f // mm/min
2278 #endif
2279 #if !defined DEFAULT_Y_MAX_RATE || defined __DOXYGEN__
2280 #define DEFAULT_Y_MAX_RATE 500.0f // mm/min
2281 #endif
2282 #if !defined DEFAULT_Z_MAX_RATE || defined __DOXYGEN__
2283 #define DEFAULT_Z_MAX_RATE 500.0f // mm/min
2284 #endif
2285 #if (defined A_AXIS && !defined DEFAULT_A_MAX_RATE) || defined __DOXYGEN__
2286 #define DEFAULT_A_MAX_RATE 500.0f // mm/min
2287 #endif
2288 #if (defined B_AXIS && !defined DEFAULT_B_MAX_RATE) || defined __DOXYGEN__
2289 #define DEFAULT_B_MAX_RATE 500.0f // mm/min
2290 #endif
2291 #if (defined C_AXIS && !defined DEFAULT_C_MAX_RATE) || defined __DOXYGEN__
2292 #define DEFAULT_C_MAX_RATE 500.0f // mm/min
2293 #endif
2294 #if (defined U_AXIS && !defined DEFAULT_U_MAX_RATE) || defined __DOXYGEN__
2295 #define DEFAULT_U_MAX_RATE 500.0f // mm/min
2296 #endif
2297 #if (defined V_AXIS && !defined DEFAULT_V_MAX_RATE) || defined __DOXYGEN__
2298 #define DEFAULT_V_MAX_RATE 500.0f // mm/min
2299 #endif
2300 #if (defined W_AXIS && !defined DEFAULT_W_MAX_RATE) || defined __DOXYGEN__
2301 #define DEFAULT_W_MAX_RATE 500.0f // mm/min
2302 #endif
2304 
2308 #if !defined DEFAULT_X_ACCELERATION || defined __DOXYGEN__
2309 #define DEFAULT_X_ACCELERATION 10.0f // mm/sec^2
2310 #endif
2311 #if !defined DEFAULT_Y_ACCELERATION || defined __DOXYGEN__
2312 #define DEFAULT_Y_ACCELERATION 10.0f // mm/sec^2
2313 #endif
2314 #if !defined DEFAULT_Z_ACCELERATION || defined __DOXYGEN__
2315 #define DEFAULT_Z_ACCELERATION 10.0f // mm/sec^2
2316 #endif
2317 #if (defined A_AXIS && !defined DEFAULT_A_ACCELERATION) || defined __DOXYGEN__
2318 #define DEFAULT_A_ACCELERATION 10.0f // mm/sec^2
2319 #endif
2320 #if (defined B_AXIS && !defined DEFAULT_B_ACCELERATION) || defined __DOXYGEN__
2321 #define DEFAULT_B_ACCELERATION 10.0f // mm/sec^2
2322 #endif
2323 #if (defined C_AXIS && !defined DEFAULT_C_ACCELERATION) || defined __DOXYGEN__
2324 #define DEFAULT_C_ACCELERATION 10.0f // mm/sec^2
2325 #endif
2326 #if (defined U_AXIS && !defined DEFAULT_U_ACCELERATION) || defined __DOXYGEN__
2327 #define DEFAULT_U_ACCELERATION 10.0f // mm/sec^2
2328 #endif
2329 #if (defined V_AXIS && !defined DEFAULT_V_ACCELERATION) || defined __DOXYGEN__
2330 #define DEFAULT_V_ACCELERATION 10.0f // mm/sec^2
2331 #endif
2332 #if (defined W_AXIS && !defined DEFAULT_W_ACCELERATION) || defined __DOXYGEN__
2333 #define DEFAULT_W_ACCELERATION 10.0f // mm/sec^2
2334 #endif
2336 
2340 #if !defined DEFAULT_X_JERK|| defined __DOXYGEN__
2341 #define DEFAULT_X_JERK (DEFAULT_X_ACCELERATION * 10.0f) // mm/sec^3
2342 #endif
2343 #if !defined DEFAULT_Y_JERK|| defined __DOXYGEN__
2344 #define DEFAULT_Y_JERK (DEFAULT_Y_ACCELERATION * 10.0f) // mm/sec^3
2345 #endif
2346 #if !defined DEFAULT_Z_JERK || defined __DOXYGEN__
2347 #define DEFAULT_Z_JERK (DEFAULT_Z_ACCELERATION * 10.0f) // mm/sec^3
2348 #endif
2349 #if (defined A_AXIS && !defined DEFAULT_A_JERK) || defined __DOXYGEN__
2350 #define DEFAULT_A_JERK (DEFAULT_A_ACCELERATION * 10.0f) // mm/sec^3
2351 #endif
2352 #if (defined B_AXIS && !defined DEFAULT_B_JERK) || defined __DOXYGEN__
2353 #define DEFAULT_B_JERK (DEFAULT_B_ACCELERATION * 10.0f) // mm/sec^3
2354 #endif
2355 #if (defined C_AXIS && !defined DEFAULT_C_JERK) || defined __DOXYGEN__
2356 #define DEFAULT_C_JERK (DEFAULT_C_ACCELERATION * 10.0f) // mm/sec^3
2357 #endif
2358 #if (defined U_AXIS && !defined DEFAULT_U_JERK) || defined __DOXYGEN__
2359 #define DEFAULT_U_JERK (DEFAULT_U_ACCELERATION * 10.0f) // mm/sec^3
2360 #endif
2361 #if (defined V_AXIS && !defined DEFAULT_V_JERK) || defined __DOXYGEN__
2362 #define DEFAULT_V_JERK (DEFAULT_V_ACCELERATION * 10.0f) // mm/sec^3
2363 #endif
2364 #if (defined W_AXIS && !defined DEFAULT_W_JERK) || defined __DOXYGEN__
2365 #define DEFAULT_W_JERK (DEFAULT_W_ACCELERATION * 10.0f) // mm/sec^3
2366 #endif
2368 
2373 #if !defined DEFAULT_X_MAX_TRAVEL || defined __DOXYGEN__
2374 #define DEFAULT_X_MAX_TRAVEL 200.0f // mm
2375 #endif
2376 #if !defined DEFAULT_Y_MAX_TRAVEL || defined __DOXYGEN__
2377 #define DEFAULT_Y_MAX_TRAVEL 200.0f // mm
2378 #endif
2379 #if !defined DEFAULT_Z_MAX_TRAVEL || defined __DOXYGEN__
2380 #define DEFAULT_Z_MAX_TRAVEL 200.0f // mm
2381 #endif
2382 #if (defined A_AXIS && !defined DEFAULT_A_MAX_TRAVEL) || defined __DOXYGEN__
2383 #define DEFAULT_A_MAX_TRAVEL 200.0f // mm
2384 #endif
2385 #if (defined B_AXIS && !defined DEFAULT_B_MAX_TRAVEL) || defined __DOXYGEN__
2386 #define DEFAULT_B_MAX_TRAVEL 200.0f // mm
2387 #endif
2388 #if (defined C_AXIS && !defined DEFAULT_C_MAX_TRAVEL) || defined __DOXYGEN__
2389 #define DEFAULT_C_MAX_TRAVEL 200.0f // mm
2390 #endif
2391 #if (defined U_AXIS && !defined DEFAULT_U_MAX_TRAVEL) || defined __DOXYGEN__
2392 #define DEFAULT_U_MAX_TRAVEL 200.0f // mm
2393 #endif
2394 #if (defined V_AXIS && !defined DEFAULT_V_MAX_TRAVEL) || defined __DOXYGEN__
2395 #define DEFAULT_V_MAX_TRAVEL 200.0f // mm
2396 #endif
2397 #if (defined W_AXIS && !defined DEFAULT_W_MAX_TRAVEL) || defined __DOXYGEN__
2398 #define DEFAULT_W_MAX_TRAVEL 200.0f // mm
2399 #endif
2401 
2406 #if !defined DEFAULT_X_CURRENT || defined __DOXYGEN__
2407 #define DEFAULT_X_CURRENT 500.0f // mA RMS
2408 #endif
2409 #if !defined DEFAULT_Y_CURRENT || defined __DOXYGEN__
2410 #define DEFAULT_Y_CURRENT 500.0f // mA RMS
2411 #endif
2412 #if !defined DEFAULT_Z_CURRENT || defined __DOXYGEN__
2413 #define DEFAULT_Z_CURRENT 500.0f // mA RMS
2414 #endif
2415 #if (defined A_AXIS && !defined DEFAULT_A_CURRENT) || defined __DOXYGEN__
2416 #define DEFAULT_A_CURRENT 500.0f // mA RMS
2417 #endif
2418 #if (defined B_AXIS && !defined DEFAULT_B_CURRENT) || defined __DOXYGEN__
2419 #define DEFAULT_B_CURRENT 500.0f // mA RMS
2420 #endif
2421 #if (defined C_AXIS && !defined DEFAULT_C_CURRENT) || defined __DOXYGEN__
2422 #define DEFAULT_C_CURRENT 500.0f // mA RMS
2423 #endif
2424 #if (defined U_AXIS && !defined DEFAULT_U_CURRENT) || defined __DOXYGEN__
2425 #define DEFAULT_U_CURRENT 500.0f // mA RMS
2426 #endif
2427 #if (defined V_AXIS && !defined DEFAULT_V_CURRENT) || defined __DOXYGEN__
2428 #define DEFAULT_V_CURRENT 500.0f // mA RMS
2429 #endif
2430 #if (defined W_AXIS && !defined DEFAULT_W_CURRENT) || defined __DOXYGEN__
2431 #define DEFAULT_W_CURRENT 500.0f // mA RMS
2432 #endif
2434 
2435 // Sanity checks
2436 
2437 // N_TOOLS may have been defined on the compiler command line.
2438 #if !defined(N_TOOLS)
2439 #define N_TOOLS 0
2440 #elif N_TOOLS > 32
2441 #undef N_TOOLS
2442 #define N_TOOLS 32
2443 #endif
2444 
2445 #if N_SYS_SPINDLE > N_SPINDLE
2446 #undef N_SYS_SPINDLE
2447 #define N_SYS_SPINDLE N_SPINDLE
2448 #endif
2449 
2450 #if N_SYS_SPINDLE < 1
2451 #undef N_SYS_SPINDLE
2452 #define N_SYS_SPINDLE 1
2453 #endif
2454 
2455 #if N_SYS_SPINDLE > 8
2456 #undef N_SYS_SPINDLE
2457 #define N_SYS_SPINDLE 8
2458 #endif
2459 
2460 #if NGC_EXPRESSIONS_ENABLE && !NGC_PARAMETERS_ENABLE
2461 #undef NGC_PARAMETERS_ENABLE
2462 #define NGC_PARAMETERS_ENABLE On
2463 #endif
2464 
2465 #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT)
2466  #error "WCO busy refresh is less than idle refresh."
2467 #endif
2468 #if (REPORT_OVERRIDE_REFRESH_BUSY_COUNT < REPORT_OVERRIDE_REFRESH_IDLE_COUNT)
2469  #error "Override busy refresh is less than idle refresh."
2470 #endif
2471 #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2)
2472  #error "WCO refresh must be greater than one."
2473 #endif
2474 #if (REPORT_OVERRIDE_REFRESH_IDLE_COUNT < 1)
2475  #error "Override refresh must be greater than zero."
2476 #endif
2477 
2478 #if DEFAULT_LASER_MODE && DEFAULT_LATHE_MODE
2479 #error "Cannot enable laser and lathe mode at the same time!"
2480 #endif
2481 
2482 #if LATHE_UVW_OPTION && AXIS_REMAP_ABC2UVW
2483 #warning "Cannot enable lathe UVW option when N_AXIS > 6 or ABC words are remapped!"
2484 #undef LATHE_UVW_OPTION
2485 #define LATHE_UVW_OPTION Off
2486 #endif
2487 
2488 #if DEFAULT_CONTROL_SIGNALS_INVERT_MASK < 0
2489 #undef DEFAULT_CONTROL_SIGNALS_INVERT_MASK
2490 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK SIGNALS_BITMASK
2491 #endif
2492 
2493 #if DEFAULT_LIMIT_SIGNALS_INVERT_MASK < 0
2494 #undef DEFAULT_LIMIT_SIGNALS_INVERT_MASK
2495 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK AXES_BITMASK
2496 #endif
2497 
2498 #if DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK < 0
2499 #undef DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK
2500 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK AXES_BITMASK
2501 #endif
2502 
2503 #if DEFAULT_STEP_SIGNALS_INVERT_MASK < 0
2504 #undef DEFAULT_STEP_SIGNALS_INVERT_MASK
2505 #define DEFAULT_STEP_SIGNALS_INVERT_MASK AXES_BITMASK
2506 #endif
2507 
2508 #if DEFAULT_ENABLE_SIGNALS_INVERT_MASK < 0
2509 #undef DEFAULT_ENABLE_SIGNALS_INVERT_MASK
2510 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2511 #endif
2512 
2513 #if DEFAULT_SPINDLE_ON_DELAY
2514 #if DEFAULT_SPINDLE_ON_DELAY < 500
2515 #undef DEFAULT_SPINDLE_ON_DELAY
2516 #define DEFAULT_SPINDLE_ON_DELAY 500
2517 #elif DEFAULT_SPINDLE_ON_DELAY > 20000
2518 #undef DEFAULT_SPINDLE_ON_DELAY
2519 #define DEFAULT_SPINDLE_ON_DELAY 20000
2520 #endif
2521 #endif
2522 
2523 #if DEFAULT_COOLANT_ON_DELAY
2524 #if DEFAULT_COOLANT_ON_DELAY < 500
2525 #undef DEFAULT_COOLANT_ON_DELAY
2526 #define DEFAULT_COOLANT_ON_DELAY 500
2527 #elif DEFAULT_COOLANT_ON_DELAY > 20000
2528 #undef DEFAULT_COOLANT_ON_DELAY
2529 #define DEFAULT_COOLANT_ON_DELAY 20000
2530 #endif
2531 #endif
2532 
2533 #if DEFAULT_PARKING_ENABLE > 0
2534  #if DEFAULT_HOMING_FORCE_SET_ORIGIN > 0
2535  #error "DEFAULT_HOMING_FORCE_SET_ORIGIN is not supported with DEFAULT_PARKING_ENABLE at this time."
2536  #endif
2537 #endif
2538 
2539 #if DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL > 0
2540  #if DEFAULT_PARKING_ENABLE < 1
2541  #error "DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with DEFAULT_PARKING_ENABLE."
2542  #endif
2543 #endif
2544 
2599 #endif // _GRBL_CONFIG_H_