/* spindle_control.h - spindle control methods Part of Grbl Copyright (c) 2012-2016 Sungeun K. Jeon for Gnea Research LLC Copyright (c) 2009-2011 Simen Svale Skogsrud Grbl is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Grbl is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Grbl. If not, see . */ #ifndef spindle_control_h #define spindle_control_h #define SPINDLE_NO_SYNC false #define SPINDLE_FORCE_SYNC true #define SPINDLE_STATE_DISABLE 0 // Must be zero. #define SPINDLE_STATE_CW bit(0) #define SPINDLE_STATE_CCW bit(1) // Initializes spindle pins and hardware PWM, if enabled. void spindle_init(); // Returns current spindle output state. Overrides may alter it from programmed states. uint8_t spindle_get_state(); // Called by g-code parser when setting spindle state and requires a buffer sync. // Immediately sets spindle running state with direction and spindle rpm via PWM, if enabled. // Called by spindle_sync() after sync and parking motion/spindle stop override during restore. #ifdef VARIABLE_SPINDLE // Called by g-code parser when setting spindle state and requires a buffer sync. void spindle_sync(uint8_t state, float rpm); // Sets spindle running state with direction, enable, and spindle PWM. void spindle_set_state(uint8_t state, float rpm); // Sets spindle PWM quickly for stepper ISR. Also called by spindle_set_state(). // NOTE: 328p PWM register is 8-bit. void spindle_set_speed(uint8_t pwm_value); // Computes 328p-specific PWM register value for the given RPM for quick updating. uint8_t spindle_compute_pwm_value(float rpm); #else // Called by g-code parser when setting spindle state and requires a buffer sync. #define spindle_sync(state, rpm) _spindle_sync(state) void _spindle_sync(uint8_t state); // Sets spindle running state with direction and enable. #define spindle_set_state(state, rpm) _spindle_set_state(state) void _spindle_set_state(uint8_t state); #endif // Stop and start spindle routines. Called by all spindle routines and stepper ISR. void spindle_stop(); #endif