問題タブ [mpu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cortex-m3 - リセット後の MPU 無効化および有効化シーケンス
システムが起動し、MPU が構成されていて使用できない場合、プロセッサがリセットされた後、MPU を有効にする方法を教えてください。MPU を再度有効にするために考慮すべき手順は何ですか?
embedded - ARM での Mpu のプログラミングを理解する [ M3 ]
Mpuのエイリアスレジスタでどのように機能するかを理解しようとしています。
だからここに私の理解があります:
A.
各地域には、個別の RBAR および RASR レジスタがあります。そのため、8 つの領域に対して合計 16 のこれらのレジスタがハードウェアに物理的に存在しますが、ユーザーには表示されません。つまり、ユーザー アクセス用のバスには存在しません。
これは ARMv7 からの行です。
The MPU Region Number Register selects the associated region registers
そのため、sfr バス [RBAR、RBAR_A1、RBAR_A2、または RBAR_A3] でユーザーが使用できるリージョン ベース レジスタのいずれかに書き込むと、ハードウェアは最初に選択されたリージョンをチェックし、選択されたリージョン番号に基づいて、 [RBAR、RBAR_A1、RBAR_A2、または RBAR_A3] のいずれかに書き込まれた値を、選択した領域の内部レジスタに書き込みます。
上記の理解は正しいですか?
B.
また、エイリアス レジスタでは、上記のレジスタのいずれかがユーザーによって書き込まれると、それらはすべて同じ値になります。たとえば、RBAR_A1 = 0x40000013 と書き込み、その後 RBAR レジスタを読み取ると、0x40000013 が返され、 RBAR_A2、RBAR_A3 についても同様です。
上記も正しいですか?
MPU レジスタの動作に関する私の理解が正しいかどうか教えてください。
arduino - x秒後にArduinoがフリーズする
MPU-6050慣性測定ユニットから、I2Cを使用してarduinoから25Hzのサンプルレートでデータを読み取っていましたが、正常に機能しました。次に、2 台目の MPU-6050 を追加し、これも 25Hz のサンプル周波数で読み取りました。それらは異なるアドレスを持っているので、I2C で両方にアクセスできます。ただし、2番目のものを追加してから、1000回から5000回のloop()呼び出しの後にarduinoの停止がフリーズしているように見え、ループのどこかでフリーズします(PCへのシリアル接続に文字を送信してデバッグして観察したものとは毎回異なる場所) )。各ループで、MPU-6050 の 1 つからデータを読み取りました。Jeff Rowberg のライブラリを使用する私のコードは、http://forum.arduino.cc/index.php?PHPSESSID=t6lmv7i431eqeaf05ui619q2h6&topic=118937.msg1368958#msg1368958 にあるコードから着想を得ており、同じ問題が発生しています。
シリアル出力によって報告されたエラーはありません。点滅している LED (コードの最後) は、Arduino がフリーズしても点灯したままです。フリーズですか、それともクラッシュですか?どうすれば解決できますか?
magnetometer - MPU9150 から磁力計データにアクセスする際の問題
出力: - 私が得ているのは、すべてのレジスタ (磁力計に対応) の読み取りで 0xFF です。一方、加速度計とジャイロスコープのレジスタには完全にアクセスできます。i2c マスター モードを無効にし、i2c バイパス モードを有効にしてシステムを初期化しました。以下は、システムを初期化するために使用したコードです:-
('single_byte_write(address,data) は、'address' をスレーブ アドレスとして 0x69' としてレジスタにデータ バイトを書き込みます)
accelのレジスタにアクセスしました。そしてジャイロ。次のように:- single_byte_read(0x75,wia_mpu); これは、who_i_am レジスタとして正しい 0x68 を返します。しかし、磁力計レジスタに次のようにアクセスしようとしたとき:- single_byte_read_compass(0x00,wia_compass); 0xFF を返しますが、0x48 を返す必要があります。
single_byte_read_compass()/single_byte_write_compass() が正しく動作することを確認するために、これらの関数を使用してスレーブ アドレスを変更し ('0x0C' から '0x69' に)、accel のレジスタにアクセスしました。そしてジャイロ。そしてそれは正しく機能しました。
(「single_byte_read()」と「single_byte_read_compass()」の違いは、前者はスレーブ アドレスを「0x69」として使用し、後者は「0x0C」をスレーブ アドレスとして使用することです。「0x0D」、「0x0E」も試しました。 ' および '0x0F' をスレーブ アドレスとして使用しましたが、出力は同じままでした)。
また、MPU9150 がパススルー モードになっているかどうかも確認しました。ピン 'ES_DA' (ピン 6) と SDA (ピン 24) の出力をオシロスコープを使用して確認しましたが、バイパス モードを有効にしてまったく同じであることがわかりました。マスター モードを無効にし、バイパス モードを無効にすると、'ES_DA' の出力は常にゼロになります。
上記と同じ手順を 1 つだけでなく多数の MPU9150 で試しましたが、出力は同じままでした。したがって、コードに何らかの問題がある可能性が高いです。
gcc - Atmega2560 (HMC5883L、MPU6050、および I2Cdev ライブラリを使用) で、Atmel Studio 6 を使用してプロジェクトをビルドするとエラーが発生する
これは私のコードです:
Arduino IDE で動作します。以下は Atmel Studio 6 の警告 (2 つの初期化されていない警告と I2Cdev ライブラリによって生成された 4 つの警告) で、エラーはありません。
出力は次のとおりです。
誰が私を助けることができます?どうもありがとう!!
arduino - MPU6050 DMP から静的値を取得する
MPU9050 DMP から値をクリアしてジャンプしないことに問題があります。Jeff Rowberg のコードを使用しました。問題は、コードを使用するとすべてが完璧で、YPR が非常にスムーズであることです。しかし、プログラムで遅延を使用してそれを使用すると、時間の経過とともに値がジャンプします。遅延に応じて、ジャンプ値が異なります。
ユニティでシリアル値を読み取っているため、遅延を使用しました。ユニティはデータを読み取るためにArduino側で少し遅延する必要があります。誰かが私に何が問題で、どうすれば修正できるか教えてもらえますか?
どうもありがとう。