grblHAL core  20260817
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 
157 #if !defined RTCP_AC || defined __DOXYGEN__
158 #define RTCP_AC Off
159 #endif
160 
161 
171 #if !defined COREXY || defined __DOXYGEN__
172 #define COREXY Off
173 #endif
174 
179 //#define ASYMMETRIC_GANGING Y_AXIS // Uncomment to enable
180 
185 //#define ASYMMETRIC_AUTO_SQUARE Y_AXIS // Uncomment to enable
186 
194 #if !defined CHECK_MODE_DELAY || defined __DOXYGEN__
195 #define CHECK_MODE_DELAY 0 // ms
196 #endif
197 
203 #if !defined DEBOUNCE_DELAY || defined __DOXYGEN__
204 #define DEBOUNCE_DELAY 40 // ms
205 #endif
206 
207 #define MAX_TOOL_NUMBER 2147483647 // Limited by max signed 32-bit value - 1
208 
209 // ---------------------------------------------------------------------------------------
210 // ADVANCED CONFIGURATION OPTIONS:
211 
212 // EXPERIMENTAL OPTIONS
213 
214 #define ENABLE_PATH_BLENDING Off // Do NOT enable unless working on adding this feature!
215 
216 #if !defined ENABLE_ACCELERATION_PROFILES || defined __DOXYGEN__
217 #define ENABLE_ACCELERATION_PROFILES Off // Enable to allow G-Code changeable acceleration profiles.
218 #endif
219 
220 #if !defined ENABLE_JERK_ACCELERATION || defined __DOXYGEN__
221 #define ENABLE_JERK_ACCELERATION Off // Enable to use 3rd order acceleration calculations. May need more processing power, a FPU will help.
222 #endif
223 
224 #if !defined CUTTER_COMP_ENABLE || defined __DOXYGEN__
225 #define CUTTER_COMP_ENABLE On
226 #endif
227 
228 // -
229 
230 // Enables code for debugging purposes. Not for general use and always in constant flux.
231 //#define DEBUG // Uncomment to enable. Default disabled.
232 //#define DEBUGOUT 0 // Uncomment to claim serial port with given instance number and add HAL entry point for debug output.
233 
246 #if !defined REPORT_OVERRIDE_REFRESH_BUSY_COUNT || defined __DOXYGEN__
247 #define REPORT_OVERRIDE_REFRESH_BUSY_COUNT 20 // (1-255)
248 #endif
249 #if !defined REPORT_OVERRIDE_REFRESH_IDLE_COUNT || defined __DOXYGEN__
250 #define REPORT_OVERRIDE_REFRESH_IDLE_COUNT 10 // (1-255) Must be less than or equal to the busy count
251 #endif
252 #if !defined REPORT_WCO_REFRESH_BUSY_COUNT || defined __DOXYGEN__
253 #define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
254 #endif
255 #if !defined REPORT_WCO_REFRESH_IDLE_COUNT || defined __DOXYGEN__
256 #define REPORT_WCO_REFRESH_IDLE_COUNT 10 // (2-255) Must be less than or equal to the busy count
257 #endif
259 
270 #if !defined ACCELERATION_TICKS_PER_SECOND || defined __DOXYGEN__
271 #define ACCELERATION_TICKS_PER_SECOND 100
272 #endif
273 
274 // Sets the maximum step rate allowed to be written as a grblHAL setting. This option enables an error
275 // check in the settings module to prevent settings values that will exceed this limitation. The maximum
276 // step rate is strictly limited by the CPU speed and will change if something other than an AVR running
277 // at 16MHz is used.
278 // NOTE: For now disabled, will enable if flash space permits.
279 //#define MAX_STEP_RATE_HZ 30000 // Hz
280 
291 #if !defined REPORT_ECHO_LINE_RECEIVED || defined __DOXYGEN__
292 #define REPORT_ECHO_LINE_RECEIVED Off // Default disabled. Set to \ref On or 1 to enable.
293 #endif
294 
301 #if !defined TOOL_LENGTH_OFFSET_AXIS || defined __DOXYGEN__
302 #define TOOL_LENGTH_OFFSET_AXIS -1 // Default is all axes.
303 #endif
304 
314 #if !defined MINIMUM_JUNCTION_SPEED || defined __DOXYGEN__
315 #define MINIMUM_JUNCTION_SPEED 0.0f // (mm/min)
316 #endif
317 
325 #if !defined MINIMUM_FEED_RATE || defined __DOXYGEN__
326 #define MINIMUM_FEED_RATE 1.0f // (mm/min)
327 #endif
328 
336 #if !defined N_ARC_CORRECTION || defined __DOXYGEN__
337 #define N_ARC_CORRECTION 12 // Integer (1-255)
338 #endif
339 
351 #if !defined ARC_ANGULAR_TRAVEL_EPSILON || defined __DOXYGEN__
352 #define ARC_ANGULAR_TRAVEL_EPSILON 5E-7f // Float (radians)
353 #endif
354 
359 #if !defined BEZIER_MIN_STEP || defined __DOXYGEN__
360 #define BEZIER_MIN_STEP 0.002f
361 #endif
362 #if !defined BEZIER_MAX_STEP || defined __DOXYGEN__
363 #define BEZIER_MAX_STEP 0.1f
364 #endif
365 #if !defined BEZIER_SIGMA || defined __DOXYGEN__
366 #define BEZIER_SIGMA 0.1f
367 #endif
369 
370 
378 #if !defined DWELL_TIME_STEP || defined __DOXYGEN__
379 #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)
380 #endif
381 
391 #if !defined SEGMENT_BUFFER_SIZE || defined __DOXYGEN__
392 #define SEGMENT_BUFFER_SIZE 10 // Uncomment to override default in stepper.h.
393 #endif
394 
400 #if !defined SET_CHECK_MODE_PROBE_TO_START || defined __DOXYGEN__
401 #define SET_CHECK_MODE_PROBE_TO_START Off // Default disabled. Set to \ref On or 1 to enable.
402 #endif
403 
415 #if !defined HARD_LIMIT_FORCE_STATE_CHECK || defined __DOXYGEN__
416 #define HARD_LIMIT_FORCE_STATE_CHECK Off // Default disabled. Set to \ref On or 1 to enable.
417 #endif
418 
430 #if !defined HOMING_AXIS_SEARCH_SCALAR || defined __DOXYGEN__
431 #define HOMING_AXIS_SEARCH_SCALAR 1.5f // Must be > 1 to ensure limit switch will be engaged.
432 #endif
433 #if !defined HOMING_AXIS_LOCATE_SCALAR || defined __DOXYGEN__
434 #define HOMING_AXIS_LOCATE_SCALAR 10.0f// Must be > 1 to ensure limit switch is cleared.
435 #endif
437 
445 #if !defined ENABLE_RESTORE_NVS_WIPE_ALL || defined __DOXYGEN__
446 #define ENABLE_RESTORE_NVS_WIPE_ALL On
447 #endif
448 #if !defined ENABLE_RESTORE_NVS_DEFAULT_SETTINGS || defined __DOXYGEN__
449 #define ENABLE_RESTORE_NVS_DEFAULT_SETTINGS On
450 #endif
451 #if !defined ENABLE_RESTORE_NVS_CLEAR_PARAMETERS || defined __DOXYGEN__
452 #define ENABLE_RESTORE_NVS_CLEAR_PARAMETERS On
453 #endif
454 #if !defined ENABLE_RESTORE_NVS_DRIVER_PARAMETERS || defined __DOXYGEN__
455 #define ENABLE_RESTORE_NVS_DRIVER_PARAMETERS On
456 #endif
458 
469 #if !defined SETTINGS_RESTORE_DEFAULTS || defined __DOXYGEN__
470 #define SETTINGS_RESTORE_DEFAULTS On
471 #endif
472 #if !defined SETTINGS_RESTORE_PARAMETERS || defined __DOXYGEN__
473 #define SETTINGS_RESTORE_PARAMETERS On
474 #endif
475 #if !defined SETTINGS_RESTORE_STARTUP_LINES || defined __DOXYGEN__
476 #define SETTINGS_RESTORE_STARTUP_LINES On
477 #endif
478 #if !defined SETTINGS_RESTORE_BUILD_INFO || defined __DOXYGEN__
479 #define SETTINGS_RESTORE_BUILD_INFO On
480 #endif
481 #if !defined SETTINGS_RESTORE_DRIVER_PARAMETERS || defined __DOXYGEN__
482 #define SETTINGS_RESTORE_DRIVER_PARAMETERS On
483 #endif
492 #if !defined DISABLE_BUILD_INFO_WRITE_COMMAND || defined __DOXYGEN__
493 #define DISABLE_BUILD_INFO_WRITE_COMMAND Off
494 #endif
496 
510 #if !defined SLEEP_DURATION || defined __DOXYGEN__
511 #define SLEEP_DURATION 5.0f // Number of minutes before sleep mode is entered.
512 #endif
513 
519 #if !defined NVSDATA_BUFFER_ENABLE || defined __DOXYGEN__
520 #define NVSDATA_BUFFER_ENABLE On // Default on, set to \ref off or 0 to disable.
521 #endif
522 
532 #if !defined TOOLSETTER_RADIUS || defined __DOXYGEN__
533 #define TOOLSETTER_RADIUS 5.0f
534 #endif
535 
536 #if !defined ENABLE_BACKLASH_COMPENSATION || defined __DOXYGEN__
537 #define ENABLE_BACKLASH_COMPENSATION Off
538 #endif
539 
540 #if COMPATIBILITY_LEVEL == 0 || defined __DOXYGEN__
545 #if !defined N_TOOLS || defined __DOXYGEN__
546 #define N_TOOLS 0
547 #endif
548 #endif
549 
556 #if !defined SPINDLE_SYNC_ENABLE || defined __DOXYGEN__
557 #define SPINDLE_SYNC_ENABLE Off
558 #endif
559 
566 #if !defined NGC_EXPRESSIONS_ENABLE || defined __DOXYGEN__
567 #define NGC_EXPRESSIONS_ENABLE Off
568 #endif
569 
574 #if !defined NGC_PARAMETERS_ENABLE || defined __DOXYGEN__
575 #define NGC_PARAMETERS_ENABLE On
576 #endif
577 
582 #if (NGC_EXPRESSIONS_ENABLE && !defined NGC_N_ASSIGN_PARAMETERS_PER_BLOCK) || defined __DOXYGEN__
583 #define NGC_N_ASSIGN_PARAMETERS_PER_BLOCK 10
584 #endif
585 
590 #if !defined LATHE_UVW_OPTION || defined __DOXYGEN__
591 #define LATHE_UVW_OPTION Off
592 #endif
593 
594 // Max number of entries in log for PID data reporting, to be used for tuning
595 //#define PID_LOG 1000 // Default disabled. Uncomment to enable.
596 
597 // End compile time only default configuration
598 
599 // ---------------------------------------------------------------------------------------
600 // SETTINGS DEFAULT VALUE OVERRIDES:
601 
602 // General settings (Group_General)
603 
613 
618 #if !defined DEFAULT_REPORT_MACHINE_POSITION || defined __DOXYGEN__
619 #define DEFAULT_REPORT_MACHINE_POSITION On // Default on. Set to \ref Off or 0 to disable.
620 #endif
621 
627 #if !defined DEFAULT_REPORT_BUFFER_STATE || defined __DOXYGEN__
628 #define DEFAULT_REPORT_BUFFER_STATE On // Default on. Set to \ref Off or 0 to disable.
629 #endif
630 
638 #if !defined DEFAULT_REPORT_LINE_NUMBERS || defined __DOXYGEN__
639 #define DEFAULT_REPORT_LINE_NUMBERS On // Default on. Set to \ref Off or 0 to disable.
640 #endif
641 
648 #if !defined DEFAULT_REPORT_CURRENT_FEED_SPEED || defined __DOXYGEN__
649 #define DEFAULT_REPORT_CURRENT_FEED_SPEED On // Default on. Set to \ref Off or 0 to disable.
650 #endif
651 
658 #if !defined DEFAULT_REPORT_PIN_STATE || defined __DOXYGEN__
659 #define DEFAULT_REPORT_PIN_STATE On // Default on. Set to \ref Off or 0 to disable.
660 #endif
661 
668 #if !defined DEFAULT_REPORT_WORK_COORD_OFFSET || defined __DOXYGEN__
669 #define DEFAULT_REPORT_WORK_COORD_OFFSET On // Default on. Set to \ref Off or 0 to disable.
670 #endif
671 
678 #if !defined DEFAULT_REPORT_OVERRIDES || defined __DOXYGEN__
679 #define DEFAULT_REPORT_OVERRIDES On // Default on. Set to \ref Off or 0 to disable.
680 #endif
681 
689 #if !defined DEFAULT_REPORT_PROBE_COORDINATES || defined __DOXYGEN__
690 #define DEFAULT_REPORT_PROBE_COORDINATES On // Default on. Set to \ref Off or 0 to disable.
691 #endif
692 
703 #if !defined DEFAULT_REPORT_SYNC_ON_WCO_CHANGE || defined __DOXYGEN__
704 #define DEFAULT_REPORT_SYNC_ON_WCO_CHANGE On
705 #endif
706 
714 #if !defined DEFAULT_REPORT_PARSER_STATE || defined __DOXYGEN__
715 #define DEFAULT_REPORT_PARSER_STATE Off // Default off. Set to \ref On or 1 to enable.
716 #endif
717 
728 #if !defined DEFAULT_REPORT_ALARM_SUBSTATE || defined __DOXYGEN__
729 #define DEFAULT_REPORT_ALARM_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
730 #endif
731 
741 #if !defined DEFAULT_REPORT_RUN_SUBSTATE || defined __DOXYGEN__
742 #define DEFAULT_REPORT_RUN_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
743 #endif
744 
751 #if !defined DEFAULT_REPORT_WHEN_HOMING || defined __DOXYGEN__
752 #define DEFAULT_REPORT_WHEN_HOMING Off // Default off. Set to \ref On or 1 to enable.
753 #endif
754 
760 #if !defined DEFAULT_REPORT_DISTANCE_TO_GO || defined __DOXYGEN__
761 #define DEFAULT_REPORT_DISTANCE_TO_GO Off // Default off. Set to \ref On or 1 to enable.
762 #endif
763 
765 
770 #if !defined DEFAULT_JUNCTION_DEVIATION || defined __DOXYGEN__
771 #define DEFAULT_JUNCTION_DEVIATION 0.01f // mm
772 #endif
774 
779 #if !defined DEFAULT_ARC_TOLERANCE || defined __DOXYGEN__
780 #define DEFAULT_ARC_TOLERANCE 0.002f // mm
781 #endif
783 
789 #if !defined DEFAULT_REPORT_INCHES || defined __DOXYGEN__
790 #define DEFAULT_REPORT_INCHES Off
791 #endif
793 
799 #if !defined DEFAULT_G73_RETRACT || defined __DOXYGEN__
800 #define DEFAULT_G73_RETRACT 0.1f // mm
801 #endif
803 
808 #if !defined DEFAULT_LASER_MODE || defined __DOXYGEN__
809 #define DEFAULT_LASER_MODE Off
810 #endif
811 #if !defined DEFAULT_LATHE_MODE || defined __DOXYGEN__
812 #define DEFAULT_LATHE_MODE Off
813 #endif
815 
825 #if !defined DEFAULT_LEGACY_RTCOMMANDS || defined __DOXYGEN__
826 #define DEFAULT_LEGACY_RTCOMMANDS On
827 #endif
829 
833 #if !defined DEFAULT_RESET_OVERRIDES || defined __DOXYGEN__
834 #define DEFAULT_RESET_OVERRIDES Off
835 #endif
837 
841 #if !defined DEFAULT_SLEEP_ENABLE || defined __DOXYGEN__
842 #define DEFAULT_SLEEP_ENABLE Off
843 #endif
845 
853 #if !defined DEFAULT_DISABLE_LASER_DURING_HOLD || defined __DOXYGEN__
854 #define DEFAULT_DISABLE_LASER_DURING_HOLD On
855 #endif
857 
863 #if !defined DEFAULT_RESTORE_AFTER_FEED_HOLD || defined __DOXYGEN__
864 #define DEFAULT_RESTORE_AFTER_FEED_HOLD On
865 #endif
867 
877 #if !defined DEFAULT_FORCE_INITIALIZATION_ALARM || defined __DOXYGEN__
878 #define DEFAULT_FORCE_INITIALIZATION_ALARM Off
879 #endif
881 
888 #if !defined DEFAULT_DISABLE_G92_PERSISTENCE || defined __DOXYGEN__
889 #if COMPATIBILITY_LEVEL <= 1
890 #define DEFAULT_DISABLE_G92_PERSISTENCE Off
891 #else
892 #define DEFAULT_DISABLE_G92_PERSISTENCE On
893 #endif
894 #endif
896 
905 #if !defined DEFAULT_PLANNER_BUFFER_BLOCKS || defined __DOXYGEN__
906 #define DEFAULT_PLANNER_BUFFER_BLOCKS 100
907 #endif
909 
919 #if !defined DEFAULT_HOMING_KEEP_STATUS_ON_RESET || defined __DOXYGEN__
920 #define DEFAULT_HOMING_KEEP_STATUS_ON_RESET Off // Default disabled. Set to \ref On or 1 to enable.
921 #endif
923 
930 #if !defined DEFAULT_KEEP_OFFSETS_ON_RESET || defined __DOXYGEN__
931 #define DEFAULT_KEEP_OFFSETS_ON_RESET Off
932 #endif
934 
941 #if !defined DEFAULT_KEEP_RAPIDS_OVR_ON_RESET || defined __DOXYGEN__
942 #define DEFAULT_KEEP_RAPIDS_OVR_ON_RESET Off
943 #endif
945 
952 #if !defined DEFAULT_KEEP_FEED_OVR_ON_RESET || defined __DOXYGEN__
953 #define DEFAULT_KEEP_FEED_OVR_ON_RESET Off
954 #endif
956 
957 
958 // Control signals settings (Group_ControlSignals)
959 
960 #ifndef __DOXYGEN__ // For now do not include in documentation
961 
967 #define SIGNALS_RESET_BIT (1<<0)
968 #define SIGNALS_FEEDHOLD_BIT (1<<1)
969 #define SIGNALS_CYCLESTART_BIT (1<<2)
970 #define SIGNALS_SAFETYDOOR_BIT (1<<3)
971 #define SIGNALS_BLOCKDELETE_BIT (1<<4)
972 #define SIGNALS_STOPDISABLE_BIT (1<<5)
973 #define SIGNALS_ESTOP_BIT (1<<6)
974 #define SIGNALS_PROBE_CONNECTED_BIT (1<<7)
975 #define SIGNALS_MOTOR_FAULT_BIT (1<<8)
976 #define SIGNALS_MOTOR_WARNING_BIT (1<<9)
977 #define SIGNALS_LIMITS_OVERRIDE_BIT (1<<10)
978 #define SIGNALS_SINGLE_BLOCK_BIT (1<<11)
979 #define SIGNALS_TLS_OVERTRAVEL_BIT (1<<12)
980 #define SIGNALS_PROBE_OVERTRAVEL (1<<13)
981 #define SIGNALS_PROBE_TRIGGERED_BIT (1<<14)
982 #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)
984 
985 #endif
986 
993 #if !defined DEFAULT_CONTROL_SIGNALS_INVERT_MASK || defined __DOXYGEN__
994 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
995 #endif
997 
1012 #if !defined DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK || defined __DOXYGEN__
1013 #define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
1014 #endif
1016 
1017 // Limits settings (Group_Limits)
1018 
1027 #if !defined DEFAULT_LIMIT_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1028 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1029 #endif
1031 
1039 #if !defined DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK || defined __DOXYGEN__
1040 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK 0 // Set to -1 or AXES_BITMASK to disable pullup for all axes
1041 #endif
1043 
1047 #if !defined DEFAULT_SOFT_LIMIT_ENABLE || defined __DOXYGEN__
1048 #define DEFAULT_SOFT_LIMIT_ENABLE Off
1049 #endif
1051 
1055 
1062 #if !defined DEFAULT_HARD_LIMIT_ENABLE || defined __DOXYGEN__
1063 #define DEFAULT_HARD_LIMIT_ENABLE Off
1064 #endif
1065 #if !defined DEFAULT_CHECK_LIMITS_AT_INIT || defined __DOXYGEN__
1066 #define DEFAULT_CHECK_LIMITS_AT_INIT Off
1067 #endif
1068 #if !defined DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY || defined __DOXYGEN__
1069 #define DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY Off
1070 #endif
1071 
1084 
1087 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT || defined __DOXYGEN__
1088 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0f // Float (percent)
1089 #endif
1091 
1095 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN || defined __DOXYGEN__
1096 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5f // Float (mm)
1097 #endif
1099 
1104 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX || defined __DOXYGEN__
1105 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0f // Float (mm)
1106 #endif
1108 
1109 // Coolant settings (Group_Coolant)
1110 
1116 #if !defined DEFAULT_INVERT_COOLANT_FLOOD_PIN || defined __DOXYGEN__
1117 #define DEFAULT_INVERT_COOLANT_FLOOD_PIN Off
1118 #endif
1119 #if !defined DEFAULT_INVERT_COOLANT_MIST_PIN || defined __DOXYGEN__
1120 #define DEFAULT_INVERT_COOLANT_MIST_PIN Off // NOTE: not supported by all drivers.
1121 #endif
1123 
1127 #if !defined DEFAULT_COOLANT_ON_DELAY || defined __DOXYGEN__
1128 #define DEFAULT_COOLANT_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1129 #endif
1131 
1132 // Spindle settings (Group_Spindle)
1133 
1137 #if !defined DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1138 #define DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED Off
1139 #endif
1140 #if !defined DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE || defined __DOXYGEN__
1141 #define DEFAULT_PWM_SPINDLE_DISABLE_LASER_MODE Off
1142 #endif
1143 #if !defined DEFAULT_PWM_SPINDLE_ENABLE_RAMP || defined __DOXYGEN__
1144 #define DEFAULT_PWM_SPINDLE_ENABLE_RAMP Off
1145 #endif
1146 #if !defined DEFAULT_PWM_SPINDLE_IGNORE_DELAYS || defined __DOXYGEN__
1147 #define DEFAULT_PWM_SPINDLE_IGNORE_DELAYS Off
1148 #endif
1150 
1155 #if !defined DEFAULT_INVERT_SPINDLE_ENABLE_PIN || defined __DOXYGEN__
1156 #define DEFAULT_INVERT_SPINDLE_ENABLE_PIN Off
1157 #endif
1158 #if !defined DEFAULT_INVERT_SPINDLE_CCW_PIN || defined __DOXYGEN__
1159 #define DEFAULT_INVERT_SPINDLE_CCW_PIN Off // NOTE: not supported by all drivers.
1160 #endif
1161 #if !defined DEFAULT_INVERT_SPINDLE_PWM_PIN || defined __DOXYGEN__
1162 #define DEFAULT_INVERT_SPINDLE_PWM_PIN Off // NOTE: not supported by all drivers.
1163 #endif
1165 
1169 #if !defined DEFAULT_SPINDLE_RPM_MAX || defined __DOXYGEN__
1170 #define DEFAULT_SPINDLE_RPM_MAX 1000.0f // rpm
1171 #endif
1173 
1177 #if !defined DEFAULT_SPINDLE_RPM_MIN || defined __DOXYGEN__
1178 #define DEFAULT_SPINDLE_RPM_MIN 0.0f // rpm
1179 #endif
1181 
1185 #if !defined DEFAULT_SPINDLE_PWM_FREQ || defined __DOXYGEN__
1186 #define DEFAULT_SPINDLE_PWM_FREQ 5000 // Hz
1187 #endif
1189 
1193 #if !defined DEFAULT_SPINDLE_PWM_OFF_VALUE || defined __DOXYGEN__
1194 #define DEFAULT_SPINDLE_PWM_OFF_VALUE 0.0f // Percent
1195 #endif
1197 
1210 #if !defined DEFAULT_SPINDLE_PWM_MIN_VALUE || defined __DOXYGEN__
1211 #define DEFAULT_SPINDLE_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1212 #endif
1214 
1218 #if !defined DEFAULT_SPINDLE_PWM_MAX_VALUE || defined __DOXYGEN__
1219 #define DEFAULT_SPINDLE_PWM_MAX_VALUE 100.0f // Percent
1220 #endif
1222 
1231 #if !defined DEFAULT_SPINDLE_PPR || defined __DOXYGEN__
1232 #define DEFAULT_SPINDLE_PPR 0 // Pulses per revolution.
1233 #endif
1235 
1239 #if !defined DEFAULT_SPINDLE_AT_SPEED_TOLERANCE || defined __DOXYGEN__
1240 #define DEFAULT_SPINDLE_AT_SPEED_TOLERANCE 0.0f // Percent - 0 means not checked
1241 #endif
1243 
1247 #if !defined DEFAULT_SPINDLE_ON_DELAY || defined __DOXYGEN__
1248 #define DEFAULT_SPINDLE_ON_DELAY 0 // milliseconds: 0 or 500 - 20000
1249 #endif
1251 
1255 #if !defined DEFAULT_SPINDLE || defined __DOXYGEN__
1256 #define DEFAULT_SPINDLE SPINDLE_PWM0 // Spindle number from spindle_control.h
1257 #endif
1259 
1263 #if !defined DEFAULT_SPINDLE_OFF_DELAY || defined __DOXYGEN__
1264 #define DEFAULT_SPINDLE_OFF_DELAY 0 // milliseconds: 0 or 500 - 20000
1265 #endif
1267 
1268 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1269 
1270 // $9 - Setting_SpindlePWMOptions
1271 // bit 0
1272 // always defaults to on
1273 // bit 1
1274 
1275 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1276 
1277 #ifndef DEFAULT_SPINDLE_P_GAIN
1278 #define DEFAULT_SPINDLE_P_GAIN 1.0f
1279 #endif
1280 #ifndef DEFAULT_SPINDLE_I_GAIN
1281 #define DEFAULT_SPINDLE_I_GAIN 0.01f
1282 #endif
1283 #ifndef DEFAULT_SPINDLE_D_GAIN
1284 #define DEFAULT_SPINDLE_D_GAIN 0.0f
1285 #endif
1286 #ifndef DEFAULT_SPINDLE_I_MAX
1287 #define DEFAULT_SPINDLE_I_MAX 10.0f
1288 #endif
1289 
1290 #if ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
1291 
1296 #if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
1297 #define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
1298 #endif
1299 #if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
1300 #define DEFAULT_RPM_LINE_A1 3.197101e-03f
1301 #endif
1302 #if !defined DEFAULT_RPM_LINE_B1 || defined __DOXYGEN__
1303 #define DEFAULT_RPM_LINE_B1 -3.526076e-1f
1304 #endif
1306 
1311 #if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
1312 #define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
1313 #endif
1314 #if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
1315 #define DEFAULT_RPM_LINE_A2 1.722950e-2f
1316 #endif
1317 #if !defined DEFAULT_RPM_LINE_B2 || defined __DOXYGEN__
1318 #define DEFAULT_RPM_LINE_B2 1.0f,
1319 #endif
1321 
1326 #if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
1327 #define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
1328 #endif
1329 #if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
1330 #define DEFAULT_RPM_LINE_A3 5.901518e-02f
1331 #endif
1332 #if !defined DEFAULT_RPM_LINE_B3 || defined __DOXYGEN__
1333 #define DEFAULT_RPM_LINE_B3 4.881851e+02f
1334 #endif
1336 
1341 #if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
1342 #define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
1343 #endif
1344 #if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
1345 #define DEFAULT_RPM_LINE_A4 1.203413e-01f
1346 #endif
1347 #if !defined DEFAULT_RPM_LINE_B4 || defined __DOXYGEN__
1348 #define DEFAULT_RPM_LINE_B4 1.151360e+03f
1349 #endif
1351 
1352 #endif // ENABLE_SPINDLE_LINEARIZATION
1353 
1354 // Settings for second PWM spindle
1355 
1359 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1360 #define DEFAULT_PWM_SPINDLE1_ENABLE_OFF_WITH_ZERO_SPEED Off
1361 #endif
1362 #if !defined DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE || defined __DOXYGEN__
1363 #define DEFAULT_PWM_SPINDLE1_DISABLE_LASER_MODE Off
1364 #endif
1365 #if !defined DEFAULT_PWM_SPINDLE1_ENABLE_RAMP || defined __DOXYGEN__
1366 #define DEFAULT_PWM_SPINDLE1_ENABLE_RAMP Off
1367 #endif
1368 #if !defined DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS || defined __DOXYGEN__
1369 #define DEFAULT_PWM_SPINDLE1_IGNORE_DELAYS Off
1370 #endif
1372 
1377 #if !defined DEFAULT_INVERT_SPINDLE1_ENABLE_PIN || defined __DOXYGEN__
1378 #define DEFAULT_INVERT_SPINDLE1_ENABLE_PIN Off
1379 #endif
1380 #if !defined DEFAULT_INVERT_SPINDLE1_CCW_PIN || defined __DOXYGEN__
1381 #define DEFAULT_INVERT_SPINDLE1_CCW_PIN Off // NOTE: not supported by all drivers.
1382 #endif
1383 #if !defined DEFAULT_INVERT_SPINDLE1_PWM_PIN || defined __DOXYGEN__
1384 #define DEFAULT_INVERT_SPINDLE1_PWM_PIN Off // NOTE: not supported by all drivers.
1385 #endif
1387 
1391 #if !defined DEFAULT_SPINDLE1_RPM_MAX || defined __DOXYGEN__
1392 #define DEFAULT_SPINDLE1_RPM_MAX 1000.0f // rpm
1393 #endif
1395 
1399 #if !defined DEFAULT_SPINDLE1_RPM_MIN || defined __DOXYGEN__
1400 #define DEFAULT_SPINDLE1_RPM_MIN 0.0f // rpm
1401 #endif
1403 
1407 #if !defined DEFAULT_SPINDLE1_PWM_FREQ || defined __DOXYGEN__
1408 #define DEFAULT_SPINDLE1_PWM_FREQ 5000 // Hz
1409 #endif
1411 
1415 #if !defined DEFAULT_SPINDLE1_PWM_OFF_VALUE || defined __DOXYGEN__
1416 #define DEFAULT_SPINDLE1_PWM_OFF_VALUE 0.0f // Percent
1417 #endif
1419 
1432 #if !defined DEFAULT_SPINDLE1_PWM_MIN_VALUE || defined __DOXYGEN__
1433 #define DEFAULT_SPINDLE1_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1434 #endif
1436 
1440 #if !defined DEFAULT_SPINDLE1_PWM_MAX_VALUE || defined __DOXYGEN__
1441 #define DEFAULT_SPINDLE1_PWM_MAX_VALUE 100.0f // Percent
1442 #endif
1444 
1445 
1446 // Tool change settings (Group_Toolchange)
1447 
1452 #if !defined DEFAULT_TOOLCHANGE_MODE || defined __DOXYGEN__
1453 #define DEFAULT_TOOLCHANGE_MODE 0
1454 #endif
1456 
1460 #if !defined DEFAULT_TOOLCHANGE_PROBING_DISTANCE || defined __DOXYGEN__
1461 #define DEFAULT_TOOLCHANGE_PROBING_DISTANCE 30 // max probing distance in mm for mode 3
1462 #endif
1464 
1468 #if !defined DEFAULT_TOOLCHANGE_FEED_RATE || defined __DOXYGEN__
1469 #define DEFAULT_TOOLCHANGE_FEED_RATE 25.0f // mm/min
1470 #endif
1472 
1477 #if !defined DEFAULT_TOOLCHANGE_SEEK_RATE || defined __DOXYGEN__
1478 #define DEFAULT_TOOLCHANGE_SEEK_RATE 200.0f // mm/min
1479 #endif
1481 
1485 #if !defined DEFAULT_TOOLCHANGE_PULLOFF_RATE || defined __DOXYGEN__
1486 #define DEFAULT_TOOLCHANGE_PULLOFF_RATE 200.0f // mm/min
1487 #endif
1489 
1493 #if !defined DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION || defined __DOXYGEN__
1494 #define DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION Off
1495 #endif
1496 #if !defined DEFAULT_TOOLCHANGE_AT_G30 || defined __DOXYGEN__
1497 #define DEFAULT_TOOLCHANGE_AT_G30 Off
1498 #endif
1499 #if !defined DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF || defined __DOXYGEN__
1500 #define DEFAULT_TOOLCHANGE_FAST_PROBE_PULLOFF Off
1501 #endif
1503 
1507 #if !defined DEFAULT_PERSIST_TOOL || defined __DOXYGEN__
1508 #define DEFAULT_PERSIST_TOOL Off
1509 #endif
1511 
1515 #if !defined DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 || defined __DOXYGEN__
1516 #define DEFAULT_MACRO_ATC_OPTION_EXECUTEM6T0 Off
1517 #endif
1518 #if !defined DEFAULT_MACRO_ATC_ERROR_NO_MACRO || defined __DOXYGEN__
1519 #define DEFAULT_MACRO_ATC_ERROR_NO_MACRO Off
1520 #endif
1521 #if !defined DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER || defined __DOXYGEN__
1522 #define DEFAULT_MACRO_ATC_RANDOM_TOOLCHANGER Off
1523 #endif
1525 
1526 // Homing settings (Group_Homing)
1527 
1533 
1537 #if !defined DEFAULT_HOMING_ENABLE || defined __DOXYGEN__
1538 #define DEFAULT_HOMING_ENABLE Off // Default disabled. Set to \ref On or 1 to enable.
1539 #endif
1540 
1548 #if !defined DEFAULT_HOMING_SINGLE_AXIS_COMMANDS || defined __DOXYGEN__
1549 #define DEFAULT_HOMING_SINGLE_AXIS_COMMANDS Off // Default disabled. Set to \ref On or 1 to enable.
1550 #endif
1551 
1559 #if !defined DEFAULT_HOMING_INIT_LOCK || defined __DOXYGEN__
1560 #define DEFAULT_HOMING_INIT_LOCK Off // Default disabled. Set to \ref On or 1 to enable.
1561 #endif
1562 
1570 #if !defined DEFAULT_HOMING_FORCE_SET_ORIGIN || defined __DOXYGEN__
1571 #define DEFAULT_HOMING_FORCE_SET_ORIGIN Off // Default disabled. Set to \ref On or 1 to enable.
1572 #endif
1573 
1584 #if !defined DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES || defined __DOXYGEN__
1585 #define DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES Off // Default disabled. Set to \ref On or 1 to enable.
1586 #endif
1588 
1595 #if !defined DEFAULT_HOMING_ALLOW_MANUAL || defined __DOXYGEN__
1596 #define DEFAULT_HOMING_ALLOW_MANUAL Off // Default disabled. Set to \ref On or 1 to enable.
1597 #endif
1598 
1605 #if !defined DEFAULT_HOMING_OVERRIDE_LOCKS || defined __DOXYGEN__
1606 #define DEFAULT_HOMING_OVERRIDE_LOCKS Off // Default disabled. Set to \ref On or 1 to enable.
1607 #endif
1608 
1614 #if !defined DEFAULT_HOMING_USE_LIMIT_SWITCHES || defined __DOXYGEN__
1615 #define DEFAULT_HOMING_USE_LIMIT_SWITCHES Off // Default disabled. Set to \ref On or 1 to enable.
1616 #endif
1618 
1624 #if !defined DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED || defined __DOXYGEN__
1625 #define DEFAULT_RUN_STARTUP_SCRIPTS_ONLY_ON_HOMED Off // Default disabled. Set to \ref On or 1 to enable.
1626 #endif
1628 
1634 #if !defined DEFAULT_HOMING_DIR_MASK || defined __DOXYGEN__
1635 #define DEFAULT_HOMING_DIR_MASK 0
1636 #endif
1638 
1642 #if !defined DEFAULT_HOMING_FEED_RATE || defined __DOXYGEN__
1643 #define DEFAULT_HOMING_FEED_RATE 25.0f // mm/min
1644 #endif
1646 
1650 #if !defined DEFAULT_HOMING_SEEK_RATE || defined __DOXYGEN__
1651 #define DEFAULT_HOMING_SEEK_RATE 500.0f // mm/min
1652 #endif
1654 
1658 #if !defined DEFAULT_HOMING_DEBOUNCE_DELAY || defined __DOXYGEN__
1659 #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
1660 #endif
1662 
1666 #if !defined DEFAULT_HOMING_PULLOFF || defined __DOXYGEN__
1667 #define DEFAULT_HOMING_PULLOFF 1.0f // mm
1668 #endif
1670 
1677 #if !defined DEFAULT_N_HOMING_LOCATE_CYCLE || defined __DOXYGEN__
1678 #define DEFAULT_N_HOMING_LOCATE_CYCLE 1 // Integer (1-127)
1679 #endif
1681 
1703 #if !defined DEFAULT_HOMING_CYCLE_0 || defined __DOXYGEN__
1704 #define DEFAULT_HOMING_CYCLE_0 (Z_AXIS_BIT) // REQUIRED: First move Z to clear workspace.
1705 #endif
1707 
1711 #if !defined DEFAULT_HOMING_CYCLE_1 || defined __DOXYGEN__
1712 #if COREXY
1713 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT) // OPTIONAL: Then move X.
1714 #else
1715 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT|Y_AXIS_BIT) // OPTIONAL: Then move X,Y at the same time.
1716 #endif
1717 #endif
1719 
1723 #if !defined DEFAULT_HOMING_CYCLE_2 || defined __DOXYGEN__
1724 #if COREXY
1725 #define DEFAULT_HOMING_CYCLE_2 (Y_AXIS_BIT) // OPTIONAL: Then move Y.
1726 #else
1727 #define DEFAULT_HOMING_CYCLE_2 0 // OPTIONAL: Uncomment and add axes mask to enable
1728 #endif
1729 #endif
1731 
1735 #if (N_AXIS > 3 && !defined DEFAULT_HOMING_CYCLE_3) || defined __DOXYGEN__
1736 #define DEFAULT_HOMING_CYCLE_3 0 // OPTIONAL: Uncomment and add axes mask to enable
1737 #endif
1739 
1744 #if (N_AXIS > 4 && !defined DEFAULT_HOMING_CYCLE_4) || defined __DOXYGEN__
1745 #define DEFAULT_HOMING_CYCLE_4 0 // OPTIONAL: Uncomment and add axes mask to enable
1746 #endif
1748 
1752 #if (N_AXIS > 5 && !defined DEFAULT_HOMING_CYCLE_5) || defined __DOXYGEN__
1753 #define DEFAULT_HOMING_CYCLE_5 0 // OPTIONAL: Uncomment and add axes mask to enable
1754 #endif
1756 
1765 #if !defined DEFAULT_HOME_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1766 #define DEFAULT_HOME_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1767 #endif
1769 
1770 
1771 // Probing settings (Group_Probing)
1772 
1776 #if !defined DEFAULT_PROBE_SIGNAL_INVERT || defined __DOXYGEN__
1777 #define DEFAULT_PROBE_SIGNAL_INVERT Off
1778 #endif
1779 #if !defined DEFAULT_TOOLSETTER_SIGNAL_INVERT || defined __DOXYGEN__
1780 #define DEFAULT_TOOLSETTER_SIGNAL_INVERT Off
1781 #endif
1783 
1787 #if !defined DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1788 #define DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP Off
1789 #endif
1790 #if !defined DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1791 #define DEFAULT_TOOLSETTER_SIGNAL_DISABLE_PULLUP Off
1792 #endif
1794 
1803 #if !defined DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES || defined __DOXYGEN__
1804 #define DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES Off
1805 #endif
1806 #if !defined DEFAULT_SOFT_LIMIT_PROBE_CYCLES || defined __DOXYGEN__
1807 #define DEFAULT_SOFT_LIMIT_PROBE_CYCLES Off
1808 #endif
1810 
1811 // Safety door/parking settings (Group_SafetyDoor)
1812 
1813 #ifdef DEFAULT_HOMING_ENABLE
1814 
1832 #if !defined DEFAULT_PARKING_ENABLE || defined __DOXYGEN__
1833 #define DEFAULT_PARKING_ENABLE Off // bit 0
1834 // Enables a special set of M-code commands that enables and disables the parking motion.
1835 // These are controlled by `M56`, `M56 P1`, or `M56 Px` to enable and `M56 P0` to disable.
1836 // The command is modal and will be set after a planner sync. Since it is g-code, it is
1837 // executed in sync with g-code commands. It is not a real-time command.
1838 // NOTE: PARKING_ENABLE is required. By default, M56 is active upon initialization. Use
1839 // DEACTIVATE_PARKING_UPON_INIT to set M56 P0 as the power-up default.
1840 #endif
1841 #if !defined DEFAULT_DEACTIVATE_PARKING_UPON_INIT || defined __DOXYGEN__
1842 #define DEFAULT_DEACTIVATE_PARKING_UPON_INIT Off // bit 1
1843 #endif
1844 #if !defined DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL || defined __DOXYGEN__
1845 #define DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL Off // bit 2
1846 #endif
1848 
1853 #if !defined DEFAULT_PARKING_AXIS || defined __DOXYGEN__
1854 #define DEFAULT_PARKING_AXIS Z_AXIS //
1855 #endif
1857 
1861 #if !defined DEFAULT_PARKING_PULLOUT_INCREMENT || defined __DOXYGEN__
1862 #define DEFAULT_PARKING_PULLOUT_INCREMENT 5.0f //
1863 #endif
1865 
1870 #if !defined DEFAULT_PARKING_PULLOUT_RATE || defined __DOXYGEN__
1871 #define DEFAULT_PARKING_PULLOUT_RATE 100.0f // mm/min.
1872 #endif
1874 
1879 #if !defined DEFAULT_PARKING_TARGET || defined __DOXYGEN__
1880 #define DEFAULT_PARKING_TARGET -5.0f // mm
1881 #endif
1883 
1888 #if !defined DEFAULT_PARKING_RATE || defined __DOXYGEN__
1889 #define DEFAULT_PARKING_RATE 500.0f // mm/min
1890 #endif
1892 
1896 
1901 #if !defined DEFAULT_DOOR_IGNORE_WHEN_IDLE || defined __DOXYGEN__
1902 #define DEFAULT_DOOR_IGNORE_WHEN_IDLE Off
1903 #endif
1908 #if !defined DEFAULT_DOOR_KEEP_COOLANT_ON || defined __DOXYGEN__
1909 #define DEFAULT_DOOR_KEEP_COOLANT_ON Off
1910 #endif
1912 
1918 #if !defined DEFAULT_SAFETY_DOOR_SPINDLE_DELAY || defined __DOXYGEN__
1919 #define DEFAULT_SAFETY_DOOR_SPINDLE_DELAY 4.0f // Float (seconds)
1920 #endif
1922 
1929 #if !defined DEFAULT_SAFETY_DOOR_COOLANT_DELAY || defined __DOXYGEN__
1930 #define DEFAULT_SAFETY_DOOR_COOLANT_DELAY 1.0f // Float (seconds)
1931 #endif
1933 
1934 #endif // DEFAULT_HOMING_ENABLE
1935 
1936 // Jogging settings (Group_Jogging)
1937 
1945 #if !defined DEFAULT_JOG_LIMIT_ENABLE || defined __DOXYGEN__
1946 #define DEFAULT_JOG_LIMIT_ENABLE Off
1947 #endif
1949 
1950 // Stepper settings (Group_Stepper)
1951 
1964 #if !defined DEFAULT_STEP_PULSE_MICROSECONDS || defined __DOXYGEN__
1965 #define DEFAULT_STEP_PULSE_MICROSECONDS 5.0f
1966 #endif
1968 
1977 #if !defined DEFAULT_STEPPER_IDLE_LOCK_TIME || defined __DOXYGEN__
1978 #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // milliseconds
1979 #endif
1981 
1987 #if !defined DEFAULT_STEP_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1988 #define DEFAULT_STEP_SIGNALS_INVERT_MASK 0
1989 #endif
1991 
1997 #if !defined DEFAULT_DIR_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1998 #define DEFAULT_DIR_SIGNALS_INVERT_MASK 0
1999 #endif
2001 
2014 #if !defined DEFAULT_ENABLE_SIGNALS_INVERT_MASK || defined __DOXYGEN__
2015 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2016 #endif
2018 
2024 #if !defined DEFAULT_GANGED_DIRECTION_INVERT_MASK || defined __DOXYGEN__
2025 #define DEFAULT_GANGED_DIRECTION_INVERT_MASK 0
2026 #endif
2028 
2032 #if !defined DEFAULT_STEP_PULSE_DELAY || defined __DOXYGEN__
2033 #define DEFAULT_STEP_PULSE_DELAY 0.0f
2034 #endif
2036 
2043 #if !defined DEFAULT_STEPPER_DEENERGIZE_MASK || defined __DOXYGEN__
2044 #define DEFAULT_STEPPER_DEENERGIZE_MASK 0
2045 #endif
2047 
2054 
2055 #define IS_ROTARY_LETTER(c) (c == 'A' || c == 'B' || c == 'C')
2056 
2057 #if !defined DEFAULT_AXIS_ROTATIONAL_MASK || defined __DOXYGEN__
2058 #if N_AXIS > 3 && IS_ROTARY_LETTER(AXIS3_LETTER)
2059 #define RA3 (1<<3)
2060 #else
2061 #define RA3 0
2062 #endif
2063 #if N_AXIS > 4 && IS_ROTARY_LETTER(AXIS4_LETTER)
2064 #define RA4 (1<<4)
2065 #else
2066 #define RA4 0
2067 #endif
2068 #if N_AXIS > 5 && IS_ROTARY_LETTER(AXIS5_LETTER)
2069 #define RA5 (1<<5)
2070 #else
2071 #define RA5 0
2072 #endif
2073 #if N_AXIS > 6 && IS_ROTARY_LETTER(AXIS6_LETTER)
2074 #define RA6 (1<<6)
2075 #else
2076 #define RA6 0
2077 #endif
2078 #if N_AXIS > 7 && IS_ROTARY_LETTER(AXIS7_LETTER)
2079 #define RA7 (1<<7)
2080 #else
2081 #define RA7 0
2082 #endif
2083 #define DEFAULT_AXIS_ROTATIONAL_MASK (RA3|RA4|RA5|RA6|RA7)
2084 #endif
2086 
2091 #if !defined DEFAULT_ROTARY_FIX_ENABLE || defined __DOXYGEN__
2092 #define DEFAULT_ROTARY_FIX_ENABLE Off
2093 #endif
2095 
2100 #if !defined DEFAULT_STEPPER_ENABLE_DELAY || defined __DOXYGEN__
2101 #define DEFAULT_STEPPER_ENABLE_DELAY 0
2102 #endif
2104 
2110 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE || defined __DOXYGEN__
2111 #define DEFAULT_MOTOR_WARNING_SIGNALS_ENABLE 0
2112 #endif
2114 
2120 #if !defined DEFAULT_MOTOR_WARNING_SIGNALS_INVERT || defined __DOXYGEN__
2121 #define DEFAULT_MOTOR_WARNING_SIGNALS_INVERT 0
2122 #endif
2124 
2130 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE || defined __DOXYGEN__
2131 #define DEFAULT_MOTOR_FAULT_SIGNALS_ENABLE 0
2132 #endif
2134 
2140 #if !defined DEFAULT_MOTOR_FAULT_SIGNALS_INVERT || defined __DOXYGEN__
2141 #define DEFAULT_MOTOR_FAULT_SIGNALS_INVERT 0
2142 #endif
2144 
2149 #if !defined DEFAULT_AUTOREPORT_INTERVAL || defined __DOXYGEN__
2150 #define DEFAULT_AUTOREPORT_INTERVAL 0
2151 #endif
2153 
2158 #if !defined DEFAULT_TIMEZONE_OFFSET || defined __DOXYGEN__
2159 #define DEFAULT_TIMEZONE_OFFSET 0.0f
2160 #endif
2162 
2168 #if !defined DEFAULT_NO_UNLOCK_AFTER_ESTOP || defined __DOXYGEN__
2169 #define DEFAULT_NO_UNLOCK_AFTER_ESTOP Off
2170 #endif
2172 
2177 #if !defined DEFAULT_RGB_STRIP0_LENGTH || defined __DOXYGEN__
2178 #define DEFAULT_RGB_STRIP0_LENGTH 0
2179 #endif
2181 
2186 #if !defined DEFAULT_RGB_STRIP1_LENGTH || defined __DOXYGEN__
2187 #define DEFAULT_RGB_STRIP1_LENGTH 0
2188 #endif
2190 
2198 #if !defined DEFAULT_AXIS_ROTARY_WRAP_MASK || defined __DOXYGEN__
2199 #define DEFAULT_AXIS_ROTARY_WRAP_MASK 0
2200 #endif
2202 
2207 #if !defined DEFAULT_MODBUS_STREAM_BAUD || defined __DOXYGEN__
2208 #define DEFAULT_MODBUS_STREAM_BAUD 3 // 0 = 2400, 1 = 4800, 2 = 9600, 3 = 19200, 4 = 38400, 5 = 115200
2209 #endif
2211 
2216 #if !defined DEFAULT_MODBUS_STREAM_DATA_BITS || defined __DOXYGEN__
2217 #define DEFAULT_MODBUS_STREAM_DATA_BITS 0 // 0 = 8, 1 = 7
2218 #endif
2221 #if !defined DEFAULT_MODBUS_STREAM_STOP_BITS || defined __DOXYGEN__
2222 #define DEFAULT_MODBUS_STREAM_STOP_BITS 0 // 0 = 1, 1 = 1.5, 2 = 2, 3 = 0.5
2223 #endif
2225 #if !defined DEFAULT_MODBUS_STREAM_PARITY || defined __DOXYGEN__
2226 #define DEFAULT_MODBUS_STREAM_PARITY 0 // 0 = None, 1 = Even, 2 = Odd
2227 #endif
2229 
2233 
2237 #if !defined DEFAULT_FS_SD_AUTOMOUNT || defined __DOXYGEN__
2238 #define DEFAULT_FS_SD_AUTOMOUNT Off // Default disabled. Set to \ref On or 1 to enable.
2239 #endif
2240 
2245 #if !defined DEFAULT_FS_LITTLEFS_HIDDEN || defined __DOXYGEN__
2246 #define DEFAULT_FS_LITTLEFS_HIDDEN Off // Default disabled. Set to \ref On or 1 to enable.
2247 #endif
2248 
2254 #if !defined DEFAULT_FS_HIERACHICAL_LISTING || defined __DOXYGEN__
2255 #define DEFAULT_FS_HIERACHICAL_LISTING Off // Default disabled. Set to \ref On or 1 to enable.
2256 #endif
2258 
2259 // Axis settings (Group_XAxis - Group_VAxis)
2260 
2265 #if !defined DEFAULT_X_STEPS_PER_MM || defined __DOXYGEN__
2266 #define DEFAULT_X_STEPS_PER_MM 250.0f
2267 #endif
2268 #if !defined DEFAULT_Y_STEPS_PER_MM || defined __DOXYGEN__
2269 #define DEFAULT_Y_STEPS_PER_MM 250.0f
2270 #endif
2271 #if !defined DEFAULT_Z_STEPS_PER_MM || defined __DOXYGEN__
2272 #define DEFAULT_Z_STEPS_PER_MM 250.0f
2273 #endif
2274 #if (defined A_AXIS && !defined DEFAULT_A_STEPS_PER_MM) || defined __DOXYGEN__
2275 #define DEFAULT_A_STEPS_PER_MM 250.0f
2276 #endif
2277 #if (defined B_AXIS && !defined DEFAULT_B_STEPS_PER_MM) || defined __DOXYGEN__
2278 #define DEFAULT_B_STEPS_PER_MM 250.0f
2279 #endif
2280 #if (defined C_AXIS && !defined DEFAULT_C_STEPS_PER_MM) || defined __DOXYGEN__
2281 #define DEFAULT_C_STEPS_PER_MM 250.0f
2282 #endif
2283 #if (defined U_AXIS && !defined DEFAULT_U_STEPS_PER_MM) || defined __DOXYGEN__
2284 #define DEFAULT_U_STEPS_PER_MM 250.0f
2285 #endif
2286 #if (defined V_AXIS && !defined DEFAULT_V_STEPS_PER_MM) || defined __DOXYGEN__
2287 #define DEFAULT_V_STEPS_PER_MM 250.0f
2288 #endif
2289 #if (defined W_AXIS && !defined DEFAULT_W_STEPS_PER_MM) || defined __DOXYGEN__
2290 #define DEFAULT_W_STEPS_PER_MM 250.0f
2291 #endif
2293 
2298 #if !defined DEFAULT_X_MAX_RATE || defined __DOXYGEN__
2299 #define DEFAULT_X_MAX_RATE 500.0f // mm/min
2300 #endif
2301 #if !defined DEFAULT_Y_MAX_RATE || defined __DOXYGEN__
2302 #define DEFAULT_Y_MAX_RATE 500.0f // mm/min
2303 #endif
2304 #if !defined DEFAULT_Z_MAX_RATE || defined __DOXYGEN__
2305 #define DEFAULT_Z_MAX_RATE 500.0f // mm/min
2306 #endif
2307 #if (defined A_AXIS && !defined DEFAULT_A_MAX_RATE) || defined __DOXYGEN__
2308 #define DEFAULT_A_MAX_RATE 500.0f // mm/min
2309 #endif
2310 #if (defined B_AXIS && !defined DEFAULT_B_MAX_RATE) || defined __DOXYGEN__
2311 #define DEFAULT_B_MAX_RATE 500.0f // mm/min
2312 #endif
2313 #if (defined C_AXIS && !defined DEFAULT_C_MAX_RATE) || defined __DOXYGEN__
2314 #define DEFAULT_C_MAX_RATE 500.0f // mm/min
2315 #endif
2316 #if (defined U_AXIS && !defined DEFAULT_U_MAX_RATE) || defined __DOXYGEN__
2317 #define DEFAULT_U_MAX_RATE 500.0f // mm/min
2318 #endif
2319 #if (defined V_AXIS && !defined DEFAULT_V_MAX_RATE) || defined __DOXYGEN__
2320 #define DEFAULT_V_MAX_RATE 500.0f // mm/min
2321 #endif
2322 #if (defined W_AXIS && !defined DEFAULT_W_MAX_RATE) || defined __DOXYGEN__
2323 #define DEFAULT_W_MAX_RATE 500.0f // mm/min
2324 #endif
2326 
2330 #if !defined DEFAULT_X_ACCELERATION || defined __DOXYGEN__
2331 #define DEFAULT_X_ACCELERATION 10.0f // mm/sec^2
2332 #endif
2333 #if !defined DEFAULT_Y_ACCELERATION || defined __DOXYGEN__
2334 #define DEFAULT_Y_ACCELERATION 10.0f // mm/sec^2
2335 #endif
2336 #if !defined DEFAULT_Z_ACCELERATION || defined __DOXYGEN__
2337 #define DEFAULT_Z_ACCELERATION 10.0f // mm/sec^2
2338 #endif
2339 #if (defined A_AXIS && !defined DEFAULT_A_ACCELERATION) || defined __DOXYGEN__
2340 #define DEFAULT_A_ACCELERATION 10.0f // mm/sec^2
2341 #endif
2342 #if (defined B_AXIS && !defined DEFAULT_B_ACCELERATION) || defined __DOXYGEN__
2343 #define DEFAULT_B_ACCELERATION 10.0f // mm/sec^2
2344 #endif
2345 #if (defined C_AXIS && !defined DEFAULT_C_ACCELERATION) || defined __DOXYGEN__
2346 #define DEFAULT_C_ACCELERATION 10.0f // mm/sec^2
2347 #endif
2348 #if (defined U_AXIS && !defined DEFAULT_U_ACCELERATION) || defined __DOXYGEN__
2349 #define DEFAULT_U_ACCELERATION 10.0f // mm/sec^2
2350 #endif
2351 #if (defined V_AXIS && !defined DEFAULT_V_ACCELERATION) || defined __DOXYGEN__
2352 #define DEFAULT_V_ACCELERATION 10.0f // mm/sec^2
2353 #endif
2354 #if (defined W_AXIS && !defined DEFAULT_W_ACCELERATION) || defined __DOXYGEN__
2355 #define DEFAULT_W_ACCELERATION 10.0f // mm/sec^2
2356 #endif
2358 
2362 #if !defined DEFAULT_X_JERK|| defined __DOXYGEN__
2363 #define DEFAULT_X_JERK (DEFAULT_X_ACCELERATION * 10.0f) // mm/sec^3
2364 #endif
2365 #if !defined DEFAULT_Y_JERK|| defined __DOXYGEN__
2366 #define DEFAULT_Y_JERK (DEFAULT_Y_ACCELERATION * 10.0f) // mm/sec^3
2367 #endif
2368 #if !defined DEFAULT_Z_JERK || defined __DOXYGEN__
2369 #define DEFAULT_Z_JERK (DEFAULT_Z_ACCELERATION * 10.0f) // mm/sec^3
2370 #endif
2371 #if (defined A_AXIS && !defined DEFAULT_A_JERK) || defined __DOXYGEN__
2372 #define DEFAULT_A_JERK (DEFAULT_A_ACCELERATION * 10.0f) // mm/sec^3
2373 #endif
2374 #if (defined B_AXIS && !defined DEFAULT_B_JERK) || defined __DOXYGEN__
2375 #define DEFAULT_B_JERK (DEFAULT_B_ACCELERATION * 10.0f) // mm/sec^3
2376 #endif
2377 #if (defined C_AXIS && !defined DEFAULT_C_JERK) || defined __DOXYGEN__
2378 #define DEFAULT_C_JERK (DEFAULT_C_ACCELERATION * 10.0f) // mm/sec^3
2379 #endif
2380 #if (defined U_AXIS && !defined DEFAULT_U_JERK) || defined __DOXYGEN__
2381 #define DEFAULT_U_JERK (DEFAULT_U_ACCELERATION * 10.0f) // mm/sec^3
2382 #endif
2383 #if (defined V_AXIS && !defined DEFAULT_V_JERK) || defined __DOXYGEN__
2384 #define DEFAULT_V_JERK (DEFAULT_V_ACCELERATION * 10.0f) // mm/sec^3
2385 #endif
2386 #if (defined W_AXIS && !defined DEFAULT_W_JERK) || defined __DOXYGEN__
2387 #define DEFAULT_W_JERK (DEFAULT_W_ACCELERATION * 10.0f) // mm/sec^3
2388 #endif
2390 
2395 #if !defined DEFAULT_X_MAX_TRAVEL || defined __DOXYGEN__
2396 #define DEFAULT_X_MAX_TRAVEL 200.0f // mm
2397 #endif
2398 #if !defined DEFAULT_Y_MAX_TRAVEL || defined __DOXYGEN__
2399 #define DEFAULT_Y_MAX_TRAVEL 200.0f // mm
2400 #endif
2401 #if !defined DEFAULT_Z_MAX_TRAVEL || defined __DOXYGEN__
2402 #define DEFAULT_Z_MAX_TRAVEL 200.0f // mm
2403 #endif
2404 #if (defined A_AXIS && !defined DEFAULT_A_MAX_TRAVEL) || defined __DOXYGEN__
2405 #define DEFAULT_A_MAX_TRAVEL 200.0f // mm
2406 #endif
2407 #if (defined B_AXIS && !defined DEFAULT_B_MAX_TRAVEL) || defined __DOXYGEN__
2408 #define DEFAULT_B_MAX_TRAVEL 200.0f // mm
2409 #endif
2410 #if (defined C_AXIS && !defined DEFAULT_C_MAX_TRAVEL) || defined __DOXYGEN__
2411 #define DEFAULT_C_MAX_TRAVEL 200.0f // mm
2412 #endif
2413 #if (defined U_AXIS && !defined DEFAULT_U_MAX_TRAVEL) || defined __DOXYGEN__
2414 #define DEFAULT_U_MAX_TRAVEL 200.0f // mm
2415 #endif
2416 #if (defined V_AXIS && !defined DEFAULT_V_MAX_TRAVEL) || defined __DOXYGEN__
2417 #define DEFAULT_V_MAX_TRAVEL 200.0f // mm
2418 #endif
2419 #if (defined W_AXIS && !defined DEFAULT_W_MAX_TRAVEL) || defined __DOXYGEN__
2420 #define DEFAULT_W_MAX_TRAVEL 200.0f // mm
2421 #endif
2423 
2428 #if !defined DEFAULT_X_CURRENT || defined __DOXYGEN__
2429 #define DEFAULT_X_CURRENT 500.0f // mA RMS
2430 #endif
2431 #if !defined DEFAULT_Y_CURRENT || defined __DOXYGEN__
2432 #define DEFAULT_Y_CURRENT 500.0f // mA RMS
2433 #endif
2434 #if !defined DEFAULT_Z_CURRENT || defined __DOXYGEN__
2435 #define DEFAULT_Z_CURRENT 500.0f // mA RMS
2436 #endif
2437 #if (defined A_AXIS && !defined DEFAULT_A_CURRENT) || defined __DOXYGEN__
2438 #define DEFAULT_A_CURRENT 500.0f // mA RMS
2439 #endif
2440 #if (defined B_AXIS && !defined DEFAULT_B_CURRENT) || defined __DOXYGEN__
2441 #define DEFAULT_B_CURRENT 500.0f // mA RMS
2442 #endif
2443 #if (defined C_AXIS && !defined DEFAULT_C_CURRENT) || defined __DOXYGEN__
2444 #define DEFAULT_C_CURRENT 500.0f // mA RMS
2445 #endif
2446 #if (defined U_AXIS && !defined DEFAULT_U_CURRENT) || defined __DOXYGEN__
2447 #define DEFAULT_U_CURRENT 500.0f // mA RMS
2448 #endif
2449 #if (defined V_AXIS && !defined DEFAULT_V_CURRENT) || defined __DOXYGEN__
2450 #define DEFAULT_V_CURRENT 500.0f // mA RMS
2451 #endif
2452 #if (defined W_AXIS && !defined DEFAULT_W_CURRENT) || defined __DOXYGEN__
2453 #define DEFAULT_W_CURRENT 500.0f // mA RMS
2454 #endif
2456 
2457 // Sanity checks
2458 
2459 // N_TOOLS may have been defined on the compiler command line.
2460 #if !defined(N_TOOLS)
2461 #define N_TOOLS 0
2462 #elif N_TOOLS > 32
2463 #undef N_TOOLS
2464 #define N_TOOLS 32
2465 #endif
2466 
2467 #if N_SYS_SPINDLE > N_SPINDLE
2468 #undef N_SYS_SPINDLE
2469 #define N_SYS_SPINDLE N_SPINDLE
2470 #endif
2471 
2472 #if N_SYS_SPINDLE < 1
2473 #undef N_SYS_SPINDLE
2474 #define N_SYS_SPINDLE 1
2475 #endif
2476 
2477 #if N_SYS_SPINDLE > 8
2478 #undef N_SYS_SPINDLE
2479 #define N_SYS_SPINDLE 8
2480 #endif
2481 
2482 #if NGC_EXPRESSIONS_ENABLE && !NGC_PARAMETERS_ENABLE
2483 #undef NGC_PARAMETERS_ENABLE
2484 #define NGC_PARAMETERS_ENABLE On
2485 #endif
2486 
2487 #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT)
2488  #error "WCO busy refresh is less than idle refresh."
2489 #endif
2490 #if (REPORT_OVERRIDE_REFRESH_BUSY_COUNT < REPORT_OVERRIDE_REFRESH_IDLE_COUNT)
2491  #error "Override busy refresh is less than idle refresh."
2492 #endif
2493 #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2)
2494  #error "WCO refresh must be greater than one."
2495 #endif
2496 #if (REPORT_OVERRIDE_REFRESH_IDLE_COUNT < 1)
2497  #error "Override refresh must be greater than zero."
2498 #endif
2499 
2500 #if DEFAULT_LASER_MODE && DEFAULT_LATHE_MODE
2501 #error "Cannot enable laser and lathe mode at the same time!"
2502 #endif
2503 
2504 #if LATHE_UVW_OPTION && AXIS_REMAP_ABC2UVW
2505 #warning "Cannot enable lathe UVW option when N_AXIS > 6 or ABC words are remapped!"
2506 #undef LATHE_UVW_OPTION
2507 #define LATHE_UVW_OPTION Off
2508 #endif
2509 
2510 #if DEFAULT_CONTROL_SIGNALS_INVERT_MASK < 0
2511 #undef DEFAULT_CONTROL_SIGNALS_INVERT_MASK
2512 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK SIGNALS_BITMASK
2513 #endif
2514 
2515 #if DEFAULT_LIMIT_SIGNALS_INVERT_MASK < 0
2516 #undef DEFAULT_LIMIT_SIGNALS_INVERT_MASK
2517 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK AXES_BITMASK
2518 #endif
2519 
2520 #if DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK < 0
2521 #undef DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK
2522 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK AXES_BITMASK
2523 #endif
2524 
2525 #if DEFAULT_STEP_SIGNALS_INVERT_MASK < 0
2526 #undef DEFAULT_STEP_SIGNALS_INVERT_MASK
2527 #define DEFAULT_STEP_SIGNALS_INVERT_MASK AXES_BITMASK
2528 #endif
2529 
2530 #if DEFAULT_ENABLE_SIGNALS_INVERT_MASK < 0
2531 #undef DEFAULT_ENABLE_SIGNALS_INVERT_MASK
2532 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2533 #endif
2534 
2535 #if DEFAULT_SPINDLE_ON_DELAY
2536 #if DEFAULT_SPINDLE_ON_DELAY < 500
2537 #undef DEFAULT_SPINDLE_ON_DELAY
2538 #define DEFAULT_SPINDLE_ON_DELAY 500
2539 #elif DEFAULT_SPINDLE_ON_DELAY > 20000
2540 #undef DEFAULT_SPINDLE_ON_DELAY
2541 #define DEFAULT_SPINDLE_ON_DELAY 20000
2542 #endif
2543 #endif
2544 
2545 #if DEFAULT_COOLANT_ON_DELAY
2546 #if DEFAULT_COOLANT_ON_DELAY < 500
2547 #undef DEFAULT_COOLANT_ON_DELAY
2548 #define DEFAULT_COOLANT_ON_DELAY 500
2549 #elif DEFAULT_COOLANT_ON_DELAY > 20000
2550 #undef DEFAULT_COOLANT_ON_DELAY
2551 #define DEFAULT_COOLANT_ON_DELAY 20000
2552 #endif
2553 #endif
2554 
2555 #if DEFAULT_PARKING_ENABLE > 0
2556  #if DEFAULT_HOMING_FORCE_SET_ORIGIN > 0
2557  #error "DEFAULT_HOMING_FORCE_SET_ORIGIN is not supported with DEFAULT_PARKING_ENABLE at this time."
2558  #endif
2559 #endif
2560 
2561 #if DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL > 0
2562  #if DEFAULT_PARKING_ENABLE < 1
2563  #error "DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with DEFAULT_PARKING_ENABLE."
2564  #endif
2565 #endif
2566 
2621 #endif // _GRBL_CONFIG_H_