clean up
This commit is contained in:
@@ -22,11 +22,6 @@ static volatile int8_t s_accum = 0;
|
||||
static volatile uint8_t s_prev_state = 0x03;
|
||||
static volatile int8_t s_steps_per_detent = 4; /* 4 = full-step, 2 = half-step */
|
||||
|
||||
static volatile bool s_button_pressed = false;
|
||||
static volatile uint32_t s_last_sw_tick = 0;
|
||||
|
||||
#define SW_DEBOUNCE_MS (35)
|
||||
|
||||
/*
|
||||
* Quadrature Gray-Code Transition Table
|
||||
* Index: (old_state << 2) | new_state (4-bit, 0..15)
|
||||
@@ -68,16 +63,7 @@ static const int8_t s_quad_table[16] = {
|
||||
|
||||
static void IRAM_ATTR encoder_isr(void *arg)
|
||||
{
|
||||
uint32_t gpio = (uint32_t)(uintptr_t)arg;
|
||||
|
||||
if (gpio == HW_ENC_SW_GPIO) {
|
||||
unsigned int now = (unsigned int)xTaskGetTickCountFromISR();
|
||||
if ((now - s_last_sw_tick) > pdMS_TO_TICKS(SW_DEBOUNCE_MS)) {
|
||||
s_last_sw_tick = now;
|
||||
s_button_pressed = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
(void)arg;
|
||||
|
||||
/* Read current levels of both encoder channels */
|
||||
uint8_t clk = (uint8_t)gpio_get_level(HW_ENC_CLK_GPIO);
|
||||
@@ -123,7 +109,7 @@ esp_err_t encoder_init(void)
|
||||
|
||||
ESP_ERROR_CHECK(config_pin(HW_ENC_CLK_GPIO, GPIO_INTR_ANYEDGE));
|
||||
ESP_ERROR_CHECK(config_pin(HW_ENC_DT_GPIO, GPIO_INTR_ANYEDGE));
|
||||
ESP_ERROR_CHECK(config_pin(HW_ENC_SW_GPIO, GPIO_INTR_NEGEDGE));
|
||||
ESP_ERROR_CHECK(config_pin(HW_ENC_SW_GPIO, GPIO_INTR_DISABLE));
|
||||
|
||||
/* Initialize initial state */
|
||||
uint8_t clk = (uint8_t)gpio_get_level(HW_ENC_CLK_GPIO);
|
||||
@@ -132,9 +118,8 @@ esp_err_t encoder_init(void)
|
||||
s_accum = 0;
|
||||
s_delta = 0;
|
||||
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(HW_ENC_CLK_GPIO, encoder_isr, (void *)(uintptr_t)HW_ENC_CLK_GPIO));
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(HW_ENC_DT_GPIO, encoder_isr, (void *)(uintptr_t)HW_ENC_DT_GPIO));
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(HW_ENC_SW_GPIO, encoder_isr, (void *)(uintptr_t)HW_ENC_SW_GPIO));
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(HW_ENC_CLK_GPIO, encoder_isr, NULL));
|
||||
ESP_ERROR_CHECK(gpio_isr_handler_add(HW_ENC_DT_GPIO, encoder_isr, NULL));
|
||||
|
||||
ESP_LOGI(TAG, "EC11 quadrature encoder ready (CLK=%d DT=%d SW=%d steps/tick=%d)",
|
||||
HW_ENC_CLK_GPIO, HW_ENC_DT_GPIO, HW_ENC_SW_GPIO, s_steps_per_detent);
|
||||
@@ -161,24 +146,9 @@ bool encoder_has_delta(void)
|
||||
return s_delta != 0;
|
||||
}
|
||||
|
||||
int32_t encoder_get_delta(void)
|
||||
{
|
||||
return (int32_t)s_delta;
|
||||
}
|
||||
|
||||
int32_t encoder_get_delta_and_reset(void)
|
||||
{
|
||||
int32_t v = (int32_t)s_delta;
|
||||
s_delta = 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
bool encoder_button_pressed(void)
|
||||
{
|
||||
return s_button_pressed;
|
||||
}
|
||||
|
||||
void encoder_clear_button(void)
|
||||
{
|
||||
s_button_pressed = false;
|
||||
}
|
||||
Reference in New Issue
Block a user