Библиотека Arduino загружает свои внутренние прерывания в IRAM на ESP32C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Библиотека Arduino загружает свои внутренние прерывания в IRAM на ESP32

Сообщение Anonymous »

Когда я разработал для ESP32, я всегда включал атрибут линкера iram_attr , когда я объявил функции, вызванные от прерываний. Это основано на https://docs.espressif.com/projects/esp ... notes.html:

Рукорождение прерывания, когда ручная ручная работа, когда ручные работы, esp_intr_flag_RAM, «Br/Br/ruandler». В этом случае ISR может только
функции вызова, помещенные в IRAM, или функции, присутствующие в ROM

, чтобы лучше понять, как используется attachintrupt Introutine Callback. Это std :: функция называется из внутренней функции:
static void ARDUINO_ISR_ATTR __onPinInterrupt(void * arg) {
InterruptHandle_t * isr = (InterruptHandle_t*)arg;
if(isr->fn) {
if(isr->arg){
((voidFuncPtrArg)isr->fn)(isr->arg);
} else {
isr->fn();
}
}
}

где arduino_isr_attr определяется как:

Код: Выделить всё

#if CONFIG_ARDUINO_ISR_IRAM
#define ARDUINO_ISR_ATTR IRAM_ATTR
#define ARDUINO_ISR_FLAG ESP_INTR_FLAG_IRAM
#else
#define ARDUINO_ISR_ATTR
#define ARDUINO_ISR_FLAG (0)
#endif
Я не уверен, где установлен config_arduino_isr_iram для цепочки инструментов Arduino, но просмотр платформы Framework-arduinoespressif32/tool Разве не загружаются в IRAM для целей ESP32?


Подробнее здесь: https://stackoverflow.com/questions/797 ... -the-esp32
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»