#include <stdio.h>
#include <esp_log.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "driver/ledc.h"
#define ledPin GPIO_NUM_2
#define PWM_SPEED_MODE LEDC_LOW_SPEED_MODE
#define PWM_CHANNEL LEDC_CHANNEL_0
ledc_timer_config_t ledc_timer;
ledc_channel_config_t ledc_channel;
void config_pwm_pin(gpio_num_t INPUT_PIN, ledc_timer_config_t* timer_config, ledc_channel_config_t* channel_config){
// Timer Configuration
timer_config -> speed_mode = PWM_SPEED_MODE;
timer_config -> duty_resolution = LEDC_TIMER_13_BIT;
timer_config -> timer_num = LEDC_TIMER_0;
timer_config -> freq_hz = 50;
timer_config -> clk_cfg = LEDC_AUTO_CLK;
ledc_timer_config(timer_config);
// Channel Configuration
channel_config -> gpio_num = INPUT_PIN;
channel_config -> speed_mode = PWM_SPEED_MODE;
channel_config -> channel = PWM_CHANNEL;
channel_config -> intr_type = LEDC_INTR_DISABLE;
channel_config -> timer_sel = LEDC_TIMER_0;
channel_config -> duty = 0;
channel_config -> hpoint = 0;
ledc_channel_config(channel_config);
}
void app_main() {
config_pwm_pin(ledPin, &ledc_timer, &ledc_channel);
gpio_set_direction(ledPin, GPIO_MODE_INPUT_OUTPUT);
// const ledc_timer_config_t ledc_timer = {
// .speed_mode = PWM_SPEED_MODE,
// .duty_resolution = LEDC_TIMER_13_BIT,
// .timer_num = LEDC_TIMER_0,
// .freq_hz = 50,
// .clk_cfg = LEDC_AUTO_CLK
// };
// const ledc_channel_config_t ledc_channel = {
// .gpio_num = ledPin,
// .speed_mode = PWM_SPEED_MODE,
// .channel = PWM_CHANNEL,
// .intr_type = LEDC_INTR_DISABLE,
// .timer_sel = LEDC_TIMER_0,
// .duty = 0,
// .hpoint = 0
// };
// ledc_timer_config(ledc_timer);
// ledc_channel_config(ledc_channel);
while (true) {
ledc_set_duty(PWM_SPEED_MODE, PWM_CHANNEL, 5000);
ledc_update_duty(PWM_SPEED_MODE, PWM_CHANNEL);
//vTaskDelay(100000);
}
}