/* grbl.h - main Grbl include file Part of Grbl Copyright (c) 2015-2016 Sungeun K. Jeon for Gnea Research LLC Grbl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Grbl is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Grbl. If not, see . */ #ifndef grbl_h #define grbl_h // Grbl versioning system #define GRBL_VERSION "1.1h" #define GRBL_VERSION_BUILD "20190830" // Define standard libraries used by Grbl. //#include //#include //#include //#include //#include #include #include #include #include #include #include #include // Define the Grbl system include files. NOTE: Do not alter organization. #include "grbl_config.h" #include "grbl_nuts_bolts.h" #include "grbl_settings.h" #include "grbl_system.h" #include "grbl_defaults.h" #include "grbl_cpu_map.h" #include "grbl_planner.h" #include "grbl_coolant_control.h" #include "grbl_eeprom.h" #include "grbl_gcode.h" #include "grbl_limits.h" #include "grbl_motion_control.h" #include "grbl_planner.h" #include "grbl_print.h" #include "grbl_probe.h" #include "grbl_protocol.h" #include "grbl_report.h" #include "grbl_serial.h" #include "grbl_spindle_control.h" #include "grbl_stepper.h" #include "grbl_jog.h" #define PRINTF_DEBUG(str) \ { \ if (enableDebugPrintouts) { \ printf("%s:%s:%d:%s\n",__FILE__,__FUNCTION__,__LINE__,str); \ } \ } \ // --------------------------------------------------------------------------------------- // COMPILE-TIME ERROR CHECKING OF DEFINE VALUES: #ifndef HOMING_CYCLE_0 #error "Required HOMING_CYCLE_0 not defined." #endif #if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(VARIABLE_SPINDLE) #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with VARIABLE_SPINDLE enabled" #endif #if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(CPU_MAP_ATMEGA328P) #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with a 328p processor" #endif #if !defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && defined(SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED) #error "SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED may only be used with USE_SPINDLE_DIR_AS_ENABLE_PIN enabled" #endif #if defined(PARKING_ENABLE) #if defined(HOMING_FORCE_SET_ORIGIN) #error "HOMING_FORCE_SET_ORIGIN is not supported with PARKING_ENABLE at this time." #endif #endif #if defined(ENABLE_PARKING_OVERRIDE_CONTROL) #if !defined(PARKING_ENABLE) #error "ENABLE_PARKING_OVERRIDE_CONTROL must be enabled with PARKING_ENABLE." #endif #endif #if defined(SPINDLE_PWM_MIN_VALUE) #if !(SPINDLE_PWM_MIN_VALUE > 0) #error "SPINDLE_PWM_MIN_VALUE must be greater than zero." #endif #endif #if (REPORT_WCO_REFRESH_BUSY_COUNT < REPORT_WCO_REFRESH_IDLE_COUNT) #error "WCO busy refresh is less than idle refresh." #endif #if (REPORT_OVR_REFRESH_BUSY_COUNT < REPORT_OVR_REFRESH_IDLE_COUNT) #error "Override busy refresh is less than idle refresh." #endif #if (REPORT_WCO_REFRESH_IDLE_COUNT < 2) #error "WCO refresh must be greater than one." #endif #if (REPORT_OVR_REFRESH_IDLE_COUNT < 1) #error "Override refresh must be greater than zero." #endif #if defined(ENABLE_DUAL_AXIS) #if !((DUAL_AXIS_SELECT == X_AXIS) || (DUAL_AXIS_SELECT == Y_AXIS)) #error "Dual axis currently supports X or Y axes only." #endif #if defined(DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE) && defined(VARIABLE_SPINDLE) #error "VARIABLE_SPINDLE not supported with DUAL_AXIS_CNC_SHIELD_CLONE." #endif #if defined(DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE) && defined(DUAL_AXIS_CONFIG_PROTONEER_V3_51) #error "More than one dual axis configuration found. Select one." #endif #if !defined(DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE) && !defined(DUAL_AXIS_CONFIG_PROTONEER_V3_51) #error "No supported dual axis configuration found. Select one." #endif #if defined(COREXY) #error "CORE XY not supported with dual axis feature." #endif #if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) #error "USE_SPINDLE_DIR_AS_ENABLE_PIN not supported with dual axis feature." #endif #if defined(ENABLE_M7) #error "ENABLE_M7 not supported with dual axis feature." #endif #endif // --------------------------------------------------------------------------------------- #endif