Режим PWM называется бесконечным импульсным режимом, поэтому синтаксис практически совпадает с импульсным режимом, но присутствует небольшая разница. Доступны следующие команды в режиме PWM:
Команда | Подкоманда | Описание | |||
---|---|---|---|---|---|
set | mode | output | pwm | set mode: pwm | |
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 | |||
trigger | from | ht0 | set trigger target: ht0 | ||
php | set trigger target: none | ||||
reset | - | reset | |||
get | state | get current state | |||
div | get division rate | ||||
start | - | start | |||
stop | - | stop |
Установка счетчиков предназначена для определения момента времени для изменения уровней. В режиме PWM требуются 2 значения счетчика. Как установить значения счетчика:
Команда | Синтаксис |
---|---|
set count | pid_ioctl($pid, "set count T1 T2"); |
Дорступные значения для счетчиков T1 и T2 в режиме PWM следующие:
Раздел | Доступные значения подсчета |
---|---|
T1 | 0 ~ 32764 |
T2 | 0 ~ 32764 |
T1 + T2 | 1 ~ 32764 |
На схеме ниже показана форма сигнала, о котором говорилось выше.
$pid = pid_open("/mmap/ht0"); // open HT 0
pid_ioctl($pid, "set div us"); // set unit: microsecond
pid_ioctl($pid, "set mode output pwm"); // set mode: PWM mode
pid_ioctl($pid, "set count 1 1"); // set count values: 1, 1
pid_ioctl($pid, "start"); // start HT
usleep(50);
pid_ioctl($pid, "stop"); // stop HT
pid_close($pid);
Схема ниже показывает форму сигнала, о котором говорилось выше.