dre*_*les 2 c raspberry-pi3 sensors
我真的很想在我正在编写的 C 程序中实现 25\xc2\xb5s 延迟,以通过 RPi 3 读取传感器。我使用了 nanosleep() 和 usleep(),但准确性似乎有点偏差 - - 可能是因为该程序将线程时间让给其他程序,然后必须等待它们完成。我使用“nice -n -20”运行来确保优先级,但它似乎仍然比我想要的准确。我也尝试过 for 循环,但无法完全确定获得 25 \xc2\xb5s 所需的时钟节拍:for循环计数比率(我对这一切都很陌生)......或者也许gcc 正在将空循环优化为遗忘吗?
\n\n无论如何,有人可以向我指出 microDelay() 函数或类似函数的方向吗?(我花了几个小时进行谷歌搜索和实验,但似乎找不到我要找的东西)。谢谢!
\n在没有硬件支持的传统多任务操作系统中,实现如此低的分辨率(小于 1 毫秒)几乎是不可能的,但有一种软件技术可以帮助您。(我之前测试过)
软件延迟循环不是准确的解决方案,因为操作系统的调度程序会抢占进程。但是你可以用 RT_PREEMPT 修补你的内核并通过 CONFIG_RT_PREEMPT 启用它,现在你有了一个支持实时调度的内核,实时内核让你运行一个具有实时优先级的进程,具有实时优先级的进程运行直到它希望没有人可以抢占它,因此,如果您运行延迟循环,该进程不会被操作系统抢占,因此您可以使用这些循环创建准确的延迟。