diff --git a/README.md b/README.md index fab0be8..89e4234 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ It has been written to complement grblHAL and has features such as proper keyboa --- -Latest build date is 20220918, see the [changelog](changelog.md) for details. +Latest build date is 20220922, see the [changelog](changelog.md) for details. __NOTE:__ A settings reset will be performed on an update for versions earlier than 20211122. Backup and restore of settings is recommended. __IMPORTANT!__ A new setting has been introduced for ganged axes motors in version 20211121. I have only bench tested this for a couple of drivers, correct function should be verified after updating by those who have more than three motors configured. @@ -84,4 +84,4 @@ List of Supported G-Codes: Some [plugins](https://github.com/grblHAL/plugins) implements additional M-codes. --- -2022-09-18 +2022-09-22 diff --git a/changelog.md b/changelog.md index 289b543..409cf2f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,22 @@ ## grblHAL changelog +Build 20220922: + +Core: + +* Changed signature of [spindle_update_caps()](http://svn.io-engineering.com/grblHAL/html/spindle__control_8h.html#a3170b0136a49e0b30047e00bdf4e812c), third party developers must update _driver.c_ if used. + +* Removed some superfluous code, improved handling of laser mode M4 for jogging and motion complete event. +Bug fixes + expanded step/dir map to 8 axes. + +Drivers: + +* All: Updated for core signature change. + +* STM32F1xx: updated FatFs link to v0.14. + +--- + 20220920: Plugins: diff --git a/gcode.c b/gcode.c index f994e39..b3da2ac 100644 --- a/gcode.c +++ b/gcode.c @@ -2526,7 +2526,7 @@ status_code_t gc_execute_block(char *block) memcpy(&plan_data.spindle, &gc_state.spindle, sizeof(spindle_t)); plan_data.condition.spindle = gc_state.modal.spindle; plan_data.condition.coolant = gc_state.modal.coolant; - plan_data.condition.is_rpm_rate_adjusted = gc_state.is_rpm_rate_adjusted; + plan_data.condition.is_rpm_rate_adjusted = gc_state.is_rpm_rate_adjusted || (gc_state.modal.spindle.ccw && sys.mode == Mode_Laser); if ((status_code_t)(int_value = (uint_fast16_t)mc_jog_execute(&plan_data, &gc_block)) == Status_OK) memcpy(gc_state.position, gc_block.values.xyz, sizeof(gc_state.position)); @@ -2555,7 +2555,7 @@ status_code_t gc_execute_block(char *block) gc_parser_flags.spindle_force_sync = On; } - gc_state.is_rpm_rate_adjusted = gc_state.modal.spindle.ccw && !gc_parser_flags.laser_disable && hal.spindle.cap.variable; + gc_state.is_rpm_rate_adjusted = gc_state.modal.spindle.ccw && !gc_parser_flags.laser_disable; } // [0. Non-specific/common error-checks and miscellaneous setup]: diff --git a/grbl.h b/grbl.h index 3d4825a..b014106 100644 --- a/grbl.h +++ b/grbl.h @@ -34,7 +34,7 @@ #else #define GRBL_VERSION "1.1f" #endif -#define GRBL_BUILD 20220918 +#define GRBL_BUILD 20220922 // The following symbols are set here if not already set by the compiler or in config.h // Do NOT change here! diff --git a/spindle_control.c b/spindle_control.c index 3b79787..7cbf141 100644 --- a/spindle_control.c +++ b/spindle_control.c @@ -121,9 +121,10 @@ spindle_cap_t spindle_get_caps (void) return caps; } -void spindle_update_caps (bool laser_cap) +void spindle_update_caps (spindle_pwm_t *pwm_caps) { - hal.spindle.cap.laser = laser_cap; + hal.spindle.cap.laser = !!pwm_caps && !!hal.spindle.update_pwm; + hal.spindle.pwm_off_value = pwm_caps ? pwm_caps->off_value : 0; sys.mode = settings.mode == Mode_Laser && !hal.spindle.cap.laser ? Mode_Standard : settings.mode; } diff --git a/spindle_control.h b/spindle_control.h index 1afbadc..39f0c64 100644 --- a/spindle_control.h +++ b/spindle_control.h @@ -135,6 +135,7 @@ typedef void (*spindle_pulse_on_ptr)(uint_fast16_t pulse_length); //! Handlers for spindle support. typedef struct { spindle_cap_t cap; //!< Spindle capabilities. + uint_fast16_t pwm_off_value; //!< Value for switching PWM signal off. float rpm_min; //!< Minimum spindle RPM. float rpm_max; //!< Maximum spindle RPM. spindle_config_ptr config; //!< Optional handler for configuring the spindle. @@ -219,7 +220,7 @@ uint8_t spindle_get_count (void); bool spindle_select (spindle_id_t spindle_id); spindle_cap_t spindle_get_caps (void); -void spindle_update_caps (bool laser_cap); +void spindle_update_caps (spindle_pwm_t *pwm_caps); spindle_id_t spindle_get_current (void); #endif diff --git a/stepdir_map.h b/stepdir_map.h index ec4dc9e..36a8ec2 100644 --- a/stepdir_map.h +++ b/stepdir_map.h @@ -9,7 +9,7 @@ Part of grblHAL - Copyright (c) 2021 Terje Io + Copyright (c) 2021-2022 Terje Io Grbl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,7 +36,7 @@ static const uint32_t c_step_outmap[] = { Z_STEP_BIT | X_STEP_BIT, Z_STEP_BIT | Y_STEP_BIT, Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, -#if N_AXIS > 3 + #if N_AXIS > 3 A_STEP_BIT, A_STEP_BIT | X_STEP_BIT, A_STEP_BIT | Y_STEP_BIT, @@ -45,8 +45,8 @@ static const uint32_t c_step_outmap[] = { A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, -#endif -#if N_AXIS > 4 + #endif + #if N_AXIS > 4 B_STEP_BIT, B_STEP_BIT | X_STEP_BIT, B_STEP_BIT | Y_STEP_BIT, @@ -63,12 +63,12 @@ static const uint32_t c_step_outmap[] = { B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, -#endif -#if N_AXIS > 5 + #endif + #if N_AXIS > 5 C_STEP_BIT, C_STEP_BIT | X_STEP_BIT, C_STEP_BIT | Y_STEP_BIT, - C_STEP_BIT | X_STEP_BIT, + C_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, C_STEP_BIT | Z_STEP_BIT, C_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, @@ -81,7 +81,7 @@ static const uint32_t c_step_outmap[] = { C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, - C_STEP_BIT | B_STEP_BIT + C_STEP_BIT | B_STEP_BIT, C_STEP_BIT | B_STEP_BIT | X_STEP_BIT, C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, @@ -97,7 +97,203 @@ static const uint32_t c_step_outmap[] = { C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, -#endif + #endif + #if N_AXIS > 6 + U_STEP_BIT, + U_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | A_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + #endif + #if N_AXIS > 7 + V_STEP_BIT, + V_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT, + V_STEP_BIT | U_STEP_BIT | C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT, + #endif }; static uint32_t step_outmap[sizeof(c_step_outmap) / sizeof(uint32_t)]; @@ -115,7 +311,7 @@ static const uint32_t c_dir_outmap[] = { Z_DIRECTION_BIT | X_DIRECTION_BIT, Z_DIRECTION_BIT | Y_DIRECTION_BIT, Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, -#if N_AXIS > 3 + #if N_AXIS > 3 A_DIRECTION_BIT, A_DIRECTION_BIT | X_DIRECTION_BIT, A_DIRECTION_BIT | Y_DIRECTION_BIT, @@ -124,12 +320,12 @@ static const uint32_t c_dir_outmap[] = { A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, -#endif -#if N_AXIS > 4 + #endif + #if N_AXIS > 4 B_DIRECTION_BIT, B_DIRECTION_BIT | X_DIRECTION_BIT, B_DIRECTION_BIT | Y_DIRECTION_BIT, - B_DIRECTION_BIT | Y_DIRECTION_BIT, X_DIRECTION_BIT, + B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, B_DIRECTION_BIT | Z_DIRECTION_BIT, B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, @@ -142,12 +338,12 @@ static const uint32_t c_dir_outmap[] = { B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, -#endif -#if N_AXIS > 5 + #endif + #if N_AXIS > 5 C_DIRECTION_BIT, C_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | Y_DIRECTION_BIT, - C_DIRECTION_BIT | X_DIRECTION_BIT, + C_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | Z_DIRECTION_BIT, C_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, @@ -160,7 +356,7 @@ static const uint32_t c_dir_outmap[] = { C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, - C_DIRECTION_BIT | B_DIRECTION_BIT + C_DIRECTION_BIT | B_DIRECTION_BIT, C_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, @@ -176,9 +372,206 @@ static const uint32_t c_dir_outmap[] = { C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, -#endif + #endif + #if N_AXIS > 6 + U_DIRECTION_BIT, + U_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + #endif + #if N_AXIS > 7 + V_DIRECTION_BIT, + V_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT, + V_DIRECTION_BIT | U_DIRECTION_BIT | C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT, + #endif }; + static uint32_t dir_outmap[sizeof(c_dir_outmap) / sizeof(uint32_t)]; #endif diff --git a/stepper.c b/stepper.c index 6cc678f..38d3d3c 100644 --- a/stepper.c +++ b/stepper.c @@ -408,13 +408,8 @@ ISR_CODE void ISR_FUNC(stepper_driver_interrupt_handler)(void) st_go_idle(); // Ensure pwm is set properly upon completion of rate-controlled motion. - if (st.exec_block->dynamic_rpm && sys.mode == Mode_Laser) { - #ifndef GRBL_ESP32 - hal.spindle.set_state((spindle_state_t){0}, 0.0f); - #else - hal.spindle.esp32_off(); - #endif - } + if (st.exec_block->dynamic_rpm && sys.mode == Mode_Laser) + hal.spindle.update_pwm(hal.spindle.pwm_off_value); st.exec_block = NULL; system_set_exec_state_flag(EXEC_CYCLE_COMPLETE); // Flag main program for cycle complete