0

Beaglebone black で hcsr04 センサーを使用しようとしています (このコードから適応 - https://github.com/luigif/hcsr04 )

4 つの異なるセンサー セットで個別に動作するようになりましたが、それらを 1 つのプログラムに結合する方法がわかりませんでした。

Cプログラムへの異なるイベントとして割り込みを生成できるように、トリガーを与えてエコーを同時に受信する方法はありますか。

それらを次々に実行することは、私たちが考えている最後のオプションです。

4

1 に答える 1

1

Russ の言うとおりです。BeagleBone の AM335x プロセッサには 2 つの PRU コアがあるため、その PRU プログラムの 4 つのインスタンスを同時に実行する方法はありません。1セットのピン用にコンパイルされたものをロードし、測定を行い、停止してから、センサー用にコンパイルされた別のバイナリを別のピンにロードできると思いますが、それはかなり非効率的な(そして醜い、IMHO)方法です.

アセンブリがわかっている場合は、そのコードを更新して 4 つのセンサーすべてを駆動するのは非常に簡単です ( PRU アセンブリ手順)。または、C でゼロから始めて、Russ が提案したように PRU C コンパイラを使用することもできますがclpru、AFAIK はまだベータ状態にあり、そこにはあまり情報がありません。いずれにせよ、4 つのセンサーから並行して、または次々に読み取り、測定値を異なるオフセットで PRU メモリにロードし、単一の信号を ARM に送信することをお勧めします。

リンクしたそのコードでは、次の行:

SBCO roundtrip, c24, 0, 4

register (ファイルの先頭にある register )から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 に答える