Импульсный режим выводит прямоугольные волны.
В импульсном режиме доступны следующие команды:
Команда | Подкоманда | Описание | |||
---|---|---|---|---|---|
set | mode | output | pulse | set mode: pulse | |
div | sec | set unit: second | |||
ms | set unit: millisecond | ||||
us | set unit: microsecond | ||||
output | od | open-drain | |||
pp | push-pull | ||||
low | output: LOW | ||||
high | output: HIGH | ||||
dev | uio0 | #pin | set output device and pin | ||
invert | 0 | not invert output | |||
1 | invert output | ||||
count | [T1] [T2] | set output timing parameters | |||
delay | [D] | set delay | |||
repc | [N] | set repeat count | |||
trigger | from | st# | set trigger target: st0 ~ st7 | ||
php | set trigger target: none | ||||
reset | - | reset | |||
get | state | get state | |||
repc | get remaining repeat count | ||||
start | - | start | |||
stop | - | stop |
Sub commands of "set output" command in pulse mode are as follows:
Подкоманда | Синтаксис |
---|---|
set output pin | pid_ioctl($pid, "set output dev uio0 0"); // uio0의 0번 핀 |
open-drain | pid_ioctl($pid, "set output od"); |
push-pull | pid_ioctl($pid, "set output pp"); |
output HIGH | pid_ioctl($pid, "set output high"); |
output LOW | pid_ioctl($pid, "set output low"); |
invert output | pid_ioctl($pid, "set output invert 1"); // inverted output pid_ioctl($pid, "set output invert 0"); // normal output |
Все команды выполняются сразу после выполнения каждой командной строки.
Данная команда пердназнчена для задержки перед тем, как PHPoC выведет сигнал. Еденица задержки зависит от устройства, которое устанавливается комндой "set div".
Команда | Синтаксис |
---|---|
set delay | pid_ioctl($pid, "set delay D"); |
Данная команда предназначена для определения времени для выходного сигнала. Вы можете установить любые значения от нуля до 1-го миллиарда для счетчика повторений N. Если N не указан, то автоматически будет установлен ноль, который является значением по умолчанию. Установка данного значения на ноль означает максимальное количество повторений (1 миллиард).
Команда | Синтаксис |
---|---|
set repc | pid_ioctl($pid, "set repc N"); |
Данная команда предназначена для определения времени для выходного сигнала. В импульсном режиме требуются 2 значения счетчика (T1 и T2).
Команда | Синтаксис |
---|---|
set count | pid_ioctl($pid, "set count T1 T2"); |
Доступные значения для счетчиков T1 и T2 в импульсном режиме следующие:
Юнит | Доступное количество значений |
---|---|
микросекунда | 0, 10 ~ 1,800,000,000 |
миллисекунда | 0 ~ 1,800,000 |
секунда | 0 ~ 1,800 |
На смеме ниже показан сигнал в случае установки T1 и T2 с задержкой D в импульсном режиме.
Командад "get repc" предназначена для чтения оставшегося количества повторов, которые будут выполнены.
Команда | Синтаксис |
---|---|
get repc | pid_ioctl($pid, "get repc"); |
Данная команда используется, когда вы хотите синхронизировать время начала ST с другим ST. Целью триггера должно быть одно из устройств ST.
Цель | Синтаксис |
---|---|
ST(st0/1…) | pid_ioctl($pid, "set trigger from st0"); |
php | pid_ioctl($pid, "set trigger from php"); |
Значение по умолчанию для цели триггера является "php"(без цели).
$pid = pid_open("/mmap/st0"); // open ST 0
pid_ioctl($pid, "set div sec"); // set unit: second
pid_ioctl($pid, "set mode output pulse"); // set mode: pulse
pid_ioctl($pid, "set output dev uio0 0"); // set output device / pin: uio0 / 0
pid_ioctl($pid, "set count 1 2"); // set count values: 1 and 2
pid_ioctl($pid, "set repc 1"); // set repeat count: 1
pid_ioctl($pid, "start"); // start ST
while(pid_ioctl($pid, "get state"));
pid_close($pid);
Импульсный режим в основном изменяет уровень от низкого к высокому. Время изменения зависит от скорости деления и количества отсчетов (T1 и T2). На схеме ниже показана форма сигнала приведенного выше примера.
$pid = pid_open("/mmap/st0"); // open ST 0
pid_ioctl($pid, "set div sec"); // set unit: second
pid_ioctl($pid, "set mode output pulse"); // set mode: pulse
pid_ioctl($pid, "set output dev uio0 0"); // set output device / pin: uio0 / 0
pid_ioctl($pid, "set count 1 2"); // set count values: 1 and 2
pid_ioctl($pid, "set output invert 1"); // invert output
pid_ioctl($pid, "set repc 1"); // set repeat count: 1
pid_ioctl($pid, "start"); // start ST
while(pid_ioctl($pid, "get state"));
pid_close($pid);
После выполения командной строки "set output invert 1" все выходные уровни будут инвертированы, включая импульсный вывод. На схеме ниже показана форма сигнала, объясненная выше.