ご辛抱いただきありがとうございます。私たちはこの部品の使用に関しては比較的初心者です。
このデバイスには、XYZ 軸の各動きをシミュレートするノイズ スパイクをデータに導入するセルフ テスト機能があります。お客様は、機械的な傾き+バンプ テスト プラットフォームを構築することなく、この機能を使用して製造ラインで最終製品を最終テストしたいと考えています。
構成レジスタで「セルフテスト」を有効にしましたが、ユニットにこの機能を認識させて外部 MCU への割り込みを生成するのが困難です。ユニットを機械的に衝突させると、期待どおりに割り込みが生成されるため、バックエンド (デジタル + 割り込み) が有効になっていて、適切に機能していると考えられます。
データシートを確認したところ、4g モードで生成されたセルフ テスト ノイズ値は、X = 11 LSB、Y = 16 LSB、Z = 105 LSB であることがわかりました。次に、ノイズしきい値とサンプリング遅延を再確認し、小さなセルフテスト ノイズ イベント情報によってトリガーされるには高すぎる設定になっていないか確認するようお客様に依頼しました。
彼の反応は……
--------------------------------------------------------
以下は、セルフテストを試すために使用するコードです。遅延は約25ミリ秒です。STは0x80です。デフォルトの範囲である2gを使用しています。ウェイクアップしきい値を最小の 1 に設定し、軽くタッチするだけでウェイクアップする場合でも、セルフテストではウェイクアップしません。私が有効にしたウェイクアップ割り込みは、3 つの軸すべてに対する「一時」割り込みであり、実際のバンプに非常にうまく機能します。他に設定する必要があるものはありますか?起動時に設定を行ったり、割り込みをクリアしたりするためにレジスタの読み取りおよび書き込みルーチンを使用しているため、これらのルーチンが機能することはわかっています。割り込みラインにスコープがあり、割り込みをクリアするサービス ルーチンにブレークポイントがあります。すべては 3.3V で動作します。
void accSelfTest(void)
{
uint8_t レジスタ;
accelRegRead(CTRL_REG2, ®);
accelRegWrite(CTRL_REG2, reg | ST);
遅延(2);
accelRegWrite(CTRL_REG2, reg);
}
---------------------------------
デバッグの取り組みと注意をどこに集中させるべきかについてのヒントがあれば、ぜひ教えてください。
-ゴーディ
ゴーディ、
返事が遅くなり申し訳ありません。ここ数日オフィスを離れていました。
まず、CTRL_REG2 レジスタ (0x2B) の ST ビットを設定してセルフ テストをアクティブにするには、まず CTRL_REG1 レジスタ (0x2A) の ACTIVE ビットをクリアして、MMA8453Q をスタンバイ モードにする必要があります。次に、CTRL_REG2 レジスタの ST ビットを設定し、CTRL_REG1 レジスタの ACTIVE ビットを設定することで、部品をアクティブ モードに戻すことができます。
void accSelfTest(void)
{
uint8_t レジスタ;
accelRegRead(CTRL_REG1, ®);
accelRegWrite(CTRL_REG1, reg & 0xFE); // スタンバイモード
accelRegRead(CTRL_REG2, ®);
accelRegWrite(CTRL_REG2, reg | ST);
accelRegWrite(CTRL_REG1, reg | 0x01); // アクティブモード
遅延(2);
accelRegWrite(CTRL_REG2, reg);
}
さらに、TRANSIENT_CFG レジスタ (0x1D) の HPF_BYP ビットが設定されていない限り、過渡検出機能はハイパス フィルタされたデータを使用します。したがって、このビットを設定するか、モーション検出機能を使用することをお勧めします。
お役に立てれば幸いです。
よろしくお願いいたします。
トーマス