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


Данный режим выводит прямоугольную волну. Доступные команды в этом режиме выглядят следующим образом:

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

ht_set_pulse_01

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

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

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

ht_set_pulse_02

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

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

ht_set_pulse_03