From 12aa3a714a3479ecb141b03eba751546108cbc70 Mon Sep 17 00:00:00 2001 From: rkcf Date: Sat, 25 Feb 2023 04:30:45 -0600 Subject: [PATCH] Feat: add ledc driver initialization Refs: #14 --- src/main/CMakeLists.txt | 2 +- src/main/esp32_eurorack_generic.c | 5 ++- src/main/led.c | 54 +++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/main/led.c diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index b48d63e..113bbe9 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -1,2 +1,2 @@ -idf_component_register(SRCS "esp32_eurorack_generic.c" +idf_component_register(SRCS "esp32_eurorack_generic.c" "led.c" INCLUDE_DIRS ".") diff --git a/src/main/esp32_eurorack_generic.c b/src/main/esp32_eurorack_generic.c index 7b66f33..b420cae 100644 --- a/src/main/esp32_eurorack_generic.c +++ b/src/main/esp32_eurorack_generic.c @@ -1,6 +1,9 @@ #include +#include "led.h" + void app_main(void) { - + /* Initialize LEDC driver */ + ledc_init(); } diff --git a/src/main/led.c b/src/main/led.c new file mode 100644 index 0000000..c3195b1 --- /dev/null +++ b/src/main/led.c @@ -0,0 +1,54 @@ +#include + +#include "esp_log.h" +#include "esp_err.h" +#include "driver/ledc.h" +#include "hal/ledc_types.h" + +/* Rotary Encoder LED Pins */ +#define R1B_PIN 18 /* Rotary Encoder 1 Blue Pin */ +#define R1G_PIN 8 /* Rotary Encoder 1 Green Pin */ +#define R2B_PIN 45 /* Rotary Encoder 2 Blue Pin */ +#define R2G_PIN 0 /* Rotary Encoder 2 Green Pin */ + +static const char *TAG = "ledc"; + + +void ledc_init(void) +{ + ESP_LOGI(TAG, "Initializing LEDC driver"); + + /* Configure and initialize ledc PWM timer */ + ledc_timer_config_t timer_config = { + .speed_mode = LEDC_LOW_SPEED_MODE, + .timer_num = LEDC_TIMER_0, + .duty_resolution = LEDC_TIMER_12_BIT, + .clk_cfg = LEDC_AUTO_CLK, + .freq_hz = 5000 + }; + ESP_ERROR_CHECK(ledc_timer_config(&timer_config)); + + /* Configure Rotary Encoder 1 B chan */ + ledc_channel_config_t R1B_config = { + .channel = LEDC_CHANNEL_0, + .gpio_num = R1B_PIN, + .speed_mode = LEDC_LOW_SPEED_MODE, + .timer_sel = LEDC_TIMER_0, + .intr_type = LEDC_INTR_DISABLE, + .duty = 2048, + .hpoint = 0 + }; + ESP_ERROR_CHECK(ledc_channel_config(&R1B_config)); + + /* Configure Rotary Encoder 1 G chan */ + ledc_channel_config_t R1G_config = { + .channel = LEDC_CHANNEL_1, + .gpio_num = R1G_PIN, + .speed_mode = LEDC_LOW_SPEED_MODE, + .timer_sel = LEDC_TIMER_0, + .intr_type = LEDC_INTR_DISABLE, + .duty = 2048, + .hpoint = 0 + }; + ESP_ERROR_CHECK(ledc_channel_config(&R1G_config)); +}