0

一般来说,我是 Micropython 和微控制器的新手。我正在尝试创建一个脚本以在 Raspberry Pi Pico 上运行,该脚本需要两个时间变量time1 = utime.time_ns()time2 = utime.time_ns()然后从 time1 中减去 time2 以给出两个时间之间的差异,精度为纳秒级。尝试执行此操作时,它会打印出以纳秒为单位的值,四舍五入到秒...例如,如果两次之间有 5 秒,则返回的值为 5000000000... 有没有办法让我获得更多准确的时间?我会以错误的方式解决这个问题吗?谢谢!!!

4

2 回答 2

4

MicroPython utimetime_ns()页面解释了绝对时间和相对时间之间的区别ticks_us()。它们最好用于不同的目的,并且可能使用不同的资源。从那里的示例中,您可以尝试类似

start = time.ticks_us()
...
end = time.ticks_us()
usecs = time.ticks_diff(end, start)

正如页面所解释的,这不能用于测量长时间,例如超过 1 或 2 秒,具体取决于实现,并且分辨率不会是纳秒,但最好是微秒。

于 2021-02-07T10:10:31.527 回答
1

处理器晶体的精度不足以获得纳秒级精度。您必须用 TCXO/OCXO 晶体替换它才能获得微秒级精度。另一个问题是晶体随温度漂移。OCXO 是一种加热晶体。TCXO 是一种温度补偿晶体。只要温度变化很小,TCXO 就可能让您进入微秒级的球场。然后是固件问题。Python 对于精确计时来说太慢了。您必须选择一种编译语言来最大限度地减少抖动问题。我希望这会有所帮助。

于 2021-07-05T01:40:13.423 回答