![]() |
![]() |
#11 |
Member
Регистрация: 13.01.2014
Сообщений: 44
Вес репутации: 0 ![]() |
![]()
Я весь путь "самурая" наверное не повторю, т.к. много, что руками допиливал и собственно все в транке.
Но основная мысль следующая: 1. Если в настройках вызываемых make kernel_menuconfig "Device Drivers" нет пункта "PWM Support", дела не очень хороши. Это значит, что самого драйвера нет. Его нужно как-то получить в транк. Люди идут разными дорогами кто-то ищет готовый транк, кто-то вообще из сериальников ШИМ делает ![]() Собственно я скачал несколько транков и путем проб и ошибок добавил необходимый комплект сырцов для компиляции драйвера. Кстати выяснилась подробность, что драйвера эти бывают как "железные", т.е. есть аппаратный генератор ШИМ, так и софтовый. Я встроил драйвер софтовый, т.е. работающий на теймере. Не лучшее решение, т.к. ест процессорное время и может подвиснуть. Но лучшего нет для меня пока. 2. Если п.1 удалось преодолеть, остается дело за малым. Найти пакет, который дружит с вашим ядром и называется pwm-gpio-custom. Ставим, компилируем все это. 3. Если и 3 пункт вам удалось пройти заливаем прошивку в роутер и идем в OpenWRT 4. В каталоге /sys/class/pwm должны появиться ШИМы. Но совсем не обязательно ![]() 5. Если ШИМы не появились, видимо у вас GPIO используются другими примочками. У меня это делали LEDы. Идем обратно в make menuconfig и убираем лишнее. 6. Опять билдим и идем в openWRT. Есть? Нет? Ну не страшно... если нет, то значит, что у вас само без инициализации не взлетает. Делаем так: insmod pwm-gpio-custom bus0=0,21 21 это номер GPIO. Не угадаете, фокус не удастся ![]() Далее, если ошибок не было, идем в /sys/class/pwm и смотрим. Если там что-то есть - УРА! Ну а дальше все как у всех: Init @tick_hz at 1000000000UL (hardcoded) : # cat /sys/class/pwm/gpio_pwm.0\:0/request Define 100hz period : # echo 10000000 > /sys/class/pwm/gpio_pwm.0\:0/period_ns Define percent when gpio goes polarity for one tick : Base polarity is 0, so here 10% of tick is 0v, 90% is +3.3v. If you set polarity to 1, gpio goes 10% to 3.3v, and 90% to 0v. # echo 1000000 > /sys/class/pwm/gpio_pwm.0\:0/duty_ns Start pwm : # echo 1 > /sys/class/pwm/gpio_pwm.0\:0/run Stop pwm : # echo 0 > /sys/class/pwm/gpio_pwm.0\:0/run P.S. Кстати 9 каналов я тоже поднял. Последний раз редактировалось balabol; 20.01.2014 в 01:18. |
![]() |
![]() |
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|