diff --git a/.gitignore b/.gitignore index 8b541400..1e09f0dd 100755 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ build/ bin/ *.xcodeproj/project.xcworkspace/xcuserdata/rob.xcuserdatad/UserInterfaceState.xcuserstate .DS_Store -TcfTransactionLog.csv \ No newline at end of file +TcfTransactionLog.csv +TinyG2/TinyG2.elf diff --git a/Extras/.gitignore b/Extras/.gitignore deleted file mode 100644 index 02babe23..00000000 --- a/Extras/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -newlib-1.20.0/ -newlib-1.20.0.tar.gz diff --git a/Reference/.gitignore b/Reference/.gitignore new file mode 100644 index 00000000..4ab513ce --- /dev/null +++ b/Reference/.gitignore @@ -0,0 +1 @@ +newlib* diff --git a/Reference/Makefile b/Reference/Makefile new file mode 100644 index 00000000..b13ee63e --- /dev/null +++ b/Reference/Makefile @@ -0,0 +1,22 @@ +## In order to download and decompress the reference coded *useful* for symbolic debugging, +## Just call "make" from this directory. + +# Program paths +WGET=wget +TAR=tar xzvf +TOUCH=touch + +# Newlib locations +NEWLIB_VERSION=1.20.0 +NEWLIB_URL=ftp://sources.redhat.com/pub/newlib/newlib-$(NEWLIB_VERSION).tar.gz +NEWLIB_DIRECTORY=./newlib-$(NEWLIB_VERSION)/ + + +# Rules +all: $(NEWLIB_DIRECTORY) + +$(NEWLIB_DIRECTORY): | newlib-$(NEWLIB_VERSION).tar.gz + $(TAR) $| + +newlib-$(NEWLIB_VERSION).tar.gz: + $(WGET) $(NEWLIB_URL) \ No newline at end of file diff --git a/TinyG2/TinyG2.cppproj b/TinyG2/TinyG2.cppproj index 30b662f4..87624fc9 100755 --- a/TinyG2/TinyG2.cppproj +++ b/TinyG2/TinyG2.cppproj @@ -1,4 +1,4 @@ - + 2.0 @@ -18,8 +18,7 @@ Native true false - - + exception_table 1 3.5.0 JTAG @@ -30,13 +29,13 @@ 000028014099 127.0.0.1 - 2144 + 1180 False JTAG - 250000 + 0 1000000 150000 false @@ -45,6 +44,7 @@ 0 0 0 + 8500000 @@ -706,6 +706,9 @@ compile + + compile + \ No newline at end of file diff --git a/TinyG2/controller.cpp b/TinyG2/controller.cpp index 7fa73148..241296c1 100755 --- a/TinyG2/controller.cpp +++ b/TinyG2/controller.cpp @@ -9,7 +9,7 @@ * it under the terms of the GNU General Public License, version 2 as published by the * Free Software Foundation. You should have received a copy of the GNU General Public * License, version 2 along with the software. If not, see . - * + * * As a special exception, you may use this file as part of a software library without * restriction. Specifically, if other files instantiate templates or use macros or * inline functions from this file, or you compile this file and link it with other @@ -187,7 +187,7 @@ static status_t _command_dispatch() // printf("printf test2 %d %f...\n", 10, 10.003); status_t status; - + strcpy(cs.in_buf, "$fb"); // read input line or return if not a completed line diff --git a/TinyG2/main.cpp b/TinyG2/main.cpp index 0bf048e8..145b6d70 100755 --- a/TinyG2/main.cpp +++ b/TinyG2/main.cpp @@ -52,7 +52,7 @@ extern void SysTick_Handler( void ) #define DEV_STDERR 0 static void _application_init(void); - + //globals status_t errcode; @@ -60,8 +60,6 @@ status_t errcode; void setup( void ) { - USBDevice.attach(); -// delay(5000); SerialUSB.begin(115200); _application_init(); } @@ -77,7 +75,8 @@ void loop( void ) int main( void ) { init(); -// delay(1); + delay(1); + USBDevice.attach(); setup(); for (;;) { diff --git a/TinyG2/stepper.cpp b/TinyG2/stepper.cpp index 890478d1..80813b9e 100755 --- a/TinyG2/stepper.cpp +++ b/TinyG2/stepper.cpp @@ -426,8 +426,13 @@ void _load_move() // sps.move_type = MOVE_TYPE_ALINE; sps.move_type = true; sps.timer_ticks = 100000; - sps.timer_ticks_X_substeps = 1000; + sps.timer_ticks_X_substeps = 1000000; sps.timer_period = 64000; + + st.m[MOTOR_1].steps = 90000; + st.m[MOTOR_1].counter = -sps.timer_ticks; + st.timer_ticks_X_substeps = sps.timer_ticks_X_substeps; + /* // handle aline loads first (most common case) NB: there are no more lines, only alines // if (sps.move_type == MOVE_TYPE_ALINE) { diff --git a/TinyG2/tinyg2.h b/TinyG2/tinyg2.h index 43f5d7da..b30c4383 100755 --- a/TinyG2/tinyg2.h +++ b/TinyG2/tinyg2.h @@ -1,222 +1,222 @@ -/* - * tinyg2.h - tinyg2 main header - Application GLOBALS - * Part of TinyG2 project - * - * Copyright (c) 2013 Alden S. Hart Jr. - * Copyright (c) 2013 Robert Giseburt - * - * This file ("the software") is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License, version 2 as published by the - * Free Software Foundation. You should have received a copy of the GNU General Public - * License, version 2 along with the software. If not, see . - * - * As a special exception, you may use this file as part of a software library without - * restriction. Specifically, if other files instantiate templates or use macros or - * inline functions from this file, or you compile this file and link it with other - * files to produce an executable, this file does not by itself cause the resulting - * executable to be covered by the GNU General Public License. This exception does not - * however invalidate any other reasons why the executable file might be covered by the - * GNU General Public License. - * - * THE SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY - * 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. - */ -/* Is this code over documented? Possibly. - * We try to follow this (at least we are evolving to it). It's worth a read. - * ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc - */ -#ifndef _TINYG2_H_ -#define _TINYG2_H_ - -// common system includes -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "Arduino.h" - +/* + * tinyg2.h - tinyg2 main header - Application GLOBALS + * Part of TinyG2 project + * + * Copyright (c) 2013 Alden S. Hart Jr. + * Copyright (c) 2013 Robert Giseburt + * + * This file ("the software") is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2 as published by the + * Free Software Foundation. You should have received a copy of the GNU General Public + * License, version 2 along with the software. If not, see . + * + * As a special exception, you may use this file as part of a software library without + * restriction. Specifically, if other files instantiate templates or use macros or + * inline functions from this file, or you compile this file and link it with other + * files to produce an executable, this file does not by itself cause the resulting + * executable to be covered by the GNU General Public License. This exception does not + * however invalidate any other reasons why the executable file might be covered by the + * GNU General Public License. + * + * THE SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY + * 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. + */ +/* Is this code over documented? Possibly. + * We try to follow this (at least we are evolving to it). It's worth a read. + * ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc + */ +#ifndef _TINYG2_H_ +#define _TINYG2_H_ + +// common system includes +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "Arduino.h" + #ifdef __cplusplus extern "C"{ #endif // __cplusplus - -// NOTE: This header requires be included previously - -#define TINYG_FIRMWARE_BUILD 004.12 // _command_dispatch tests after uint8_t conversion -#define TINYG_FIRMWARE_VERSION 0.01 // major version -#define TINYG_HARDWARE_VERSION 0.01 // board revision number (Native Arduino Due) - -#define TINYG2_HARDWARE_VERSION_MAX TINYG2_HARDWARE_VERSION - -/****** DEVELOPMENT SETTINGS ******/ - -//#define __CANNED_STARTUP // run any canned startup moves -//#define __DISABLE_PERSISTENCE // disable EEPROM writes for faster simulation -//#define __SUPPRESS_STARTUP_MESSAGES // what it says -//#define __UNIT_TESTS // master enable for unit tests; uncomment modules in .h files -//#define __DEBUG // complies debug functions found in test.c - -// UNIT_TESTS exist for various modules are can be enabled at the end of their .h files - -/****** OPERATING SETTINGS *******/ - -void tg_setup(void); - -/************************************************************************* - * Help during conversion from char to uint8_t for strings - */ -#define strncpy(d,s,l) (uint8_t *)strncpy((char *)d, (char *)s, l) -#define strpbrk(d,s) (uint8_t* )strpbrk((char *)d, (char *)s) -#define strcpy(d,s) (uint8_t *)strcpy((char *)d, (char *)s) -#define strcat(d,s) (uint8_t *)strcat((char *)d, (char *)s) -#define strstr(d,s) (uint8_t *)strstr((char *)d, (char *)s) -#define strchr(d,s) (uint8_t *)strchr((char *)d, (char)s) -#define strcmp(d,s) strcmp((char *)d, (char *)s) -#define strtod(d,s) strtod((char *)d, (char **)s) -#define strlen(s) strlen((char *)s) - -//#define sprintf(a,b) sprintf(char *)a, (char *)b) - -/************************************************************************* - * TinyG application-specific prototypes, defines and globals - */ -#define MAGICNUM 0x12EF // used for memory integrity assertions - -Motate::pin_number indicator_led_pin_num = 13; -static Motate::OutputPin IndicatorLed; - -#define AXES 6 // number of axes supported in this version -#define MOTORS 4 // number of motors on the board -#define COORDS 6 // number of supported coordinate systems (1-6) -#define PWMS 2 // number of supported PWM channels - -// If you change COORDS you must adjust the entries in cfgArray table in config.c - -/* Axes, motors & PWM channels must be defines (not enums) so #ifdef can be used - * NB: Using defines can have side effects if anythign else in the code uses A, B, X... etc. - * The "side effect safe" min and max routines had this side effect. - * Alternate enum is: enum tgAxes { X=0, Y, Z, A, B, C }; - */ - -#define AXIS_X 0 -#define AXIS_Y 1 -#define AXIS_Z 2 -#define AXIS_A 3 -#define AXIS_B 4 -#define AXIS_C 5 -#define AXIS_U 6 // reserved -#define AXIS_V 7 // reserved -#define AXIS_W 8 // reserved - -#define MOTOR_1 0 // define motor numbers and array indexes -#define MOTOR_2 1 // must be defines. enums don't work -#define MOTOR_3 2 -#define MOTOR_4 3 - -#define PWM_1 0 -#define PWM_2 1 - -/* Error and status codes - * - * Any changes to the ranges also require changing the message strings and - * string array in controller.c - * - * ritorno is a handy way to provide exception returns - * It returns only if an error occurred. (ritorno is Italian for return) - */ -typedef uint8_t status_t; -extern status_t errcode; -#define ritorno(a) if((errcode=a) != STAT_OK) { return(errcode); } - -// OS, communications and low-level status (must align with XIO_xxxx codes in xio.h) -#define STAT_OK 0 // function completed OK -#define STAT_ERROR 1 // generic error return (EPERM) -#define STAT_EAGAIN 2 // function would block here (call again) -#define STAT_NOOP 3 // function had no-operation -#define STAT_COMPLETE 4 // operation is complete -#define STAT_TERMINATE 5 // operation terminated (gracefully) -#define STAT_RESET 6 // operation was hard reset (sig kill) -#define STAT_EOL 7 // function returned end-of-line -#define STAT_EOF 8 // function returned end-of-file -#define STAT_FILE_NOT_OPEN 9 -#define STAT_FILE_SIZE_EXCEEDED 10 -#define STAT_NO_SUCH_DEVICE 11 -#define STAT_BUFFER_EMPTY 12 -#define STAT_BUFFER_FULL 13 -#define STAT_BUFFER_FULL_FATAL 14 -#define STAT_INITIALIZING 15 // initializing - not ready for use -#define STAT_ERROR_16 16 -#define STAT_ERROR_17 17 -#define STAT_ERROR_18 18 -#define STAT_ERROR_19 19 // NOTE: XIO codes align to here - -// Internal errors and startup messages -#define STAT_INTERNAL_ERROR 20 // unrecoverable internal error -#define STAT_INTERNAL_RANGE_ERROR 21 // number range other than by user input -#define STAT_FLOATING_POINT_ERROR 22 // number conversion error -#define STAT_DIVIDE_BY_ZERO 23 -#define STAT_INVALID_ADDRESS 24 -#define STAT_READ_ONLY_ADDRESS 25 -#define STAT_INIT_FAIL 26 -#define STAT_SHUTDOWN 27 -#define STAT_MEMORY_CORRUPTION 28 -#define STAT_ERROR_29 29 -#define STAT_ERROR_30 30 -#define STAT_ERROR_31 31 -#define STAT_ERROR_32 32 -#define STAT_ERROR_33 33 -#define STAT_ERROR_34 34 -#define STAT_ERROR_35 35 -#define STAT_ERROR_36 36 -#define STAT_ERROR_37 37 -#define STAT_ERROR_38 38 -#define STAT_ERROR_39 39 - -// Input errors (400's, if you will) -#define STAT_UNRECOGNIZED_COMMAND 40 // parser didn't recognize the command -#define STAT_EXPECTED_COMMAND_LETTER 41 // malformed line to parser -#define STAT_BAD_NUMBER_FORMAT 42 // number format error -#define STAT_INPUT_EXCEEDS_MAX_LENGTH 43// input string is too long -#define STAT_INPUT_VALUE_TOO_SMALL 44 // input error: value is under minimum -#define STAT_INPUT_VALUE_TOO_LARGE 45 // input error: value is over maximum -#define STAT_INPUT_VALUE_RANGE_ERROR 46 // input error: value is out-of-range -#define STAT_INPUT_VALUE_UNSUPPORTED 47 // input error: value is not supported -#define STAT_JSON_SYNTAX_ERROR 48 // JSON input string is not well formed -#define STAT_JSON_TOO_MANY_PAIRS 49 // JSON input string has too many JSON pairs -#define STAT_JSON_TOO_LONG 50 // JSON output exceeds buffer size -#define STAT_NO_BUFFER_SPACE 51 // Buffer pool is full and cannot perform this operation -#define STAT_ERROR_52 52 -#define STAT_ERROR_53 53 -#define STAT_ERROR_54 54 -#define STAT_ERROR_55 55 -#define STAT_ERROR_56 56 -#define STAT_ERROR_57 57 -#define STAT_ERROR_58 58 -#define STAT_ERROR_59 59 - -// Gcode and machining errors -#define STAT_ZERO_LENGTH_MOVE 60 // move is zero length -#define STAT_GCODE_BLOCK_SKIPPED 61 // block is too short - was skipped -#define STAT_GCODE_INPUT_ERROR 62 // general error for gcode input -#define STAT_GCODE_FEEDRATE_ERROR 63 // move has no feedrate -#define STAT_GCODE_AXIS_WORD_MISSING 64 // command requires at least one axis present -#define STAT_MODAL_GROUP_VIOLATION 65 // gcode modal group error -#define STAT_HOMING_CYCLE_FAILED 66 // homing cycle did not complete -#define STAT_MAX_TRAVEL_EXCEEDED 67 -#define STAT_MAX_SPINDLE_SPEED_EXCEEDED 68 -#define STAT_ARC_SPECIFICATION_ERROR 69 // arc specification error - + +// NOTE: This header requires be included previously + +#define TINYG_FIRMWARE_BUILD 004.12 // _command_dispatch tests after uint8_t conversion +#define TINYG_FIRMWARE_VERSION 0.01 // major version +#define TINYG_HARDWARE_VERSION 0.01 // board revision number (Native Arduino Due) + +#define TINYG2_HARDWARE_VERSION_MAX TINYG2_HARDWARE_VERSION + +/****** DEVELOPMENT SETTINGS ******/ + +//#define __CANNED_STARTUP // run any canned startup moves +//#define __DISABLE_PERSISTENCE // disable EEPROM writes for faster simulation +//#define __SUPPRESS_STARTUP_MESSAGES // what it says +//#define __UNIT_TESTS // master enable for unit tests; uncomment modules in .h files +//#define __DEBUG // complies debug functions found in test.c + +// UNIT_TESTS exist for various modules are can be enabled at the end of their .h files + +/****** OPERATING SETTINGS *******/ + +void tg_setup(void); + +/************************************************************************* + * Help during conversion from char to uint8_t for strings + */ +#define strncpy(d,s,l) (uint8_t *)strncpy((char *)d, (char *)s, l) +#define strpbrk(d,s) (uint8_t* )strpbrk((char *)d, (char *)s) +#define strcpy(d,s) (uint8_t *)strcpy((char *)d, (char *)s) +#define strcat(d,s) (uint8_t *)strcat((char *)d, (char *)s) +#define strstr(d,s) (uint8_t *)strstr((char *)d, (char *)s) +#define strchr(d,s) (uint8_t *)strchr((char *)d, (char)s) +#define strcmp(d,s) strcmp((char *)d, (char *)s) +#define strtod(d,s) strtod((char *)d, (char **)s) +#define strlen(s) strlen((char *)s) + +//#define sprintf(a,b) sprintf(char *)a, (char *)b) + +/************************************************************************* + * TinyG application-specific prototypes, defines and globals + */ +#define MAGICNUM 0x12EF // used for memory integrity assertions + +Motate::pin_number indicator_led_pin_num = 13; +static Motate::OutputPin IndicatorLed; + +#define AXES 6 // number of axes supported in this version +#define MOTORS 4 // number of motors on the board +#define COORDS 6 // number of supported coordinate systems (1-6) +#define PWMS 2 // number of supported PWM channels + +// If you change COORDS you must adjust the entries in cfgArray table in config.c + +/* Axes, motors & PWM channels must be defines (not enums) so #ifdef can be used + * NB: Using defines can have side effects if anythign else in the code uses A, B, X... etc. + * The "side effect safe" min and max routines had this side effect. + * Alternate enum is: enum tgAxes { X=0, Y, Z, A, B, C }; + */ + +#define AXIS_X 0 +#define AXIS_Y 1 +#define AXIS_Z 2 +#define AXIS_A 3 +#define AXIS_B 4 +#define AXIS_C 5 +#define AXIS_U 6 // reserved +#define AXIS_V 7 // reserved +#define AXIS_W 8 // reserved + +#define MOTOR_1 0 // define motor numbers and array indexes +#define MOTOR_2 1 // must be defines. enums don't work +#define MOTOR_3 2 +#define MOTOR_4 3 + +#define PWM_1 0 +#define PWM_2 1 + +/* Error and status codes + * + * Any changes to the ranges also require changing the message strings and + * string array in controller.c + * + * ritorno is a handy way to provide exception returns + * It returns only if an error occurred. (ritorno is Italian for return) + */ + typedef uint8_t status_t; +extern status_t errcode; +#define ritorno(a) if((errcode=a) != STAT_OK) { return(errcode); } + +// OS, communications and low-level status (must align with XIO_xxxx codes in xio.h) +#define STAT_OK 0 // function completed OK +#define STAT_ERROR 1 // generic error return (EPERM) +#define STAT_EAGAIN 2 // function would block here (call again) +#define STAT_NOOP 3 // function had no-operation +#define STAT_COMPLETE 4 // operation is complete +#define STAT_TERMINATE 5 // operation terminated (gracefully) +#define STAT_RESET 6 // operation was hard reset (sig kill) +#define STAT_EOL 7 // function returned end-of-line +#define STAT_EOF 8 // function returned end-of-file +#define STAT_FILE_NOT_OPEN 9 +#define STAT_FILE_SIZE_EXCEEDED 10 +#define STAT_NO_SUCH_DEVICE 11 +#define STAT_BUFFER_EMPTY 12 +#define STAT_BUFFER_FULL 13 +#define STAT_BUFFER_FULL_FATAL 14 +#define STAT_INITIALIZING 15 // initializing - not ready for use +#define STAT_ERROR_16 16 +#define STAT_ERROR_17 17 +#define STAT_ERROR_18 18 +#define STAT_ERROR_19 19 // NOTE: XIO codes align to here + +// Internal errors and startup messages +#define STAT_INTERNAL_ERROR 20 // unrecoverable internal error +#define STAT_INTERNAL_RANGE_ERROR 21 // number range other than by user input +#define STAT_FLOATING_POINT_ERROR 22 // number conversion error +#define STAT_DIVIDE_BY_ZERO 23 +#define STAT_INVALID_ADDRESS 24 +#define STAT_READ_ONLY_ADDRESS 25 +#define STAT_INIT_FAIL 26 +#define STAT_SHUTDOWN 27 +#define STAT_MEMORY_CORRUPTION 28 +#define STAT_ERROR_29 29 +#define STAT_ERROR_30 30 +#define STAT_ERROR_31 31 +#define STAT_ERROR_32 32 +#define STAT_ERROR_33 33 +#define STAT_ERROR_34 34 +#define STAT_ERROR_35 35 +#define STAT_ERROR_36 36 +#define STAT_ERROR_37 37 +#define STAT_ERROR_38 38 +#define STAT_ERROR_39 39 + +// Input errors (400's, if you will) +#define STAT_UNRECOGNIZED_COMMAND 40 // parser didn't recognize the command +#define STAT_EXPECTED_COMMAND_LETTER 41 // malformed line to parser +#define STAT_BAD_NUMBER_FORMAT 42 // number format error +#define STAT_INPUT_EXCEEDS_MAX_LENGTH 43// input string is too long +#define STAT_INPUT_VALUE_TOO_SMALL 44 // input error: value is under minimum +#define STAT_INPUT_VALUE_TOO_LARGE 45 // input error: value is over maximum +#define STAT_INPUT_VALUE_RANGE_ERROR 46 // input error: value is out-of-range +#define STAT_INPUT_VALUE_UNSUPPORTED 47 // input error: value is not supported +#define STAT_JSON_SYNTAX_ERROR 48 // JSON input string is not well formed +#define STAT_JSON_TOO_MANY_PAIRS 49 // JSON input string has too many JSON pairs +#define STAT_JSON_TOO_LONG 50 // JSON output exceeds buffer size +#define STAT_NO_BUFFER_SPACE 51 // Buffer pool is full and cannot perform this operation +#define STAT_ERROR_52 52 +#define STAT_ERROR_53 53 +#define STAT_ERROR_54 54 +#define STAT_ERROR_55 55 +#define STAT_ERROR_56 56 +#define STAT_ERROR_57 57 +#define STAT_ERROR_58 58 +#define STAT_ERROR_59 59 + +// Gcode and machining errors +#define STAT_ZERO_LENGTH_MOVE 60 // move is zero length +#define STAT_GCODE_BLOCK_SKIPPED 61 // block is too short - was skipped +#define STAT_GCODE_INPUT_ERROR 62 // general error for gcode input +#define STAT_GCODE_FEEDRATE_ERROR 63 // move has no feedrate +#define STAT_GCODE_AXIS_WORD_MISSING 64 // command requires at least one axis present +#define STAT_MODAL_GROUP_VIOLATION 65 // gcode modal group error +#define STAT_HOMING_CYCLE_FAILED 66 // homing cycle did not complete +#define STAT_MAX_TRAVEL_EXCEEDED 67 +#define STAT_MAX_SPINDLE_SPEED_EXCEEDED 68 +#define STAT_ARC_SPECIFICATION_ERROR 69 // arc specification error + #ifdef __cplusplus } #endif // __cplusplus - -#endif // _TINYG2_H_ + +#endif // _TINYG2_H_ diff --git a/TinyG2/xio.h b/TinyG2/xio.h index 263297df..1f7022a4 100755 --- a/TinyG2/xio.h +++ b/TinyG2/xio.h @@ -147,4 +147,4 @@ Binary Oct Dec Hex Glyph 111 1100 174 124 7C | 111 1101 175 125 7D } 111 1110 176 126 7E ~ -*/ \ No newline at end of file +*/