mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-18 06:35:35 +03:00
Merge branch 'contrib/github_pr_18569_v5.5' into 'release/v5.5'
fix(i2c_master): yield from ISR when no matching device is found (GitHub PR) (v5.5) See merge request espressif/esp-idf!48428
This commit is contained in:
@@ -827,7 +827,10 @@ static void i2c_master_isr_handler_default(void *arg)
|
||||
}
|
||||
xSemaphoreGiveFromISR(i2c_master->bus_lock_mux, &HPTaskAwoken);
|
||||
if (i2c_dev == NULL) {
|
||||
return;
|
||||
// HPTaskAwoken may have been set by xQueueSendFromISR / xSemaphoreTakeFromISR /
|
||||
// xSemaphoreGiveFromISR above; fall through to the yield check at the end of
|
||||
// the ISR rather than returning directly.
|
||||
goto out;
|
||||
}
|
||||
i2c_master_event_data_t evt = {
|
||||
.event = i2c_master->event,
|
||||
@@ -865,6 +868,7 @@ static void i2c_master_isr_handler_default(void *arg)
|
||||
xSemaphoreGiveFromISR(i2c_master->cmd_semphr, &HPTaskAwoken);
|
||||
}
|
||||
|
||||
out:
|
||||
if (HPTaskAwoken == pdTRUE) {
|
||||
portYIELD_FROM_ISR();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user