v1.1f. Parking override control. Spindle enable pin option.
[ver] v1.1f update due to tweaks to interface from new parking override control. [new] Parking motion override control via new `M56 P0` and `M56 P1` command, which disables and enables the parking motion, respectively. Requires ENABLE_PARKING_OVERRIDE_CONTROL and PARKING_ENABLE enabled in config.h. Primarily for OEMs. [new] `M56` appears in the $G report when enabled. [new] Five new build info identification letters. Some were missing and a couple are new. Updated the CSV and documentation to reflect these new items. [new] Spindle enable pin configuration option to alter its behavior based on how certain lasers work. By default, Grbl treats the enable pin separately and leaves it on when S is 0. The new option turns the enable pin on and off with S>0 and S=0. This only is in effect when a user enables the USE_SPINDLE_DIR_AS_ENABLE_PIN option. [fix] M4 is now allowed to work when USE_SPINDLE_DIR_AS_ENABLE_PIN is enabled. Previously this was blocked and was problematic for laser folks using M4. [fix] Properly declared system variables as extern. Not sure how that went unnoticed or why it worked up until now but it has. [fix] EXTREMELY RARE. When AMASS is intentionally disabled and sent a motion command that is _one step_ in length, Grbl would not actuate the step due to numerical round-off. Applied a fix to prevent the round-off issue. [fix] Added a compile-time check for AMASS settings to make sure that the numerical round-off issue doesn’t effect it. This would only happen if someone set AMASS max levels to zero. It does not effect AMASS with its current defaults. [fix] Wrapped the mc_parking_motion() function in an ifdef for porting purposes. [fix] Fixed an issue when in inverse time mode and G0’s would require a F word. This was not correct. [fix] Added a note in the defaults.h file that MAX_TRAVEL values must be positive. Some users were setting this negative and it was causing issues.
This commit is contained in:
parent
67ab9280d9
commit
e455764079
19 changed files with 259 additions and 102 deletions
|
|
@ -313,29 +313,42 @@ uint8_t mc_probe_cycle(float *target, plan_line_data_t *pl_data, uint8_t parser_
|
|||
|
||||
// Plans and executes the single special motion case for parking. Independent of main planner buffer.
|
||||
// NOTE: Uses the always free planner ring buffer head to store motion parameters for execution.
|
||||
void mc_parking_motion(float *parking_target, plan_line_data_t *pl_data)
|
||||
{
|
||||
if (sys.abort) { return; } // Block during abort.
|
||||
#ifdef PARKING_ENABLE
|
||||
void mc_parking_motion(float *parking_target, plan_line_data_t *pl_data)
|
||||
{
|
||||
if (sys.abort) { return; } // Block during abort.
|
||||
|
||||
uint8_t plan_status = plan_buffer_line(parking_target, pl_data);
|
||||
uint8_t plan_status = plan_buffer_line(parking_target, pl_data);
|
||||
|
||||
if (plan_status) {
|
||||
bit_true(sys.step_control, STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
bit_false(sys.step_control, STEP_CONTROL_END_MOTION); // Allow parking motion to execute, if feed hold is active.
|
||||
st_parking_setup_buffer(); // Setup step segment buffer for special parking motion case
|
||||
st_prep_buffer();
|
||||
st_wake_up();
|
||||
do {
|
||||
protocol_exec_rt_system();
|
||||
if (sys.abort) { return; }
|
||||
} while (sys.step_control & STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
st_parking_restore_buffer(); // Restore step segment buffer to normal run state.
|
||||
} else {
|
||||
bit_false(sys.step_control, STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
protocol_exec_rt_system();
|
||||
}
|
||||
|
||||
if (plan_status) {
|
||||
bit_true(sys.step_control, STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
bit_false(sys.step_control, STEP_CONTROL_END_MOTION); // Allow parking motion to execute, if feed hold is active.
|
||||
st_parking_setup_buffer(); // Setup step segment buffer for special parking motion case
|
||||
st_prep_buffer();
|
||||
st_wake_up();
|
||||
do {
|
||||
protocol_exec_rt_system();
|
||||
if (sys.abort) { return; }
|
||||
} while (sys.step_control & STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
st_parking_restore_buffer(); // Restore step segment buffer to normal run state.
|
||||
} else {
|
||||
bit_false(sys.step_control, STEP_CONTROL_EXECUTE_SYS_MOTION);
|
||||
protocol_exec_rt_system();
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#ifdef ENABLE_PARKING_OVERRIDE_CONTROL
|
||||
void mc_override_ctrl_update(uint8_t override_state)
|
||||
{
|
||||
// Finish all queued commands before altering override control state
|
||||
protocol_buffer_synchronize();
|
||||
if (sys.abort) { return; }
|
||||
sys.override_ctrl = override_state;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// Method to ready the system to reset by setting the realtime reset command and killing any
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue