6e3fb6bd13
- NOTE: This commit has largely been untested. - Constant laser power per rate mode has been improved. Altered its implementation to be more responsive and accurate. - Based on LaserWeb dev feedback, only G1, G2, and G3 moves operate with constant laser power mode. Meaning that G0, G38.x, and $J jogging motions operate without it and will keep a constant power output. This was specifically requested as a way to focus the laser by keeping the laser on when not moving. Operationally, this shouldn’t alter how the laser mode operates. - Re-factored parts of the g-code parser and g-code state reports to save a few hundred bytes of flash. What was done makes the code a bit more unreadable (bad), but the flash space was in dire need. So, I’m willing to live with it for now. - Fixed a problem with $G g-code state reports. Showed `M0` program pause during a run state. Now fixed to show nothing during a run state. Also, `M30` program end was shown as `M2`. This was also corrected. - Improved spindle stop override responsiveness by removing the enforced spindle restoring delay. It’s not needed for a feature that is user controlled. - Fixed a bug with G2/3 arcs in inverse time mode. - Updated the interface.md document to make it more clear how WPos: or MPos: can be calculated from WCO:. Some GUI devs have failed to catch this in the documentation.
106 lines
3.0 KiB
C
106 lines
3.0 KiB
C
/*
|
|
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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef grbl_h
|
|
#define grbl_h
|
|
|
|
// Grbl versioning system
|
|
#define GRBL_VERSION "1.1d"
|
|
#define GRBL_VERSION_BUILD "20161104"
|
|
|
|
// Define standard libraries used by Grbl.
|
|
#include <avr/io.h>
|
|
#include <avr/pgmspace.h>
|
|
#include <avr/interrupt.h>
|
|
#include <avr/wdt.h>
|
|
#include <util/delay.h>
|
|
#include <math.h>
|
|
#include <inttypes.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
// Define the Grbl system include files. NOTE: Do not alter organization.
|
|
#include "config.h"
|
|
#include "nuts_bolts.h"
|
|
#include "settings.h"
|
|
#include "system.h"
|
|
#include "defaults.h"
|
|
#include "cpu_map.h"
|
|
#include "planner.h"
|
|
#include "coolant_control.h"
|
|
#include "eeprom.h"
|
|
#include "gcode.h"
|
|
#include "limits.h"
|
|
#include "motion_control.h"
|
|
#include "planner.h"
|
|
#include "print.h"
|
|
#include "probe.h"
|
|
#include "protocol.h"
|
|
#include "report.h"
|
|
#include "serial.h"
|
|
#include "spindle_control.h"
|
|
#include "stepper.h"
|
|
#include "jog.h"
|
|
|
|
// ---------------------------------------------------------------------------------------
|
|
// 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(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(SPINDLE_MINIMUM_PWM)
|
|
#if !(SPINDLE_MINIMUM_PWM > 0)
|
|
#error "SPINDLE_MINIMUM_PWM 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
|
|
// ---------------------------------------------------------------------------------------
|
|
|
|
#endif
|