/* config.h - compile time configuration Part of Grbl The MIT License (MIT) GRBL(tm) - Embedded CNC g-code interpreter and motion-controller Copyright (c) 2009-2011 Simen Svale Skogsrud Copyright (c) 2011-2013 Sungeun K. Jeon Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // This file contains compile-time configurations for Grbl's internal system. For the most part, // users will not need to directly modify these, but they are here for specific needs, i.e. // performance tuning or adjusting to non-typical machines. // IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them. #ifndef config_h #define config_h // Default settings. Used when resetting EEPROM. Change to desired name in defaults.h #define DEFAULTS_GENERIC // Serial baud rate #define BAUD_RATE 9600 // Default pin mappings. Grbl officially supports the Arduino Uno only. Other processor types // may exist from user-supplied templates or directly user-defined in pin_map.h #define PIN_MAP_ARDUINO_UNO // Define runtime command special characters. These characters are 'picked-off' directly from the // serial read data stream and are not passed to the grbl line execution parser. Select characters // that do not and must not exist in the streamed g-code program. ASCII control characters may be // used, if they are available per user setup. Also, extended ASCII codes (>127), which are never in // g-code programs, maybe selected for interface programs. // NOTE: If changed, manually update help message in report.c. #define CMD_STATUS_REPORT '?' #define CMD_FEED_HOLD '!' #define CMD_CYCLE_START '~' #define CMD_RESET 0x18 // ctrl-x // The temporal resolution of the acceleration management subsystem. Higher number give smoother // acceleration but may impact performance. // NOTE: Increasing this parameter will help any resolution related issues, especially with machines // requiring very high accelerations and/or very fast feedrates. In general, this will reduce the // error between how the planner plans the motions and how the stepper program actually performs them. // However, at some point, the resolution can be high enough, where the errors related to numerical // round-off can be great enough to cause problems and/or it's too fast for the Arduino. The correct // value for this parameter is machine dependent, so it's advised to set this only as high as needed. // Approximate successful values can range from 30L to 100L or more. #define ACCELERATION_TICKS_PER_SECOND 50L // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end // of the buffer and all stops. This should not be much greater than zero and should only be changed // if unwanted behavior is observed on a user's machine when running at very slow speeds. #define MINIMUM_PLANNER_SPEED 0.0 // (mm/min) // Minimum stepper rate. Sets the absolute minimum stepper rate in the stepper program and never runs // slower than this value, except when sleeping. This parameter overrides the minimum planner speed. // This is primarily used to guarantee that the end of a movement is always reached and not stop to // never reach its target. This parameter should always be greater than zero. #define MINIMUM_STEPS_PER_MINUTE 800 // (steps/min) - Integer value only // Time delay increments performed during a dwell. The default value is set at 50ms, which provides // a maximum time delay of roughly 55 minutes, more than enough for most any application. Increasing // this delay will increase the maximum dwell time linearly, but also reduces the responsiveness of // run-time command executions, like status reports, since these are performed between each dwell // time step. Also, keep in mind that the Arduino delay timer is not very accurate for long delays. #define DWELL_TIME_STEP 50 // Integer (1-255) (milliseconds) // If homing is enabled, homing init lock sets Grbl into an alarm state upon power up. This forces // the user to perform the homing cycle (or override the locks) before doing anything else. This is // mainly a safety feature to remind the user to home, since position is unknown to Grbl. #define HOMING_INIT_LOCK // Comment to disable // The homing cycle seek and feed rates will adjust so all axes independently move at the homing // seek and feed rates regardless of how many axes are in motion simultaneously. If disabled, rates // are point-to-point rates, as done in normal operation. For example in an XY diagonal motion, the // diagonal motion moves at the intended rate, but the individual axes move at 70% speed. This option // just moves them all at 100% speed. #define HOMING_RATE_ADJUST // Comment to disable // Define the homing cycle search patterns with bitmasks. The homing cycle first performs a search // to engage the limit switches. HOMING_SEARCH_CYCLE_x are executed in order starting with suffix 0 // and searches the enabled axes in the bitmask. This allows for users with non-standard cartesian // machines, such as a lathe (x then z), to configure the homing cycle behavior to their needs. // Search cycle 0 is required, but cycles 1 and 2 are both optional and may be commented to disable. // After the search cycle, homing then performs a series of locating about the limit switches to hone // in on machine zero, followed by a pull-off maneuver. HOMING_LOCATE_CYCLE governs these final moves, // and this mask must contain all axes in the search. // NOTE: Later versions may have this installed in settings. #define HOMING_SEARCH_CYCLE_0 (1<10kHz). Please notify Grbl administrators // of your successes or difficulties, as we will monitor this and possibly integrate this as a // standard feature for future releases. However, we suggest to first try our direction delay // hack/solution posted in the Wiki involving inverting the stepper pin mask. // NOTE: Uncomment to enable. The recommended delay must be > 3us and the total step pulse // time, which includes the Grbl settings pulse microseconds, must not exceed 127us. Reported // successful values for certain setups have ranged from 10 to 20us. // #define STEP_PULSE_DELAY 10 // Step pulse delay in microseconds. Default disabled. // Uncomment the following define if you are using hardware that drives high when your limits // are reached. You will need to ensure that you have appropriate pull-down resistors on the // limit switch input pins, or that your hardware drives the pins low when they are open (non- // triggered). // #define LIMIT_SWITCHES_ACTIVE_HIGH // --------------------------------------------------------------------------------------- // TODO: Install compile-time option to send numeric status codes rather than strings. #endif