diff --git a/ecmc_plugin_grbl/ecmcGrbl.cpp b/ecmc_plugin_grbl/ecmcGrbl.cpp index 35f3e49..c651e55 100644 --- a/ecmc_plugin_grbl/ecmcGrbl.cpp +++ b/ecmc_plugin_grbl/ecmcGrbl.cpp @@ -383,10 +383,10 @@ void ecmcGrbl::grblRTexecute() { autoEnableAtStart(); - double sampleRateMs =.0; + double sampleRateMs =0.0; if(grblInitDone_ && autoEnableExecuted_) { - while(timeToNextExeMs_ < exeSampleTimeMs_) { + while(timeToNextExeMs_ < exeSampleTimeMs_ && sampleRateMs >= 0) { sampleRateMs=ecmc_grbl_main_rt_thread(); timeToNextExeMs_ = timeToNextExeMs_ + sampleRateMs; } diff --git a/grbl/grbl_stepper.c b/grbl/grbl_stepper.c index d88c456..d7ddf7c 100644 --- a/grbl/grbl_stepper.c +++ b/grbl/grbl_stepper.c @@ -373,7 +373,7 @@ double ecmc_grbl_main_rt_thread() { //printf("%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__); - if (busy || !stepperInterruptEnable) { return 0.0; } // The busy-flag is used to avoid reentering this interrupt + if (busy || !stepperInterruptEnable) { return -1.0; } // The busy-flag is used to avoid reentering this interrupt // Set the direction pins a couple of nanoseconds before we step the steppers //DIRECTION_PORT = (DIRECTION_PORT & ~DIRECTION_MASK) | (st.dir_outbits & DIRECTION_MASK); @@ -464,7 +464,7 @@ double ecmc_grbl_main_rt_thread() if (st.exec_block->is_pwm_rate_adjusted) { spindle_set_speed(SPINDLE_PWM_OFF_VALUE); } #endif system_set_exec_state_flag(EXEC_CYCLE_STOP); // Flag main program for cycle end - return 0.0; // Nothing to do but exit. + return -1.0; // Nothing to do but exit. } } @@ -541,7 +541,7 @@ double ecmc_grbl_main_rt_thread() busy = false; if(!st.exec_segment) { - return 0.0; + return -1.0; } return st.exec_segment->ecmc_interrupt_time_ms; } diff --git a/iocsh/test.script b/iocsh/test.script index 748bbe3..f3ad6e2 100644 --- a/iocsh/test.script +++ b/iocsh/test.script @@ -63,16 +63,16 @@ ${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=0,FILE=${ECMC_PLUGIN_FILN epicsEnvUnset(ECMC_PLUGIN_FILNAME) epicsEnvUnset(ECMC_PLUGIN_CONFIG) -ecmcGrblAddCommand("G1X20Y20F300"); +ecmcGrblAddCommand("G1X20Y20F180"); ecmcGrblAddCommand("G4P1"); ecmcGrblAddCommand("G2X0Y0R20"); ecmcGrblAddCommand("G0X10Y10"); ecmcGrblAddCommand("G4P1"); -ecmcGrblAddCommand("G1X10Y0F200"); +ecmcGrblAddCommand("G1X10Y0F360"); ecmcGrblAddCommand("G4P1"); -ecmcGrblAddCommand("G1X50Y50F300"); +ecmcGrblAddCommand("G1X50Y50F180"); ecmcGrblAddCommand("G4P1"); -ecmcGrblAddCommand("G1X0Y0F180"); +ecmcGrblAddCommand("G1X0Y0F360"); # #ecmcGrblAddCommand("$"); #