diff --git a/config.h b/config.h index e6ab7ac..910b490 100755 --- a/config.h +++ b/config.h @@ -58,14 +58,13 @@ #define COOLANT_FLOOD_PORT PORTC #define COOLANT_FLOOD_BIT 0 // Uno Analog Pin 0 -#define ENABLE_M7 0 // DISABLED BY DEFAULT: To enable, change to '1' and recompile. -#if ENABLE_M7 +// #define ENABLE_M7 // Mist coolant disabled by default. Uncomment to enable. +#ifdef ENABLE_M7 #define COOLANT_MIST_DDR DDRC #define COOLANT_MIST_PORT PORTC #define COOLANT_MIST_BIT 1 // Uno Analog Pin 1 #endif - // Define runtime command special characters. These characters are 'picked-off' directly from the // serial read data stream and are not passed to the grbl line execution parser. Select characters // that do not and must not exist in the streamed g-code program. ASCII control characters may be @@ -87,7 +86,7 @@ // entering g-code into grbl, i.e. locating part zero or simple manual machining. If the axes drift, // grbl has no way to know this has happened, since stepper motors are open-loop control. Depending // on the machine, this parameter may need to be larger or smaller than the default time. -// NOTE: If set to zero, the delay will not be compiled. +// NOTE: If the define commented, the delay will not be compiled. #define STEPPER_IDLE_LOCK_TIME 25 // (milliseconds) - Integer > 0 // The temporal resolution of the acceleration management subsystem. Higher number give smoother @@ -137,7 +136,7 @@ // As well as, older FTDI FT232RL-based Arduinos(Duemilanove) are known to work with standard // terminal programs since their firmware correctly manage these XON/XOFF characters. In any // case, please report any successes to grbl administrators! -#define ENABLE_XONXOFF 0 // Boolean. Default disabled. +// #define ENABLE_XONXOFF // Default disabled. Uncomment to enable. // Creates a delay between the direction pin setting and corresponding step pulse by creating // another interrupt (Timer2 compare) to manage it. The main Grbl interrupt (Timer1 compare) @@ -151,9 +150,9 @@ // of your successes or difficulties, as we will monitor this and possibly integrate this as a // standard feature for future releases. However, we suggest to first try our direction delay // hack/solution posted in the Wiki involving inverting the stepper pin mask. -// NOTE: If set greater than zero, step pulse delay will be compiled and enabled. Also, the -// total delay added with the Grbl settings pulse microseconds must not exceed 127 ms. -#define STEP_PULSE_DELAY 0 // Step pulse delay in microseconds. Default disabled. +// NOTE: Uncomment to enable. The recommended delay should be > 3us but not exceed a total +// time of 127us when added with the Grbl settings pulse microsecond. +// #define STEP_PULSE_DELAY 5 // Step pulse delay in microseconds. Default disabled. // --------------------------------------------------------------------------------------- diff --git a/coolant_control.c b/coolant_control.c index b3e9984..8abd674 100644 --- a/coolant_control.c +++ b/coolant_control.c @@ -39,7 +39,7 @@ void coolant_init() void coolant_stop() { - #if ENABLE_M7 + #ifdef ENABLE_M7 COOLANT_MIST_PORT &= ~(1 << COOLANT_MIST_BIT); #endif COOLANT_FLOOD_PORT &= ~(1 << COOLANT_FLOOD_BIT); @@ -53,7 +53,7 @@ void coolant_run(uint8_t mode) plan_synchronize(); // Ensure coolant turns on when specified in program. if (mode == COOLANT_FLOOD_ENABLE) { COOLANT_FLOOD_PORT |= (1 << COOLANT_FLOOD_BIT); - #if ENABLE_M7 + #ifdef ENABLE_M7 } else if (mode == COOLANT_MIST_ENABLE) { COOLANT_MIST_PORT |= (1 << COOLANT_MIST_BIT); #endif diff --git a/gcode.c b/gcode.c index 0bcab95..f9d46fc 100755 --- a/gcode.c +++ b/gcode.c @@ -216,7 +216,7 @@ uint8_t gc_execute_line(char *line) case 3: gc.spindle_direction = 1; break; case 4: gc.spindle_direction = -1; break; case 5: gc.spindle_direction = 0; break; - #if ENABLE_M7 + #ifdef ENABLE_M7 case 7: gc.coolant_mode = COOLANT_MIST_ENABLE; break; #endif case 8: gc.coolant_mode = COOLANT_FLOOD_ENABLE; break; @@ -578,16 +578,16 @@ static int next_statement(char *letter, double *double_ptr, char *line, uint8_t - Evaluation of expressions - Variables - Multiple home locations - - Multiple coordinate systems (Up to 6 may be added via config.h) - Probing - Override control - Tool changes - + + (*) Indicates optional parameter, enabled through config.h and re-compile group 0 = {G92.2, G92.3} (Non modal: Cancel and re-enable G92 offsets) group 1 = {G38.2, G81 - G89} (Motion modes: straight probe, canned cycles) group 6 = {M6} (Tool change) - group 8 = {M7} coolant (M7 mist may be enabled via config.h) + group 8 = {*M7} enable mist coolant group 9 = {M48, M49} enable/disable feed and speed override switches - group 12 = {G55, G56, G57, G58, G59, G59.1, G59.2, G59.3} coordinate system selection + group 12 = {*G55, *G56, *G57, *G58, *G59, G59.1, G59.2, G59.3} coordinate system selection group 13 = {G61, G61.1, G64} path control mode */ diff --git a/stepper.c b/stepper.c index 5ba9eda..e4534ed 100755 --- a/stepper.c +++ b/stepper.c @@ -91,7 +91,7 @@ static void st_wake_up() // Initialize stepper output bits out_bits = (0) ^ (settings.invert_mask); // Initialize step pulse timing from settings. Here to ensure updating after re-writing. - #if STEP_PULSE_DELAY > 0 + #ifdef STEP_PULSE_DELAY // Set total step pulse time after direction pin set. Ad hoc computation from oscilloscope. step_pulse_time = -(((settings.pulse_microseconds+STEP_PULSE_DELAY-2)*TICKS_PER_MICROSECOND) >> 3); // Set delay between direction pin write and step command. @@ -113,7 +113,7 @@ void st_go_idle() TIMSK1 &= ~(1< 0 + #ifdef STEPPER_IDLE_LOCK_TIME _delay_ms(STEPPER_IDLE_LOCK_TIME); #endif // Disable steppers by setting stepper disable @@ -145,7 +145,7 @@ ISR(TIMER1_COMPA_vect) // Set the direction pins a couple of nanoseconds before we step the steppers STEPPING_PORT = (STEPPING_PORT & ~DIRECTION_MASK) | (out_bits & DIRECTION_MASK); // Then pulse the stepping pins - #if STEP_PULSE_DELAY > 0 + #ifdef STEP_PULSE_DELAY step_bits = (STEPPING_PORT & ~STEP_MASK) | out_bits; // Store out_bits to prevent overwriting. #else // Normal operation STEPPING_PORT = (STEPPING_PORT & ~STEP_MASK) | out_bits; @@ -314,7 +314,7 @@ ISR(TIMER2_OVF_vect) TCCR2B = 0; // Disable Timer2 to prevent re-entering this interrupt when it's not needed. } -#if STEP_PULSE_DELAY > 0 +#ifdef STEP_PULSE_DELAY // This interrupt is used only when STEP_PULSE_DELAY is enabled. Here, the step pulse is // initiated after the STEP_PULSE_DELAY time period has elapsed. The ISR TIMER2_OVF interrupt // will then trigger after the appropriate settings.pulse_microseconds, as in normal operation. @@ -358,7 +358,7 @@ void st_init() TCCR2B = 0; // Disable timer until needed. TIMSK2 |= (1< 0 + #ifdef STEP_PULSE_DELAY TIMSK2 |= (1<> 3; - prescaler = 1; // prescaler: 8 + prescaler = 2; // prescaler: 8 actual_cycles = ceiling * 8L; } else if (cycles <= 0x3fffffL) { ceiling = cycles >> 6; - prescaler = 2; // prescaler: 64 + prescaler = 3; // prescaler: 64 actual_cycles = ceiling * 64L; } else if (cycles <= 0xffffffL) { ceiling = (cycles >> 8); - prescaler = 3; // prescaler: 256 + prescaler = 4; // prescaler: 256 actual_cycles = ceiling * 256L; } else if (cycles <= 0x3ffffffL) { ceiling = (cycles >> 10); - prescaler = 4; // prescaler: 1024 + prescaler = 5; // prescaler: 1024 actual_cycles = ceiling * 1024L; } else { // Okay, that was slower than we actually go. Just set the slowest speed ceiling = 0xffff; - prescaler = 4; + prescaler = 6; actual_cycles = 0xffff * 1024; } // Set prescaler - TCCR1B = (TCCR1B & ~(0x07<