Pageコード生成を使ったAD変換について(RX64M)お世話になっています。コード生成で、S12AD変換を使用した場合の話です。リファレンス電源に外部REF-IC電源を使用し、動作させた場合です。ソフトを初期化して、動作させるたびに変換後のデータにズレが発生します。AN000端子での電圧は、全く同じですが、出てくる値が0x0010位ズレます。0x07F0になり、その後、電圧を変化させると同じように変化します。オシロスコープで、REF電源の端子をチェックしても安定しています。E1にて、リセットを実行すると同じ値になる確率は、50%位です。どこかにREFのレジスタがありラッチさせているのでしょうか?同じRX64MをFITのAD変換で初期化した場合は、このようなズレは無かった思います。ご存じの方がいらしたらアドバイス願います。4:41わわいですA/D変換というものはそういうもん、と思っていてくださいアナログを扱う場合にはノイスがつきものです。7:07SSさん、こんにちは。#前回はRX71Mの時でしたね。同じRX64MをFITのAD変換で初期化した場合は、このようなズレは無かった思います。気になったのですが、ここ↑の話は同じボードで(AD変換部分以外は殆ど同じソフトウェアで)の話しなのかな?というところです。RX64Mであっても別のボード(というか別の製品)の話であれば、この後、それだ、というアドバイスが来なければ、今回のボード(というか今回の製品)でAD変換部分だけFITにして、同様の症状になるか確認してみるのも、現象理解に向けた一手になるかと思います。それでもFITでは値が安定している、ということになったら、FITのソースを読んで、コード生成のソースと比較して、本件に関係しそうな違いがないか調べる、ことになるのかなと思います。(この後、それだ、というアドバイスが来なければ、という場合には、ですけど。ありがとうございます。結果から言いますとFITでも改善されませんでした。コード生成は問題ありません。コード生成作成者の方、大変申し訳ありませんでした。電源電圧の表示を行うソフトウェア部で今回の問題が発生しました。電源入れなおす毎に表示電圧が±0.3V位ズレて表示するという現象です。発生件数は50台中40台で発生しランダムに発生します。5回に1度くらいの確立で発生します。現象が個体差による現象と思えない為、原因を色々探っていました。電池動作の装置で、電源電圧を常時表示しています。17Vを最大値で表示できるように、抵抗分圧し測定しています。マイコンは3Vですので、約1/6の電圧になうようにADに入力しています。以前の装置では、そのような現象は出ませんでしたので今回のボードの問題であることは、はっきりしています。AVCC,AVSSやVREFH0,VREFL0などを波形観測しても問題があるようなノイズはありません。0.1V単位で表示を行っています。以前の装置はFITのAD変換モジュールを使用していますが今回はコード生成を使用した為、発生したものと思ってしまいました。電源の入力は4系統ある為、AN000~AN003まで使用しています。この現象は、すべての入力電圧の表示で発生するためADのREF制御に関係あると思います。リセット時にADの初期化でも発生する現象です。起動時に内部のリファレンスがラッチしているような現象として現れる為、メーカーに問い合わせをしてみようかなと思います。ありがとうございました。14:41SSさん、こんにちは。ありがとうございました。時間が掛かりましたが、正常動作するようになりました。今後役立つ人がいるか判りませんが、参考までに、要因を簡略に書いておきます。基板のVREL0とAVSS0とVSSのGNDパターンの問題でした。VSSは、デジタル電源のGND。VREF0は、純粋にアナログ電源のGNDで、AVSS0は、デジタル電源から起点から分岐したアナログ用GNDです。どれも最終的にはつながっています。(1点アースは、死語かな?)今回は、パターンの処理が悪く、AVSS0にVSS(デジタルGND)のリップルが少し乗っていました。ルネサス様に聞いても教えて貰えませんでしたが、リセット時にVREF0の値をAVSS0でラッチしていると想定すると今回の問題は説明できます。リセット解除後のタイミングで、AVSS0とVFEFL0の電圧差を内部ラッチするとすると、デジタル電源(GND)は、いろいろ所でいろいろな電圧の電源ICなどが動作しているのでリップルが多めに出ています。そのリップルがAVSS0に影響を与えてしまい。リセット及び電源起動時に、REFの設定誤差としてその後のADに影響を与えていたと思われます。(推測です)あくまでリセットのタイミングのみで決まる。VREFに別電源を使っている為、現象が顕著に表れたと思います。VREFL0=VCSS0=VSS、VREFH0=AVCC0=VCCの様な簡単な回路なら現れないかもしれません。(元々12BITの性能が出ないので判らないかもしれない)それと、VREFH0が2.5Vですが、動作しています。ルネサス様では、動作保証外とされているようです。VREFH0のmin値は2.7Vです。結論は、一部のGNDパターン切断改修にて、リップルを影響を減らす処理を実施した。以上、12BITのADのVREFに別電源を使った失敗例でした。題目は、ソフトウェアですが、内容はハードウェアでした。基板設計の間違いか、ソフト運用の間違いと言うことで結論とします。ラッチ説(推測)は、否定された為、余り参考にならないですね。GNDが弱かった位の話ですね。SS:SSさんVREFのラッチというのは初めて聞きました、たいていラッチ回路とは74HC574のような1ビットのデータを記憶させる回路素子と理解しています、VREFというのは基準電圧ですから一定の変動のない、ノイズのない基準電圧でないといけないと思います、これに対してAD入力のサンプルホールドというのがあります、これはラッチと表現するのではなくて、サンプリングした値を留め置くホールドの意味だと思います、正しい呼び方を覚えると助けになると思います。IKUZO:IKUZO様コメントありがとうございます。(感謝)おっしゃる通りですね。AN000~AN002では、変換中(逐次比較中に入力値が変化しないように)ホールドできる機能が確かに有りますね。これはサンプルホールドの理解で正しいでしょうか?(>_<)今回は変換精度が悪すぎて使い物ならないのは何なのかから来ています。12ビットADを使用して変換結果が1000回平均しても7LSB位もズレてしまう?それもリセットをする度に変わってしまう。壊れてよねこのマイコン!!そして一度決まった値になるとAN00x入力の電圧を同じだけ変えるとそれ以降は、12ビット精度の威力が効いてくるよ。なんでなの???(>_<)今回、ラッチと言っているのは、12ビットD/Aユニット(S12ADCユニット0)にVREF用のレジスタが存在するのかなって仮説から話ですね。無いって事ですから無いんでしょ。VREFH0とVREFL0の値がAVCC0とAVSS0と異なった為に発生したのか?S12ADCのユニット0は、AVCC0,AVSS0とVREFH0,VREFL0で作る12ビットD/AレジスターとAN入力をAVCC0,AVSS0で動作させるアナログマルチプレクサを通してA/Dデータレジスターと逐次比較レジスターの一致でデータ値を取得するなら電圧のズレがあるのか?自己診断機能を使うとVREFH0、VREFH0の1/2、VREFL0(0v)の値を変換する事も出来たりしますので、AVCC0とVREFH0値、AVSS0とVREFL0の値のズレもチェック出来るとなっています。実際に変換してみると変換できます。そこで、AVCC0とVREFH0の値が違う場合は、AN00XがVREFH0の値(電圧)と同じ値が0x0FFFでVREFL0と同じ値(電圧)を0x0000となる様にコンパレータに送ると思います。