#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"
#include "esp_err.h"

//#define HIDEBUG

void app_main()
{
	ledc_timer_config_t ledc_timer;
	
	ledc_timer.duty_resolution = LEDC_TIMER_10_BIT; // resolution of PWM duty
	ledc_timer.freq_hz = 1000;                      // frequency of PWM signal
	ledc_timer.speed_mode = LEDC_HIGH_SPEED_MODE;           // timer mode
	ledc_timer.timer_num = LEDC_TIMER_0;            // timer index
	ledc_timer_config(&ledc_timer);
	
	ledc_timer.speed_mode = LEDC_LOW_SPEED_MODE;
	ledc_timer.freq_hz = 20; // must be a fairly low frequency
	ledc_timer.timer_num = LEDC_TIMER_0;
	ledc_timer_config(&ledc_timer);
	
#ifdef HIDEBUG
	ledc_timer.freq_hz = 4000;
	ledc_timer.timer_num = LEDC_TIMER_1;
	ledc_timer_config(&ledc_timer);
#endif
	
	ledc_channel_config_t ledc_channel;
	
	ledc_channel.channel    = LEDC_CHANNEL_0;
	ledc_channel.duty       = 512;
	ledc_channel.gpio_num   = 18;
	ledc_channel.speed_mode = LEDC_HIGH_SPEED_MODE;
	ledc_channel.hpoint     = 0;
	ledc_channel.timer_sel  = LEDC_TIMER_0;
	ledc_channel_config(&ledc_channel);
	
	ledc_channel.channel    = LEDC_CHANNEL_0;
	ledc_channel.duty       = 512;
	ledc_channel.gpio_num   = 4;
	ledc_channel.speed_mode = LEDC_LOW_SPEED_MODE;
	ledc_channel.hpoint     = 0;
	ledc_channel.timer_sel  = LEDC_TIMER_0;
	ledc_channel_config(&ledc_channel);
	
	while (1)
	{
		vTaskDelay(10000 / portTICK_PERIOD_MS);
	}
}
