12#ifndef MCPWM_PRIVATE_H
13#define MCPWM_PRIVATE_H
16#if defined(ESP_H) && defined(ARDUINO_ARCH_ESP32) && defined(SOC_MCPWM_SUPPORTED) && !defined(SIMPLEFOC_ESP32_USELEDC)
18#include "freertos/FreeRTOS.h"
19#include "esp_intr_alloc.h"
20#include "esp_heap_caps.h"
22#include "soc/soc_caps.h"
23#include "hal/mcpwm_hal.h"
24#include "hal/mcpwm_types.h"
25#include "driver/mcpwm_types.h"
31typedef struct mcpwm_group_t mcpwm_group_t;
32typedef struct mcpwm_timer_t mcpwm_timer_t;
33typedef struct mcpwm_cap_timer_t mcpwm_cap_timer_t;
34typedef struct mcpwm_oper_t mcpwm_oper_t;
35typedef struct mcpwm_gpio_fault_t mcpwm_gpio_fault_t;
36typedef struct mcpwm_gpio_sync_src_t mcpwm_gpio_sync_src_t;
37typedef struct mcpwm_timer_sync_src_t mcpwm_timer_sync_src_t;
42 mcpwm_hal_context_t hal;
43 portMUX_TYPE spinlock;
45 uint32_t resolution_hz;
46 esp_pm_lock_handle_t pm_lock;
47 soc_module_clk_t clk_src;
48 mcpwm_cap_timer_t *cap_timer;
49 mcpwm_timer_t *timers[SOC_MCPWM_TIMERS_PER_GROUP];
50 mcpwm_oper_t *operators[SOC_MCPWM_OPERATORS_PER_GROUP];
51 mcpwm_gpio_fault_t *gpio_faults[SOC_MCPWM_GPIO_FAULTS_PER_GROUP];
52 mcpwm_gpio_sync_src_t *gpio_sync_srcs[SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP];
57 MCPWM_TIMER_FSM_ENABLE,
63 mcpwm_timer_fsm_t fsm;
64 portMUX_TYPE spinlock;
66 uint32_t resolution_hz;
68 mcpwm_timer_sync_src_t *sync_src;
69 mcpwm_timer_count_mode_t count_mode;
70 mcpwm_timer_event_cb_t on_full;
71 mcpwm_timer_event_cb_t on_empty;
72 mcpwm_timer_event_cb_t on_stop;