お世話になります初心者IKUZOと申しますRL78/G1Eで高速にA/D変換できないかと考えております下図のように設定しましたが、大丈夫なんでしょうかわからないことがありましてハードウェアトリガーでINTTM01から起動にしましてだいたいこれでいいのでしょうか?入力がANI0とANI22があるのが疑問ですやりたいのはANI0を10uS以内で8ビットに変換して判断したいのですGAIN_AMP→DC→抵抗分圧→ANI0→A/D変換のようにしたいです変換時間が赤く表示されているのは、エラーなんでしょうか?変換結果も設定はどうしたら良いのでしょうか?
11. 6. 5 ハードウエア・トリガ・ノーウエイト・モード (セレクト・モード,連続変換モード) ① 停止状態で,A/Dコンバータ・モード・レジスタ0(ADM0)のADCE = 1に設定し,A/D変換待機状態と なります。 ② ソフトウエアで安定待ち時間注をカウント後,ADM0レジスタのADCS = 1に設定することで,ハードウ エア・トリガ待機状態となります(この段階では変換を開始しません)。なお,ハードウエア・トリガ 待機状態のとき,ADCS = 1に設定しても,A/D変換は開始しません。 ③ ADCS = 1の状態で,ハードウエア・トリガが入力されると,アナログ入力チャネル指定レジスタ(ADS) で指定されたアナログ入力のA/D変換を行います。 ④ A/D変換が終了すると,変換結果をA/D変換結果レジスタ(ADCR, ADCRH)に格納し,A/D変換終了割 り込み要求信号(INTAD)を発生します。A/D変換終了後は,すぐに次のA/D変換を開始します。 ⑤ 変換動作中にハードウエア・トリガが入力された場合,現在のA/D変換は中断され,再変換を開始します。 変換動作途中のデータは破棄されます。 ⑥ 変換動作中にADSレジスタを書き換えおよび上書きすると,現在のA/D変換は中断され,ADSレジスタで 再度指定されたアナログ入力のA/D変換を行います。変換動作途中のデータは破棄されます。 ⑦ 変換動作中にADCS = 1に上書きすると,現在のA/D変換は中断され,再変換を行います。変換動作途中 のデータは破棄されます。 ⑧ 変換動作中にADCS = 0に設定すると,現在のA/D変換は中断され,A/D変換待機状態となります。ただし, この状態でA/Dコンバータは停止状態になりません。 ⑨ A/D変換待機中にADCE = 0に設定すると,A/Dコンバータは停止状態になります。ADCS = 0のとき,ハ ードウエア・トリガが入力されても無視され,A/D変換は開始しません。 注 アナログ入力チャネルに高精度チャネル選択の場合: 安定待ち時間 = 0.5 μ s アナログ入力チャネルに標準チャネル選択の場合: 安定待ち時間 = 2 μ s INTTM01のトリガーでA/Dを起動したいですね 最大80mS間をA/Dトレースできれば申し分ないのですが 10uSでは割込みが多すぎてたぶん使いものにならない? であれば100uSぐらいは分解能に無理がありますか。
IKUZOさん、こんにちは。NoMaYです。そうなると、充分かつ最小、のソースコードを知る次善の策は何だろうか?何か策がないか、しばらく考えてみます。
NoMaYさんありがとうございます 丸投げして、お願いしたいのはやまやまなんですが ここはひとつエンジニアの沽券にかけて頑張りたいと思います^^; あれからくじけずやっておりましたら、 進展がありました、 最初からTAU0_Channel1_Start //TM01動作開始 しておいてP52パルス確認しましたら VR半回転以上で下記P52パルスが反転しましたので A/Dが正常に変換していると確認しました __interrupt static void tau0_channel1_interrupt(void) { ADCS=0; if(ADC_Result > 128){ P5 ^= 0x02;//LED2点灯 実行中 } ADCS=1; } もう少し現象を解析します。
GAIN_AMP通さず、AMP1、AMP2のみにしまして、なんといけました、ハードウェアトリガに変更したいと思います。
Stop endad_max=37ad_count=714ADS=0x00
IKUZOさん、こんにちは。NoMaYです。意図通り動くようになって良かったですね。>R5F10FMx_ANALOG_REG_SET_(PC2,PC2_GAINOF|PC2_LDOOF);>こうしておかないとAVDDが0Vになってしまい>ADデータが255に張り付きます、皆様ご注意を!ああ、それで、以下のようなことも起きてしまったのですね。>>ADSを内部基準電圧(1.45 V)にしても同じでした>これでA/D変換結果が255になってしまうというのは明らかに変ですね、、、ちなみに、ひょっとして、以下の時は、アナログ設定を迂回してましたか?>main();の中に下のソース入れまして略>printf("ad=%d \r", (int)ADC_Result & 0xFF );>実行させました、そしてVRで0V~3.3V~0Vに調整してみました>下記テキストのように全く問題ございません
その後ご報告A/D変換レートを2.5625uSにしましてハードウェアトリガに変更いたしました、TM01は10uSですが、5uSでもたぶん可能ではないかと思われますが、10uSで分解能としてはいけると思いますので●実行時の波形
●実行結果画面
チョコさんMaYさんサポートありがとうございました。