/* config.h - compile time configuration Part of Grbl Copyright (c) 2011-2013 Sungeun K. Jeon Copyright (c) 2009-2011 Simen Svale Skogsrud 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 . */ // 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