}
-bool estop_triggered() {
- return estop.triggered || switch_is_active(SW_ESTOP);
-}
+bool estop_triggered() {return estop.triggered || switch_is_active(SW_ESTOP);}
void estop_trigger(stat_t reason) {
// Hard stop the motors and the spindle
st_shutdown();
- spindle_estop();
+ spindle_stop();
// Set machine state
mp_state_estop();
/// Controller's rest handler
void hw_reset_handler() {
if (hw.hard_reset) {
- while (huanyang_stopping() || !usart_tx_empty() || !eeprom_is_ready())
+ while (!usart_tx_empty() || !eeprom_is_ready())
continue;
hw_hard_reset();
bool connected;
bool changed;
- bool estop;
spindle_mode_t mode;
float speed;
void huanyang_set(spindle_mode_t mode, float speed) {
- if ((ha.mode != mode || ha.speed != speed) && !ha.estop) {
+ if (ha.mode != mode || ha.speed != speed) {
if (ha.debug) STATUS_DEBUG("huanyang: mode=%d, speed=%0.2f", mode, speed);
ha.mode = mode;
}
-void huanyang_estop() {
+void huanyang_stop() {
huanyang_set(SPINDLE_OFF, 0);
huanyang_reset();
- ha.estop = true;
-}
-
-
-bool huanyang_stopping() {
- return ha.estop && (ha.changed || ha.next_command_cb == _update);
}
void huanyang_set(spindle_mode_t mode, float speed);
void huanyang_reset();
void huanyang_rtc_callback();
-void huanyang_estop();
-bool huanyang_stopping();
+void huanyang_stop();
#include "buffer.h"
#include "arc.h"
#include "stepper.h"
+#include "spindle.h"
#include "report.h"
mach_set_axis_position(axis, mp_runtime_get_axis_position(axis));
}
+ // Stop spindle
+ spindle_stop();
+
// Resume
if (ps.resume_requested) {
ps.flush_requested = ps.resume_requested = false;
static pwm_spindle_t spindle = {0};
+static void _spindle_set_enable(bool enable) {
+ SET_PIN(SPIN_ENABLE_PIN, enable ^ spindle.enable_invert);
+}
+
+
+static void _spindle_set_dir(bool forward) {
+ SET_PIN(SPIN_DIR_PIN, !(forward ^ spindle.reverse));
+}
+
+
static void _spindle_set_pwm(spindle_mode_t mode, float speed) {
if (mode == SPINDLE_OFF || speed < spindle.min_rpm || estop_triggered()) {
TIMER_PWM.CTRLA = 0;
+ OUTCLR_PIN(SPIN_PWM_PIN);
+ _spindle_set_enable(false);
return;
}
}
-static void _spindle_set_enable(bool enable) {
- SET_PIN(SPIN_ENABLE_PIN, enable ^ spindle.enable_invert);
-}
-
-
-static void _spindle_set_dir(bool forward) {
- SET_PIN(SPIN_DIR_PIN, !(forward ^ spindle.reverse));
-}
-
-
void pwm_spindle_init() {
// Configure IO
_spindle_set_dir(true);
}
-void pwm_spindle_estop() {_spindle_set_pwm(SPINDLE_OFF, 0);}
+void pwm_spindle_stop() {_spindle_set_pwm(SPINDLE_OFF, 0);}
// TODO these need more effort and should work with the huanyang spindle too
void pwm_spindle_init();
void pwm_spindle_set(spindle_mode_t mode, float speed);
-void pwm_spindle_estop();
+void pwm_spindle_stop();
float spindle_get_speed() {return spindle.speed;}
-void spindle_estop() {
+void spindle_stop() {
switch (spindle.type) {
- case SPINDLE_TYPE_PWM: pwm_spindle_estop(); break;
- case SPINDLE_TYPE_HUANYANG: huanyang_estop(); break;
+ case SPINDLE_TYPE_PWM: pwm_spindle_stop(); break;
+ case SPINDLE_TYPE_HUANYANG: huanyang_stop(); break;
}
}
void spindle_set_speed(float speed);
spindle_mode_t spindle_get_mode();
float spindle_get_speed();
-void spindle_estop();
+void spindle_stop();
update.update(msg)
log.debug(line)
- if 'msg' in update: break
+ if 'msg' in msg: break
if update:
- if 'firmware' in msg:
+ if 'firmware' in update:
log.error('AVR rebooted')
self.connect()
- if 'x' in msg and msg['x'] == 'ESTOPPED':
+ if 'x' in update and update['x'] == 'ESTOPPED':
self._stop_sending_gcode()
self.vars.update(update)
except Exception as e:
log.error('Updating Web: %s', e)
+
def queue_command(self, cmd):
self.queue.append(cmd)
self.set_write(True)