У меня есть установка, подключающая сенсорную плату Razor IMU с платой RS-485 к последовательному интерфейсу USB-RS485 через USB-кабель к моему ноутбуку. Я запускаю программное обеспечение на ноутбуке (Max / MSP), которое отправляет сообщения опроса на датчик, ожидает данные ответа и при получении ответа автоматически запускает новое сообщение опроса. Это постоянный цикл:
- отправить сообщение для голосования
- ждать ответа
- в ответ перейдите к 1.
Я хочу, чтобы опрос проводился как можно быстрее, так как мне придется подключить 21 из этих датчиков к одной шине RS485. Микропрограммное обеспечение на Razor программируется с помощью Arduino IDE , и согласно коду, между сообщением об опросе и записью ответа должна быть задержка всего ~ 2 мс. Микропрограмма также тратит 12 мс каждые 20 мс на распределение и расчет датчика. Этот расчет иногда задерживает ответ на опрос. Я знаю об этом, и все результаты соответственно.
Моя проблема сейчас заключается в том, что опрос датчика зависает с частотой обновления в среднем 15 миллисекунд. Я посмотрел на данные с помощью небольшого usb-осциллографа и сделал диаграмму (> PDF).
Мой осциллограф находится непосредственно на интерфейсе USB-RS485 и видит, что опрос завершается, и приходит ответное сообщение. Задержка между этими двумя значениями составляет от 2 до 13 мс. Эта разница объясняется тем фактом, что иногда бритва занята своими математическими вычислениями. Странный факт заключается в том, что, хотя ответы приходят с разными задержками, опрос всегда проходит с одинаковым интервалом около 15 мс.
Мы также реализовали ту же настройку с
- кодирование прошивки на C и программирование Razor с помощью avr-dude
- делать программный опрос в коде Python
- на Mac OSX и ПК с Windows 7
Все возможные комбинации приводили к одному и тому же интервалу 15 мс. Так что проблема не в Arduino-коде, ни в Max / MSP. У меня есть подозрение, что проблема может быть связана с последовательным интерфейсом USB-RS485 и / или необходимым драйвером FTDI.
Эта проблема звучит знакомо никому ??