PICの演算ライブラリ
2011-12-08
PICのヒットの裏には、「低価格で機能充実」「C言語のサポート」など様々な要因が考えられます。勿論、インターネット上の豊富な製作記事から、自分に必要なものをチョイスして組み合わせればまずまず欲しいものが作れちゃう・・・リリース時期がインターネット拡大期と丁度重なったことなども遠因に数えられるかも知れませんね。そして、忘れてはならないのが、ローエンドからミドルレンジのPICについて「少ないビット数でもここまでできるんだぞ!」といったアプリケーションサンプルの無償開示を、メーカーサイドが積極的に行ったことも大きかったのではないかと思います。
PICの成功ヒストリーはともかく、8ビット・16ビット辺りのプロセッサを扱う際に直面する最初の壁が、多桁の四則演算が苦手なことです。仕事柄、小さな8ビットプロセッサから順繰りに触ってきましたが、特に乗除算については毎回悩むところです。二進数を上手く使ってシフト命令を駆使すればそれなりに高速なものができるので、今回も「多少冗長でも汎用で解りやすいロジック」を組もうと苦戦しました。それこそ、先週来ひっそりと・・・帰宅すれば悩んで、ポチポチとエディタに奇っ怪なロジックを打ち込む・・・の繰り返しだったのですが、PIC16Fシリーズの欠点の一つである「初期値ありデータの間接アドレス指定が苦手」という部分がネックになり、あまりに冗長なサブルーチンができあがってしまい、結局挫折してしました
こうなると、ここ当面は(Microchip社が廉価で供給し続ける限り)使おうと思っているPIC16Fシリーズ、あるいはその少し上のレンジに当たるシリーズ向けに32ビット程度までの四則演算ライブラリが欲しくなり、マニアックな諸OMのプログラムを一巡して、結局、メーカーサイドのライブラリを使うことにしました。
「AN617」・・・Application Note #617は、固定小数点ですが以下のビット数同士の計算ができます。
Multiplication 8x8,16x8,16x16,24x16,24x24,32x16,32x24,32x32
Division 8÷8,16÷8,16÷16,24÷16,24÷24,32÷16,32÷24,32÷32
もうお腹一杯・・・ってな感じですが、ご丁寧に上記のビット数に対する「符号なし・あり Version」や「符号ビット省略 Version」もあり、ミドルレンジのPICならこと足りる構成になっています。また、個々の演算処理実行時の処理クロック数もサマリーとしてまとめてありますから、必要最小限のビット数の組み合わせで高速化を狙うもよし、大らかに「My Libraries」として幾つかの標準的な演算を切り出して使うのも良いでしょう。
ただ、よく考えるてみると製作効率を上げるなら断然「C言語で
」なんです。こういう遠回りも含めて。しかし、どうもアセンブラ病は簡単には直らず、ひとまず自分が飽きるまでは三十余りの命令しかない「MPASM」で行きたいと思っています
P.S.
余談ですが、PICのApplication Noteは、ここから探すともっと沢山のCool
なものが見つかりますよ
PICの成功ヒストリーはともかく、8ビット・16ビット辺りのプロセッサを扱う際に直面する最初の壁が、多桁の四則演算が苦手なことです。仕事柄、小さな8ビットプロセッサから順繰りに触ってきましたが、特に乗除算については毎回悩むところです。二進数を上手く使ってシフト命令を駆使すればそれなりに高速なものができるので、今回も「多少冗長でも汎用で解りやすいロジック」を組もうと苦戦しました。それこそ、先週来ひっそりと・・・帰宅すれば悩んで、ポチポチとエディタに奇っ怪なロジックを打ち込む・・・の繰り返しだったのですが、PIC16Fシリーズの欠点の一つである「初期値ありデータの間接アドレス指定が苦手」という部分がネックになり、あまりに冗長なサブルーチンができあがってしまい、結局挫折してしました

こうなると、ここ当面は(Microchip社が廉価で供給し続ける限り)使おうと思っているPIC16Fシリーズ、あるいはその少し上のレンジに当たるシリーズ向けに32ビット程度までの四則演算ライブラリが欲しくなり、マニアックな諸OMのプログラムを一巡して、結局、メーカーサイドのライブラリを使うことにしました。
「AN617」・・・Application Note #617は、固定小数点ですが以下のビット数同士の計算ができます。
Multiplication 8x8,16x8,16x16,24x16,24x24,32x16,32x24,32x32
Division 8÷8,16÷8,16÷16,24÷16,24÷24,32÷16,32÷24,32÷32
もうお腹一杯・・・ってな感じですが、ご丁寧に上記のビット数に対する「符号なし・あり Version」や「符号ビット省略 Version」もあり、ミドルレンジのPICならこと足りる構成になっています。また、個々の演算処理実行時の処理クロック数もサマリーとしてまとめてありますから、必要最小限のビット数の組み合わせで高速化を狙うもよし、大らかに「My Libraries」として幾つかの標準的な演算を切り出して使うのも良いでしょう。
ただ、よく考えるてみると製作効率を上げるなら断然「C言語で


P.S.
余談ですが、PICのApplication Noteは、ここから探すともっと沢山のCool


- 関連記事
-
- PIC16F拡張版の思い出し
- PIC内蔵タイマについて
- PICの演算ライブラリ
- A/D変換も制圧!!
- PICの内部クロック動作の確認