Запретить Linux переходить к другой задаче во время выполнения определенной функции

Я сделал реализацию протокола 1-wire для Raspberry Pi, адаптированную из этой книги. Он использует битовые удары для реализации протокола связи. Функция bcm2835_delayMicroseconds() из библиотеки BCM2835 используется для получения требуемых задержек.

Это работает довольно хорошо, но не совсем надежно: иногда я не получаю ответ от датчика. Я использовал осциллограф, чтобы отследить проблему. Вот скриншот осциллографа с интерпретацией сигнала зеленым цветом. введите описание изображения здесь Красным цветом обозначена неисправность: бит начального низкого импульса удлинился, в результате чего был введен мошенник "0". Это привело к тому, что датчик не распознал команду и не ответил на нее (последующие 1).

Я полагаю, что это произошло потому, что во время передачи этого бита ОС выгрузилась (переключилась на другую задачу / поток / процесс). Так можно ли сказать Linux не выгружать во время выполнения определенной функции (для записи и чтения одного бита в этом случае)? Или, может быть, есть другое решение этой проблемы?

0 ответов

Другие вопросы по тегам