高サンプリングレートのデータロガーで新しいサンプルを比較する

私はsdFatライブラリを使用していますアナログビンロガーの例では、

Github:SdFat/SdFat/examples/AnalogBinLogger /

The program is working fine and every thing but the thing is, this high speed datalogger uses interrupts and timers to make the ADC work at a pre-determined sampling frequency and it DOES NOT use the normal analogRead ()

私が欲しいのは、あるアナログピンの入力があらかじめ決められた値になったとき、私はデジタルピンにHIGHまたはLOWを書いて、 私の質問は、アナログビンロガーのサンプルで新しいサンプルを比較するにはどうすればよいのですか?

if ( analogRead() < 256 ) {// do something}

タイマーと割り込みを使用するため、analogRead()がプログラム内に存在しないことを認識します。

0
追加された 編集された
ビュー: 1

1 答え

この関数

ISR(ADC_vect) {

変数 d には現在のサンプルが含まれています:

 //Read ADC data.
#if RECORD_EIGHT_BITS
  uint8_t d = ADCH;
#else //RECORD_EIGHT_BITS
 //This will access ADCL first.
  uint16_t d = ADC;
#endif //RECORD_EIGHT_BITS

したがって、 d の内容に応じて「何かを行う」ことができます。もちろん、これはタイマー割り込みであるため、何かをする時間が限られているので、何をしても高速かつ効率的であることを確認する必要があります。実際には、digitalWrite()の代わりにダイレクトポートアクセスを使用したいと考えています。

3
追加された
@SabirMoglad adcindex を見てみましょう。
追加された 著者 Majenko,
これは完璧ですが、複数のチャンネルが使用されているため、このd値が属するアナログピンを知る方法はありますか? @マヤンコ
追加された 著者 diegoaguilar,