|
|
@@ -34,6 +34,8 @@
|
|
|
#define HIGHEST_LIMIT 10000
|
|
|
#define LOWEST_LIMIT -10000
|
|
|
|
|
|
+#define TEST_PWM_FREQ 2000
|
|
|
+
|
|
|
#if SOC_LEDC_SUPPORT_HS_MODE
|
|
|
#define TEST_SPEED_MODE LEDC_HIGH_SPEED_MODE
|
|
|
#define SPEED_MODE_LIST {LEDC_HIGH_SPEED_MODE, LEDC_LOW_SPEED_MODE}
|
|
|
@@ -63,7 +65,7 @@ static ledc_timer_config_t create_default_timer_config(void)
|
|
|
ledc_time_config.speed_mode = TEST_SPEED_MODE;
|
|
|
ledc_time_config.duty_resolution = LEDC_TIMER_13_BIT;
|
|
|
ledc_time_config.timer_num = LEDC_TIMER_0;
|
|
|
- ledc_time_config.freq_hz = 2000;
|
|
|
+ ledc_time_config.freq_hz = TEST_PWM_FREQ;
|
|
|
ledc_time_config.clk_cfg = LEDC_USE_APB_CLK;
|
|
|
return ledc_time_config;
|
|
|
}
|
|
|
@@ -492,6 +494,30 @@ TEST_CASE("LEDC timer pause and resume", "[ledc][test_env=UT_T1_LEDC]")
|
|
|
TEST_ASSERT_UINT32_WITHIN(5, count, 5000);
|
|
|
}
|
|
|
|
|
|
+static void ledc_cpu_reset_test_first_stage(void)
|
|
|
+{
|
|
|
+ ledc_channel_config_t ledc_ch_config = initialize_channel_config();
|
|
|
+ TEST_ESP_OK(ledc_channel_config(&ledc_ch_config));
|
|
|
+
|
|
|
+ ledc_timer_config_t ledc_time_config = create_default_timer_config();
|
|
|
+ TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
|
|
|
+ vTaskDelay(50 / portTICK_RATE_MS);
|
|
|
+ esp_restart();
|
|
|
+}
|
|
|
+
|
|
|
+static void ledc_cpu_reset_test_second_stage(void)
|
|
|
+{
|
|
|
+ TEST_ASSERT_EQUAL(ESP_RST_SW, esp_reset_reason());
|
|
|
+ int16_t count;
|
|
|
+ count = wave_count(1000);
|
|
|
+ TEST_ASSERT_UINT32_WITHIN(5, count, TEST_PWM_FREQ);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_CASE_MULTIPLE_STAGES("LEDC software reset test",
|
|
|
+ "[ledc][test_env=UT_T1_LEDC]",
|
|
|
+ ledc_cpu_reset_test_first_stage,
|
|
|
+ ledc_cpu_reset_test_second_stage);
|
|
|
+
|
|
|
#endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3)
|
|
|
|
|
|
#endif // SOC_PCNT_SUPPORTED
|