diff --git a/README.md b/README.md index a470ef3..4d14cdf 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ Grbl includes full acceleration management with look ahead. That means the contr - Updated G28 and G30 behavior from NIST to LinuxCNC g-code description. In short, if a intermediate motion is specified, only the axes specified will move to the stored coordinates, not all axes as before. +- **NOTE:** Arduino Mega2560 support has been moved to an active, official Grbl-Mega [project](http://www.github.com/gnea/grbl-Mega/). All new developments here and there will be synced when it makes sense to. + - A few bug fixes and lots of refactoring to make the code more efficient and flexible. diff --git a/doc/log/commit_log_v1.0c.txt b/doc/log/commit_log_v1.0c.txt index 02704bf..eee4324 100644 --- a/doc/log/commit_log_v1.0c.txt +++ b/doc/log/commit_log_v1.0c.txt @@ -1,3 +1,14 @@ +---------------- +Date: 2016-03-19 +Author: Sonny Jeon +Subject: No variable spindle and spindle speed fix. + +- Soft limit errors were stuck in a feed hold without notifying the +user why it was in a hold. When resumed, the soft limit error would +kick in. Issue should be fixed to behave as intended to automatically +hold and issue a soft limit alarm once the machine has come to a stop. + + ---------------- Date: 2016-03-11 Author: Sonny Jeon diff --git a/grbl/config.h b/grbl/config.h index a3d6fd3..5528229 100644 --- a/grbl/config.h +++ b/grbl/config.h @@ -30,16 +30,16 @@ #include "grbl.h" // For Arduino IDE compatibility. -// Default settings. Used when resetting EEPROM. Change to desired name in defaults.h +// Define CPU pin map and default settings. +// NOTE: OEMs can avoid the need to maintain/update the defaults.h and cpu_map.h files and use only +// one configuration file by placing their specific defaults and pin map at the bottom of this file. +// If doing so, simply comment out these two defines and see instructions below. #define DEFAULTS_GENERIC +#define CPU_MAP_ATMEGA328P // Arduino Uno CPU // Serial baud rate #define BAUD_RATE 115200 -// Default cpu mappings. Grbl officially supports the Arduino Uno only. Other processor types -// may exist from user-supplied templates or directly user-defined in cpu_map.h -#define CPU_MAP_ATMEGA328P // Arduino Uno CPU - // Define realtime 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 @@ -151,11 +151,12 @@ // have the same steps per mm internally. // #define COREXY // Default disabled. Uncomment to enable. -// Inverts pin logic of the control command pins. This essentially means when this option is enabled -// you can use normally-closed switches, rather than the default normally-open switches. -// NOTE: If you require individual control pins inverted, keep this macro disabled and simply alter -// the CONTROL_INVERT_MASK definition in cpu_map.h files. -// #define INVERT_ALL_CONTROL_PINS // Default disabled. Uncomment to enable. +// Inverts pin logic of the control command pins based on a mask. This essentially means you can use +// normally-closed switches on the specified pins, rather than the default normally-open switches. +// NOTE: The top option will mask and invert all control pins. The bottom option is an example of +// inverting only two control pins, the safety door and reset. See cpu_map.h for other bit definitions. +// #define INVERT_CONTROL_PIN_MASK CONTROL_MASK // Default disabled. Uncomment to disable. +// #define INVERT_CONTROL_PIN_MASK ((1<. */ -/* The cpu_map.h files serve as a central pin mapping selection file for different processor - types, i.e. AVR 328p or AVR Mega 2560. Each processor has its own pin mapping file. - (i.e. cpu_map_atmega328p.h) Grbl officially supports the Arduino Uno, but the - other supplied pin mappings are supplied by users, so your results may vary. */ +/* The cpu_map.h files serve as a central pin mapping selection file for different + processor types or alternative pin layouts. This version of Grbl officially supports + only the Arduino Mega328p. */ -// NOTE: With new processors, only add the define name and filename to use. #ifndef cpu_map_h #define cpu_map_h #ifdef CPU_MAP_ATMEGA328P // (Arduino Uno) Officially supported by Grbl. - #include "cpu_map/cpu_map_atmega328p.h" -#endif -#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) Working @EliteEng - #include "cpu_map/cpu_map_atmega2560.h" + // Define serial port pins and interrupt vectors. + #define SERIAL_RX USART_RX_vect + #define SERIAL_UDRE USART_UDRE_vect + + // Define step pulse output pins. NOTE: All step bit pins must be on the same port. + #define STEP_DDR DDRD + #define STEP_PORT PORTD + #define X_STEP_BIT 2 // Uno Digital Pin 2 + #define Y_STEP_BIT 3 // Uno Digital Pin 3 + #define Z_STEP_BIT 4 // Uno Digital Pin 4 + #define STEP_MASK ((1<. -*/ - -/* This cpu_map file serves as a central pin mapping settings file for AVR Mega 2560 */ - - -#ifdef GRBL_PLATFORM -#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM -#endif - - -#define GRBL_PLATFORM "Atmega2560" - -// Serial port pins -#define SERIAL_RX USART0_RX_vect -#define SERIAL_UDRE USART0_UDRE_vect - -// Increase Buffers to make use of extra SRAM -//#define RX_BUFFER_SIZE 256 -//#define TX_BUFFER_SIZE 128 -//#define BLOCK_BUFFER_SIZE 36 -//#define LINE_BUFFER_SIZE 100 -//#define SEGMENT_BUFFER_SIZE 10 - -// Define step pulse output pins. NOTE: All step bit pins must be on the same port. -#define STEP_DDR DDRA -#define STEP_PORT PORTA -#define STEP_PIN PINA -#define X_STEP_BIT 2 // MEGA2560 Digital Pin 24 -#define Y_STEP_BIT 3 // MEGA2560 Digital Pin 25 -#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 -#define STEP_MASK ((1<. -*/ - -/* Grbl officially supports the Arduino Uno, but the other supplied pin mappings are - supplied by users, so your results may vary. This cpu_map file serves as a central - pin mapping settings file for AVR 328p used on the Arduino Uno. */ - -#ifdef GRBL_PLATFORM -#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM -#endif - - -#define GRBL_PLATFORM "Atmega328p" - -// Define serial port pins and interrupt vectors. -#define SERIAL_RX USART_RX_vect -#define SERIAL_UDRE USART_UDRE_vect - -// Define step pulse output pins. NOTE: All step bit pins must be on the same port. -#define STEP_DDR DDRD -#define STEP_PORT PORTD -#define X_STEP_BIT 2 // Uno Digital Pin 2 -#define Y_STEP_BIT 3 // Uno Digital Pin 3 -#define Z_STEP_BIT 4 // Uno Digital Pin 4 -#define STEP_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Grbl generic default settings. Should work across different machines. - #define DEFAULT_X_STEPS_PER_MM 250.0 - #define DEFAULT_Y_STEPS_PER_MM 250.0 - #define DEFAULT_Z_STEPS_PER_MM 250.0 - #define DEFAULT_X_MAX_RATE 500.0 // mm/min - #define DEFAULT_Y_MAX_RATE 500.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 0 - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 0 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/grbl/defaults/defaults_oxcnc.h b/grbl/defaults/defaults_oxcnc.h deleted file mode 100644 index ff166dc..0000000 --- a/grbl/defaults/defaults_oxcnc.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - defaults_oxcnc.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - 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 . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Grbl settings for OpenBuilds OX CNC Machine - // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ - #define DEFAULT_X_STEPS_PER_MM 26.670 - #define DEFAULT_Y_STEPS_PER_MM 26.670 - #define DEFAULT_Z_STEPS_PER_MM 50 - #define DEFAULT_X_MAX_RATE 500.0 // mm/min - #define DEFAULT_Y_MAX_RATE 500.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 500.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 750.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 0 - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.02 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 0 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/grbl/defaults/defaults_shapeoko.h b/grbl/defaults/defaults_shapeoko.h deleted file mode 100644 index 2cde237..0000000 --- a/grbl/defaults/defaults_shapeoko.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - defaults_shapeoko.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - 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 . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield with a 24V, 4.2A power supply. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 400 - #define MM_PER_REV_XY (0.08*18*MM_PER_INCH) // 0.08 in belt pitch, 18 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 400 - #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min - #define DEFAULT_X_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield at 28V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 8 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 5000.0 // mm/min - #define DEFAULT_X_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 425.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 465.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, - // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. - #define MICROSTEPS 2 - #define STEPS_PER_REV 200.0 - #define MM_PER_REV (0.050*MM_PER_INCH) // 0.050 inch/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_X_MAX_RATE 635.0 // mm/min (25 ipm) - #define DEFAULT_Y_MAX_RATE 635.0 // mm/min - #define DEFAULT_Z_MAX_RATE 635.0 // mm/min - #define DEFAULT_X_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 225.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 125.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 170.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 2800.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) - // Grbl generic default settings. Should work across different machines. - #define DEFAULT_X_STEPS_PER_MM 1000.0 - #define DEFAULT_Y_STEPS_PER_MM 1000.0 - #define DEFAULT_Z_STEPS_PER_MM 1000.0 - #define DEFAULT_X_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min - #define DEFAULT_X_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 0 - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 0 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/grbl/defaults/defaults_x_carve_1000mm.h b/grbl/defaults/defaults_x_carve_1000mm.h deleted file mode 100644 index dfa29fc..0000000 --- a/grbl/defaults/defaults_x_carve_1000mm.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - defaults_x_carve_1000mm.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - 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 . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 740.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 790.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. - // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. - // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. - #define MICROSTEPS 8 - #define STEPS_PER_REV 200.0 - #define MM_PER_REV 8.0 // 8 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_X_MAX_RATE 6000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 6000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 6000.0 // mm/min - #define DEFAULT_X_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 190.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 180.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 150.0 // mm - #define DEFAULT_SPINDLE_RPM_MAX 10000.0 // rpm - #define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1< diff --git a/grbl/spindle_control.c b/grbl/spindle_control.c index f8ff792..6bd85e0 100644 --- a/grbl/spindle_control.c +++ b/grbl/spindle_control.c @@ -29,19 +29,13 @@ void spindle_init() // Configure variable spindle PWM and enable pin, if requried. On the Uno, PWM and enable are // combined unless configured otherwise. SPINDLE_PWM_DDR |= (1< settings.rpm_max) { rpm = settings.rpm_max; } if (rpm < settings.rpm_min) { rpm = settings.rpm_min; } #ifdef SPINDLE_MINIMUM_PWM - float pwm_gradient = (PWM_MAX_VALUE-SPINDLE_MINIMUM_PWM)/(settings.rpm_max-settings.rpm_min); + float pwm_gradient = (SPINDLE_PWM_MAX_VALUE-SPINDLE_MINIMUM_PWM)/(settings.rpm_max-settings.rpm_min); current_pwm = floor( (rpm-settings.rpm_min)*pwm_gradient + (SPINDLE_MINIMUM_PWM+0.5)); #else - float pwm_gradient = (PWM_MAX_VALUE)/(settings.rpm_max-settings.rpm_min); + float pwm_gradient = (SPINDLE_PWM_MAX_VALUE)/(settings.rpm_max-settings.rpm_min); current_pwm = floor( (rpm-settings.rpm_min)*pwm_gradient + 0.5); #endif } - OCR_REGISTER = current_pwm; // Set PWM output level. - TCCRA_REGISTER |= (1<