gpt4 book ai didi

c - 在 Beaglebone Black 上使用多个 hcsr04 传感器

转载 作者:行者123 更新时间:2023-11-30 17:08:46 25 4
gpt4 key购买 nike

我正在尝试在 Beaglebone black 上使用 hcsr04 传感器(改编自此代码 - https://github.com/luigif/hcsr04)

我让它分别适用于 4 组不同的传感器,但现在不确定如何将它们组合到一个程序中。

有没有办法同时发出触发和接收回波,以便可以将中断作为不同的事件生成到 C 程序。

依次运行它们是我们想到的最后一个选择。

最佳答案

Russ 是正确的 - 由于 BeagleBone 的 AM335x 处理器中有 2 个 PRU 内核,因此无法同时运行该 PRU 程序的 4 个实例。我想你可以加载为一组引脚编译的一个,进行测量,停止它,然后加载为不同引脚上的传感器编译的不同二进制文件,但这将是一种非常低效(而且丑陋,恕我直言)的方法。

如果您知道任何程序集,那么更新该代码以驱动所有 4 个传感器 ( PRU assembly instructions ) 应该非常简单。或者,您可以从头开始使用 C 语言,并按照 Russ 的建议使用 clpru PRU C 编译器,尽管据我所知,它仍处于测试状态,并且没有太多信息。无论哪种方式,我都建议并行或一个接一个地从 4 个传感器读取数据,以不同的偏移量将测量结果加载到 PRU 内存中,然后向 ARM 发送单个信号。

在您链接的代码中,该行:

SBCO roundtrip, c24, 0, 4

从寄存器roundtrip(即寄存器r4,根据#define roundtrip r4)获取4字节文件顶部),并将其加载到偏移量 0 处的 PRU 数据 RAM(常量 c24 设置为 lines 39-41 中数据 RAM 的开头)。因此,如果您在 4 个寄存器中有 4 个不同的测量值,则可以偏移 RAM 中的数据,例如:

SBCO roundtrip1, c24, 0, 4
SBCO roundtrip2, c24, 4, 4
SBCO roundtrip3, c24, 8, 4
SBCO roundtrip4, c24, 12, 4

然后在 C 程序中读取这 4 个连续的 32 位整数。

关于c - 在 Beaglebone Black 上使用多个 hcsr04 传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33537054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com