2

Резюме

Я читаю последовательные данные через порт USB, и когда ноутбук заряжается, COM-порт получает около 60 обновлений в секунду, а когда ноутбук не заряжается, COM-порт получает около 1 обновления в секунду.


Фон (я не уверен, какая информация полезна)

Я работаю над проектом, в котором набор датчиков взаимодействует с микропроцессором, а микропроцессор подключен к ноутбуку. Поскольку мне нужны данные для управления в реальном времени, важна скорость, с которой ноутбук получает информацию от микропроцессора.

Как правило, мне удавалось получать около 60 обновлений от микропроцессора в секунду. Однако я часто сталкиваюсь с замедлением без видимой причины. Сегодня произошло одно из таких замедлений, и я понял, что когда ноутбук не заряжался активно, обновления в секунду были очень медленными, но когда ноутбук заряжался, он получал обновления на полной скорости.

Обратите внимание, что микропроцессор не питается от ноутбука.

Редактировать 1: Мой план питания настроен на баланс.

Изменить 2: я сделал следующие изменения, чтобы попытаться улучшить производительность

  1. Я установил для своих критических процессов приоритет в реальном времени
  2. установить мой план питания на высокую производительность
  3. Я выводил данные в консольное окно довольно быстро, поэтому я уменьшил консольную печать
  4. Я отключил выборочную приостановку USB
  5. Ранее я изменил таймер задержки COM-порта на 1 мс, а прием (байты) - на 128, чтобы попытаться устранить проблемы со связью с этим устройством.

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

Глядя на диспетчер задач, когда программа работает должным образом, загрузка процессора составляет около 50%, а использование памяти составляет около 50%. В тот момент, когда произошло замедление, загрузка ЦП снизилась примерно до 25%, использование памяти осталось неизменным.

Похоже, что количество потоков и дескрипторов, отображаемых в диспетчере задач, неуклонно растет с течением времени, примерно до 4000 потоков и 98000 дескрипторов. Когда я закрыл свои программы, количество потоков уменьшилось до 3000, а число обработчиков - до 90000.

Настройки COM-порта

Изменить 3:

Я вошел в BIOS и изменил Intel Speedstep на отключенный, а управление состояниями C на отключенный. Это, похоже, ничего не исправило. Я сделал это по совету этой веб-страницы: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html

Редактировать 4: Я использовал Docklight, чтобы подтвердить, что микропроцессор отправляет информацию достаточно быстро. Так что проблема определенно на стороне ноутбука

0