V/Aプローブではセンサーの出力信号をA/Dコンバーターで取り込んだ後、
人が直読できる数値に変換して出力する為、
ソースコード内で乗除算まで必要になります。
とはいえ、所詮16Fシリーズですから乗除算の命令が実装されているわけではないので、
それらは全て加減算を使って処理することになります。
そのコードにSUBFWB命令を書いたところ、アセンブラーがエラーを!!
改めてデーターシートのインストラクションコードの項目を確認しても、
おかしなところが見つかりません。
結論から申し上げると、なんとこれデーターシートの記載間違いでした。
実際にPIC16F18456に実装されている命令はSUBWFBだったのです。
後から気付いたのですが、データーシート内の命令一覧表にはSUBWFBが載ってて、
個々の命令説明の箇所にはSUBFWBが載ってるという状態でした。
私は通常、個々の説明しか見ないので気付くのが遅れてしまいました。
このSUBWFB命令、数バイト長のデーター同士の引き算に威力を発揮します。
SUBFWB命令でも処理は可能ですが、値の入れ替えが発生する為、
ソースコードが倍以上になってしまうのが難点。
そういう意味ではSUBWFBの方が実装されていて、むしろラッキーでした。
しかし、いつ修正されるんでしょうかねぇ。
やっとErrataもリリースされたようですが、これはチップ内部に対する話なので、
マニュアルに関する不具合の記述はありません。
日本のマイクロチップへメール投げてみようかなぁ・・・・・・・・
0 件のコメント:
コメントを投稿