1

ADCの読み取りにPIC24F16KA101を使用しています。ADC 信号はランダムに来るので、Mcu をスリープ モードにします。信号がしきい値を超えたときに MCU を起動するのが好きです。これをグーグルで検索すると、これに関連する多くのトピックが見つかりましたが、この問題を明確にするのが好きです. この問題の解決策をいくつか見つけましたが、消費電力を最小限に抑えた解決策が必要です。

  1. ADC を最大周波数でサンプリングします (信号はランダムな高周波パルスであるため)。MCUが起動しているときにシステムクロック(私は32MHz FRCPLLを使用しています)に基づいてAdcクロックを使用し、スリープに入る前にADRC内部クロックに変更して、adcがスリープモードでサンプリングするようにします。このようにして、しきい値がより高い場合に、(ADC 割り込み優先度を CPU 優先度よりも高く設定することによって) モジュールをウェイクアップできることを願っています。しかし、このためには、adc を使用して継続的にサンプリングする必要があります。

  2. コンパレータ モジュールに同じ Adc 入力を提供し、処理を行わない間 MCU をスリープ モードにして、ADC をオフにします。モジュールは、入力がコンパレータのしきい値より高くなるとウェイクアップし、ADC を開始します。この場合、コンパレータはスリープモードで動作すると思います。しかし、いくつかの重要な信号情報を見逃す可能性があるのではないかと心配しています (コンパレータ割り込み後に adc をオンにするのに時間がかかるため)。

  3. もう1つは、タイマーを使用して指定した間隔でADCをサンプリングすることですが、信号がランダムであるため、信号を見逃す可能性があります。

どちらが良いでしょうか、またはこれに対する他の解決策はありますか? 助けてください....また、内部ADRC発振器の周波数を知りたいです。

4

1 に答える 1

0

方法 2 は、変換する必要がある信号の長さによっては機能する場合があります。変換にかかる時間については、データシートを確認してください。

ADRC オシレーターの周波数に関しては、あなた次第です。AD1CON3 のビット 15 により、内部発振器または外部発振器のいずれかを選択できます。内部を選択した場合は、ビット 5:0 も設定することで、CPU 周波数の倍数にすることができます。

于 2014-06-12T23:48:41.053 に答える