脉冲输出模式是输出方波脉冲的模式。
在脉冲输出模式可使用的命令如下。
命令 | 下级命令 | 说明 | |||
---|---|---|---|---|---|
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 |
ST的输出设定具有如下项目。
区分 | 语法 |
---|---|
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 |
所有输出命令,在实行命令的同时反映在输出针上。
在脉冲输出模式中,在输出前可定其延时时间。延时设定单位使用依据set div命令的单位。延时时间设定方法如下。
区分 | 语法 |
---|---|
set delay | pid_ioctl($pid, "set delay D"); |
在脉冲输出模式可设定输出信号的反复次数。可设定的N的范围是0~1000000000。初始值为0,0指最大反复次数10亿。
区分 | 语法 |
---|---|
set repc | pid_ioctl($pid, "set repc N"); |
T为了调整输出时间使用计数设定。在脉冲输出模式下计数值的设定方法如下。
区分 | 语法 |
---|---|
set count | pid_ioctl($pid, "set count T1 T2"); |
在脉冲输出模式中可设定值的方位如下。
单位 | 可设定范围 |
---|---|
microsecond | 0, 10 ~ 1,800,000,000 |
millisecond | 0 ~ 1,800,000 |
second | 0 ~ 1,800 |
在脉冲输出模式下需要设定两个计数值(T1 和 T2 )。在此D指延时时间。
"get repc"命令是确认ST剩余输出次数的命令。
命令 | 语法 |
---|---|
get repc | pid_ioctl($pid, "get repc"); |
将ST作为输出模式使用时,为了初始化始点使用。此时ST的开始始点与Trigger对象同步,Trigger对象只能设定另外的ST。 ST Trigger设定方法如下。
区分 | 语法 |
---|---|
ST(st0/1…) | pid_ioctl($pid, "set trigger from st0"); |
php | pid_ioctl($pid, "set trigger from php"); |
ST的trigger基本设定值是"php"(没有对象)。
$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);
Pulse模式的输出基本是HIGH。维持HIGH的时间依据设定单位 与"set count"设定的T1和T2决定。实行上面的例时ST输出结果如下。
$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的输出结果如下。