From bcaf61dd69bc48edcd1893f83128c13c0958a4ea Mon Sep 17 00:00:00 2001 From: chowette Date: Mon, 2 Nov 2020 12:00:17 +0100 Subject: [PATCH 1/3] init isr if needed --- components/sys/drivers/stepper.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/sys/drivers/stepper.c b/components/sys/drivers/stepper.c index e2a41e55..9a032a6b 100644 --- a/components/sys/drivers/stepper.c +++ b/components/sys/drivers/stepper.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -531,6 +532,13 @@ driver_error_t *stepper_setup(uint8_t step_pin, uint8_t dir_pin, float min_spd, esp_intr_alloc(ETS_RMT_INTR_SOURCE, ESP_INTR_FLAG_IRAM, rmt_isr, NULL, &isr_h); } + // Configure interrupts + if (!status_get(STATUS_ISR_SERVICE_INSTALLED)) { + gpio_install_isr_service(0); + + status_set(STATUS_ISR_SERVICE_INSTALLED, 0x00000000); + } + // Attach ISR on step_in to get feedback gpio_set_intr_type(stepper[*unit].step_pin, GPIO_INTR_POSEDGE); gpio_isr_handler_add(stepper[*unit].step_pin, step_feedback, &stepper[*unit]); From e4d5059f1e0b5599bfa2b1f9ada4d6e23c353fbc Mon Sep 17 00:00:00 2001 From: chowette Date: Mon, 2 Nov 2020 12:37:15 +0100 Subject: [PATCH 2/3] revert stepper_set_position() bug introduced in d8477c8 --- components/sys/drivers/stepper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sys/drivers/stepper.c b/components/sys/drivers/stepper.c index 9a032a6b..f375a9eb 100644 --- a/components/sys/drivers/stepper.c +++ b/components/sys/drivers/stepper.c @@ -644,7 +644,7 @@ driver_error_t *stepper_set_position(uint8_t unit, float units) { } stepper_t *pstepper = &stepper[unit]; - pstepper->pos = units * pstepper->units_per_step; + pstepper->pos = units * pstepper->steps_per_unit; mtx_unlock(&stepper_mutex); return NULL; From 3abf0ea5876f92405a80e3d6d0a47732a28c7349 Mon Sep 17 00:00:00 2001 From: chowette Date: Wed, 4 Nov 2020 15:18:14 +0100 Subject: [PATCH 3/3] fix stepper_stop() to stop only the stepper from the list. --- components/sys/drivers/stepper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sys/drivers/stepper.c b/components/sys/drivers/stepper.c index f375a9eb..7524e311 100644 --- a/components/sys/drivers/stepper.c +++ b/components/sys/drivers/stepper.c @@ -798,7 +798,7 @@ void stepper_stop(int mask, uint8_t async) { uint8_t channel = 0; while (testMask != (1 << (NSTEP - 1))) { - if (start_mask & testMask) { + if (start_mask & testMask & mask) { RMTMEM.chan[channel].data32[0].val = 0; RMT.conf_ch[channel].conf1.tx_start = 0; RMT.conf_ch[channel].conf1.mem_rd_rst = 1;