質問: picのa/dを使うプログラムについて質問です 今、電子ドラムを作っているのですが、プログラムが上手く作動せず困っています。 知恵を貸していただけたら幸いです。 センサー部が叩かれると電圧が上昇するようにしてあるのですが、picでhighと認識されるほど電圧が上がらないので、a/d変換を使い入力を判定しているのですが、2つ以上の入力のプログラムが上手く行きません。 pinごとに順番にa/d変換し、一定値以上なら変数にpinごとに割り振った2進数を加算し、入力pinすべての判定が終わったときの変数の値別にswitch文で出力を変え、70ms出力するようなプログラムをつくりました。 入力が1pinだけの同様のプログラムは動くのですが、入力を複数にすると動きません。 このように複数のa/d変換をほぼ同時にする方法は無いでしょうか? デバイスは16f877/20-sp 言語はcでccs-cコンパイラーを使っています。 回答よろしくお願い致します。
回答: ad変換のプログラムは、 set_adc_channel(0); delay_us(60); an0 = read_adc(); set_adc_channel(1); delay_us(60); an1 = read_adc(); といった感じで大丈夫なはずです。 これとは違う書き方のプログラムでしょうか? >an0に入力したときにan1の設定のdelayが入ってて駄目なのだと思うのですがどうでしょうか? サンプルホールドキャパシタの蓄積時間ことを言っているならdelay_us(60);もやっていてダメな理由は分かりません。 何らかのディレイが必要と感じるなら試しに入れてみてはどうでしょうか? 残念ながら回路図とかプログラムコードを見ないと、これ以上は推測不能ですね。せめて肝心のad変換部のプログラムコードのだけでも見たいです。