Orange Pi

Устройства - Devices => Orange Pi PC => Тема начата: StaLeWaR от Февраль 17, 2016, 01:30:19 pm

Название: Работа с PWM
Отправлено: StaLeWaR от Февраль 17, 2016, 01:30:19 pm
Товарищи добрый день!
Ищу информацию по работе PWM на Pi PC.
Хочу реализовать управление кулером.
Может кто нибудь поделится примерами кода?  ;)
Название: Re: Работа с PWM
Отправлено: ua3nbw от Февраль 19, 2016, 02:02:35 pm
Аппаратный ШИМ работает на порту PA5 (средний пин boot connector )
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=1153&extra=page%3D1
Проверил осцилографом 
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 09:38:57 am
спасибо!
А как же заявленый PWM1 который сидит на PA6 ?
Неужели никто не юзает шим?
Название: Re: Работа с PWM
Отправлено: UB3GAD от Февраль 20, 2016, 09:52:37 am
Многие купили эту плату как медиаплеер или на linux посмотреть...
А по поводу шим единственное применение для меня это управлять яркостью подсветки дисплея, через самописные костыли, и то до этого руки еще не дошли.

Кстати я правильно понимаю светодиоды на плате тоже через аппаратный шим управляются, иначе я не знаю как объяснить что в спящем режиме у светодиода падает яркость
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 10:09:48 am
Я купил его как дешевую альтернативу малине, ибо цены не сопостовимые  :D
Думал сваять управление кулером или например контроллер управления светодиодными лентами на WS2812

Чтото софтверная поддержка у апельсина страдает  :(
Название: Re: Работа с PWM
Отправлено: UB3GAD от Февраль 20, 2016, 10:14:20 am
Я купил его как дешевую альтернативу малине, ибо цены не сопостовимые  :D
Думал сваять управление кулером или например контроллер управления светодиодными лентами на WS2812

Чтото софтверная поддержка у апельсина страдает  :(
Если с WS2812 разберешься отпишись, у меня ее метров 5 валялось...
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 10:48:35 am
Кстати я правильно понимаю светодиоды на плате тоже через аппаратный шим управляются, иначе я не знаю как объяснить что в спящем режиме у светодиода падает яркость
Неправильно понимаете, шим тут ни при чем ,в спящем режиме отключается часть источников питания. Свечение в полнакала скорее схемная фича.
Я купил его как дешевую альтернативу малине, ибо цены не сопостовимые  :D
Чтото софтверная поддержка у апельсина страдает  :(
Сравните пользовательскую армию поддержки, апельсинка, тем более на Н3, появилась всего где то год назад, поэтому "готовых решений" соответственно меньше порядка на два если не больше. Решения для Малинки тоже создавали не производители, а пользователи. Поэтому если уверены в своих возможностях придумывать и создавать решения - флаг в руки, пишите паяйте делитесь с другими и будет у апельсина программно-аппаратная поддержка.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 12:21:16 pm
Если с WS2812 разберешься отпишись, у меня ее метров 5 валялось...

Там разбираться особо не с чем, поддержка на уровне  библиотеки Wiring пока что отсутствует.
А своих сил явно не хватит чтобы дописать этот функционал.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 12:24:10 pm
@AlDemin

Может Вы уважаемый знаете сакральное заклятье почему же модуль pwm-sunxi не поднимает файловую структуру в /sys ?  ;D
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 01:04:01 pm
Озвучу свои догадки:
1-е  забрать порт у gpio
;gpio_pin_5 = port:PA06<1><default><default><0>
2-е включит на нем pwm
[pwm1_para]
pwm_used = 1
pwm_positive = port:PA06<3><0><default><default>
; If set gamc_phy to use = 2
Последняя строка мне пока не понятна, для чего ставится 2-ка и вместо чего.
И возможно модуль pwm-sunxi увидит устройство и создаст то что требуется для работы.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 01:22:48 pm
я пробовал так вчера.
мало того что модуль не увидел pwm дак и еще и температура процессора просто зашкаливала, при старте в простое сразу 76градусов
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 02:36:09 pm
Догадки не верны, покопавшись в даташите на Н3 нашел, что никакого pwm1 у него нет, только pwm0 на PA05. Или может у Н3 есть разные ревизии?
А вот UB3GAD скорее всего прав вывод PL10, на котором красный светодиод, кроме gpio еще и s_pwm вот только ничего больше об этом функционале я не нашел, как он задействуется и управляется непонятно.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 03:00:07 pm
ну как же не верное?
открываем orange_pi-pc v1_2 страница 6
(http://i74.fastpic.ru/big/2016/0220/e1/0df30bf3db7d33e0f25ff1c60c08a1e1.jpg)
Порт PA5 - PWM0
Порт PA6 - PWM1
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 04:07:33 pm
Я тоже на это купился, когда высказывал свои догадки, а потом посмотрел Allwinner_H3_Datasheet_V1.1.pdf, а там ничего о pwm1
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 04:26:53 pm
насчет ревизий H3 незаю а вот мануалы явно не сходятся  :o
По версии даташита v1.0  шим на портах PA5 и PA6 присутствует  ;D ;D ;D ;D
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 05:04:03 pm
У меня версия новее.
А что в твоей версии в пункте "2.2. System Block Diagram"?
У меня там один pwm.
и  в пункте "4.10 PWM" что ни будь есть о pwm1?

А вообще ты ж сам написал, что включение pwm1 ничего не дало,
тогда как с pwm0 все срабатывает.

Остается принять факт его отсутствия.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 06:48:23 pm
да ты видимо прав.
я так понял PA5 это пин который на гребенку uart выведен на дебаг ?
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 07:21:11 pm
Да, RX, но как uart тогда его выключай.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 07:37:05 pm
а можно переназначить консоль дебага на uart который выведен на 38 и 40 пины?
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 08:20:06 pm
Думаю, что да, как то так:

[uart1]
uart_used = 1
uart_port = 1
uart_type = 2
uart_tx = port:PG06<2><1><default><default>
uart_rx = port:PG07<2><1><default><default>
;uart_rts = port:PG08<2><1><default><default>
;uart_cts = port:PG09<2><1><default><default>

[gpio_para]
gpio_used = 1
gpio_num = 19
gpio_pin_1 = port:PL10<1><default><default><0>
gpio_pin_2 = port:PA15<1><default><default><1>
;gpio_pin_3 = port:PA06<1><default><default><0>
gpio_pin_4 = port:PA13<1><default><default><0>
gpio_pin_5 = port:PA14<1><default><default><0>
gpio_pin_6 = port:PD14<1><default><default><0>
gpio_pin_7 = port:PA03<1><default><default><0>
gpio_pin_8 = port:PC04<1><default><default><0>
gpio_pin_9 = port:PC07<1><default><default><0>
gpio_pin_10 = port:PC03<1><default><default><0>
gpio_pin_11 = port:PA21<1><default><default><0>
gpio_pin_12 = port:PA07<1><default><default><0>
gpio_pin_13 = port:PA08<1><default><default><0>
gpio_pin_14 = port:PG08<1><default><default><0>
gpio_pin_15 = port:PA09<1><default><default><0>
gpio_pin_16 = port:PA10<1><default><default><0>
gpio_pin_17 = port:PG09<1><default><default><0>
;gpio_pin_18 = port:PG06<1><default><default><0>
;gpio_pin_19 = port:PG07<1><default><default><0>

И пересобрать ядро исправив строку в Boot options -->
earlyprintk=ttyS1,115200 loglevel=8 initcall_debug=0 console=ttyS1,115200 console=tty0 init=/init

Cам сейчас попробовать не могу.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 20, 2016, 09:04:36 pm
надо будет попробовать  :D
думаю добавить в pwm_para PA05, подгрузить модуль pwm-sunxi и посмотреть появится ли он в /sys
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 20, 2016, 09:20:30 pm
PWM в /sys появляется, проверил.
Консоль не проверял, ядро возможно пересобирать не нужно, если uart0 будет отключен, то возможно ядро назначит устройство ttyS0 первому найденному uart-у.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 21, 2016, 09:08:55 am
благодарю за информацию о подтверждении!
интересно, на PI One может подправили разводку? схематики на официальном сайте нету
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 21, 2016, 04:17:04 pm
Поправка, ядро само ttyS0 не назначит, он назначается так:

[uart1]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PG06<2><1><default><default>
uart_rx = port:PG07<2><1><default><default>

Без пересборки работает, только о замене порта не знает u-boot поэтому на переназначенный порт инфа идет после старта ядра.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 21, 2016, 04:49:01 pm
кстати вопрос по u-boot и вообще процессу загрузки.
сколько у тебя проходит от момента подачи питания до загрузки ядра?

для примера, я вкомпилировал в ядро модуль выводящее на дисплей hd44780 сообщение при загрузке
С момента подачи питания до появления сообщения на дисплее проходит около 6 секунд.

Думаю как уменьшить это время.
Полагаю что 3 секунды забирает штатный делей в u-boot.
Как еще можно уменьшить время?
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 21, 2016, 05:16:36 pm
Аналогично ~6 секунд:
[      2.045]Hit any key to stop autoboot:  0 
[      5.308][mmc]: blkcnt should not be 0
[      5.799][mmc]: blkcnt should not be 0
## Booting kernel from Legacy Image at 40007800 ...
   Image Name:   Linux-3.4.39-02-lobo
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    10965080 Bytes = 10.5 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
[      5.992][mmc]: MMC Device 2 not found
[      5.996][mmc]:  mmc  not find,so not exit
[      6.000]
Starting kernel ...
3 скунды ожидания
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 21, 2016, 05:43:55 pm
3 секунды можно убрать пересобрав u-boot с опцией CONFIG_BOOTDELAY=0
видимо это единственное место где можно уменьшить время загрузки
Название: Re: Работа с PWM
Отправлено: megahertz от Февраль 21, 2016, 05:53:11 pm
Всем привет
Кто-то разобрался как рулить аппаратным ШИМ на опельсинке?
root@Opelsinka:/home/orangepi/examples# gpio mode 3 pwm
root@Opelsinka:/home/orangepi/examples# gpio pwm 3 100
[pwmWrite:L2344] the pin:-1 is invaild,please check it over!
где рука косячит?
адекватной документации по PWM не нашел(
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 21, 2016, 06:39:09 pm
адекватной поддержки pwm нету, единственный вариант через модуль pwm-sunxi
pwm сидит на PA05 который на гребенке дебага средний пин, заявленый порт PA06 который сидит на  общей гребенке GPIO на пине 7 не подерживает PWM исходя из документации на чип  H3 datasheet v1.1

поддержка в библиотеке wiringop не реализована
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 21, 2016, 09:05:05 pm
Шим управляется просто, всего через два аппаратных регистра,
через один можно:
1 собственно включить
2 выбрать режим: одиночный импульс или непрерывная последовательность
3 выбрать полярность активного импульса
4 установить коэффициент деления прескалера
5 дать команду на выдачу одиночного импульса
6 пропустить напрямую 24МГц
через второй:
задать количество циклов активного импульса 16 бит
и задать количество циклов периодического сигнала.

Как все эти параметры драйвер преобразует в "файлы" в /sys/devices/virtual/sunxi_pwm/sunxi_pwm и как этим рулить -
я без понятия.
Название: Re: Работа с PWM
Отправлено: megahertz от Февраль 21, 2016, 10:00:01 pm
круто, алгоритм действий понятен, с софтовым шимом разобрался, но хочется как-то заюзать аппаратный шим или понять как работать с пинами которые по табличке gpio readall либо не пронумерованы, либо имеют номер -1(колонка wPi)
   
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 21, 2016, 10:31:19 pm
как работать с пинами которые по табличке gpio readall либо не пронумерованы, либо имеют номер -1(колонка wPi)
Не понял, где вы это смотрите?
И что за ексемплы приводили выше?
Аппаратный шим у Н3 только на PA5
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Февраль 22, 2016, 07:09:46 am
Уважаемый megahertz
Коли пошла такая пьянка, выложите ваши эксемплы с софтверным ШИМ ;D
Название: Re: Работа с PWM
Отправлено: megahertz от Февраль 22, 2016, 03:52:00 pm
AlDemin
смотри аттач
сталевар, сорс ниже, по нему работаем с IO1 PD14(см.таблицу gpio readall)
#include <wiringPi.h>
int main()
{   
wiringPiSetup();       
int t_on, t_off;

int d, i;
d=100;

t_on=50*d;
t_off=50*(100-d);
for (i=10; i!=0; i++)
{             
digitalWrite(1, LOW);   
delayMicroseconds(t_on);   
digitalWrite(1, HIGH);       
delayMicroseconds(t_off);     
}
return(0);
}
Название: Re: Работа с PWM
Отправлено: AlDemin от Февраль 22, 2016, 05:09:18 pm
Так вы прокладку типа WiringPi имели ввиду...
Само собой она не покушается на то, что может быть занято другими функциями.
Работайте через драйвер ядра gpio_sunxi
Посылайте единички и нолики в "файл" /sys/class/gpio_sw/PD14/data
Получите эти единички и нолики на 12-м пину гребенки.

А чтоб воспользоваться к примеру 8 и 10 пинами в script.bin отключаем uart3 если включен:
[uart3]
uart_used = 0
uart_port = 3
uart_type = 2
uart_tx = port:PA13<3><1><default><default>
uart_rx = port:PA14<3><1><default><default>

включаем их если выключены в gpio:
[gpio_para]
gpio_used = 1
gpio_pin_4 = port:PA13<1><default><default><0>
gpio_pin_5 = port:PA14<1><default><default><0>

За одно не помешает проверить не задействованы ли они еще где:
[spi1]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PA13<2><1><default><default>
spi_sclk = port:PA14<2><default><default><default>

после старта модуль gpio_sunxi их подхватит и создаст соответствующие "файлы"
/sys/class/gpio_sw/PA13/data
/sys/class/gpio_sw/PA14/data

если нужен ввод, к примеру на PA14, то делаем так:
[gpio_para]
gpio_used = 1
gpio_pin_4 = port:PA13<1><default><default><0>
gpio_pin_5 = port:PA14<0><1><default><default>
и я так понимаю, что из файла
/sys/class/gpio_sw/PA14/data будем читать состояние пина.
Щаз проверю.

UPD: предчувствия меня не обманули: поставил перемычку на пины 8-10
пишу в /sys/class/gpio_sw/PA13/data читаю состояние /sys/class/gpio_sw/PA14/data
работает.
Название: Re: Работа с PWM
Отправлено: megahertz от Февраль 22, 2016, 06:46:29 pm
спасибо, буду пробовать.
Название: Re: Работа с PWM
Отправлено: megahertz от Март 01, 2016, 02:15:04 pm
хы, собсна добрался таки до вопроса) как отключить юарт в script.bin ?)
Название: Re: Работа с PWM
Отправлено: AlDemin от Март 01, 2016, 02:39:04 pm
uart_used       = 0
Название: Re: Работа с PWM
Отправлено: megahertz от Март 05, 2016, 04:11:30 pm
взорвался мозг..как узнать какой из пинов реально PWM...тыкаться на угад?
например при gpio mode 3 pwm конфиг принял, но 3- это реально, какой пин по таблице gpio
>uart_used       = 0 - сделал
Название: Re: Работа с PWM
Отправлено: AlDemin от Март 05, 2016, 07:39:21 pm
По таблице GPIO это PA05
Физически на гребенке между разъемами питания и HDMI - средний пин.
Только забудьте про wiringPi она им рулить не сможет.
Название: Re: Работа с PWM
Отправлено: megahertz от Март 06, 2016, 05:34:03 pm
что-то не растет кокос...
мой script.fex во вложении, uart выключен..соответственно конвертирую в script.bin, заливаю в /BOOT и загружаюсь
после загрузки вижу только
normal_led  PA1   PA11  PA13  PA15  PA19  PA20  PA3  PA7  PA9  PC1  PC3  PC7   PG6  PG8  PL10
PA0         PA10  PA12  PA14  PA18  PA2   PA21  PA6  PA8  PC0  PC2  PC4  PD14  PG7  PG9  standby_led
пробовал сделать pwm_used = 1 но результата не дало
где ошибку допускаю? можете дать свой script.bin с выключенным uart и уже рабочим pwm?
Название: Re: Работа с PWM
Отправлено: AlDemin от Март 06, 2016, 07:16:59 pm
Кокос в том, что в GPIO вы его не найдете, тк это не просто GPIO выход, а аппаратный ШИМ контроллер,
включается в script.bin:
[pwm0_para]
pwm_used            = 1
pwm_positive        = port:PA05<3><0><default><default>

Управлять можно напрямую двумя 32-х битными регистрами :
по адресам: 0x01C21400 0x01C21404
описание в даташите на Н3 п. 4.10.

Можно через драйвер:
добавить в /etc/modules
pwm-sunxi
Получите файловую структуру в: /sys/device/virtual/sunxi_pwm/sunxi_pwm она же /sys/class/sunxi_pwm/sunxi_pwm
Как через нее управлять контроллером без понятия, не разбирался,
но должно быть что то стандартное, иначе зачем драйвер.
Название: Re: Работа с PWM
Отправлено: megahertz от Март 06, 2016, 08:08:27 pm
AlDemin, спасибо за пояснения
Название: Re: Работа с PWM
Отправлено: swg от Июнь 14, 2016, 11:20:44 am
в версии 1.2 Н3 описания  сказано, что версия 1.1 исправляет ошибки описания PWM , допущенные в первой версии
Название: Re: Работа с PWM
Отправлено: user736 от Ноябрь 01, 2016, 11:45:29 pm
Может кому пригодится :)
простой скриптец для работы с аппаратным шим на python
https://github.com/user736/h3_pwm
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Ноябрь 15, 2016, 01:46:42 pm
не селен я в питоне  :)
Вопрос - можно на основании этого скрипта запилить управление светодиодами WS2811/WS2812 ?
Название: Re: Работа с PWM
Отправлено: AlDemin от Ноябрь 15, 2016, 06:39:34 pm
К WS2811/WS2812 апельсиновый PWM контроллер - никаким боком.
WS2811/WS2812 - они сами по себе PWM контроллеры, другое дело - сделать управление ими. Специального порта для этого нет, но передачу данных NRZ-кодом на скорости 400 или 800 Kbps можно сделать программно дергая любой GPIO порт.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Ноябрь 16, 2016, 05:36:50 am
Тогда я видимо чего-то не понимаю, ибо во всех примерах например на малине используют порт именно с PWM.
Название: Re: Работа с PWM
Отправлено: AlDemin от Ноябрь 16, 2016, 09:23:29 am
Хотя, если подумать, то в принципе возможно заставить PWM контроллер выдать NRZ-код программируя длительность каждого импульса.
Название: Re: Работа с PWM
Отправлено: StaLeWaR от Ноябрь 16, 2016, 03:23:26 pm
Как это сделать, честно говоря я не понял  :(