50fbc6e297
WARNING: There are still some bugs to be worked out. Please use caution if you test this firmware. - Feed holds work much better, but there are still some failure conditions that need to be worked out. This is the being worked on currently and a fix is planned to be pushed next. - Homing cycle refactoring: Slight adjustment of the homing cycle to allow for limit pins to be shared by different axes, as long as the shared limit pins are not homed on the same cycle. Also, removed the LOCATE_CYCLE portion of the homing cycle configuration. It was redundant. - Limit pin sharing: (See above). To clear up one or two limit pins for other IO, limit pins can now be shared. For example, the Z-limit can be shared with either X or Y limit pins, because it’s on a separate homing cycle. Hard limit will still work exactly as before. - Spindle pin output fixed. The pins weren’t getting initialized correctly. - Fixed a cycle issue where streaming was working almost like a single block mode. This was caused by a problem with the spindle_run() and coolant_run() commands and issuing an unintended planner buffer sync. - Refactored the cycle_start, feed_hold, and other runtime routines into the runtime command module, where they should be handled here only. These were redundant. - Moved some function calls around into more appropriate source code modules. - Fixed the reporting of spindle state.
57 lines
2.1 KiB
C
57 lines
2.1 KiB
C
/*
|
|
protocol.h - controls Grbl execution protocol and procedures
|
|
Part of Grbl
|
|
|
|
Copyright (c) 2011-2014 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef protocol_h
|
|
#define protocol_h
|
|
|
|
// Line buffer size from the serial input stream to be executed.
|
|
// NOTE: Not a problem except for extreme cases, but the line buffer size can be too small
|
|
// and g-code blocks can get truncated. Officially, the g-code standards support up to 256
|
|
// characters. In future versions, this will be increased, when we know how much extra
|
|
// memory space we can invest into here or we re-write the g-code parser not to have this
|
|
// buffer.
|
|
#ifndef LINE_BUFFER_SIZE
|
|
#define LINE_BUFFER_SIZE 70
|
|
#endif
|
|
|
|
// Starts Grbl main loop. It handles all incoming characters from the serial port and executes
|
|
// them as they complete. It is also responsible for finishing the initialization procedures.
|
|
void protocol_main_loop();
|
|
|
|
// Checks and executes a runtime command at various stop points in main program
|
|
void protocol_execute_runtime();
|
|
|
|
// Notify the stepper subsystem to start executing the g-code program in buffer.
|
|
// void protocol_cycle_start();
|
|
|
|
// Reinitializes the buffer after a feed hold for a resume.
|
|
// void protocol_cycle_reinitialize();
|
|
|
|
// Initiates a feed hold of the running program
|
|
// void protocol_feed_hold();
|
|
|
|
// Executes the auto cycle feature, if enabled.
|
|
void protocol_auto_cycle_start();
|
|
|
|
// Block until all buffered steps are executed
|
|
void protocol_buffer_synchronize();
|
|
|
|
#endif
|