Что касается связи на основе прерываний - PullRequest
0 голосов
/ 15 сентября 2009

У нас простая архитектура:

  1. Основной чип (на базе arm9)
  2. PIC контроллер

PIC связывается с ARM через протокол связи I2C на основе прерываний для передачи данных. Внутри прерывания мы сигнализируем задачу, которая считывает данные со слоя I2C (шины).

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

Первый вопрос:

  1. Я прав?

  2. Если я прав, как этого избежать? ... или мы можем другое решение?

Ответы [ 2 ]

5 голосов
/ 15 сентября 2009

Иметь какой-то «рабочий поток», иногда называемый потоком ядра, задачей которого является извлечение данных из интерфейса I2C и их буферизация, передача их в другие части вашей системы и т. Д. Используйте процедуру прерывания только чтобы разблокировать поток ядра. Таким образом, если система выполняет другие обязанности, ей не мешает обработчик прерываний, и вы по-прежнему своевременно получаете данные со своего устройства.

3 голосов
/ 15 сентября 2009

Вы не должны читать полный пакет за одно выполнение процедуры прерывания. В зависимости от аппаратной поддержки вы должны обрабатывать один образец / бит / байт, хранить данные в буфере и сигнализировать о задаче только после завершения пакета.

...