RL78/G1EのADの設定の件

お世話になります初心者IKUZOと申します
RL78/G1Eで高速にA/D変換できないかと考えております
下図のように設定しましたが、大丈夫なんでしょうか
わからないことがありまして
ハードウェアトリガーで
INTTM01から起動にしまして
だいたいこれでいいのでしょうか?
入力がANI0とANI22があるのが疑問です
やりたいのは
ANI0を10uS以内で8ビットに変換して判断したいのです
GAIN_AMP→DC→抵抗分圧→ANI0→A/D変換のようにしたいです
変換時間が赤く表示されているのは、エラーなんでしょうか?
変換結果も設定はどうしたら良いのでしょうか?

Parents
  • 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ぐらいは分解能に無理がありますか。

  • チョコです。
    何を気にされているか分かりませんが,必要な回数だけ,変換結果をDMAでRAMに16ビット転送で転送しておいて,DMA完了の割り込みで変換結果を処理するのではどうなのでしょうか?
  • なんとコード生成デフォルトではprintfができません
    私はいちからやってコード生成はコピーでやっているので
    プロジェクトのオプション等が違うのかもしれません
    このソースそのままというのではちょっとと思います
    そのような具合で、いつできるかはわかりません
    printfによりスタック等不都合が発生して
    今の現象につながっているかもしれないことは、
    あるかもしれません、
    ソース開示は今すぐにはいきそうにありません。
  • 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;
    }
    もう少し現象を解析します。

  • 最初からTAU0_Channel1_Start //TM01動作開始
    VR半回転以下にしておきまして、
    センサー処理開始しますと、
    255になるのでP52パルスが反転してオシロで確認できます、
    この状態で各部プログラム変更しまして、
    255になる原因を探していましたところ、
    アナログ設定を迂回すると255ににはなりません、
    これはアナログ設定が、
    A/Dコンバータの設定に影響を与えていると考えられます、
    マニュアルを読み返してみたいと思います。
  • なんと
    アナログ設定のゲインアンプを有効に設定すると
    現象が発生するようです
    //PC2レジスタの設定
    R5F10FMx_ANALOG_REG_SET_(PC2,PC2_GAINOF);
    さらに確認いたします。
  • GAIN_AMP通さず、AMP1、AMP2のみにしまして、
    なんといけました、ハードウェアトリガに変更したいと思います。


    Stop end
    ad_max=37
    ad_count=714
    ADS=0x00

  • 基本的な原因がわかりました
    //PC2レジスタの設定
    R5F10FMx_ANALOG_REG_SET_(PC2,PC2_GAINOF);
    これは間違いで
    R5F10FMx_ANALOG_REG_SET_(PC2,PC2_GAINOF|PC2_LDOOF);
    こうしておかないとAVDDが0Vになってしまい
    ADデータが255に張り付きます、皆様ご注意を!
    #define PC2_GAINOF 0x10//0=OFF 1=ON ゲイン調整アンプ
    #define PC2_LPFOF 0x08//0=OFF 1=ON ローパス・フィルタ
    #define PC2_HPFOF 0x04//0=OFF 1=ON ハイパス・フィルタ
    #define PC2_LDOOF 0x02//0=OFF 1=ON 出力電圧可変レギュレータ
    #define PC2_TEMPOF 0x01//0=OFF 1=ON 温度センサ
    こんなやぼな誤りはしませんよね。
  • 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に調整してみました
    >下記テキストのように全く問題ございません

  • NoMaYさん
    おっしゃるとうりです
    現状
    1.待機状態
    2.ボタン押す、処理開始
    3.アナログ設定行う
    4.センサーの処理開始
    5.センサーの処理完了
    6.結果を表示する
    7.1.の待機状態に戻る
    のようになっておりました
    ですからボタンを押さない限りは
    最初に設定したR5F10FMx_LDO_Enable();
    の設定は壊れることなく、
    動作していたものと思われます。
  • その後ご報告
    A/D変換レートを2.5625uSにしまして
    ハードウェアトリガに変更いたしました、
    TM01は10uSですが、5uSでもたぶん可能ではないかと
    思われますが、10uSで分解能としてはいけると思いますので
    ●実行時の波形


    ●実行結果画面


    チョコさんMaYさんサポートありがとうございました。

Reply
  • その後ご報告
    A/D変換レートを2.5625uSにしまして
    ハードウェアトリガに変更いたしました、
    TM01は10uSですが、5uSでもたぶん可能ではないかと
    思われますが、10uSで分解能としてはいけると思いますので
    ●実行時の波形


    ●実行結果画面


    チョコさんMaYさんサポートありがとうございました。

Children
No Data