Управляем чем угодно откуда угодно

PWM в virt2real

Виртурилка, 3G/4G, WiFi, моторчики, датчики, GPS и прочее - питание, драйвера, совместимость и т.д.

PWM в virt2real

Сообщение sanya555 » 13 май 2014, 18:59

Всем привет, пишу программу для управления машинкой, и для пропорционального управления использую встроенную PWM. Но встроенная PWM ест очень много ресурсов (при стриминге видео, приеме команд по udp и запуска 4-ох pwm проц работает на все 100%). Если отключить ШИМ,то грузится только на 30-35%. Можно ли это как-нибудь решить без использования внешних контроллеров ШИМ?
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: PWM в virt2real

Сообщение Noor » 14 май 2014, 00:53

А как загруженность процесора посмотреть?
Мастер сам устанавливает закон
Noor
 
Сообщения: 343
Зарегистрирован: 04 сен 2013, 20:03

Re: PWM в virt2real

Сообщение sanya555 » 14 май 2014, 09:41

Можно просто командой top.
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: PWM в virt2real

Сообщение eagafonov » 14 май 2014, 11:46

Не совсем понял, что грузит процессор.

Под внешними контроллерами ШИМ вы подразумеваете аппаратные? Аппартные ШИМ вообще CPU не грузят.

Как часто вы отправляете команды ШИМ контроллеру? У меня в коптере 4 апаратных PWM обновляются 100 раз в секунду и я не заметил, что именно это грузит CPU.

Каким образом вы отправляете команды? в скриптах а-ля echo "set pwm <номер_pwm> <duty> <period>" > /dev/v2r_pins или программно открываете файл и пишете туда строчки ?

Опять же в коптере я один раз открываю файл /dev/v2r_pins и пишу туда строчки "set pwm <номер_pwm> <duty> <period>" без закрытия файла.
Плюс небольшой хак - если значение параметров для какого-то PWM не поменялись с последней записи, но ничего не отправляется.

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

https://github.com/eagafonov/v2r-ardupi ... t.cpp#L162
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: PWM в virt2real

Сообщение sanya555 » 14 май 2014, 14:53

Под контроллером ШИМ я имел в виду какую то микросхему драйвера.
Команду ШИМ отправляю скриптами.

Объясняю как у меня все происходит, на плате запущен gstreamer и моя программка, которая принимает данные по udp и отправляет их на ШИМ. При этом если ШИМ включен, то команды очень медленно обрабатываются.

UPD: В общем сделал передачу команд ШИМ напрямую в файл как у вас и все нормально заработало. Благодарю за помощь.
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: PWM в virt2real

Сообщение eagafonov » 14 май 2014, 20:45

sanya555 писал(а):моя программка, которая принимает данные по udp и отправляет их на ШИМ


Ещё для поиска узких мест мне сильно помогает strace (http://linux.die.net/man/1/strace)

Например, в ардукоптере фигово реализовна работа с UART - read в неблокирующем режиме вызывается в цикле в отдельном потоке.
strace сразу показал огромное количество read которые возвращали -1.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: PWM в virt2real

Сообщение Gol » 18 июн 2014, 15:31

PWM не могут грузить систему, т.к. это чисто аппаратная шняга. Может грузить процесс записи в драйвер. Сам драйвер нагрузку создаёт копеечную, эт я как только не проверял, так что смотри скрипты свои которыми пишешь команды в драйвер.

UPD> а, выше уже ответили, пардон.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва


Вернуться в Железо - заставляем работать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron