年末年始にADC2と格闘していたのは既に書いたとおりですが、
あるアプリにて更に問題点が露呈した為、ここに記載します。
PIC内蔵のA/Dコンバーターは10bitもしくは12bitに対し、
データー出力のレジスターは16bit。
そこで必ず、4bitもしくは6bit分が0で埋まることになります。
その0埋めをMSB側にするかLSB側にするかを設定するのが、
ADFMという設定ビットです。
通常はADFMをセットして、MSB側を0で埋める使い方が多いかと。
しかし10bitのA/Dコンバーターの下位2bitを誤差領域とみなし、
上位8bitだけを使用するというようなケースでは、
ADFMをクリアーするのは有用ですね。
ところがこの場合、ADC2内で積算処理すると、
ADACCがオーバーフローする場合が有ります。
ADACCが24bit長の場合は問題にならないと思いますが、
ADACCが16bit長のADC2では、ADC2内で積算してはダメです。
この解決策としてはADFMをセットしてデーターサンプリングと積算を行い、
その後のプログラムにてMSB側にデーターをシフトするという流れにしましょう。
0 件のコメント:
コメントを投稿