3c9c516a47
- WARNING: Completely untested. Will later when there is time. Settings WILL be overwritten, as there are new settings. - Soft limits installed. Homing must be enabled for soft limits to work correctly. Errors out much like a hard limit, locking out everything and bringing up the alarm mode. Only difference is it forces a feed hold before doing so. Position is not lost. - IMPORTANT: Homing had to be updated so that soft limits work better with less CPU overhead. When homing completes, all axes are assumed to exist in negative space. If your limit switch is other side, the homing cycle with set this axis location to the max travel value, rather than zero. - Update mc_line() to accept an array, rather than individual variables. - Added an mc_auto_cycle_start() function handle this feature. Organization only. -
53 lines
2.0 KiB
C
53 lines
2.0 KiB
C
/*
|
|
motion_control.h - high level interface for issuing motion commands
|
|
Part of Grbl
|
|
|
|
Copyright (c) 2009-2011 Simen Svale Skogsrud
|
|
Copyright (c) 2011-2013 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef motion_control_h
|
|
#define motion_control_h
|
|
|
|
#include <avr/io.h>
|
|
#include "planner.h"
|
|
|
|
// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second
|
|
// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in
|
|
// (1 minute)/feed_rate time.
|
|
void mc_line(float *target, float feed_rate, uint8_t invert_feed_rate);
|
|
|
|
// Execute an arc in offset mode format. position == current xyz, target == target xyz,
|
|
// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is
|
|
// the direction of helical travel, radius == circle radius, isclockwise boolean. Used
|
|
// for vector transformation direction.
|
|
void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8_t axis_1,
|
|
uint8_t axis_linear, float feed_rate, uint8_t invert_feed_rate, float radius, uint8_t isclockwise);
|
|
|
|
// Dwell for a specific number of seconds
|
|
void mc_dwell(float seconds);
|
|
|
|
// Perform homing cycle to locate machine zero. Requires limit switches.
|
|
void mc_go_home();
|
|
|
|
// Performs system reset. If in motion state, kills all motion and sets system alarm.
|
|
void mc_reset();
|
|
|
|
// Executes the auto cycle feature, if enabled.
|
|
void mc_auto_cycle_start();
|
|
|
|
#endif
|