ШИМ, он же PWM

Изначально у нас на железке четыре PWM, имеющиеся в составе главного проца. PWM аппаратные, высокоточные (27Мгц, 64-х битный счётчик). Но четыре - это очень, очень мало.
Вчера была большая радость - Саня наваял драйвер полу-программного PWM, на базе свободного таймера проца. Таймер тоже довольно высокоточный (тоже 64 бита), но из-за ограничений архитектуры ARM в плане вложенности прерываний точность этого "полупрограммного PWM" не айс - серва, управляемая таким PWM слегка подёргивается. Это недостаток, конечно, но зато такие полу-программные PWM доступны на любом свободном пине (коих у нас на борту разведено как собак в Якутии). Количество одновременных каналов пока ограничено 8-ю штуками (опять же, из-за ограничений по таймингам прерываний), но вполне вероятно что и больше потянет. Управлять сервой, конечно, этими PWM не стоит, а вот на что-нить неприхотливое типа драйвера коллекторных моторов, плавную светодиодную подсветку и т.д. - очень даже на ура пашет.

Итого, получается что сейчас на борту есть 4 высокоточных аппаратных PWM и 8 "гибридных".

Управление простейшее - есть девайс /dev/v2r_pwm, в который пишем команды. И всё, соббсно, проще некуда.

В тиражном варианте планируем добавить специализированный чип, который будет только за PWM отвечать. Каналов эдак на 16, шоп всем хватило :-) Плюс все те которые уже сейчас есть. Лепота, короче.

P.S. Кстати, у Малины только программные PWM. ..., короче :-)