2021年2月19日金曜日

PIC16F18456のSUBFWB命令

 V/Aプローブではセンサーの出力信号をA/Dコンバーターで取り込んだ後、
人が直読できる数値に変換して出力する為、
ソースコード内で乗除算まで必要になります。
とはいえ、所詮16Fシリーズですから乗除算の命令が実装されているわけではないので、
それらは全て加減算を使って処理することになります。

そのコードにSUBFWB命令を書いたところ、アセンブラーがエラーを!!
改めてデーターシートのインストラクションコードの項目を確認しても、
おかしなところが見つかりません。

結論から申し上げると、なんとこれデーターシートの記載間違いでした。

実際にPIC16F18456に実装されている命令はSUBWFBだったのです。

後から気付いたのですが、データーシート内の命令一覧表にはSUBWFBが載ってて、
個々の命令説明の箇所にはSUBFWBが載ってるという状態でした。
私は通常、個々の説明しか見ないので気付くのが遅れてしまいました。

このSUBWFB命令、数バイト長のデーター同士の引き算に威力を発揮します。
SUBFWB命令でも処理は可能ですが、値の入れ替えが発生する為、
ソースコードが倍以上になってしまうのが難点。
そういう意味ではSUBWFBの方が実装されていて、むしろラッキーでした。

しかし、いつ修正されるんでしょうかねぇ。
やっとErrataもリリースされたようですが、これはチップ内部に対する話なので、
マニュアルに関する不具合の記述はありません。

日本のマイクロチップへメール投げてみようかなぁ・・・・・・・・

0 件のコメント:

コメントを投稿