mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
fix(ledc): wrong interrupt status handling in ISR could cause INT WDT
Introduced in 88b62b19fd
This commit is contained in:
@@ -1206,7 +1206,7 @@ static void IRAM_ATTR ledc_fade_isr(void *arg)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
intr_status = ledc_ll_get_intr_status(p_ledc_obj[speed_mode]->ledc_hal.dev) & LEDC_LL_DUTY_CHANGE_END_INTR_MASK(speed_mode);
|
intr_status = ledc_ll_get_intr_status(p_ledc_obj[speed_mode]->ledc_hal.dev) & LEDC_LL_DUTY_CHANGE_END_INTR_MASK(speed_mode);
|
||||||
intr_status >>= __builtin_ctzll(intr_status);
|
intr_status >>= __builtin_ctzll(LEDC_LL_DUTY_CHANGE_END_INTR_MASK(speed_mode));
|
||||||
while (intr_status) {
|
while (intr_status) {
|
||||||
ledc_calc_fade_end_channel(&intr_status, &channel);
|
ledc_calc_fade_end_channel(&intr_status, &channel);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
import pytest
|
||||||
|
from pytest_embedded_idf import IdfDut
|
||||||
|
from pytest_embedded_idf.utils import idf_parametrize
|
||||||
|
from pytest_embedded_idf.utils import soc_filtered_targets
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.generic
|
||||||
|
@idf_parametrize('target', soc_filtered_targets('SOC_LEDC_SUPPORTED == 1'), indirect=['target'])
|
||||||
|
def test_ledc_fade_example(dut: IdfDut) -> None:
|
||||||
|
# repeat to test at least two rounds of fade
|
||||||
|
dut.expect_exact('1. LEDC fade up to duty = 4000')
|
||||||
|
dut.expect_exact('2. LEDC fade down to duty = 0')
|
||||||
|
dut.expect_exact('3. LEDC set duty = 4000 without fade')
|
||||||
|
dut.expect_exact('4. LEDC set duty = 0 without fade')
|
||||||
|
dut.expect_exact('1. LEDC fade up to duty = 4000')
|
||||||
|
dut.expect_exact('2. LEDC fade down to duty = 0')
|
||||||
|
dut.expect_exact('3. LEDC set duty = 4000 without fade')
|
||||||
|
dut.expect_exact('4. LEDC set duty = 0 without fade')
|
||||||
Reference in New Issue
Block a user