自由模式


自由模式是将ST启动为一般计数模式的模式。

st_set_free

在自由模式中可使用的pid_ioctl函数的命令如下。

命令 下级命令 说明
set mode free set mode: free mode
div sec set unit: second
ms set unit: millisecond
us set unit: microsecond
dir up set counter direction: up counter
down set counter direction: down counter
count [T] set the starting count value in down counter mode
reset - reset
get count get count value
state get current state
start - start
stop - stop

计数种类设定

ST的技术种类可设定为上计数器和下计数器。初始值是上计数器。

说明 语法
up counter pid_ioctl($pid, "set dir up");
down counter pid_ioctl($pid, "set dir down");

设定技术值

在自由模式中设定为下计数器时,设定计数器的初始值。
计数器的设定方法如下。

命令 语法
set count pid_ioctl($pid, "set count T");

如果上计数时设定T,相应值不会被反映。即,上计数时定时初始值一向为0。下计数种可设定的T的范围如下。

区分 T设定范围
Microsecond 0 ~ (263 - 1)
milisecond 0 ~ (263 - 1) / 1,000
second 0 ~ (263 - 1) / 1,000,000

读取计数值

"get count"命令是读取ST的当前计算值的命令。

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

自由模式使用 例

在自由模式中可将ST的值可读取pid_ioctl函数的"get count"命令。

$tick = pid_ioctl($pid, "get count");

上计数 例

此例是设定为上计数后每1秒来读取ST值来输出。

$pid = pid_open("/mmap/st0");               // open ST 0
pid_ioctl($pid, "set mode free");           // set mode: free
pid_ioctl($pid, "set div sec");             // set unit: second
pid_ioctl($pid, "set dir up");              // set direction: up counter
pid_ioctl($pid, "start");                   // start ST
for($i=0; $i<10; $i++)
{
    $value = pid_ioctl($pid, "get count");  // read the count value
    echo "$value\r\n";                      // print the count value
    sleep(1);
}
pid_close($pid);

下计数

此例是将ST设定为下计数后设定初始值为10秒,每1秒读取ST值来输出。

$pid = pid_open("/mmap/st0");               // open ST 0
pid_ioctl($pid, "set mode free");           // set mode: free
pid_ioctl($pid, "set div sec");             // set unit: second
pid_ioctl($pid, "set dir down");            // set direction: down counter
pid_ioctl($pid, "set count 10");            // set count value: 10
pid_ioctl($pid, "start");                   // start ST
for($i = 0; $i < 10; $i++)
{
    $value = pid_ioctl($pid, "get count");  // read the count value
    echo "$value\r\n";                      // print the count value
    sleep(1);
}
pid_close($pid);