alex_sar писал(а): ↑
Где непонятно, открываешь man на компонент и читаешь как работает и какие пины у него. Например man motion, man and2
И ясность появится. Там правда не сложно, очень красиво придумано!
 
Не правда! (в моем случае - тугодум и мало знаний)
Не раз смотрел и ничегошеньки непонятно.
Вот припер мануала генератора ШИМ
Код: Выделить всё
arisc.pwm HAL pins
arisc.pwm.N.enable	(bit, in)	channel ON/OFF (1/0). Default is 0.
· · ·
arisc.pwm.N.pwm-port	(u32, in)	GPIO port number (0..7) for PWM signal.
arisc.pwm.N.pwm-pin	(u32, in)	GPIO pin number (0..23) for the PWM signal.
arisc.pwm.N.pwm-invert	(bit, in)	invert the PWM signal? (0/1). Default is 0.
· · ·
arisc.pwm.N.dir-port	(u32, in)	GPIO port number (0..7) for PWM signal.
arisc.pwm.N.dir-pin	(u32, in)	GPIO pin number (0..23) for the DIR signal.
arisc.pwm.N.dir-invert	(bit, in)	invert the DIR signal? (0/1). Default is 0.
arisc.pwm.N.dir-hold	(u32, io)	minimal pause (in nanoseconds) between last PWM pulse and a DIR signal change. Default is 50000 ns.
arisc.pwm.N.dir-setup	(u32, io)	minimal pause (in nanoseconds) between DIR signal change and next PWM pulse. Default is 50000 ns.
· · ·
arisc.pwm.N.dc-cmd	(float, in)	desired duty cycle (-1..1). 1 = 100%. Default is 0.
arisc.pwm.N.dc-min	(float, io)	minimum duty cycle. If dc-fb < dc-min, real duty cycle will be set to dc-min. Default is -1.
arisc.pwm.N.dc-max	(float, io)	maximum duty cycle. If dc-fb > dc-max, real duty cycle will be set to dc-max. Default is 1.
arisc.pwm.N.dc-max-t	(u32, io)	maximum time (in nanoseconds) of a PWM pulse duration. If value is 0, value is ignored. Default is 0.
arisc.pwm.N.dc-offset	(float, io)	simple offset for the desired duty cycle value. Default is 0.
arisc.pwm.N.dc-scale	(float, io)	simple scale multiplier for the desired duty cycle value. Default is 1.
arisc.pwm.N.dc-fb	(float, out)	real duty cycle feedback = dc-cmd / dc-scale + dc-offset. Then value will be limited by the dc-min, dc-max and dc-max-t values.
· · ·
arisc.pwm.N.freq-cmd	(float, io)	desired PWM frequency (in Hz). Default is 0.
arisc.pwm.N.freq-min	(float, io)	minimum PWM frequency (in Hz). If freq-fb < freq-min, real frequency will be set to 0. Default is 50 Hz.
arisc.pwm.N.freq-max	(float, io)	maximum PWM frequency (in Hz). If freq-fb > freq-max, real frequency will be set to freq-max. Default is 500000 Hz.
arisc.pwm.N.freq-fb	(float, out)	real PWM frequency feedback.
· · ·
arisc.pwm.N.vel-cmd	(float, in)	desired velocity (in movement units/second). Default is 0.
arisc.pwm.N.vel-scale	(float, in)	simple scale multiplier for the desired velocity value. Default is 1.
arisc.pwm.N.vel-fb	(float, out)	real velocity feedback (in movement units/second).
· · ·
arisc.pwm.N.pos-cmd	(float, in)	desired position (in movement units). Default is 0.
arisc.pwm.N.pos-scale	(float, in)	number of PWM pulses per movement unit. Default is 1.
arisc.pwm.N.pos-fb	(float, out)	real position feedback in movement units.
· · ·
arisc.pwm.N.counts	(s32, out)	real position feedback in PWM pulses.
Как узнать что куда подключить, что бы шпиндель работал по степ/дир?
Пример для осей
Код: Выделить всё
loadrt motion base_period_nsec=50000 servo_period_nsec=1000000 num_joints=1
loadrt arisc pwm=p
setp arisc.pwm.0.pos-scale    [AXIS_0]SCALE
setp arisc.pwm.0.pwm-port     0   # 0=PA
setp arisc.pwm.0.pwm-pin      12  # PA12
setp arisc.pwm.0.pwm-invert   0
setp arisc.pwm.0.dir-port     0   # 0=PA
setp arisc.pwm.0.dir-pin      11  # PA11
setp arisc.pwm.0.dir-invert   0
net x-enable   arisc.pwm.0.enable   joint.0.amp-enable-out
net x-pos-cmd  arisc.pwm.0.pos-cmd  joint.0.motor-pos-cmd
Пока что 
так сделал, но не проверял, что дает на выходе..
Но там свои приколы, не говоря о том, что находил конфигурацию для токарного с 4 шт ШИМ (видимо xyz  и шпиндель)
Потом ещё не совсем понимаю разницу шим=p,v... (позиция, скорость и ещё что-то там есть)
В серве тоже есть управление: позиция, скорость и момент.
Какая разница? На что влияет?  
 
alex_sar писал(а):
Там в hal файле всего-то четыре команды используется - загружаются компоненты, добавляются их обработчики
 
Вот с этим я разобрался
alex_sar писал(а):
и собственно соединения.
 
А вот тут уже проблемы...
К примеру вот для карт МЕСА пояснение (но там свои обработчики, или как их там и "подключение" к пинам упрощенное)
https://youtu.be/BKVSvPLVmcs
А как ШИМ заставить подобным образом работать для LPT,  или для того же arisc.pwm
Пока что для меня тёмный лес, что подавать на входы выходы пинов.
alex_sar писал(а):
"net" как раз и есть соединение, один выход может идти на много входов, но не наоборот).
 
Про соединения уже читал и как отсоеденять, если что не нужно.
А вот это 
alex_sar писал(а):
надо взять готовый конфиг, который знаешь как работает, и зарисовать схему на бумаге.
 
Для меня уже тёмный лес....
Где гарантия, что я правильно зарисую схему и ещё больше не запутаю себя?
Я даже с простым Scalе не разобрался ещё... (не горит, но методом проб и ошибок подбираю...)
Как в детстве не понимал, как работает транзистор по одному проводу - ну на схеме то проводок один. А оказывается второй "заземлён"...
Тут наверное тоже не всё так сложно, но есть нюансы...