Изначально у нас на железке четыре PWM, имеющиеся в составе главного проца. PWM аппаратные, высокоточные (27Мгц, 64-х битный счётчик). Но четыре - это очень, очень мало.
Вчера была большая радость - Саня наваял драйвер полу-программного PWM, на базе свободного таймера проца. Таймер тоже довольно высокоточный (тоже 64 бита), но из-за ограничений архитектуры ARM в плане вложенности прерываний точность этого "полупрограммного PWM" не айс - серва, управляемая таким PWM слегка подёргивается. Это недостаток, конечно, но зато такие полу-программные PWM доступны на любом свободном пине (коих у нас на борту разведено как собак в Якутии). Количество одновременных каналов пока ограничено 8-ю штуками (опять же, из-за ограничений по таймингам прерываний), но вполне вероятно что и больше потянет. Управлять сервой, конечно, этими PWM не стоит, а вот на что-нить неприхотливое типа драйвера коллекторных моторов, плавную светодиодную подсветку и т.д. - очень даже на ура пашет.
Итого, получается что сейчас на борту есть 4 высокоточных аппаратных PWM и 8 "гибридных".
Управление простейшее - есть девайс /dev/v2r_pwm, в который пишем команды. И всё, соббсно, проще некуда.
В тиражном варианте планируем добавить специализированный чип, который будет только за PWM отвечать. Каналов эдак на 16, шоп всем хватило :-) Плюс все те которые уже сейчас есть. Лепота, короче.
P.S. Кстати, у Малины только программные PWM. Ацтой, короче :-)
Гость Пятница, 11 Января, 2013 14:24 цитировать ссылка на коммент
Гость Суббота, 12 Января, 2013 17:18 цитировать ссылка на коммент
Dyez Суббота, 19 Января, 2013 07:58 цитировать ссылка на коммент
Гость Четверг, 28 Февраля, 2013 16:31 цитировать ссылка на коммент