学習キット
何も信号を入力していないのに、すべてのチャンネルの値が0295と出るのはなぜでしょうか?
ADコンバータの練習問題の回答例としてCDに収めた、Exercise16_adcのバグが原因です。大変申し訳ございません。※1
Exercise16_adcでは、ADコンバータから取得したAD変換結果を格納するバッファが半分まで書き込まれた時点で、各チャネル毎に バッファ内のデータで平均値を求めて表示していますが、平均値を求める処理で各チャネル毎にAD変換結果の合計を集計する処理と、 データ件数を集計する処理にて、集計したデータを格納する場所を間違えていました。
AD変換結果を格納する位置と、表示する位置がずれてしまい、全てのチャネルの値が”0295”と表示されてしまいました。
Exercise16_adcを正しく動作させるためには、Exercise16_adcフォルダ中の“sample.c”ファイルの124行目と125行目を、以下の ように修正願います。
124行目
誤:total[chid] += val; // 変換結果累計
正: total[work] += val; // 変換結果累計
125行目
誤: count[chid]++; // 件数加算
正: count[work]++; // 件数加算
なお、ADコンバータにファンクションジェネレータからの信号を入力する際は、以下の点に注意してください。
・ADコンバータに入力する信号の範囲は、0~5Vです。
・入力端子に何も接続していないチャネルのAD変換結果は、1,100前後の値になります。
また、入力端子に何も接続していないチャネルは、ノイズの影響を受けやすく、他のチャ
ネルの入力端子にファンクションジェネレータ等から信号が出力されていると、AD変換
結果が1,100以外に変化します。
※1 最新バージョンCD-ROM Ver1.03にて対応済みでございます。