Не совсем понял, что грузит процессор.
Под внешними контроллерами ШИМ вы подразумеваете аппаратные? Аппартные ШИМ вообще 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