据我所知,“时间函数”通常取决于平台。我使用的是 Raspberry-Pi,所以我的操作系统是 Raspbian 或 Debian(Linux)。
首先我应该解释为什么我可以将程序的执行尽可能准确地延迟到 10 纳秒的精度级别是至关重要的。我正在连接一个 ADC(模数转换器)。重要的是,一旦指令被发送到设备,ADC 就有时间发送逻辑信号 HIGH 或 LOW。
例如:
一根数据线控制“转换请求”引脚。该引脚必须变为逻辑低电平 20 ns 才能启动转换请求。
另一个例子是“读取请求”引脚。该数据线必须变为逻辑低电平 10 ns 以启用输出总线上的数据。
目前我有一个结构如下的程序:(使用wiringPi库。)
return_type functionName()
{
digitalWrite(CONVERT_RQ, LOW);
delayMicroseconds(1); // Part of the wiringPi.h library
digitalWrite(CONVERT_RQ, HIGH);
}
我认为取消delayMicroseconds(1);
呼叫是不安全的,因为 ADC 可能会错过逻辑低脉冲。(来自digitalWrite
。)我认为引脚可以在大约 200 kHz 的频率下在高低之间切换 - 不过对此不确定。编辑:我的意思是兆赫
延迟 1 微秒显然是相当浪费的。理想情况下,我想等待 1% 的时间。
据我所知,delayMicroseconds() 函数实际上暂停了程序,操作系统在等待时切换到运行另一个任务。这也不理想,因为我们最终可能会等待 2 微秒,甚至更长。当然,在不到 1 微秒的时间内切换回另一个进程毫无意义。那个时候做不了多少。
有人对如何做到这一点有任何想法吗?谢谢