脉冲模式


脉冲输出模式是输出方波脉冲的模式。

st_set_pulse 01

在脉冲输出模式可使用的命令如下。

命令 下级命令 说明
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指延时时间。

st_set_pulse 02

读取反复次数

"get repc"命令是确认ST剩余输出次数的命令。

命令 语法
get repc pid_ioctl($pid, "get repc");

设定Trigger

将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"(没有对象)。

Pulse输出模式使用例

脉冲输出模式使用(HIGH脉冲)

$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输出结果如下。

st_set_pulse 03

使用脉冲输出模式 (LOW pulse)

$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的输出结果如下。

st_set_pulse 04