Что касается связи на основе прерываний
-
07-07-2019 - |
Вопрос
У нас есть простая архитектура:
<Ол>PIC связывается с ARM через протокол связи I2C на основе прерываний для передачи данных. Внутри прерывания мы сигнализируем задачу, которая считывает данные со слоя I2C (шины).
В случае, если данные ограничены, у нас обычно не будет особых проблем с чтением данных и отправкой их на верхний уровень. В случае, если эти данные очень велики, прерывание будет связано в течение длительного времени. Р>
Первый вопрос:
<Ол>Я прав?
Если я прав, как этого избежать? ... или мы можем другое решение?
Решение
Иметь какой-то «рабочий поток», иногда называемый потоком ядра, задачей которого является извлечение данных из интерфейса I2C и их буферизация, передача их другим частям вашей системы и т. д. Используйте процедуру прерывания только чтобы разблокировать поток ядра. Таким образом, если есть другие обязанности, которые должна выполнять система, обработчик прерываний не препятствует этому, и вы по-прежнему своевременно получаете данные со своего устройства.
Другие советы
Вы не должны читать полный пакет за одно выполнение процедуры прерывания. В зависимости от аппаратной поддержки вы должны обрабатывать один образец / бит / байт, хранить данные в буфере и сигнализировать о задаче только после завершения пакета.