It is well described in the docs that interrupt service routines that need to be enable during flash activity (write/erase only?) have to be put in ram and marked by IRAM_ATTR. These ISRs cannot call functions that are not placed in RAM - or exception will follow (discussed e.g. here: https://www.esp32.com/viewtopic.php?t=7684) .
In a timer group ISR, docs state it is necessary to call timer_spinlock_take() before calling timer API function like timer_group_clr_intr_status_in_isr(). However, while the latter is marked as IRAM_ATTR, timer_spinlock_take() is not. Is it a bug?
Shall I call timer_spinlock_take() from my IRAM ISR?
(I can confirm by the generated .map file that timer_spinlock_take() is not in the iram region)
+1: I need to notify a task from my timer ISR. Normally this is done via xTaskNotifyFromISR(). In another topics I read FreeRTOS API is loaded completely to IRAM - is that still so? Can one rely on that? (.map file shows that xTaskNotifyFromISR() is indeed in iram)
Thanks
Viktor
IRAM_ATTR timer ISR
Jump to
- English Forum
- Explore
- News
- General Discussion
- FAQ
- Documentation
- Documentation
- Sample Code
- Discussion Forum
- Hardware
- ESP-IDF
- ESP-BOX
- ESP-ADF
- ESP-MDF
- ESP-WHO
- ESP-SkaiNet
- ESP32 Arduino
- IDEs for ESP-IDF
- ESP-AT
- ESP IoT Solution
- ESP RainMaker
- Rust
- ESP8266
- Report Bugs
- Showcase
- Chinese Forum 中文社区
- 活动区
- 乐鑫活动专区
- 讨论区
- 全国大学生物联网设计竞赛乐鑫答疑专区
- ESP-IDF 中文讨论版
- 《ESP32-C3 物联网工程开发实战》书籍讨论版
- 中文文档讨论版
- ESP-AT 中文讨论版
- ESP-BOX 中文讨论版
- ESP IoT Solution 中文讨论版
- ESP-ADF 中文讨论版
- ESP Mesh 中文讨论版
- ESP Cloud 中文讨论版
- ESP-WHO 中文讨论版
- ESP-SkaiNet 中文讨论版
- ESP 生产支持讨论版
- 硬件问题讨论
- 项目展示
Who is online
Users browsing this forum: No registered users and 220 guests
- All times are UTC
- Top
- Delete cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. ESP8266EX and ESP32 are some of our products.