LinuxCNC + Orange Pi
ARISC драйвер

LinuxCNC + Orange Pi
ARISC driver

ARISC драйвер - это компонент программы LinuxCNC/Machinekit, который позволяет программе и всем её компонентам общаться с внешним миром средствами ARISC сопроцессора, встроенного в чипы Allwinner H2+/H3. В данный момент ARISC драйвер состоит из двух компонентов - arisc_gpio и arisc_stepgen. Компонент arisc_gpio работает практически также как наш GPIO драйвер. А работа arisc_stepgen очень похожа на работу обычного stepgen.

ARISC driver - it's a component of the LinuxCNC/Machinekit software. This component allows this software to talk with outside world using the build-in RISC co-processor. ARISC means Allwinner RISC. At this moment ARISC driver contains 2 components - arisc_gpio and arisc_stepgen. The arisc_gpio usage is nearly similar to our GPIO driver. The arisc_stepgen component works same as regular stepgen, but with a few differences.

Параметры запуска компонента arisc_gpio

arisc_gpio's startup parameters

ВНИМАНИЕ: Нельзя указывать в списке входных пинов те, которые были в списке выходных. Нельзя указывать номера пинов (3,5,7,..). Примеры: # ОШИБКА: нельзя указывать номера пинов loadrt arisc_gpio out=3,5,7 # ОШИБКА: пин PA12 указан в обоих списках loadrt arisc_gpio out=PA12,PA11,PA6,PA13 in=PA12,PA14,PA1,PA0

ATTENTION: You can't use same pins in the both (input/output) lists. You can't use pin numbers with this driver. Examples: # ERROR: pin numbers are deprecated loadrt arisc_gpio out=3,5,7 # ERROR: pin PA12 used in the both lists loadrt arisc_gpio out=PA12,PA11,PA6,PA13 in=PA12,PA14,PA1,PA0


Пины компонента arisc_gpio

arisc_gpio's pins

Вместо XX надо написать название GPIO пина, указанного в списке входных/выходных пинов. Примеры: loadrt arisc_gpio out=PA12,PA11,PA6,PA13 in=PA14,PA1,PA0 # --- ПРАВИЛЬНО --- net xstep => arisc_gpio.PA12-out net xdir => arisc_gpio.PA11-out-not net ystep => arisc_gpio.PA6-out net ydir => arisc_gpio.PA13-out net home-x <= arisc_gpio.PA14-in net home-y <= arisc_gpio.PA1-in-not net home-z <= arisc_gpio.PA0-in setp arisc_gpio.PA12-pull -1 # подтяжка пина PA12 к земле setp arisc_gpio.PA12-multi-drive-level 1 # --- ОШИБКА --- net xstep => arisc_gpio.PA36-out # нет такого пина net xdir => arisc_gpio.3-out # нет такого пина net ystep => arisc_gpio.PA14-in # на выход указан входной пин net ydir => arisc_gpio.A13-out # нет такого пина net home-x <= arisc_gpio.PA12-out # на вход указан выходной пин net home-y <= arisc_gpio.57-in # нет такого пина net home-z <= arisc_gpio.P0-out # нет такого пина

Replace the XX chars with GPIO pin name, listed in the output/input list. Examples: loadrt arisc_gpio out=PA12,PA11,PA6,PA13 in=PA14,PA1,PA0 # --- IT'S OK --- net xstep => arisc_gpio.PA12-out net xdir => arisc_gpio.PA11-out-not net ystep => arisc_gpio.PA6-out net ydir => arisc_gpio.PA13-out net home-x <= arisc_gpio.PA14-in net home-y <= arisc_gpio.PA1-in-not net home-z <= arisc_gpio.PA0-in setp arisc_gpio.PA12-pull -1 # pull down PA12 to the GND setp arisc_gpio.PA12-multi-drive-level 1 # --- ERROR --- net xstep => arisc_gpio.PA36-out # there's no such pin net xdir => arisc_gpio.3-out # there's no such pin net ystep => arisc_gpio.PA14-in # there's no such pin net ydir => arisc_gpio.A13-out # there's no such pin net home-x <= arisc_gpio.PA12-out # there's no such pin net home-y <= arisc_gpio.57-in # there's no such pin net home-z <= arisc_gpio.P0-out # there's no such pin


Функции компонента arisc_gpio

arisc_gpio's functions

Примеры: loadrt arisc_gpio out=PA12,PA11,PA6,PA13 addf arisc_gpio.read base-thread # чтение состояния входных пинов addf arisc_gpio.write base-thread # запись состояния выходных пинов

Examples: loadrt arisc_gpio out=PA12,PA11,PA6,PA13 addf arisc_gpio.read base-thread # read input pins state addf arisc_gpio.write base-thread # write output pins state


Параметры запуска компонента arisc_stepgen

arisc_stepgen's startup parameters


Пины компонента arisc_stepgen

arisc_stepgen's pins

Вместо XX надо указывать номер канала (0..15). Пин velocity-cmd не существует, если тип управления канала - по позиции. Пин position-cmd не существует, если тип управления канала - по скорости. Примеры: loadrt arisc_stepgen ctrl_type=p setp arisc_stepgen.0.position-scale [AXIS_0]SCALE setp arisc_stepgen.0.step-port 0 # 0=PA, 1=PB, 2=PC, 3=PD, ... setp arisc_stepgen.0.step-pin 12 # PA12 setp arisc_stepgen.0.step-invert 0 setp arisc_stepgen.0.dir-port 0 # 0=PA, 1=PB, 2=PC, 3=PD, ... setp arisc_stepgen.0.dir-pin 11 # PA11 setp arisc_stepgen.0.dir-invert 0 net x-enable arisc_stepgen.0.enable <= axis.0.amp-enable-out net x-pos-cmd arisc_stepgen.0.position-cmd <= axis.0.motor-pos-cmd

Replace XX with channel number (0..15). velocity-cmd pin exists only when channel's control type is - by position. position-cmd pin doesn't exists when channel's control type is - by speed. Examples: loadrt arisc_stepgen ctrl_type=p setp arisc_stepgen.0.position-scale [AXIS_0]SCALE setp arisc_stepgen.0.step-port 0 # 0=PA, 1=PB, 2=PC, 3=PD, ... setp arisc_stepgen.0.step-pin 12 # PA12 setp arisc_stepgen.0.step-invert 0 setp arisc_stepgen.0.dir-port 0 # 0=PA, 1=PB, 2=PC, 3=PD, ... setp arisc_stepgen.0.dir-pin 11 # PA11 setp arisc_stepgen.0.dir-invert 0 net x-enable arisc_stepgen.0.enable <= axis.0.amp-enable-out net x-pos-cmd arisc_stepgen.0.position-cmd <= axis.0.motor-pos-cmd


Функции компонента arisc_stepgen

arisc_stepgen's functions

Примеры: loadrt arisc_stepgen ctrl_type=p addf arisc_stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf arisc_stepgen.update-freq servo-thread

Examples: loadrt arisc_stepgen ctrl_type=p addf arisc_stepgen.capture-position servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf arisc_stepgen.update-freq servo-thread