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

Очередь в прерываниях, чаще системного тика

Есть некая задача, требующая прерывания каждые 250мкс и обмен данными с другими задачами. Для получения этого времени использую таймер. Системный тик - 1мс.

Подскажите, нормально ли использовать встроенный механизм очередей для обмена данными между задачами и прерыванием, которое в 4 раза чаще тика?

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


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

Есть некая задача, требующая прерывания каждые 250мкс и обмен данными с другими задачами. Для получения этого времени использую таймер. Системный тик - 1мс.

Подскажите, нормально ли использовать встроенный механизм очередей для обмена данными между задачами и прерыванием, которое в 4 раза чаще тика?

 

нормально, если очередь длинная, но очень неэффективно.

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


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

нормально, если очередь длинная, но очень неэффективно.

Почему?

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


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

Почему?

 

для записи элемента в очередь используется довольно-таки большой и тяжелый механизм. Он будет вызываться 4 раза на тик. Это будет отъедать время, которое могут использовать другие задачи (включая сон).

 

 

 

Если известно, что данные точно приходят, то более разумно организовать кольцевой буфер, а в прерывании вообще не использовать механизмов оси. При этом синхронизацию организовать либо на спинлоках, либо вообще просто ждать в приемнике данных в цикле, когда обновится индекс записи в буфер.

 

Например:

 

FreeRTOS 7.0, Keil. Тики - 10мс. UART @57600 примерно 2kbytes/sec передается. STM32L152 @ 16MHz. Разница очереди (каждый принятый байт в очередь) и буфера - примерно 0.2мА не в пользу очереди.

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


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

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

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

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

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

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

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

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

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

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