mirror of
https://github.com/bdring/Grbl_Esp32.git
synced 2025-08-31 18:11:48 +02:00
Homing cycle settings (#613)
* Initial Tests Complete * Update Grbl.h * Update variables Co-authored-by: Mitch Bradley <wmb@firmworks.com>
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
// Grbl versioning system
|
// Grbl versioning system
|
||||||
|
|
||||||
const char* const GRBL_VERSION = "1.3a";
|
const char* const GRBL_VERSION = "1.3a";
|
||||||
const char* const GRBL_VERSION_BUILD = "20200919";
|
const char* const GRBL_VERSION_BUILD = "20200924";
|
||||||
|
|
||||||
//#include <sdkconfig.h>
|
//#include <sdkconfig.h>
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
@@ -118,7 +118,7 @@ void mc_arc(float* target,
|
|||||||
#ifdef USE_KINEMATICS
|
#ifdef USE_KINEMATICS
|
||||||
float previous_position[MAX_N_AXIS];
|
float previous_position[MAX_N_AXIS];
|
||||||
uint16_t n;
|
uint16_t n;
|
||||||
auto n_axis = number_axis->get();
|
auto n_axis = number_axis->get();
|
||||||
for (n = 0; n < n_axis; n++) {
|
for (n = 0; n < n_axis; n++) {
|
||||||
previous_position[n] = position[n];
|
previous_position[n] = position[n];
|
||||||
}
|
}
|
||||||
@@ -313,59 +313,24 @@ void mc_homing_cycle(uint8_t cycle_mask) {
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
// Search to engage all axes limit switches at faster homing seek rate.
|
for (int cycle = 0; cycle < MAX_N_AXIS; cycle++) {
|
||||||
if (!axis_is_squared(HOMING_CYCLE_0)) {
|
auto homing_mask = homing_cycle[cycle]->get();
|
||||||
limits_go_home(HOMING_CYCLE_0); // Homing cycle 0
|
if (homing_mask) { // if there are some axes in this cycle
|
||||||
} else {
|
if (!axis_is_squared(homing_mask)) {
|
||||||
ganged_mode = SquaringMode::Dual;
|
limits_go_home(homing_mask); // Homing cycle 0
|
||||||
n_homing_locate_cycle = 0; // don't do a second touch cycle
|
} else {
|
||||||
limits_go_home(HOMING_CYCLE_0);
|
ganged_mode = SquaringMode::Dual;
|
||||||
ganged_mode = SquaringMode::A;
|
n_homing_locate_cycle = 0; // don't do a second touch cycle
|
||||||
n_homing_locate_cycle = NHomingLocateCycle; // restore to default value
|
limits_go_home(homing_mask);
|
||||||
limits_go_home(HOMING_CYCLE_0);
|
ganged_mode = SquaringMode::A;
|
||||||
ganged_mode = SquaringMode::B;
|
n_homing_locate_cycle = NHomingLocateCycle; // restore to default value
|
||||||
limits_go_home(HOMING_CYCLE_0);
|
limits_go_home(homing_mask);
|
||||||
ganged_mode = SquaringMode::Dual; // always return to dual
|
ganged_mode = SquaringMode::B;
|
||||||
|
limits_go_home(homing_mask);
|
||||||
|
ganged_mode = SquaringMode::Dual; // always return to dual
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifdef HOMING_CYCLE_1
|
|
||||||
if (!axis_is_squared(HOMING_CYCLE_1)) {
|
|
||||||
limits_go_home(HOMING_CYCLE_1);
|
|
||||||
} else {
|
|
||||||
ganged_mode = SquaringMode::Dual;
|
|
||||||
n_homing_locate_cycle = 0; // don't do a second touch cycle
|
|
||||||
limits_go_home(HOMING_CYCLE_1);
|
|
||||||
ganged_mode = SquaringMode::A;
|
|
||||||
n_homing_locate_cycle = NHomingLocateCycle; // restore to default value
|
|
||||||
limits_go_home(HOMING_CYCLE_1);
|
|
||||||
ganged_mode = SquaringMode::B;
|
|
||||||
limits_go_home(HOMING_CYCLE_1);
|
|
||||||
ganged_mode = SquaringMode::Dual; // always return to dual
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HOMING_CYCLE_2
|
|
||||||
if (!axis_is_squared(HOMING_CYCLE_2)) {
|
|
||||||
limits_go_home(HOMING_CYCLE_2);
|
|
||||||
} else {
|
|
||||||
ganged_mode = SquaringMode::Dual;
|
|
||||||
n_homing_locate_cycle = 0; // don't do a second touch cycle
|
|
||||||
limits_go_home(HOMING_CYCLE_2);
|
|
||||||
ganged_mode = SquaringMode::A;
|
|
||||||
n_homing_locate_cycle = NHomingLocateCycle; // restore to default value
|
|
||||||
limits_go_home(HOMING_CYCLE_2);
|
|
||||||
ganged_mode = SquaringMode::B;
|
|
||||||
limits_go_home(HOMING_CYCLE_2);
|
|
||||||
ganged_mode = SquaringMode::Dual; // always return to dual
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef HOMING_CYCLE_3
|
|
||||||
limits_go_home(HOMING_CYCLE_3); // Homing cycle 3
|
|
||||||
#endif
|
|
||||||
#ifdef HOMING_CYCLE_4
|
|
||||||
limits_go_home(HOMING_CYCLE_4); // Homing cycle 4
|
|
||||||
#endif
|
|
||||||
#ifdef HOMING_CYCLE_5
|
|
||||||
limits_go_home(HOMING_CYCLE_5); // Homing cycle 5
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
protocol_execute_realtime(); // Check for reset and set system abort.
|
protocol_execute_realtime(); // Check for reset and set system abort.
|
||||||
if (sys.abort) {
|
if (sys.abort) {
|
||||||
@@ -508,8 +473,8 @@ void mc_reset() {
|
|||||||
sys_io_control(0xFF, LOW, false);
|
sys_io_control(0xFF, LOW, false);
|
||||||
sys_pwm_control(0xFF, 0, false);
|
sys_pwm_control(0xFF, 0, false);
|
||||||
#ifdef ENABLE_SD_CARD
|
#ifdef ENABLE_SD_CARD
|
||||||
// do we need to stop a running SD job?
|
// do we need to stop a running SD job?
|
||||||
if (get_sd_state(false) == SDCARD_BUSY_PRINTING) {
|
if (get_sd_state(false) == SDCARD_BUSY_PRINTING) {
|
||||||
//Report print stopped
|
//Report print stopped
|
||||||
report_feedback_message(Message::SdFileQuit);
|
report_feedback_message(Message::SdFileQuit);
|
||||||
closeFile();
|
closeFile();
|
||||||
|
@@ -39,6 +39,7 @@ FloatSetting* homing_feed_rate;
|
|||||||
FloatSetting* homing_seek_rate;
|
FloatSetting* homing_seek_rate;
|
||||||
FloatSetting* homing_debounce;
|
FloatSetting* homing_debounce;
|
||||||
FloatSetting* homing_pulloff;
|
FloatSetting* homing_pulloff;
|
||||||
|
AxisMaskSetting* homing_cycle[MAX_N_AXIS];
|
||||||
FloatSetting* spindle_pwm_freq;
|
FloatSetting* spindle_pwm_freq;
|
||||||
FloatSetting* rpm_max;
|
FloatSetting* rpm_max;
|
||||||
FloatSetting* rpm_min;
|
FloatSetting* rpm_min;
|
||||||
@@ -344,4 +345,10 @@ void make_settings() {
|
|||||||
pulse_microseconds = new IntSetting(GRBL, WG, "0", "Stepper/Pulse", DEFAULT_STEP_PULSE_MICROSECONDS, 3, 1000);
|
pulse_microseconds = new IntSetting(GRBL, WG, "0", "Stepper/Pulse", DEFAULT_STEP_PULSE_MICROSECONDS, 3, 1000);
|
||||||
spindle_type = new EnumSetting(NULL, EXTENDED, WG, NULL, "Spindle/Type", static_cast<int8_t>(SPINDLE_TYPE), &spindleTypes);
|
spindle_type = new EnumSetting(NULL, EXTENDED, WG, NULL, "Spindle/Type", static_cast<int8_t>(SPINDLE_TYPE), &spindleTypes);
|
||||||
stallguard_debug_mask = new AxisMaskSetting(EXTENDED, WG, NULL, "Report/StallGuard", 0, checkStallguardDebugMask);
|
stallguard_debug_mask = new AxisMaskSetting(EXTENDED, WG, NULL, "Report/StallGuard", 0, checkStallguardDebugMask);
|
||||||
|
|
||||||
|
const char* homing_names[] = { "Homing/Cycle0", "Homing/Cycle1", "Homing/Cycle2",
|
||||||
|
"Homing/Cycle3", "Homing/Cycle4", "Homing/Cycle5" };
|
||||||
|
for (uint8_t i = 0; i < MAX_N_AXIS; i++) {
|
||||||
|
homing_cycle[i] = new AxisMaskSetting(EXTENDED, WG, NULL, homing_names[i], 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,6 +23,7 @@ extern AxisMaskSetting* step_invert_mask;
|
|||||||
extern AxisMaskSetting* dir_invert_mask;
|
extern AxisMaskSetting* dir_invert_mask;
|
||||||
extern AxisMaskSetting* homing_dir_mask;
|
extern AxisMaskSetting* homing_dir_mask;
|
||||||
extern AxisMaskSetting* homing_squared_axes;
|
extern AxisMaskSetting* homing_squared_axes;
|
||||||
|
extern AxisMaskSetting* homing_cycle[MAX_N_AXIS];
|
||||||
|
|
||||||
extern FlagSetting* step_enable_invert;
|
extern FlagSetting* step_enable_invert;
|
||||||
extern FlagSetting* limit_invert;
|
extern FlagSetting* limit_invert;
|
||||||
|
Reference in New Issue
Block a user