2021年1月25日月曜日

PICのADC2の要注意点

 年末年始に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 件のコメント:

コメントを投稿