diff --git a/g2core/g2core.cppproj b/g2core/g2core.cppproj index 5ce23b64..4e9ca4ea 100644 --- a/g2core/g2core.cppproj +++ b/g2core/g2core.cppproj @@ -21,10 +21,8 @@ exception_table 1 3.5.0 - - - - + SWD + com.atmel.avrdbg.tool.atmelice com.atmel.avrdbg.tool.samice J-Link @@ -70,7 +68,7 @@ - 10000000 + 2000000 SWD @@ -103,8 +101,8 @@ true J41800036434 - 0x284E0A60 - 10000000 + 0x285E0A60 + 2000000 diff --git a/g2core/plan_arc.cpp b/g2core/plan_arc.cpp index 6ee047e3..8fb63422 100644 --- a/g2core/plan_arc.cpp +++ b/g2core/plan_arc.cpp @@ -133,6 +133,15 @@ stat_t cm_arc_feed(const float target[], const bool target_f[], // target en // Some things you might think are errors but are not: // - offset specified for linear axis (i.e. not one of the plane axes). Ignored // - rotary axes are present. Ignored + // - no parameters are specified. This can happen when G2 or G3 motion mode persists but + // a non-arc, non-motion command is entered afterwards, such as M3 or T. Trapped here: + + // Trap if no parameters were specified while in CW or CCW arc motion mode. This is OK + if (!(target_f[AXIS_X] | target_f[AXIS_Y] | target_f[AXIS_Z] | + offset_f[AXIS_X] | offset_f[AXIS_Y] | offset_f[AXIS_Z] | + radius_f | P_word_f)) { + return(STAT_OK); + } // trap missing feed rate if (fp_ZERO(cm.gm.feed_rate)) {