我想在Beaglebone黑色使用hcsr04传感器(改编自这个代码 - https://github.com/luigif/hcsr04)上Beaglebone使用多个hcsr04传感器黑色
我得到它的工作了4套不同的传感器独立,并且是现在不确定如何将它们合并成一个程序。
有没有办法让触发器同时接收回声,这样中断可以作为与C程序不同的事件产生。
一个接一个地运行它们是我们考虑的最后一个选项。
我想在Beaglebone黑色使用hcsr04传感器(改编自这个代码 - https://github.com/luigif/hcsr04)上Beaglebone使用多个hcsr04传感器黑色
我得到它的工作了4套不同的传感器独立,并且是现在不确定如何将它们合并成一个程序。
有没有办法让触发器同时接收回声,这样中断可以作为与C程序不同的事件产生。
一个接一个地运行它们是我们考虑的最后一个选项。
Russ是正确的 - 由于BeagleBone的AM335x处理器有两个PRU内核,因此无法同时运行该PRU程序的4个实例。我想你可以加载为一组引脚编译的代码,进行测量,停止它,然后在不同的引脚上加载一个针对传感器编译的二进制二进制代码,但这样做会非常低效(并且很丑陋,恕我直言)。 。
如果你知道任何组件,它应该是非常直接的更新代码来驱动所有4个传感器(PRU assembly instructions)。另外,你可以从C开始,并按照Russ的建议使用clpru
PRU C编译器,尽管AFAIK仍然处于测试状态,并且其中没有太多信息。无论哪种方式,我都建议从4个传感器并行或相继读取数据,以不同的偏移量将测量值加载到PRU存储器中,然后向ARM发送单个信号。
在该代码中您链接,线路:
SBCO roundtrip, c24, 0, 4
(在该文件的顶部是寄存器r4
,每#define roundtrip r4
)注意到4
字节从寄存器roundtrip
,并将其加载到所述PRU数据RAM(常量c24
设置为lines 39-41中的数据RAM的开头),偏移量为0
。所以,如果你在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位整数。
非常感谢。这正是我们需要的。该计划正在开展工作。 –
如果您的标签更合适,您会获得更好的可见性。 'beagleboneblack'和'beagleboard'都让人们对解决方案根源的硬件感到满意。你所有的其他标签都是... ...太普通了。 –
但是,我的假设是要解决您的问题,您需要重写在PRU上运行的程序,以监视多个传感器并将其报告回Cortex。如果你只做了几个传感器,并且每秒5-10次更新就可以了,那么你可以连续进行。如果没有,那么你将不得不平行地做。幸运的是,现在似乎有一个C编译器。这和核心中有32个寄存器,这意味着你可以逃避将所有东西都保存在寄存器 –
(而且我不想为Cortex做多个ISR /事件。检查看看谁改变了) –