0

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

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

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

一个接一个地运行它们是我们想到的最后一个选项。

4

1 回答 1

1

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

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

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

SBCO roundtrip, c24, 0, 4

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

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

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

于 2015-11-05T19:11:10.967 回答