0

別の会社が開発したPIC32MX340F512ボードがあります。ボードにはDS1338 RTCCと24LC32A eepromがあり、I2Cバスにディスプレイユニットがあります。このバスにはTSL2561 I2C光センサーが含まれており、光をポーリングするコードをcで書きました。光センサーが一定のレベルに達すると、時間と日付、光センサーの値を SD カードに保存します。これはすべて正常に機能しますが、トンネルの一方の端の入射光を監視する必要があるトンネル内に光を当てずにシステムを離れると、どれだけの量の光を当ててもシステムが応答しなくなり、電源を切るとすべてが正常に機能し始めます。私は 1 人の開発チームで、何ヶ月も問題を見つけようとしてきました。システムがハングしないようにウォッチドッグ タイマーを有効にしましたが、問題は解決しませんでした。次に、光測定を有効にするプッシュボタンを含めることでセンサーに問題があるかどうかを調べることにしましたが、それでも4〜5時間経過しても、PICは入力ピンの変化を検出することさえできません。ハードウェアのリセットが進行中のすべてを上書きするという印象の下で、リセットボタンを含めました。また、最初の数時間は正常に機能し、PICはリセットを含む何にも応答していないようです. ファームウェアには何も問題はないと確信していましたが、I2C のディスプレイ ユニット (pic16f1933 と lcd) がメイン ユニットと電力を共有しているため、これらすべてが起こっていることもわかりました。さまざまなメッセージが絶えず交互に表示されるため、影響を受けているようです 何が問題なのか (ハードウェア/ファームウェアまたは私のセンサー) を知っている人はいますか? 別途購入したDC24V電源を使用しています。コードに SLEEP モードを実装していませんが、PIC はディープ スリープ状態になっているようです。Nb 私たちは他の多くのプロジェクトで同じボードを使用していますが、そのような問題に遭遇したことはありません。前もって感謝します。

4

2 に答える 2

0

設計を 2 つの主要な部分 (SD カードのインターフェイス、rtc の読み取り、光センサーの読み取り) に分割できるようです。私だったら、光センサーの読み取りを模倣するが、偽のデータのみを返すコードのバージョンをアップロードして、それが問題を解決するかどうかを確認します。さらに、他の 2 つのモジュールで同じことを個別に行い、プロジェクトの 3 つのバージョンのいずれかでこの問題が発生しないかどうかを確認します。そこから、問題を引き起こしているコードのブロックが見つかるまで、それを絞り込み続けます。

デバッグ コードの 2 つ以上のバージョンが同じ問題を示している場合、通信プロトコルの 1 つに関係していると思います。DMA を SPI ペリフェラルと組み合わせて使用​​すると、Pic32 シリコン バージョンがブロックされるという問題がありました。したがって、チップのエラッタを確認することをお勧めします。

それでも問題が見つからない場合、私の唯一の提案は、メモリ リークまたは予約済みメモリに増加している配列をチェックすることです。

お役に立てば幸いです、頑張ってください!

于 2014-01-23T03:37:21.380 に答える