Данный режим выводит прямоугольную волну. Доступные команды в этом режиме выглядят следующим образом:
Команда | Подкоманда | Описание | |||
---|---|---|---|---|---|
set | mode | output | pulse | set mode: pulse | |
div | ms | set unit: millisecond | |||
us | set unit: microsecond | ||||
output | od | open-drain | |||
pp | push-pull | ||||
low | output: LOW | ||||
high | output: HIGH | ||||
invert | 0 | not invert output | |||
1 | invert output | ||||
count | [T1] [T2] | set output timing parameters | |||
repc | [N] | set repeat count | |||
trigger | from | ht0 | set trigger target: ht0 | ||
php | set trigger target: none | ||||
reset | - | reset | |||
get | state | get current state | |||
div | get division rate | ||||
repc | get remaining repeat count | ||||
start | - | start | |||
stop | - | stop |
Подкоманда команды "set output" в импульсном режиме выглядит следующим образом:
Подкоманда | Синтаксис |
---|---|
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 |
Все команды выполняются сразу после выполнения каждой командной строки.
Данная команда предназначена для установки количества повторений на выходе. Для счетчика повторений N вы можете установить любые значения от нуля до 64. Если N не указан, то будет автоматически установлен ноль, который является значением по умолчанию. Установка этого значения на ноль означает максимальное количество повторений (64).
Команда | Синтаксис |
---|---|
set repc | pid_ioctl($pid, "set repc N"); |
Установка счетчика предназначена для определения времени выходного сигнала. В импульсном режиме требуются 2 значения счетчика (T1 и T2).
Команда | Синтаксис |
---|---|
set count | pid_ioctl($pid, "set count T1 T2"); |
Доступные значения для счетчика в импульсном режиме:
Раздел | Доступные значения подсчета |
---|---|
T1 | 1 ~ 32763 |
T2 | 1 ~ 32763 |
T1 + T2 | 2 ~ 32764 |
На схеме ниже показана форма сигнала в случае установки T1 и T2 в импульсном режиме.
$pid = pid_open("/mmap/ht0"); // open HT 0
pid_ioctl($pid, "set div us"); // set unit: microsecond
pid_ioctl($pid, "set mode output pulse"); // set mode: pulse
pid_ioctl($pid, "set count 1 2"); // set count values: 1, 2
pid_ioctl($pid, "set repc 1"); // set repeat count: 1
pid_ioctl($pid, "start"); // start HT
while(pid_ioctl($pid, "get state"));
pid_close($pid);
Импульсный режим в основном изменяет уровень от низкого к высокому. Время изменения зависит от скорости деления и количества отсчетов (T1 и T2). Схема ниже показывает форму сигнала, о котором говорилось выше.
$pid = pid_open("/mmap/ht0"); // open HT 0
pid_ioctl($pid, "set div us"); // set unit: microsecond
pid_ioctl($pid, "set mode output pulse"); // set mode: pulse
pid_ioctl($pid, "set count 1 2"); // set count values: 1, 2
pid_ioctl($pid, "set repc 1"); // set repeat count: 1
pid_ioctl($pid, "set output invert 1"); // invert output
pid_ioctl($pid, "start"); // start HT
while(pid_ioctl($pid, "get state"));
pid_close($pid);
После выполнения командной строки "set output invert 1" все выходные уровни будут инвертированы, включая импульсный выход. На приведенной ниже схеме показана форма сигнала приведенного выше примера.