Импульсный режим (Pulse Mode)


Импульсный режим выводит прямоугольные волны.

st_set_pulse 01

В импульсном режиме доступны следующие команды:

Команда Подкоманда Описание
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 в импульсном режиме.

st_set_pulse 02

Получение счетчика повторов

Командад "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"(без цели).

Пример импульсного режима

Пример импульсного режима (HIGH pulse)

$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). На схеме ниже показана форма сигнала приведенного выше примера.

st_set_pulse 03

Пример импульсного режима (LOW pulse)

$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" все выходные уровни будут инвертированы, включая импульсный вывод. На схеме ниже показана форма сигнала, объясненная выше.

st_set_pulse 04