java 方波

标签 java linux-kernel signal-processing

我正在尝试使用 java 在并行端口上创建一个方波。到目前为止,我已经有了这个实现。

public class Wave extends Thread {

    public Wave() {
        super();
        setPriority(MAX_PRIORITY);
    }

    @Override
    public void run() {
        Wave.high();
        LockSupport.parkNanos(20000000);
        Wave.low();
        LockSupport.parkNanos(20000000);
    }

    public static native void high();
    public static native void low();
}

其中 high() 和 low() 是使用 JNI 实现的(共享 C 库控制并行端口)。它工作得很好;它产生一个周期约为 40ms 的方波。当计算机空闲时,使用示波器看起来标准偏差约为 10 微秒。当计算机不空闲时,标准偏差会变得更大。我认为这是因为发生了更多的上下文切换,并且线程在等待状态中停留的时间太长,没有准确达到指定的 20 毫秒。

有没有办法让我的实现更准确?我知道我可以为此使用硬件,但我想知道我是否也可以使用软件来做到这一点。

是否可以选择“监听”时钟并执行计时到毫秒的操作?

最佳答案

仅仅“听”时钟并不能解决上下文切换导致抖动的问题。

如果您可以为此专门提供一个核心:

这样您应该能够实现非常低的抖动。

当然,如果任务只是简单地产生一个方波,这对计算资源的使用效率非常低。

关于 java 方波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431223/

相关文章:

java - 如何使用位置文件(路径)创建MultipartFile

java - ListView ItemClickListener 双击时有效,单击时不响应

c - 内核符号已启用但未显示在 .config 中

java - 使用 Rally Java 工具包创建故事时如何指定项目?

mysql - 损坏的 mysqld 包阻止在 ubuntu 中进行任何其他安装

c - _do_fork() 如何返回两个不同的 PID(一个用于父进程,一个用于子进程)

iphone - 使用 Apple FFT 和 Accelerate 框架

c - 纯 C 中 RSA 实现的库

matlab - MATLAB中的量化噪声

java - Hadoop 中的二次排序