Cosmojam 0 15 февраля, 2012 Опубликовано 15 февраля, 2012 · Жалоба Есть некая задача, требующая прерывания каждые 250мкс и обмен данными с другими задачами. Для получения этого времени использую таймер. Системный тик - 1мс. Подскажите, нормально ли использовать встроенный механизм очередей для обмена данными между задачами и прерыванием, которое в 4 раза чаще тика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 15 февраля, 2012 Опубликовано 15 февраля, 2012 · Жалоба Есть некая задача, требующая прерывания каждые 250мкс и обмен данными с другими задачами. Для получения этого времени использую таймер. Системный тик - 1мс. Подскажите, нормально ли использовать встроенный механизм очередей для обмена данными между задачами и прерыванием, которое в 4 раза чаще тика? нормально, если очередь длинная, но очень неэффективно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 15 февраля, 2012 Опубликовано 15 февраля, 2012 · Жалоба нормально, если очередь длинная, но очень неэффективно. Почему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 15 февраля, 2012 Опубликовано 15 февраля, 2012 · Жалоба Почему? для записи элемента в очередь используется довольно-таки большой и тяжелый механизм. Он будет вызываться 4 раза на тик. Это будет отъедать время, которое могут использовать другие задачи (включая сон). Если известно, что данные точно приходят, то более разумно организовать кольцевой буфер, а в прерывании вообще не использовать механизмов оси. При этом синхронизацию организовать либо на спинлоках, либо вообще просто ждать в приемнике данных в цикле, когда обновится индекс записи в буфер. Например: FreeRTOS 7.0, Keil. Тики - 10мс. UART @57600 примерно 2kbytes/sec передается. STM32L152 @ 16MHz. Разница очереди (каждый принятый байт в очередь) и буфера - примерно 0.2мА не в пользу очереди. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cosmojam 0 15 февраля, 2012 Опубликовано 15 февраля, 2012 · Жалоба Спасибо за ответы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться