Parking motion bug fix.

- Parking motion would intermittently complete the queued tool path
upon resuming in certain scenarios. Now fixed.
This commit is contained in:
Sonny Jeon 2015-09-05 13:34:40 -06:00
parent 9575199183
commit 965e337405
5 changed files with 84 additions and 71 deletions

View File

@ -1,3 +1,12 @@
----------------
Date: 2015-08-29
Author: Sonny Jeon
Subject: Optional line number reporting bug fix.
- Fixed a bug where it would not compile when USE_LINE_NUMBERS was
enabled.
---------------- ----------------
Date: 2015-08-27 Date: 2015-08-27
Author: Sonny Jeon Author: Sonny Jeon

View File

@ -23,7 +23,7 @@
// Grbl versioning system // Grbl versioning system
#define GRBL_VERSION "1.0b" #define GRBL_VERSION "1.0b"
#define GRBL_VERSION_BUILD "20150829" #define GRBL_VERSION_BUILD "20150902"
// Define standard libraries used by Grbl. // Define standard libraries used by Grbl.
#include <avr/io.h> #include <avr/io.h>

View File

@ -135,7 +135,6 @@ typedef struct {
uint8_t last_st_block_index; uint8_t last_st_block_index;
float last_steps_remaining; float last_steps_remaining;
float last_step_per_mm; float last_step_per_mm;
float last_req_mm_increment;
float last_dt_remainder; float last_dt_remainder;
#endif #endif
@ -551,12 +550,13 @@ static uint8_t st_next_block_index(uint8_t block_index)
{ {
// Restore step execution data and flags of partially completed block, if necessary. // Restore step execution data and flags of partially completed block, if necessary.
if (prep.recalculate_flag & PREP_FLAG_HOLD_PARTIAL_BLOCK) { if (prep.recalculate_flag & PREP_FLAG_HOLD_PARTIAL_BLOCK) {
st_prep_block = &st_block_buffer[prep.last_st_block_index];
prep.st_block_index = prep.last_st_block_index; prep.st_block_index = prep.last_st_block_index;
prep.steps_remaining = prep.last_steps_remaining; prep.steps_remaining = prep.last_steps_remaining;
prep.dt_remainder = prep.last_dt_remainder; prep.dt_remainder = prep.last_dt_remainder;
prep.step_per_mm = prep.last_step_per_mm; prep.step_per_mm = prep.last_step_per_mm;
st_prep_block = &st_block_buffer[prep.st_block_index];
prep.recalculate_flag = (PREP_FLAG_HOLD_PARTIAL_BLOCK | PREP_FLAG_RECALCULATE); prep.recalculate_flag = (PREP_FLAG_HOLD_PARTIAL_BLOCK | PREP_FLAG_RECALCULATE);
prep.req_mm_increment = REQ_MM_INCREMENT_SCALAR/prep.step_per_mm; // Recompute this value.
} else { } else {
prep.recalculate_flag = false; prep.recalculate_flag = false;
} }
@ -597,9 +597,12 @@ void st_prep_buffer()
// Check if we need to only recompute the velocity profile or load a new block. // Check if we need to only recompute the velocity profile or load a new block.
if (prep.recalculate_flag & PREP_FLAG_RECALCULATE) { if (prep.recalculate_flag & PREP_FLAG_RECALCULATE) {
if (prep.recalculate_flag & PREP_FLAG_PARKING) { prep.recalculate_flag &= ~(PREP_FLAG_RECALCULATE); } if (prep.recalculate_flag & PREP_FLAG_PARKING) { prep.recalculate_flag &= ~(PREP_FLAG_RECALCULATE); }
else { prep.recalculate_flag = false; } else { prep.recalculate_flag = false; }
} else {
#else #else
// Query planner for a queued block // Query planner for a queued block
@ -608,12 +611,13 @@ void st_prep_buffer()
// Check if we need to only recompute the velocity profile or load a new block. // Check if we need to only recompute the velocity profile or load a new block.
if (prep.recalculate_flag & PREP_FLAG_RECALCULATE) { if (prep.recalculate_flag & PREP_FLAG_RECALCULATE) {
prep.recalculate_flag = false; prep.recalculate_flag = false;
#endif
} else { } else {
#endif
// Load the Bresenham stepping data for the block. // Load the Bresenham stepping data for the block.
prep.st_block_index = st_next_block_index(prep.st_block_index); prep.st_block_index = st_next_block_index(prep.st_block_index);