|
|
|
@ -38,12 +38,12 @@ extern "C" {
|
|
|
|
|
*/
|
|
|
|
|
typedef struct {
|
|
|
|
|
int gpio_num; /*!< the LEDC output gpio_num, if you want to use gpio16, gpio_num = 16 */
|
|
|
|
|
ledc_mode_t speed_mode; /*!< LEDC speed speed_mode, high-speed mode or low-speed mode */
|
|
|
|
|
ledc_mode_t speed_mode; /*!< LEDC speed speed_mode, high-speed mode (only exists on esp32) or low-speed mode */
|
|
|
|
|
ledc_channel_t channel; /*!< LEDC channel (0 - LEDC_CHANNEL_MAX-1) */
|
|
|
|
|
ledc_intr_type_t intr_type; /*!< configure interrupt, Fade interrupt enable or Fade interrupt disable */
|
|
|
|
|
ledc_timer_t timer_sel; /*!< Select the timer source of channel (0 - LEDC_TIMER_MAX-1) */
|
|
|
|
|
uint32_t duty; /*!< LEDC channel duty, the range of duty setting is [0, (2**duty_resolution)] */
|
|
|
|
|
int hpoint; /*!< LEDC channel hpoint value, the max value is 0xfffff */
|
|
|
|
|
int hpoint; /*!< LEDC channel hpoint value, the range is [0, (2**duty_resolution)-1] */
|
|
|
|
|
struct {
|
|
|
|
|
unsigned int output_invert: 1;/*!< Enable (1) or disable (0) gpio output invert */
|
|
|
|
|
} flags; /*!< LEDC flags */
|
|
|
|
@ -54,7 +54,7 @@ typedef struct {
|
|
|
|
|
* @brief Configuration parameters of LEDC timer for ledc_timer_config function
|
|
|
|
|
*/
|
|
|
|
|
typedef struct {
|
|
|
|
|
ledc_mode_t speed_mode; /*!< LEDC speed speed_mode, high-speed mode or low-speed mode */
|
|
|
|
|
ledc_mode_t speed_mode; /*!< LEDC speed speed_mode, high-speed mode (only exists on esp32) or low-speed mode */
|
|
|
|
|
ledc_timer_bit_t duty_resolution; /*!< LEDC channel duty resolution */
|
|
|
|
|
ledc_timer_t timer_num; /*!< The timer source of channel (0 - LEDC_TIMER_MAX-1) */
|
|
|
|
|
uint32_t freq_hz; /*!< LEDC timer frequency (Hz) */
|
|
|
|
@ -88,7 +88,7 @@ typedef struct {
|
|
|
|
|
ledc_cb_event_t event; /**< Event name */
|
|
|
|
|
uint32_t speed_mode; /**< Speed mode of the LEDC channel group */
|
|
|
|
|
uint32_t channel; /**< LEDC channel (0 - LEDC_CHANNEL_MAX-1) */
|
|
|
|
|
uint32_t duty; /**< LEDC current duty of the channel, the range of duty is [0, (2**duty_resolution) - 1] */
|
|
|
|
|
uint32_t duty; /**< LEDC current duty of the channel, the range of duty is [0, (2**duty_resolution)] */
|
|
|
|
|
} ledc_cb_param_t;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -135,6 +135,7 @@ esp_err_t ledc_timer_config(const ledc_timer_config_t *timer_conf);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief LEDC update channel parameters
|
|
|
|
|
*
|
|
|
|
|
* @note Call this function to activate the LEDC updated parameters.
|
|
|
|
|
* After ledc_set_duty, we need to call this function to update the settings.
|
|
|
|
|
* And the new LEDC parameters don't take effect until the next PWM cycle.
|
|
|
|
@ -144,13 +145,13 @@ esp_err_t ledc_timer_config(const ledc_timer_config_t *timer_conf);
|
|
|
|
|
* @note If `CONFIG_LEDC_CTRL_FUNC_IN_IRAM` is enabled, this function will be placed in the IRAM by linker,
|
|
|
|
|
* makes it possible to execute even when the Cache is disabled.
|
|
|
|
|
* @note This function is allowed to run within ISR context.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_update_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|
|
|
|
|
|
|
|
@ -177,6 +178,7 @@ esp_err_t ledc_set_pin(int gpio_num, ledc_mode_t speed_mode, ledc_channel_t ledc
|
|
|
|
|
* @note If `CONFIG_LEDC_CTRL_FUNC_IN_IRAM` is enabled, this function will be placed in the IRAM by linker,
|
|
|
|
|
* makes it possible to execute even when the Cache is disabled.
|
|
|
|
|
* @note This function is allowed to run within ISR context.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param idle_level Set output idle level after LEDC stops.
|
|
|
|
@ -216,15 +218,17 @@ uint32_t ledc_get_freq(ledc_mode_t speed_mode, ledc_timer_t timer_num);
|
|
|
|
|
/**
|
|
|
|
|
* @brief LEDC set duty and hpoint value
|
|
|
|
|
* Only after calling ledc_update_duty will the duty update.
|
|
|
|
|
*
|
|
|
|
|
* @note ledc_set_duty, ledc_set_duty_with_hpoint and ledc_update_duty are not thread-safe, do not call these functions to
|
|
|
|
|
* control one LEDC channel in different tasks at the same time.
|
|
|
|
|
* A thread-safe version of API is ledc_set_duty_and_update
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param hpoint Set the LEDC hpoint value(max: 0xfffff)
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution)]
|
|
|
|
|
* @param hpoint Set the LEDC hpoint value, the range is [0, (2**duty_resolution)-1]
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
@ -237,6 +241,7 @@ esp_err_t ledc_set_duty_with_hpoint(ledc_mode_t speed_mode, ledc_channel_t chann
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - LEDC_ERR_VAL if parameter error
|
|
|
|
|
* - Others Current hpoint value of LEDC channel
|
|
|
|
@ -247,14 +252,16 @@ int ledc_get_hpoint(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|
|
|
|
* @brief LEDC set duty
|
|
|
|
|
* This function do not change the hpoint value of this channel. if needed, please call ledc_set_duty_with_hpoint.
|
|
|
|
|
* only after calling ledc_update_duty will the duty update.
|
|
|
|
|
*
|
|
|
|
|
* @note ledc_set_duty, ledc_set_duty_with_hpoint and ledc_update_duty are not thread-safe, do not call these functions to
|
|
|
|
|
* control one LEDC channel in different tasks at the same time.
|
|
|
|
|
* A thread-safe version of API is ledc_set_duty_and_update.
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution)]
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
@ -280,11 +287,13 @@ uint32_t ledc_get_duty(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|
|
|
|
/**
|
|
|
|
|
* @brief LEDC set gradient
|
|
|
|
|
* Set LEDC gradient, After the function calls the ledc_update_duty function, the function can take effect.
|
|
|
|
|
*
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param duty Set the start of the gradient duty, the range of duty setting is [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param duty Set the start of the gradient duty, the range of duty setting is [0, (2**duty_resolution)]
|
|
|
|
|
* @param fade_direction Set the direction of the gradient
|
|
|
|
|
* @param step_num Set the number of the gradient
|
|
|
|
|
* @param duty_cycle_num Set how many LEDC tick each time the gradient lasts
|
|
|
|
@ -310,7 +319,8 @@ esp_err_t ledc_set_fade(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Function pointer error.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_NOT_FOUND Failed to find available interrupt source
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_isr_register(void (*fn)(void *), void *arg, int intr_alloc_flags, ledc_isr_handle_t *handle);
|
|
|
|
|
|
|
|
|
@ -320,7 +330,7 @@ esp_err_t ledc_isr_register(void (*fn)(void *), void *arg, int intr_alloc_flags,
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param timer_sel Timer index (0-3), there are 4 timers in LEDC module
|
|
|
|
|
* @param clock_divider Timer clock divide value, the timer clock is divided from the selected clock source
|
|
|
|
|
* @param duty_resolution Resolution of duty setting in number of bits. The range of duty values is [0, (2**duty_resolution)]
|
|
|
|
|
* @param duty_resolution Resolution of duty setting in number of bits. The range is [1, SOC_LEDC_TIMER_BIT_WIDTH]
|
|
|
|
|
* @param clk_src Select LEDC source clock.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
@ -350,7 +360,6 @@ esp_err_t ledc_timer_rst(ledc_mode_t speed_mode, ledc_timer_t timer_sel);
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_timer_pause(ledc_mode_t speed_mode, ledc_timer_t timer_sel);
|
|
|
|
|
|
|
|
|
@ -381,6 +390,7 @@ esp_err_t ledc_bind_channel_timer(ledc_mode_t speed_mode, ledc_channel_t channel
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Set LEDC fade function.
|
|
|
|
|
*
|
|
|
|
|
* @note Call ledc_fade_func_install() once before calling this function.
|
|
|
|
|
* Call ledc_fade_start() after this to start fading.
|
|
|
|
|
* @note ledc_set_fade_with_step, ledc_set_fade_with_time and ledc_fade_start are not thread-safe, do not call these functions to
|
|
|
|
@ -388,22 +398,24 @@ esp_err_t ledc_bind_channel_timer(ledc_mode_t speed_mode, ledc_channel_t channel
|
|
|
|
|
* A thread-safe version of API is ledc_set_fade_step_and_start
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode. ,
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel index (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution)]
|
|
|
|
|
* @param scale Controls the increase or decrease step scale.
|
|
|
|
|
* @param cycle_num increase or decrease the duty every cycle_num cycles
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_fade_with_step(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t scale, uint32_t cycle_num);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Set LEDC fade function, with a limited time.
|
|
|
|
|
*
|
|
|
|
|
* @note Call ledc_fade_func_install() once before calling this function.
|
|
|
|
|
* Call ledc_fade_start() after this to start fading.
|
|
|
|
|
* @note ledc_set_fade_with_step, ledc_set_fade_with_time and ledc_fade_start are not thread-safe, do not call these functions to
|
|
|
|
@ -411,43 +423,48 @@ esp_err_t ledc_set_fade_with_step(ledc_mode_t speed_mode, ledc_channel_t channel
|
|
|
|
|
* A thread-safe version of API is ledc_set_fade_step_and_start
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode. ,
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel index (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution)]
|
|
|
|
|
* @param max_fade_time_ms The maximum time of the fading ( ms ).
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_fade_with_time(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, int max_fade_time_ms);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Install LEDC fade function. This function will occupy interrupt of LEDC module.
|
|
|
|
|
*
|
|
|
|
|
* @param intr_alloc_flags Flags used to allocate the interrupt. One or multiple (ORred)
|
|
|
|
|
* ESP_INTR_FLAG_* values. See esp_intr_alloc.h for more info.
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function already installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Intr flag error
|
|
|
|
|
* - ESP_ERR_NOT_FOUND Failed to find available interrupt source
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function already installed
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_fade_func_install(int intr_alloc_flags);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Uninstall LEDC fade function.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
void ledc_fade_func_uninstall(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Start LEDC fading.
|
|
|
|
|
*
|
|
|
|
|
* @note Call ledc_fade_func_install() once before calling this function.
|
|
|
|
|
* Call this API right after ledc_set_fade_with_time or ledc_set_fade_with_step before to start fading.
|
|
|
|
|
* @note Starting fade operation with this API is not thread-safe, use with care.
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel number
|
|
|
|
|
* @param fade_mode Whether to block until fading done. See ledc_types.h ledc_fade_mode_t for more info.
|
|
|
|
@ -455,7 +472,7 @@ void ledc_fade_func_uninstall(void);
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized or fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error.
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_fade_start(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_fade_mode_t fade_mode);
|
|
|
|
@ -463,81 +480,99 @@ esp_err_t ledc_fade_start(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_f
|
|
|
|
|
#if SOC_LEDC_SUPPORT_FADE_STOP
|
|
|
|
|
/**
|
|
|
|
|
* @brief Stop LEDC fading. The duty of the channel is garanteed to be fixed at most one PWM cycle after the function returns.
|
|
|
|
|
*
|
|
|
|
|
* @note This API can be called if a new fixed duty or a new fade want to be set while the last fade operation is still running in progress.
|
|
|
|
|
* @note Call this API will abort the fading operation only if it was started by calling ledc_fade_start with LEDC_FADE_NO_WAIT mode.
|
|
|
|
|
* @note If a fade was started with LEDC_FADE_WAIT_DONE mode, calling this API afterwards has no use in stopping the fade. Fade will continue until it reachs the target duty.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel number
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error.
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_fade_stop(ledc_mode_t speed_mode, ledc_channel_t channel);
|
|
|
|
|
#endif //SOC_LEDC_SUPPORT_FADE_STOP
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief A thread-safe API to set duty for LEDC channel and return when duty updated.
|
|
|
|
|
*
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param hpoint Set the LEDC hpoint value(max: 0xfffff)
|
|
|
|
|
* @param duty Set the LEDC duty, the range of duty setting is [0, (2**duty_resolution)]
|
|
|
|
|
* @param hpoint Set the LEDC hpoint value, the range is [0, (2**duty_resolution)-1]
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_duty_and_update(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t duty, uint32_t hpoint);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief A thread-safe API to set and start LEDC fade function, with a limited time.
|
|
|
|
|
*
|
|
|
|
|
* @note Call ledc_fade_func_install() once, before calling this function.
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel index (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution)]
|
|
|
|
|
* @param max_fade_time_ms The maximum time of the fading ( ms ).
|
|
|
|
|
* @param fade_mode choose blocking or non-blocking mode
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_fade_time_and_start(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t max_fade_time_ms, ledc_fade_mode_t fade_mode);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief A thread-safe API to set and start LEDC fade function.
|
|
|
|
|
*
|
|
|
|
|
* @note Call ledc_fade_func_install() once before calling this function.
|
|
|
|
|
* @note For ESP32, hardware does not support any duty change while a fade operation is running in progress on that channel.
|
|
|
|
|
* Other duty operations will have to wait until the fade operation has finished.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel index (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution) - 1]
|
|
|
|
|
* @param target_duty Target duty of fading [0, (2**duty_resolution)]
|
|
|
|
|
* @param scale Controls the increase or decrease step scale.
|
|
|
|
|
* @param cycle_num increase or decrease the duty every cycle_num cycles
|
|
|
|
|
* @param fade_mode choose blocking or non-blocking mode
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_fade_step_and_start(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t target_duty, uint32_t scale, uint32_t cycle_num, ledc_fade_mode_t fade_mode);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief LEDC callback registration function
|
|
|
|
|
*
|
|
|
|
|
* @note The callback is called from an ISR, it must never attempt to block, and any FreeRTOS API called must be ISR capable.
|
|
|
|
|
*
|
|
|
|
|
* @param speed_mode Select the LEDC channel group with specified speed mode. Note that not all targets support high speed mode.
|
|
|
|
|
* @param channel LEDC channel index (0 - LEDC_CHANNEL_MAX-1), select from ledc_channel_t
|
|
|
|
|
* @param cbs Group of LEDC callback functions
|
|
|
|
|
* @param user_arg user registered data for the callback function
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed.
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_cb_register(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_cbs_t *cbs, void *user_arg);
|
|
|
|
@ -608,10 +643,11 @@ typedef struct {
|
|
|
|
|
* @param start_duty Set the start of the gradient duty, the range of duty setting is [0, (2**duty_resolution)]
|
|
|
|
|
* @param fade_params_list Pointer to the array of fade parameters for a multi-fade
|
|
|
|
|
* @param list_len Length of the fade_params_list, i.e. number of fade ranges for a multi-fade (1 - SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX)
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_multi_fade(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t start_duty, const ledc_fade_param_config_t *fade_params_list, uint32_t list_len);
|
|
|
|
@ -631,10 +667,11 @@ esp_err_t ledc_set_multi_fade(ledc_mode_t speed_mode, ledc_channel_t channel, ui
|
|
|
|
|
* @param fade_params_list Pointer to the array of fade parameters for a multi-fade
|
|
|
|
|
* @param list_len Length of the fade_params_list, i.e. number of fade ranges for a multi-fade (1 - SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX)
|
|
|
|
|
* @param fade_mode Choose blocking or non-blocking mode
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Fade function not installed
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Fade function init error
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_set_multi_fade_and_start(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t start_duty, const ledc_fade_param_config_t *fade_params_list, uint32_t list_len, ledc_fade_mode_t fade_mode);
|
|
|
|
@ -658,11 +695,11 @@ esp_err_t ledc_set_multi_fade_and_start(ledc_mode_t speed_mode, ledc_channel_t c
|
|
|
|
|
* @param[in] fade_params_list_size The size of the fade_params_list user allocated (1 - SOC_LEDC_GAMMA_CURVE_FADE_RANGE_MAX)
|
|
|
|
|
* @param[out] fade_params_list Pointer to the array of ledc_fade_param_config_t structure
|
|
|
|
|
* @param[out] hw_fade_range_num Number of fade ranges for this multi-fade
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE LEDC not initialized
|
|
|
|
|
* - ESP_ERR_NO_MEM Out of memory
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
* - ESP_FAIL Required number of hardware ranges exceeds the size of the ledc_fade_param_config_t array user allocated
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_fill_multi_fade_param_list(ledc_mode_t speed_mode, ledc_channel_t channel,
|
|
|
|
@ -685,10 +722,11 @@ esp_err_t ledc_fill_multi_fade_param_list(ledc_mode_t speed_mode, ledc_channel_t
|
|
|
|
|
* @param[out] cycle Pointer to accept fade cycle value
|
|
|
|
|
* @param[out] scale Pointer to accept fade scale value
|
|
|
|
|
* @param[out] step Pointer to accept fade step value
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* - ESP_OK Success
|
|
|
|
|
* - ESP_ERR_INVALID_ARG Parameter error
|
|
|
|
|
* - ESP_ERR_INVALID_STATE LEDC not initialized
|
|
|
|
|
* - ESP_ERR_INVALID_STATE Channel not initialized
|
|
|
|
|
*/
|
|
|
|
|
esp_err_t ledc_read_fade_param(ledc_mode_t speed_mode, ledc_channel_t channel, uint32_t range, uint32_t *dir, uint32_t *cycle, uint32_t *scale, uint32_t *step);
|
|
|
|
|
#endif // SOC_LEDC_GAMMA_CURVE_FADE_SUPPORTED
|
|
|
|
|