新基礎3 adctestについて #115
-
竹内様 adctestでは、AD変換の結果をDMAによってメモリへ転送するプログラムだと理解しています。 以下に私の理解の範囲でプログラムの流れを記述します。 DMAモードでは、AD変換完了後は割込みではなくDMAにリクエスト→転送、と理解しました。 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
その理解で正しいです。 |
Beta Was this translation helpful? Give feedback.
その理解で正しいです。
adc_start_dma関数では、ADCの割込み設定はオーバーラン割込みのみを設定しており、ADCの割込みはエラー発生時のみで
データ転送終了は、DMAの完了割込みとなります。
ちなみに、adc_start_int関数は、オーバーラン割込みとEOCの割込みを設定しており、ADC変換終了時も割込みが発生します。
通常の機器では、ADCは10ms単位にADC変換を行って、5回位の平均値をとるような使い方が多いようです。PICやArduinoではポーリングでADC変換待ちを行っているようです。リアルタイムカーネルを使う場合は、ADC変換終了待ちでCPUを占有されるのはいやなので、タスクでキックして割込みで取り込むような手法が良いと思います。