#include <stdio.h>
#include <SoftwareSerial.h>
volatile uint32_t *gpio_enable_reg = (volatile uint32_t *)GPIO_ENABLE_REG;
volatile uint32_t *io_mux_gpio6_reg = (volatile uint32_t *)IO_MUX_GPIO6_REG;
volatile uint32_t *gpio_func6_out_sel_cfg_reg = (volatile uint32_t *)GPIO_FUNC6_OUT_SEL_CFG_REG;
volatile uint32_t *gpio_out_reg = (volatile uint32_t *)GPIO_OUT_REG;
volatile uint32_t *system_sysclk_conf_reg = (volatile uint32_t *)SYSTEM_SYSCLK_CONF_REG;
volatile uint32_t *system_cpu_per_conf_reg = (volatile uint32_t *)SYSTEM_CPU_PER_CONF_REG;
volatile uint32_t *ledc_conf_reg = (volatile uint32_t *)LEDC_CONF_REG;
volatile uint32_t *ledc_ch1_conf0_reg = (volatile uint32_t *)LEDC_CH1_CONF0_REG;
volatile uint32_t *ledc_ch1_hpoint_reg = (volatile uint32_t *)LEDC_CH1_HPOINT_REG;
volatile uint32_t *ledc_ch1_duty_reg = (volatile uint32_t *)LEDC_CH1_DUTY_REG;
volatile uint32_t *ledc_timer0_conf_reg = (volatile uint32_t *)LEDC_TIMER0_CONF_REG;
volatile uint32_t *ledc_timer0_value_reg = (volatile uint32_t *)LEDC_TIMER0_VALUE_REG;
//volatile uint32_t *gpio_out_reg = (volatile uint32_t *)GPIO_OUT_REG;
//volatile uint32_t *gpio_out_reg = (volatile uint32_t *)GPIO_OUT_REG;
//volatile uint32_t *gpio_out_reg = (volatile uint32_t *)GPIO_OUT_REG;
void app_main() {
Serial.begin(115200);
// Enable GPIO Pins
*gpio_enable_reg |= (1 << 6);
// Timer
*system_sysclk_conf_reg |= (1 << 10);
*system_cpu_per_conf_reg |= 1;
*system_cpu_per_conf_reg &= ~(1 << 2);
// PWM
//*ledc_conf_reg |= 1; // change timer to apb_iwas
*ledc_conf_reg |= (1 << 31); // change timer to apb_iwas
*ledc_timer0_conf_reg |= 0b1111; // change duty cycle of timer 2^value -1 | 10 = 1024
*ledc_timer0_conf_reg |= (10 << 12); // set divisor auf 10
*ledc_timer0_conf_reg |= (1 << 23); // reset timer
*ledc_timer0_conf_reg |= (1 << 25); // update timer conf
*ledc_ch1_conf0_reg &= ~(1 << 0); // change timer to timer0
*ledc_ch1_conf0_reg |= (1 << 2); // enable signal output
*ledc_ch1_conf0_reg &= ~(1 << 5); // num of times the timer has to overflow
*ledc_ch1_conf0_reg |= (1 << 15); // enable overflow counting
//*ledc_ch1_hpoint_reg |=
while(true) {
loop()
}
}
void loop() {
//*gpio_out_reg |= (1 << 6);
//delay(150);
//*gpio_out_reg &= ~(1 << 6);
//delay(150);
uint32_t tim = *ledc_timer0_value_reg & 0x00003FFF;
Serial.println(tim);
}