grblHAL core  20241107
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-2024 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 BUILD_INFO || defined __DOXYGEN__
72 #define BUILD_INFO ""
73 #endif
74 
89 #if !defined COMPATIBILITY_LEVEL || defined __DOXYGEN__
90 #define COMPATIBILITY_LEVEL 0
91 #endif
92 
101 #if !defined ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
102 #define ENABLE_SPINDLE_LINEARIZATION 0 // Set to 1 to enable spindle RPM linearization. Requires compatible driver if enabled.
103 #endif
104 
108 #if !defined SPINDLE_NPWM_PIECES || defined __DOXYGEN__
109 #define SPINDLE_NPWM_PIECES 4 // Number of pieces for spindle RPM linearization, max 4.
110 #endif
111 
112 #include "nuts_bolts.h"
113 
114 //#define KINEMATICS_API // Uncomment to add HAL entry points for custom kinematics
115 
120 #if !defined MASLOW_ROUTER || defined __DOXYGEN__
121 // Enable Maslow router kinematics.
122 // Experimental - testing required and homing needs to be worked out.
123 #define MASLOW_ROUTER Off
124 #endif
125 
130 #if !defined WALL_PLOTTER || defined __DOXYGEN__
131 #define WALL_PLOTTER Off
132 #endif
133 
138 #if !defined DELTA_ROBOT || defined __DOXYGEN__
139 #define DELTA_ROBOT Off
140 #endif
141 
142 // Reduce minimum feedrate for delta robots
143 #if DELTA_ROBOT && !defined MINIMUM_FEED_RATE
144 #define MINIMUM_FEED_RATE 0.1f // (radians/min)
145 #endif
146 
151 #if !defined POLAR_ROBOT || defined __DOXYGEN__
152 #define POLAR_ROBOT Off
153 #endif
154 
155 
165 #if !defined COREXY || defined __DOXYGEN__
166 #define COREXY Off
167 #endif
168 
176 #if !defined CHECK_MODE_DELAY || defined __DOXYGEN__
177 #define CHECK_MODE_DELAY 0 // ms
178 #endif
179 
185 #if !defined DEBOUNCE_DELAY || defined __DOXYGEN__
186 #define DEBOUNCE_DELAY 40 // ms
187 #endif
188 
189 // ---------------------------------------------------------------------------------------
190 // ADVANCED CONFIGURATION OPTIONS:
191 
192 #define ENABLE_PATH_BLENDING Off // Do NOT enable unless working on adding this feature!
193 
194 // Enables code for debugging purposes. Not for general use and always in constant flux.
195 //#define DEBUG // Uncomment to enable. Default disabled.
196 #define DEBUGOUT -1 // Uncomment to claim serial port with given instance number and add HAL entry point for debug output.
197 
210 #if !defined REPORT_OVERRIDE_REFRESH_BUSY_COUNT || defined __DOXYGEN__
211 #define REPORT_OVERRIDE_REFRESH_BUSY_COUNT 20 // (1-255)
212 #endif
213 #if !defined REPORT_OVERRIDE_REFRESH_IDLE_COUNT || defined __DOXYGEN__
214 #define REPORT_OVERRIDE_REFRESH_IDLE_COUNT 10 // (1-255) Must be less than or equal to the busy count
215 #endif
216 #if !defined REPORT_WCO_REFRESH_BUSY_COUNT || defined __DOXYGEN__
217 #define REPORT_WCO_REFRESH_BUSY_COUNT 30 // (2-255)
218 #endif
219 #if !defined REPORT_WCO_REFRESH_IDLE_COUNT || defined __DOXYGEN__
220 #define REPORT_WCO_REFRESH_IDLE_COUNT 10 // (2-255) Must be less than or equal to the busy count
221 #endif
223 
234 #if !defined ACCELERATION_TICKS_PER_SECOND || defined __DOXYGEN__
235 #define ACCELERATION_TICKS_PER_SECOND 100
236 #endif
237 
238 // Sets the maximum step rate allowed to be written as a grblHAL setting. This option enables an error
239 // check in the settings module to prevent settings values that will exceed this limitation. The maximum
240 // step rate is strictly limited by the CPU speed and will change if something other than an AVR running
241 // at 16MHz is used.
242 // NOTE: For now disabled, will enable if flash space permits.
243 //#define MAX_STEP_RATE_HZ 30000 // Hz
244 
255 #if !defined REPORT_ECHO_LINE_RECEIVED || defined __DOXYGEN__
256 #define REPORT_ECHO_LINE_RECEIVED Off // Default disabled. Set to \ref On or 1 to enable.
257 #endif
258 
265 #if !defined TOOL_LENGTH_OFFSET_AXIS || defined __DOXYGEN__
266 #define TOOL_LENGTH_OFFSET_AXIS -1 // Default is all axes.
267 #endif
268 
278 #if !defined MINIMUM_JUNCTION_SPEED || defined __DOXYGEN__
279 #define MINIMUM_JUNCTION_SPEED 0.0f // (mm/min)
280 #endif
281 
289 #if !defined MINIMUM_FEED_RATE || defined __DOXYGEN__
290 #define MINIMUM_FEED_RATE 1.0f // (mm/min)
291 #endif
292 
300 #if !defined N_ARC_CORRECTION || defined __DOXYGEN__
301 #define N_ARC_CORRECTION 12 // Integer (1-255)
302 #endif
303 
315 #if !defined ARC_ANGULAR_TRAVEL_EPSILON || defined __DOXYGEN__
316 #define ARC_ANGULAR_TRAVEL_EPSILON 5E-7f // Float (radians)
317 #endif
318 
323 #if !defined BEZIER_MIN_STEP || defined __DOXYGEN__
324 #define BEZIER_MIN_STEP 0.002f
325 #endif
326 #if !defined BEZIER_MAX_STEP || defined __DOXYGEN__
327 #define BEZIER_MAX_STEP 0.1f
328 #endif
329 #if !defined BEZIER_SIGMA || defined __DOXYGEN__
330 #define BEZIER_SIGMA 0.1f
331 #endif
333 
334 
342 #if !defined DWELL_TIME_STEP || defined __DOXYGEN__
343 #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds)
344 #endif
345 
355 #if !defined SEGMENT_BUFFER_SIZE || defined __DOXYGEN__
356 #define SEGMENT_BUFFER_SIZE 10 // Uncomment to override default in stepper.h.
357 #endif
358 
364 #if !defined SET_CHECK_MODE_PROBE_TO_START || defined __DOXYGEN__
365 #define SET_CHECK_MODE_PROBE_TO_START Off // Default disabled. Set to \ref On or 1 to enable.
366 #endif
367 
379 #if !defined HARD_LIMIT_FORCE_STATE_CHECK || defined __DOXYGEN__
380 #define HARD_LIMIT_FORCE_STATE_CHECK Off // Default disabled. Set to \ref On or 1 to enable.
381 #endif
382 
394 #if !defined HOMING_AXIS_SEARCH_SCALAR || defined __DOXYGEN__
395 #define HOMING_AXIS_SEARCH_SCALAR 1.5f // Must be > 1 to ensure limit switch will be engaged.
396 #endif
397 #if !defined HOMING_AXIS_LOCATE_SCALAR || defined __DOXYGEN__
398 #define HOMING_AXIS_LOCATE_SCALAR 10.0f// Must be > 1 to ensure limit switch is cleared.
399 #endif
401 
409 #if !defined ENABLE_RESTORE_NVS_WIPE_ALL || defined __DOXYGEN__
410 #define ENABLE_RESTORE_NVS_WIPE_ALL On
411 #endif
412 #if !defined ENABLE_RESTORE_NVS_DEFAULT_SETTINGS || defined __DOXYGEN__
413 #define ENABLE_RESTORE_NVS_DEFAULT_SETTINGS On
414 #endif
415 #if !defined ENABLE_RESTORE_NVS_CLEAR_PARAMETERS || defined __DOXYGEN__
416 #define ENABLE_RESTORE_NVS_CLEAR_PARAMETERS On
417 #endif
418 #if !defined ENABLE_RESTORE_NVS_DRIVER_PARAMETERS || defined __DOXYGEN__
419 #define ENABLE_RESTORE_NVS_DRIVER_PARAMETERS On
420 #endif
422 
433 #if !defined SETTINGS_RESTORE_DEFAULTS || defined __DOXYGEN__
434 #define SETTINGS_RESTORE_DEFAULTS On
435 #endif
436 #if !defined SETTINGS_RESTORE_PARAMETERS || defined __DOXYGEN__
437 #define SETTINGS_RESTORE_PARAMETERS On
438 #endif
439 #if !defined SETTINGS_RESTORE_STARTUP_LINES || defined __DOXYGEN__
440 #define SETTINGS_RESTORE_STARTUP_LINES On
441 #endif
442 #if !defined SETTINGS_RESTORE_BUILD_INFO || defined __DOXYGEN__
443 #define SETTINGS_RESTORE_BUILD_INFO On
444 #endif
445 #if !defined SETTINGS_RESTORE_DRIVER_PARAMETERS || defined __DOXYGEN__
446 #define SETTINGS_RESTORE_DRIVER_PARAMETERS On
447 #endif
456 #if !defined DISABLE_BUILD_INFO_WRITE_COMMAND || defined __DOXYGEN__
457 #define DISABLE_BUILD_INFO_WRITE_COMMAND Off
458 #endif
460 
474 #if !defined SLEEP_DURATION || defined __DOXYGEN__
475 #define SLEEP_DURATION 5.0f // Number of minutes before sleep mode is entered.
476 #endif
477 
483 #if !defined NVSDATA_BUFFER_ENABLE || defined __DOXYGEN__
484 #define NVSDATA_BUFFER_ENABLE On // Default on, set to \ref off or 0 to disable.
485 #endif
486 
496 #if !defined TOOLSETTER_RADIUS || defined __DOXYGEN__
497 #define TOOLSETTER_RADIUS 5.0f
498 #endif
499 
500 #if !defined ENABLE_BACKLASH_COMPENSATION || defined __DOXYGEN__
501 #define ENABLE_BACKLASH_COMPENSATION Off
502 #endif
503 
504 #if COMPATIBILITY_LEVEL == 0 || defined __DOXYGEN__
509 #if !defined N_TOOLS || defined __DOXYGEN__
510 #define N_TOOLS 0
511 #endif
512 #endif
513 
520 #if !defined NGC_EXPRESSIONS_ENABLE || defined __DOXYGEN__
521 #define NGC_EXPRESSIONS_ENABLE Off
522 #endif
523 
528 #if !defined NGC_PARAMETERS_ENABLE || defined __DOXYGEN__
529 #define NGC_PARAMETERS_ENABLE On
530 #endif
531 
536 #if (NGC_EXPRESSIONS_ENABLE && !defined NGC_N_ASSIGN_PARAMETERS_PER_BLOCK) || defined __DOXYGEN__
537 #define NGC_N_ASSIGN_PARAMETERS_PER_BLOCK 10
538 #endif
539 
544 #if !defined LATHE_UVW_OPTION || defined __DOXYGEN__
545 #define LATHE_UVW_OPTION Off
546 #endif
547 
548 // Max number of entries in log for PID data reporting, to be used for tuning
549 //#define PID_LOG 1000 // Default disabled. Uncomment to enable.
550 
551 // End compile time only default configuration
552 
553 // ---------------------------------------------------------------------------------------
554 // SETTINGS DEFAULT VALUE OVERRIDES:
555 
556 // General settings (Group_General)
557 
567 
572 #if !defined DEFAULT_REPORT_MACHINE_POSITION || defined __DOXYGEN__
573 #define DEFAULT_REPORT_MACHINE_POSITION On // Default on. Set to \ref Off or 0 to disable.
574 #endif
575 
581 #if !defined DEFAULT_REPORT_BUFFER_STATE || defined __DOXYGEN__
582 #define DEFAULT_REPORT_BUFFER_STATE On // Default on. Set to \ref Off or 0 to disable.
583 #endif
584 
592 #if !defined DEFAULT_REPORT_LINE_NUMBERS || defined __DOXYGEN__
593 #define DEFAULT_REPORT_LINE_NUMBERS On // Default on. Set to \ref Off or 0 to disable.
594 #endif
595 
602 #if !defined DEFAULT_REPORT_CURRENT_FEED_SPEED || defined __DOXYGEN__
603 #define DEFAULT_REPORT_CURRENT_FEED_SPEED On // Default on. Set to \ref Off or 0 to disable.
604 #endif
605 
612 #if !defined DEFAULT_REPORT_PIN_STATE || defined __DOXYGEN__
613 #define DEFAULT_REPORT_PIN_STATE On // Default on. Set to \ref Off or 0 to disable.
614 #endif
615 
622 #if !defined DEFAULT_REPORT_WORK_COORD_OFFSET || defined __DOXYGEN__
623 #define DEFAULT_REPORT_WORK_COORD_OFFSET On // Default on. Set to \ref Off or 0 to disable.
624 #endif
625 
632 #if !defined DEFAULT_REPORT_OVERRIDES || defined __DOXYGEN__
633 #define DEFAULT_REPORT_OVERRIDES On // Default on. Set to \ref Off or 0 to disable.
634 #endif
635 
643 #if !defined DEFAULT_REPORT_PROBE_COORDINATES || defined __DOXYGEN__
644 #define DEFAULT_REPORT_PROBE_COORDINATES On // Default on. Set to \ref Off or 0 to disable.
645 #endif
646 
657 #if !defined DEFAULT_REPORT_SYNC_ON_WCO_CHANGE || defined __DOXYGEN__
658 #define DEFAULT_REPORT_SYNC_ON_WCO_CHANGE On
659 #endif
660 
668 #if !defined DEFAULT_REPORT_PARSER_STATE || defined __DOXYGEN__
669 #define DEFAULT_REPORT_PARSER_STATE Off // Default off. Set to \ref On or 1 to enable.
670 #endif
671 
682 #if !defined DEFAULT_REPORT_ALARM_SUBSTATE || defined __DOXYGEN__
683 #define DEFAULT_REPORT_ALARM_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
684 #endif
685 
695 #if !defined DEFAULT_REPORT_RUN_SUBSTATE || defined __DOXYGEN__
696 #define DEFAULT_REPORT_RUN_SUBSTATE Off // Default off. Set to \ref On or 1 to enable.
697 #endif
698 
705 #if !defined DEFAULT_REPORT_WHEN_HOMING || defined __DOXYGEN__
706 #define DEFAULT_REPORT_WHEN_HOMING Off // Default off. Set to \ref On or 1 to enable.
707 #endif
708 
710 
715 #if !defined DEFAULT_JUNCTION_DEVIATION || defined __DOXYGEN__
716 #define DEFAULT_JUNCTION_DEVIATION 0.01f // mm
717 #endif
719 
724 #if !defined DEFAULT_ARC_TOLERANCE || defined __DOXYGEN__
725 #define DEFAULT_ARC_TOLERANCE 0.002f // mm
726 #endif
728 
734 #if !defined DEFAULT_REPORT_INCHES || defined __DOXYGEN__
735 #define DEFAULT_REPORT_INCHES Off
736 #endif
738 
744 #if !defined DEFAULT_G73_RETRACT || defined __DOXYGEN__
745 #define DEFAULT_G73_RETRACT 0.1f // mm
746 #endif
748 
753 #if !defined DEFAULT_LASER_MODE || defined __DOXYGEN__
754 #define DEFAULT_LASER_MODE Off
755 #endif
756 #if !defined DEFAULT_LATHE_MODE || defined __DOXYGEN__
757 #define DEFAULT_LATHE_MODE Off
758 #endif
760 
770 #if !defined DEFAULT_LEGACY_RTCOMMANDS || defined __DOXYGEN__
771 #define DEFAULT_LEGACY_RTCOMMANDS On
772 #endif
774 
778 #if !defined DEFAULT_RESET_OVERRIDES || defined __DOXYGEN__
779 #define DEFAULT_RESET_OVERRIDES Off
780 #endif
782 
786 #if !defined DEFAULT_SLEEP_ENABLE || defined __DOXYGEN__
787 #define DEFAULT_SLEEP_ENABLE Off
788 #endif
790 
798 #if !defined DEFAULT_DISABLE_LASER_DURING_HOLD || defined __DOXYGEN__
799 #define DEFAULT_DISABLE_LASER_DURING_HOLD On
800 #endif
802 
808 #if !defined DEFAULT_RESTORE_AFTER_FEED_HOLD || defined __DOXYGEN__
809 #define DEFAULT_RESTORE_AFTER_FEED_HOLD On
810 #endif
812 
822 #if !defined DEFAULT_FORCE_INITIALIZATION_ALARM || defined __DOXYGEN__
823 #define DEFAULT_FORCE_INITIALIZATION_ALARM Off
824 #endif
826 
833 #if !defined DEFAULT_DISABLE_G92_PERSISTENCE || defined __DOXYGEN__
834 #if COMPATIBILITY_LEVEL <= 1
835 #define DEFAULT_DISABLE_G92_PERSISTENCE Off
836 #else
837 #define DEFAULT_DISABLE_G92_PERSISTENCE On
838 #endif
839 #endif
841 
850 #if !defined DEFAULT_PLANNER_BUFFER_BLOCKS || defined __DOXYGEN__
851 #define DEFAULT_PLANNER_BUFFER_BLOCKS 100
852 #endif
854 
855 // Control signals settings (Group_ControlSignals)
856 
857 #ifndef __DOXYGEN__ // For now do not include in documentation
858 
864 #define SIGNALS_RESET_BIT (1<<0)
865 #define SIGNALS_FEEDHOLD_BIT (1<<1)
866 #define SIGNALS_CYCLESTART_BIT (1<<2)
867 #define SIGNALS_SAFETYDOOR_BIT (1<<3)
868 #define SIGNALS_BLOCKDELETE_BIT (1<<4)
869 #define SIGNALS_STOPDISABLE_BIT (1<<5)
870 #define SIGNALS_ESTOP_BIT (1<<6)
871 #define SIGNALS_PROBE_CONNECTED_BIT (1<<7)
872 #define SIGNALS_MOTOR_FAULT_BIT (1<<8)
873 #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)
875 
876 #endif
877 
884 #if !defined DEFAULT_CONTROL_SIGNALS_INVERT_MASK || defined __DOXYGEN__
885 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
886 #endif
888 
903 #if !defined DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK || defined __DOXYGEN__
904 #define DEFAULT_DISABLE_CONTROL_PINS_PULL_UP_MASK 0 // Set to SIGNALS_BITMASK or -1 to invert all signals
905 #endif
907 
908 // Limits settings (Group_Limits)
909 
918 #if !defined DEFAULT_LIMIT_SIGNALS_INVERT_MASK || defined __DOXYGEN__
919 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
920 #endif
922 
930 #if !defined DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK || defined __DOXYGEN__
931 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK 0 // Set to -1 or AXES_BITMASK to disable pullup for all axes
932 #endif
934 
938 #if !defined DEFAULT_SOFT_LIMIT_ENABLE || defined __DOXYGEN__
939 #define DEFAULT_SOFT_LIMIT_ENABLE Off
940 #endif
942 
946 
953 #if !defined DEFAULT_HARD_LIMIT_ENABLE || defined __DOXYGEN__
954 #define DEFAULT_HARD_LIMIT_ENABLE Off
955 #endif
956 #if !defined DEFAULT_CHECK_LIMITS_AT_INIT || defined __DOXYGEN__
957 #define DEFAULT_CHECK_LIMITS_AT_INIT Off
958 #endif
959 #if !defined DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY || defined __DOXYGEN__
960 #define DEFAULT_HARD_LIMITS_DISABLE_FOR_ROTARY Off
961 #endif
962 
975 
978 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT || defined __DOXYGEN__
979 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0f // Float (percent)
980 #endif
982 
986 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN || defined __DOXYGEN__
987 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5f // Float (mm)
988 #endif
990 
995 #if !defined DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX || defined __DOXYGEN__
996 #define DEFAULT_DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0f // Float (mm)
997 #endif
999 
1000 // Coolant settings (Group_Coolant)
1001 
1007 #if !defined DEFAULT_INVERT_COOLANT_FLOOD_PIN || defined __DOXYGEN__
1008 #define DEFAULT_INVERT_COOLANT_FLOOD_PIN Off
1009 #endif
1010 #if !defined DEFAULT_INVERT_COOLANT_MIST_PIN || defined __DOXYGEN__
1011 #define DEFAULT_INVERT_COOLANT_MIST_PIN Off // NOTE: not supported by all drivers.
1012 #endif
1014 
1015 // Spindle settings (Group_Spindle)
1016 
1020 #if !defined DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED || defined __DOXYGEN__
1021 #define DEFAULT_SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED Off
1022 #endif
1024 
1029 #if !defined DEFAULT_INVERT_SPINDLE_ENABLE_PIN || defined __DOXYGEN__
1030 #define DEFAULT_INVERT_SPINDLE_ENABLE_PIN Off
1031 #endif
1032 #if !defined DEFAULT_INVERT_SPINDLE_CCW_PIN || defined __DOXYGEN__
1033 #define DEFAULT_INVERT_SPINDLE_CCW_PIN Off // NOTE: not supported by all drivers.
1034 #endif
1035 #if !defined DEFAULT_INVERT_SPINDLE_PWM_PIN || defined __DOXYGEN__
1036 #define DEFAULT_INVERT_SPINDLE_PWM_PIN Off // NOTE: not supported by all drivers.
1037 #endif
1039 
1043 #if !defined DEFAULT_SPINDLE_RPM_MAX || defined __DOXYGEN__
1044 #define DEFAULT_SPINDLE_RPM_MAX 1000.0f // rpm
1045 #endif
1047 
1051 #if !defined DEFAULT_SPINDLE_RPM_MIN || defined __DOXYGEN__
1052 #define DEFAULT_SPINDLE_RPM_MIN 0.0f // rpm
1053 #endif
1055 
1059 #if !defined DEFAULT_SPINDLE_PWM_FREQ || defined __DOXYGEN__
1060 #define DEFAULT_SPINDLE_PWM_FREQ 5000 // Hz
1061 #endif
1063 
1067 #if !defined DEFAULT_SPINDLE_PWM_OFF_VALUE || defined __DOXYGEN__
1068 #define DEFAULT_SPINDLE_PWM_OFF_VALUE 0.0f // Percent
1069 #endif
1071 
1084 #if !defined DEFAULT_SPINDLE_PWM_MIN_VALUE || defined __DOXYGEN__
1085 #define DEFAULT_SPINDLE_PWM_MIN_VALUE 0.0f // Must be greater than zero. Integer (+-255).
1086 #endif
1088 
1092 #if !defined DEFAULT_SPINDLE_PWM_MAX_VALUE || defined __DOXYGEN__
1093 #define DEFAULT_SPINDLE_PWM_MAX_VALUE 100.0f // Percent
1094 #endif
1096 
1105 #if !defined DEFAULT_SPINDLE_PPR || defined __DOXYGEN__
1106 #define DEFAULT_SPINDLE_PPR 0 // Pulses per revolution.
1107 #endif
1109 
1113 #if !defined DEFAULT_SPINDLE_AT_SPEED_TOLERANCE || defined __DOXYGEN__
1114 #define DEFAULT_SPINDLE_AT_SPEED_TOLERANCE 0.0f // Percent - 0 means not checked
1115 #endif
1117 
1121 #if !defined DEFAULT_SPINDLE || defined __DOXYGEN__
1122 #define DEFAULT_SPINDLE SPINDLE_PWM0 // Spindle number from spindle_control.h
1123 #endif
1125 
1126 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1127 
1128 // $9 - Setting_SpindlePWMOptions
1129 // bit 0
1130 // always defaults to on
1131 // bit 1
1132 
1133 // Closed loop spindle settings (Group_Spindle_ClosedLoop)
1134 
1135 #ifndef DEFAULT_SPINDLE_P_GAIN
1136 #define DEFAULT_SPINDLE_P_GAIN 1.0f
1137 #endif
1138 #ifndef DEFAULT_SPINDLE_I_GAIN
1139 #define DEFAULT_SPINDLE_I_GAIN 0.01f
1140 #endif
1141 #ifndef DEFAULT_SPINDLE_D_GAIN
1142 #define DEFAULT_SPINDLE_D_GAIN 0.0f
1143 #endif
1144 #ifndef DEFAULT_SPINDLE_I_MAX
1145 #define DEFAULT_SPINDLE_I_MAX 10.0f
1146 #endif
1147 
1148 #if ENABLE_SPINDLE_LINEARIZATION || defined __DOXYGEN__
1149 
1154 #if !defined DEFAULT_RPM_POINT01 || defined __DOXYGEN__
1155 #define DEFAULT_RPM_POINT01 NAN // DEFAULT_SPINDLE_RPM_MIN // Replace NAN with DEFAULT_SPINDLE_RPM_MIN to enable.
1156 #endif
1157 #if !defined DEFAULT_RPM_LINE_A1 || defined __DOXYGEN__
1158 #define DEFAULT_RPM_LINE_A1 3.197101e-03f
1159 #endif
1160 #if !defined DEFAULT_RPM_LINE_B1 || defined __DOXYGEN__
1161 #define DEFAULT_RPM_LINE_B1 -3.526076e-1f
1162 #endif
1164 
1169 #if !defined DEFAULT_RPM_POINT12 || defined __DOXYGEN__
1170 #define DEFAULT_RPM_POINT12 NAN // Change NAN to a float constant to enable.
1171 #endif
1172 #if !defined DEFAULT_RPM_LINE_A2 || defined __DOXYGEN__
1173 #define DEFAULT_RPM_LINE_A2 1.722950e-2f
1174 #endif
1175 #if !defined DEFAULT_RPM_LINE_B2 || defined __DOXYGEN__
1176 #define DEFAULT_RPM_LINE_B2 1.0f,
1177 #endif
1179 
1184 #if !defined DEFAULT_RPM_POINT23 || defined __DOXYGEN__
1185 #define DEFAULT_RPM_POINT23 NAN // Change NAN to a float constant to enable.
1186 #endif
1187 #if !defined DEFAULT_RPM_LINE_A3 || defined __DOXYGEN__
1188 #define DEFAULT_RPM_LINE_A3 5.901518e-02f
1189 #endif
1190 #if !defined DEFAULT_RPM_LINE_B3 || defined __DOXYGEN__
1191 #define DEFAULT_RPM_LINE_B3 4.881851e+02f
1192 #endif
1194 
1199 #if !defined DEFAULT_RPM_POINT34 || defined __DOXYGEN__
1200 #define DEFAULT_RPM_POINT34 NAN // Change NAN to a float constant to enable.
1201 #endif
1202 #if !defined DEFAULT_RPM_LINE_A4 || defined __DOXYGEN__
1203 #define DEFAULT_RPM_LINE_A4 1.203413e-01f
1204 #endif
1205 #if !defined DEFAULT_RPM_LINE_B4 || defined __DOXYGEN__
1206 #define DEFAULT_RPM_LINE_B4 1.151360e+03f
1207 #endif
1209 
1210 #endif // ENABLE_SPINDLE_LINEARIZATION
1211 
1212 // Tool change settings (Group_Toolchange)
1213 
1218 #if !defined DEFAULT_TOOLCHANGE_MODE || defined __DOXYGEN__
1219 #define DEFAULT_TOOLCHANGE_MODE 0
1220 #endif
1222 
1226 #if !defined DEFAULT_TOOLCHANGE_PROBING_DISTANCE || defined __DOXYGEN__
1227 #define DEFAULT_TOOLCHANGE_PROBING_DISTANCE 30 // max probing distance in mm for mode 3
1228 #endif
1230 
1234 #if !defined DEFAULT_TOOLCHANGE_FEED_RATE || defined __DOXYGEN__
1235 #define DEFAULT_TOOLCHANGE_FEED_RATE 25.0f // mm/min
1236 #endif
1238 
1243 #if !defined DEFAULT_TOOLCHANGE_SEEK_RATE || defined __DOXYGEN__
1244 #define DEFAULT_TOOLCHANGE_SEEK_RATE 200.0f // mm/min
1245 #endif
1247 
1251 #if !defined DEFAULT_TOOLCHANGE_PULLOFF_RATE || defined __DOXYGEN__
1252 #define DEFAULT_TOOLCHANGE_PULLOFF_RATE 200.0f // mm/min
1253 #endif
1255 
1259 #if !defined DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION || defined __DOXYGEN__
1260 #define DEFAULT_TOOLCHANGE_NO_RESTORE_POSITION Off
1261 #endif
1263 
1264 // Homing settings (Group_Homing)
1265 
1272 #if !defined DEFAULT_HOMING_ENABLE || defined __DOXYGEN__
1273 #define DEFAULT_HOMING_ENABLE Off // Default disabled. Set to \ref On or 1 to enable.
1274 #endif
1275 
1283 #if !defined DEFAULT_HOMING_SINGLE_AXIS_COMMANDS || defined __DOXYGEN__
1284 #define DEFAULT_HOMING_SINGLE_AXIS_COMMANDS Off // Default disabled. Set to \ref On or 1 to enable.
1285 #endif
1286 
1294 #if !defined DEFAULT_HOMING_INIT_LOCK || defined __DOXYGEN__
1295 #define DEFAULT_HOMING_INIT_LOCK Off // Default disabled. Set to \ref On or 1 to enable.
1296 #endif
1297 
1305 #if !defined DEFAULT_HOMING_FORCE_SET_ORIGIN || defined __DOXYGEN__
1306 #define DEFAULT_HOMING_FORCE_SET_ORIGIN Off // Default disabled. Set to \ref On or 1 to enable.
1307 #endif
1308 
1319 #if !defined DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES || defined __DOXYGEN__
1320 #define DEFAULT_LIMITS_TWO_SWITCHES_ON_AXES Off // Default disabled. Set to \ref On or 1 to enable.
1321 #endif
1323 
1330 #if !defined DEFAULT_HOMING_ALLOW_MANUAL || defined __DOXYGEN__
1331 #define DEFAULT_HOMING_ALLOW_MANUAL Off // Default disabled. Set to \ref On or 1 to enable.
1332 #endif
1333 
1340 #if !defined DEFAULT_HOMING_OVERRIDE_LOCKS || defined __DOXYGEN__
1341 #define DEFAULT_HOMING_OVERRIDE_LOCKS Off // Default disabled. Set to \ref On or 1 to enable.
1342 #endif
1343 
1350 #if !defined DEFAULT_HOMING_KEEP_STATUS_ON_RESET || defined __DOXYGEN__
1351 #define DEFAULT_HOMING_KEEP_STATUS_ON_RESET Off // Default disabled. Set to \ref On or 1 to enable.
1352 #endif
1354 
1360 #if !defined DEFAULT_HOMING_USE_LIMIT_SWITCHES || defined __DOXYGEN__
1361 #define DEFAULT_HOMING_USE_LIMIT_SWITCHES Off // Default disabled. Set to \ref On or 1 to enable.
1362 #endif
1364 
1370 #if !defined DEFAULT_HOMING_DIR_MASK || defined __DOXYGEN__
1371 #define DEFAULT_HOMING_DIR_MASK 0
1372 #endif
1374 
1378 #if !defined DEFAULT_HOMING_FEED_RATE || defined __DOXYGEN__
1379 #define DEFAULT_HOMING_FEED_RATE 25.0f // mm/min
1380 #endif
1382 
1386 #if !defined DEFAULT_HOMING_SEEK_RATE || defined __DOXYGEN__
1387 #define DEFAULT_HOMING_SEEK_RATE 500.0f // mm/min
1388 #endif
1390 
1394 #if !defined DEFAULT_HOMING_DEBOUNCE_DELAY || defined __DOXYGEN__
1395 #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k)
1396 #endif
1398 
1402 #if !defined DEFAULT_HOMING_PULLOFF || defined __DOXYGEN__
1403 #define DEFAULT_HOMING_PULLOFF 1.0f // mm
1404 #endif
1406 
1413 #if !defined DEFAULT_N_HOMING_LOCATE_CYCLE || defined __DOXYGEN__
1414 #define DEFAULT_N_HOMING_LOCATE_CYCLE 1 // Integer (1-127)
1415 #endif
1417 
1439 #if !defined DEFAULT_HOMING_CYCLE_0 || defined __DOXYGEN__
1440 #define DEFAULT_HOMING_CYCLE_0 (Z_AXIS_BIT) // REQUIRED: First move Z to clear workspace.
1441 #endif
1443 
1447 #if !defined DEFAULT_HOMING_CYCLE_1 || defined __DOXYGEN__
1448 #if COREXY
1449 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT) // OPTIONAL: Then move X.
1450 #else
1451 #define DEFAULT_HOMING_CYCLE_1 (X_AXIS_BIT|Y_AXIS_BIT) // OPTIONAL: Then move X,Y at the same time.
1452 #endif
1453 #endif
1455 
1459 #if !defined DEFAULT_HOMING_CYCLE_2 || defined __DOXYGEN__
1460 #if COREXY
1461 #define DEFAULT_HOMING_CYCLE_2 (Y_AXIS_BIT) // OPTIONAL: Then move Y.
1462 #else
1463 #define DEFAULT_HOMING_CYCLE_2 0 // OPTIONAL: Uncomment and add axes mask to enable
1464 #endif
1465 #endif
1467 
1471 #if (defined A_AXIS && !defined DEFAULT_HOMING_CYCLE_3) || defined __DOXYGEN__
1472 #define DEFAULT_HOMING_CYCLE_3 0 // OPTIONAL: Uncomment and add axes mask to enable
1473 #endif
1475 
1480 #if (defined B_AXIS && !defined DEFAULT_HOMING_CYCLE_4) || defined __DOXYGEN__
1481 #define DEFAULT_HOMING_CYCLE_4 0 // OPTIONAL: Uncomment and add axes mask to enable
1482 #endif
1484 
1488 #if (defined C_AXIS && !defined DEFAULT_HOMING_CYCLE_5) || defined __DOXYGEN__
1489 #define DEFAULT_HOMING_CYCLE_5 0 // OPTIONAL: Uncomment and add axes mask to enable
1490 #endif
1492 
1501 #if !defined DEFAULT_HOME_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1502 #define DEFAULT_HOME_SIGNALS_INVERT_MASK 0 // Set to -1 or AXES_BITMASK to invert for all axes
1503 #endif
1505 
1506 
1507 // Probing settings (Group_Probing)
1508 
1512 #if !defined DEFAULT_PROBE_SIGNAL_INVERT || defined __DOXYGEN__
1513 #define DEFAULT_PROBE_SIGNAL_INVERT Off
1514 #endif
1516 
1520 #if !defined DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP || defined __DOXYGEN__
1521 #define DEFAULT_PROBE_SIGNAL_DISABLE_PULLUP Off
1522 #endif
1524 
1533 #if !defined DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES || defined __DOXYGEN__
1534 #define DEFAULT_ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES Off
1535 #endif
1537 
1538 // Safety door/parking settings (Group_SafetyDoor)
1539 
1540 #ifdef DEFAULT_HOMING_ENABLE
1541 
1559 #if !defined DEFAULT_PARKING_ENABLE || defined __DOXYGEN__
1560 #define DEFAULT_PARKING_ENABLE Off // bit 0
1561 // Enables a special set of M-code commands that enables and disables the parking motion.
1562 // These are controlled by `M56`, `M56 P1`, or `M56 Px` to enable and `M56 P0` to disable.
1563 // The command is modal and will be set after a planner sync. Since it is g-code, it is
1564 // executed in sync with g-code commands. It is not a real-time command.
1565 // NOTE: PARKING_ENABLE is required. By default, M56 is active upon initialization. Use
1566 // DEACTIVATE_PARKING_UPON_INIT to set M56 P0 as the power-up default.
1567 #endif
1568 #if !defined DEFAULT_DEACTIVATE_PARKING_UPON_INIT || defined __DOXYGEN__
1569 #define DEFAULT_DEACTIVATE_PARKING_UPON_INIT Off // bit 1
1570 #endif
1571 #if !defined DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL || defined __DOXYGEN__
1572 #define DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL Off // bit 2
1573 #endif
1575 
1580 #if !defined DEFAULT_PARKING_AXIS || defined __DOXYGEN__
1581 #define DEFAULT_PARKING_AXIS Z_AXIS //
1582 #endif
1584 
1588 #if !defined DEFAULT_PARKING_PULLOUT_INCREMENT || defined __DOXYGEN__
1589 #define DEFAULT_PARKING_PULLOUT_INCREMENT 5.0f //
1590 #endif
1592 
1597 #if !defined DEFAULT_PARKING_PULLOUT_RATE || defined __DOXYGEN__
1598 #define DEFAULT_PARKING_PULLOUT_RATE 100.0f // mm/min.
1599 #endif
1601 
1606 #if !defined DEFAULT_PARKING_TARGET || defined __DOXYGEN__
1607 #define DEFAULT_PARKING_TARGET -5.0f // mm
1608 #endif
1610 
1615 #if !defined DEFAULT_PARKING_RATE || defined __DOXYGEN__
1616 #define DEFAULT_PARKING_RATE 500.0f // mm/min
1617 #endif
1619 
1623 
1628 #if !defined DEFAULT_DOOR_IGNORE_WHEN_IDLE || defined __DOXYGEN__
1629 #define DEFAULT_DOOR_IGNORE_WHEN_IDLE Off
1630 #endif
1635 #if !defined DEFAULT_DOOR_KEEP_COOLANT_ON || defined __DOXYGEN__
1636 #define DEFAULT_DOOR_KEEP_COOLANT_ON Off
1637 #endif
1639 
1645 #if !defined DEFAULT_SAFETY_DOOR_SPINDLE_DELAY || defined __DOXYGEN__
1646 #define DEFAULT_SAFETY_DOOR_SPINDLE_DELAY 4.0f // Float (seconds)
1647 #endif
1649 
1656 #if !defined DEFAULT_SAFETY_DOOR_COOLANT_DELAY || defined __DOXYGEN__
1657 #define DEFAULT_SAFETY_DOOR_COOLANT_DELAY 1.0f // Float (seconds)
1658 #endif
1660 
1661 #endif // DEFAULT_HOMING_ENABLE
1662 
1663 // Jogging settings (Group_Jogging)
1664 
1672 #if !defined DEFAULT_JOG_LIMIT_ENABLE || defined __DOXYGEN__
1673 #define DEFAULT_JOG_LIMIT_ENABLE Off
1674 #endif
1676 
1677 // Stepper settings (Group_Stepper)
1678 
1691 #if !defined DEFAULT_STEP_PULSE_MICROSECONDS || defined __DOXYGEN__
1692 #define DEFAULT_STEP_PULSE_MICROSECONDS 10.0f
1693 #endif
1695 
1704 #if !defined DEFAULT_STEPPER_IDLE_LOCK_TIME || defined __DOXYGEN__
1705 #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // milliseconds
1706 #endif
1708 
1714 #if !defined DEFAULT_STEP_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1715 #define DEFAULT_STEP_SIGNALS_INVERT_MASK 0
1716 #endif
1718 
1724 #if !defined DEFAULT_DIR_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1725 #define DEFAULT_DIR_SIGNALS_INVERT_MASK 0
1726 #endif
1728 
1741 #if !defined DEFAULT_ENABLE_SIGNALS_INVERT_MASK || defined __DOXYGEN__
1742 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
1743 #endif
1745 
1751 #if !defined DEFAULT_GANGED_DIRECTION_INVERT_MASK || defined __DOXYGEN__
1752 #define DEFAULT_GANGED_DIRECTION_INVERT_MASK 0
1753 #endif
1755 
1759 #if !defined DEFAULT_STEP_PULSE_DELAY || defined __DOXYGEN__
1760 #define DEFAULT_STEP_PULSE_DELAY 0.0f
1761 #endif
1763 
1770 #if !defined DEFAULT_STEPPER_DEENERGIZE_MASK || defined __DOXYGEN__
1771 #define DEFAULT_STEPPER_DEENERGIZE_MASK 0
1772 #endif
1774 
1781 #if !defined DEFAULT_AXIS_ROTATIONAL_MASK || defined __DOXYGEN__
1782 #define DEFAULT_AXIS_ROTATIONAL_MASK 0
1783 #endif
1785 
1790 #if !defined DEFAULT_AUTOREPORT_INTERVAL || defined __DOXYGEN__
1791 #define DEFAULT_AUTOREPORT_INTERVAL 0
1792 #endif
1794 
1799 #if !defined DEFAULT_TIMEZONE_OFFSET || defined __DOXYGEN__
1800 #define DEFAULT_TIMEZONE_OFFSET 0.0f
1801 #endif
1803 
1808 #if !defined DEFAULT_RGB_STRIP0_LENGTH || defined __DOXYGEN__
1809 #define DEFAULT_RGB_STRIP0_LENGTH 0
1810 #endif
1812 
1817 #if !defined DEFAULT_RGB_STRIP1_LENGTH || defined __DOXYGEN__
1818 #define DEFAULT_RGB_STRIP1_LENGTH 0
1819 #endif
1821 
1829 #if !defined DEFAULT_AXIS_ROTARY_WRAP_MASK || defined __DOXYGEN__
1830 #define DEFAULT_AXIS_ROTARY_WRAP_MASK 0
1831 #endif
1833 
1834 // Axis settings (Group_XAxis - Group_VAxis)
1835 
1840 #if !defined DEFAULT_X_STEPS_PER_MM || defined __DOXYGEN__
1841 #define DEFAULT_X_STEPS_PER_MM 250.0f
1842 #endif
1843 #if !defined DEFAULT_Y_STEPS_PER_MM || defined __DOXYGEN__
1844 #define DEFAULT_Y_STEPS_PER_MM 250.0f
1845 #endif
1846 #if !defined DEFAULT_Z_STEPS_PER_MM || defined __DOXYGEN__
1847 #define DEFAULT_Z_STEPS_PER_MM 250.0f
1848 #endif
1849 #if (defined A_AXIS && !defined DEFAULT_A_STEPS_PER_MM) || defined __DOXYGEN__
1850 #define DEFAULT_A_STEPS_PER_MM 250.0f
1851 #endif
1852 #if (defined B_AXIS && !defined DEFAULT_B_STEPS_PER_MM) || defined __DOXYGEN__
1853 #define DEFAULT_B_STEPS_PER_MM 250.0f
1854 #endif
1855 #if (defined C_AXIS && !defined DEFAULT_C_STEPS_PER_MM) || defined __DOXYGEN__
1856 #define DEFAULT_C_STEPS_PER_MM 250.0f
1857 #endif
1858 #if (defined U_AXIS && !defined DEFAULT_U_STEPS_PER_MM) || defined __DOXYGEN__
1859 #define DEFAULT_U_STEPS_PER_MM 250.0f
1860 #endif
1861 #if (defined V_AXIS && !defined DEFAULT_V_STEPS_PER_MM) || defined __DOXYGEN__
1862 #define DEFAULT_V_STEPS_PER_MM 250.0f
1863 #endif
1865 
1870 #if !defined DEFAULT_X_MAX_RATE || defined __DOXYGEN__
1871 #define DEFAULT_X_MAX_RATE 500.0f // mm/min
1872 #endif
1873 #if !defined DEFAULT_Y_MAX_RATE || defined __DOXYGEN__
1874 #define DEFAULT_Y_MAX_RATE 500.0f // mm/min
1875 #endif
1876 #if !defined DEFAULT_Z_MAX_RATE || defined __DOXYGEN__
1877 #define DEFAULT_Z_MAX_RATE 500.0f // mm/min
1878 #endif
1879 #if (defined A_AXIS && !defined DEFAULT_A_MAX_RATE) || defined __DOXYGEN__
1880 #define DEFAULT_A_MAX_RATE 500.0f // mm/min
1881 #endif
1882 #if (defined B_AXIS && !defined DEFAULT_B_MAX_RATE) || defined __DOXYGEN__
1883 #define DEFAULT_B_MAX_RATE 500.0f // mm/min
1884 #endif
1885 #if (defined C_AXIS && !defined DEFAULT_C_MAX_RATE) || defined __DOXYGEN__
1886 #define DEFAULT_C_MAX_RATE 500.0f // mm/min
1887 #endif
1888 #if (defined U_AXIS && !defined DEFAULT_U_MAX_RATE) || defined __DOXYGEN__
1889 #define DEFAULT_U_MAX_RATE 500.0f // mm/min
1890 #endif
1891 #if (defined V_AXIS && !defined DEFAULT_V_MAX_RATE) || defined __DOXYGEN__
1892 #define DEFAULT_V_MAX_RATE 500.0f // mm/min
1893 #endif
1895 
1899 #if !defined DEFAULT_X_ACCELERATION || defined __DOXYGEN__
1900 #define DEFAULT_X_ACCELERATION 10.0f // mm/sec^2
1901 #endif
1902 #if !defined DEFAULT_Y_ACCELERATION || defined __DOXYGEN__
1903 #define DEFAULT_Y_ACCELERATION 10.0f // mm/sec^2
1904 #endif
1905 #if !defined DEFAULT_Z_ACCELERATION || defined __DOXYGEN__
1906 #define DEFAULT_Z_ACCELERATION 10.0f // mm/sec^2
1907 #endif
1908 #if (defined A_AXIS && !defined DEFAULT_A_ACCELERATION) || defined __DOXYGEN__
1909 #define DEFAULT_A_ACCELERATION 10.0f // mm/sec^2
1910 #endif
1911 #if (defined B_AXIS && !defined DEFAULT_B_ACCELERATION) || defined __DOXYGEN__
1912 #define DEFAULT_B_ACCELERATION 10.0f // mm/sec^2
1913 #endif
1914 #if (defined C_AXIS && !defined DEFAULT_C_ACCELERATION) || defined __DOXYGEN__
1915 #define DEFAULT_C_ACCELERATION 10.0f // mm/sec^2
1916 #endif
1917 #if (defined U_AXIS && !defined DEFAULT_U_ACCELERATION) || defined __DOXYGEN__
1918 #define DEFAULT_U_ACCELERATION 10.0f // mm/sec^2
1919 #endif
1920 #if (defined V_AXIS && !defined DEFAULT_V_ACCELERATION) || defined __DOXYGEN__
1921 #define DEFAULT_V_ACCELERATION 10.0f // mm/sec^2
1922 #endif
1924 
1929 #if !defined DEFAULT_X_MAX_TRAVEL || defined __DOXYGEN__
1930 #define DEFAULT_X_MAX_TRAVEL 200.0f // mm
1931 #endif
1932 #if !defined DEFAULT_Y_MAX_TRAVEL || defined __DOXYGEN__
1933 #define DEFAULT_Y_MAX_TRAVEL 200.0f // mm
1934 #endif
1935 #if !defined DEFAULT_Z_MAX_TRAVEL || defined __DOXYGEN__
1936 #define DEFAULT_Z_MAX_TRAVEL 200.0f // mm
1937 #endif
1938 #if (defined A_AXIS && !defined DEFAULT_A_MAX_TRAVEL) || defined __DOXYGEN__
1939 #define DEFAULT_A_MAX_TRAVEL 200.0f // mm
1940 #endif
1941 #if (defined B_AXIS && !defined DEFAULT_B_MAX_TRAVEL) || defined __DOXYGEN__
1942 #define DEFAULT_B_MAX_TRAVEL 200.0f // mm
1943 #endif
1944 #if (defined C_AXIS && !defined DEFAULT_C_MAX_TRAVEL) || defined __DOXYGEN__
1945 #define DEFAULT_C_MAX_TRAVEL 200.0f // mm
1946 #endif
1947 #if (defined U_AXIS && !defined DEFAULT_U_MAX_TRAVEL) || defined __DOXYGEN__
1948 #define DEFAULT_U_MAX_TRAVEL 200.0f // mm
1949 #endif
1950 #if (defined V_AXIS && !defined DEFAULT_V_MAX_TRAVEL) || defined __DOXYGEN__
1951 #define DEFAULT_V_MAX_TRAVEL 200.0f // mm
1952 #endif
1954 
1959 #if !defined DEFAULT_X_CURRENT || defined __DOXYGEN__
1960 #define DEFAULT_X_CURRENT 500.0f // mA RMS
1961 #endif
1962 #if !defined DEFAULT_Y_CURRENT || defined __DOXYGEN__
1963 #define DEFAULT_Y_CURRENT 500.0f // mA RMS
1964 #endif
1965 #if !defined DEFAULT_Z_CURRENT || defined __DOXYGEN__
1966 #define DEFAULT_Z_CURRENT 500.0f // mA RMS
1967 #endif
1968 #if (defined A_AXIS && !defined DEFAULT_A_CURRENT) || defined __DOXYGEN__
1969 #define DEFAULT_A_CURRENT 500.0f // mA RMS
1970 #endif
1971 #if (defined B_AXIS && !defined DEFAULT_B_CURRENT) || defined __DOXYGEN__
1972 #define DEFAULT_B_CURRENT 500.0f // mA RMS
1973 #endif
1974 #if (defined C_AXIS && !defined DEFAULT_C_CURRENT) || defined __DOXYGEN__
1975 #define DEFAULT_C_CURRENT 500.0f // mA RMS
1976 #endif
1977 #if (defined U_AXIS && !defined DEFAULT_U_CURRENT) || defined __DOXYGEN__
1978 #define DEFAULT_U_CURRENT 500.0f // mA RMS
1979 #endif
1980 #if (defined V_AXIS && !defined DEFAULT_V_CURRENT) || defined __DOXYGEN__
1981 #define DEFAULT_V_CURRENT 500.0f // mA RMS
1982 #endif
1984 
1985 // Sanity checks
1986 
1987 // N_TOOLS may have been defined on the compiler command line.
1988 #if defined(N_TOOLS) && N_TOOLS == 0
1989 #undef N_TOOLS
1990 #endif
1991 
1992 #if defined(N_TOOLS) && N_TOOLS > 32
1993 #undef N_TOOLS
1994 #define N_TOOLS 32
1995 #endif
1996 
1997 #if N_SYS_SPINDLE > N_SPINDLE
1998 #undef N_SYS_SPINDLE
1999 #define N_SYS_SPINDLE N_SPINDLE
2000 #endif
2001 
2002 #if N_SYS_SPINDLE < 1
2003 #undef N_SYS_SPINDLE
2004 #define N_SYS_SPINDLE 1
2005 #endif
2006 
2007 #if N_SYS_SPINDLE > 8
2008 #undef N_SYS_SPINDLE
2009 #define N_SYS_SPINDLE 8
2010 #endif
2011 
2012 #if NGC_EXPRESSIONS_ENABLE && !NGC_PARAMETERS_ENABLE
2013 #undef NGC_PARAMETERS_ENABLE
2014 #define NGC_PARAMETERS_ENABLE On
2015 #endif
2016 
2017 #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT)
2018  #error "WCO busy refresh is less than idle refresh."
2019 #endif
2020 #if (REPORT_OVERRIDE_REFRESH_BUSY_COUNT < REPORT_OVERRIDE_REFRESH_IDLE_COUNT)
2021  #error "Override busy refresh is less than idle refresh."
2022 #endif
2023 #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2)
2024  #error "WCO refresh must be greater than one."
2025 #endif
2026 #if (REPORT_OVERRIDE_REFRESH_IDLE_COUNT < 1)
2027  #error "Override refresh must be greater than zero."
2028 #endif
2029 
2030 #if DEFAULT_LASER_MODE && DEFAULT_LATHE_MODE
2031 #error "Cannot enable laser and lathe mode at the same time!"
2032 #endif
2033 
2034 #if LATHE_UVW_OPTION && (N_AXIS > 6 || AXIS_REMAP_ABC2UVW)
2035 #warning "Cannot enable lathe UVW option when N_AXIS > 6 or ABC words are remapped!"
2036 #undef LATHE_UVW_OPTION
2037 #define LATHE_UVW_OPTION Off
2038 #endif
2039 
2040 #if DEFAULT_CONTROL_SIGNALS_INVERT_MASK < 0
2041 #undef DEFAULT_CONTROL_SIGNALS_INVERT_MASK
2042 #define DEFAULT_CONTROL_SIGNALS_INVERT_MASK SIGNALS_BITMASK
2043 #endif
2044 
2045 #if DEFAULT_LIMIT_SIGNALS_INVERT_MASK < 0
2046 #undef DEFAULT_LIMIT_SIGNALS_INVERT_MASK
2047 #define DEFAULT_LIMIT_SIGNALS_INVERT_MASK AXES_BITMASK
2048 #endif
2049 
2050 #if DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK < 0
2051 #undef DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK
2052 #define DEFAULT_LIMIT_SIGNALS_PULLUP_DISABLE_MASK AXES_BITMASK
2053 #endif
2054 
2055 #if DEFAULT_STEP_SIGNALS_INVERT_MASK < 0
2056 #undef DEFAULT_STEP_SIGNALS_INVERT_MASK
2057 #define DEFAULT_STEP_SIGNALS_INVERT_MASK AXES_BITMASK
2058 #endif
2059 
2060 #if DEFAULT_ENABLE_SIGNALS_INVERT_MASK < 0
2061 #undef DEFAULT_ENABLE_SIGNALS_INVERT_MASK
2062 #define DEFAULT_ENABLE_SIGNALS_INVERT_MASK AXES_BITMASK
2063 #endif
2064 
2065 #if DEFAULT_PARKING_ENABLE > 0
2066  #if DEFAULT_HOMING_FORCE_SET_ORIGIN > 0
2067  #error "DEFAULT_HOMING_FORCE_SET_ORIGIN is not supported with DEFAULT_PARKING_ENABLE at this time."
2068  #endif
2069 #endif
2070 
2071 #if DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL > 0
2072  #if DEFAULT_PARKING_ENABLE < 1
2073  #error "DEFAULT_ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with DEFAULT_PARKING_ENABLE."
2074  #endif
2075 #endif
2076 
2131 #endif // _GRBL_CONFIG_H_