Gradient 1 12 апреля, 2021 Опубликовано 12 апреля, 2021 · Жалоба Возникла следующая неувязка. Использую в проекте собранную сторонней компанией библиотеку. Он в прерывании читает данные и вызовом каллбэка отправляет мне. Пробую в этом каллбэке запихать данные в канал. После вызова push scmrtos падает. Добавление макроса OS::scmRTOS_ISRW_TYPE TISRW решило бы проблему, но каким образом вставить в начало обработчика прерывания чужой либы? Подскажите, как обойти проблему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 12 апреля, 2021 Опубликовано 12 апреля, 2021 · Жалоба Я бы попробовал так "в лоб". void MyCallback { OS::scmRTOS_ISRW_TYPE TISRW; // Ваш код обраотчика } // здесь на выходе деструктор TISRW просто восстановит состояние слова состояния процессора, и инициирует перепланировку Ну, и надеюсь, сторонняя либа работает к рамках ОСРВ? А то может получиться неизвестно что) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 12 апреля, 2021 Опубликовано 12 апреля, 2021 · Жалоба Ща потестю.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gradient 1 12 апреля, 2021 Опубликовано 12 апреля, 2021 · Жалоба Вроде помогло. За пару часов сбоев нет. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться