Режим PWM - это режим широто-импульсной модуляции, поэтому синтаксис практически совпадает с импульсным режимом, но с небольшой разницей.
Доступны следующие команды в режиме PWM:
Команда | Подкоманда | Описание | |||
---|---|---|---|---|---|
set | mode | output | pwm | set mode: PWM | |
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 | |||
trigger | from | st# | set trigger target: st0 ~ st7 | ||
php | set trigger target: none | ||||
reset | - | reset | |||
get | state | get current state | |||
start | - | start | |||
stop | - | stop |
Значения счетчика определяют время для изменения уровней. В режиме PWM требуются 2 значения счетчика. Как установить значения:
Команда | Синтаксис |
---|---|
set count | pid_ioctl($pid, "set count T1 T2"); |
Доступные значения счетчика в режиме pwm:
Юнит | Доступные значения счетчика (0 ~ полчаса) |
---|---|
microsecond | 0, 10 ~ 1,800,000,000 |
millisecond | 0 ~ 1,800,000 |
second | 0 ~ 1,800 |
На схеме ниже показан сигнал в случае установки T1 и T2 с задержкой D в режиме PWM.
Данная команда используется, когда вам необходимо синхронизировать время начала 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 pwm"); // set mode: PWM
pid_ioctl($pid, "set output dev uio0 0"); // set output dev / pin: uio0 / 0
pid_ioctl($pid, "set count 1 1"); // set count values: 1 and 1
pid_ioctl($pid, "start"); // start ST
sleep(10);
pid_ioctl($pid, "stop"); // stop ST
pid_close($pid);
Схема ниже показывает форму сигнала приведенного выше примера.