Перейти к содержанию
    

Как передать данные в процесс?

Возникла следующая неувязка.

Использую в проекте собранную сторонней компанией библиотеку. Он в прерывании читает данные и вызовом каллбэка отправляет мне. Пробую в этом каллбэке запихать данные в канал. После вызова push scmrtos падает.  Добавление макроса OS::scmRTOS_ISRW_TYPE TISRW решило бы проблему, но каким образом вставить в начало обработчика прерывания чужой либы?

Подскажите, как обойти проблему?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы попробовал так "в лоб".

void MyCallback {
  OS::scmRTOS_ISRW_TYPE TISRW;
  // Ваш код обраотчика
  
  
} // здесь на выходе деструктор TISRW просто восстановит состояние слова состояния процессора, и инициирует перепланировку

Ну, и надеюсь, сторонняя либа работает к рамках ОСРВ? А то может получиться неизвестно что)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...