PIC

PICer 開発奮闘記
PIC の開発ツールを開発するに至った経緯です。

きっかけ

そもそもの、きっかけはコンピュータ上から赤外線で様々な電化製品を制御できたらいいね、 という友人の一言からでした。そういえば周りにはたくさんのリモコンが転がっています。 赤外線リモコンの規格が統一されていたらこんなにリモコンが氾濫しなくてもよかったにと 思えてなりません。最近学習型リモコンが出てきてはいますがテレビとビデオだけしか 制御できないなど、まだまだ汎用性に欠けています。 せめてオーディオも制御したいところです。
またコンピュータからであれば複雑な制御も簡単です。 なぜそういったものが市販されていないのか不思議なくらいです。
例えば、ビデオ録画もバーコードでビデオ側に記憶させるのではなく、スケジュールを 一括してコンピュータ側で管理し、赤外線で録画や停止命令をビデオにおくれば、 複雑なスケジュールもこなすことができます。

PIC

はじめに考えたのは、赤外線専用のICを利用できないかということでした。 ところがこれらはまさしくリモコン専用で、コンピュータから制御することは まったく考えられていませんでした。
しかもメーカによって赤外線の送信方式が異なることがわかり、 専用IC では無理との判断に達しました。
いろいろと散策しているときに、プログラマブルなコントローラ PIC16C84 に出会いました。 詳細なデータも Microchip の Web から取り出すこともできました。
必要な情報がすばやく得られるというのは開発者にとって非常にメリットです。自作派にとって情報は命です。 EEPROM を搭載しており書き込みと消去が何度も行えるので、開発にはもってこいでした。
これなら何度も試行錯誤できます。小型で電池駆動可能なのも大きな身方です。 実際、ある学習型リモコンには、Microchip の製品が使われています。
次に赤外線の送信パターン解析をオシロスコープを使って解読してみると、 どうやら、4種類ぐらいに分類されることがわかりました。これで何とか見通しは立ちました。

開発環境

さて、いざ開発に入ろうと思ったとたん、PIC の開発が不便であることが判明しました。
いまや、PC といえば Windows マシンが当たり前の時代といえます。 (以下 Windowsとは Windows 95, Windows NT の両方を指します。)
この時代において PIC の開発ソフトは DOS版 しかなく、不便を感じずにはいられません。
確かに Windows には DOS Window があり、PIC の開発は可能ですが、 プログラム作成、アセンブル、書き込み、といった一連の作業を コマンドベースだけで行うのは Windows の便利さを犠牲にしているようで仕方がありません。 Microchip から公開されている、MPASM 内の pasmwin もWindows用アセンブラであって、 ライター機能がなく、これでは片手落ちと言わざるをえません。
まして自作でちょっとしたものを作成するだけなのに、わざわざ数万円もする開発キットを 購入する気にもなりません。
せっかく Windows のマシンを使用しているならば、その恩恵に与るべきと思い立ち、 「ないのなら作ってしまえ」という自作派の精神に則り、開発に着手しました。 開発の基本コンセプトとしては決して高機能なものを要求するのではなく、 実用本位に立った最低限必要なツールを使い勝手よく、そろえることにあります。 ですからデバッガやシミュレータなどはその対象外としました。
以前、コンパイラに近い物を作成したこともあったので、簡易アセンブラは程なく 完成しました。内部的には3パス構造になっています。

Windows API

以外に手こずったのが PIC への書き込み部分でした。 もともと Windows 上からパラレルを操作するための API は SDK でしか公開されておらず、 またその説明も不十分なため、なかなか思うように動作してくれません。
あちらこちらの資料では、Windows からパラレル操作するために、 DOS の BIOS を使用する方法が紹介されていますが、これは Windows上からみれば イリーガル(行儀が悪い)であり、Windows にどのような影響を及ぼすのかわからず危険です。 しかも機種依存という弱点があります。
ですのであくまで正攻法として Windows API を使用することに固執しました。 Windows のプリンタドライバを作成している友人のアドバイスを受けて ようやく動作するようになりました。

ライターはパラレル接続

PC と ライターの接続にはパラレル(プリンタポート)を使用しました。 これは Microchip が公開しているライター回路 AN589 に準じるためです。 最近シリアル(RS232C)を使用したライターもあるようですが、 PIC ライター自身にPIC が使われているため(卵が先か鶏が先か)、 他人の協力を得なければ作成できないという状況にあります。 他人の手を煩わせず、自己完結していることも自作派にとっては 重要な要素です。

使用感

手前味噌な話になりますが、非常に使い勝手がよく満足しています。 アセンブルは非常に高速でほぼ瞬間的です。簡易アセンブラとは言っていますが、 ディレクティブ(疑似命令)が独自仕様であるだけで、命令表記は標準仕様通りです。
アセンブラによっては、パラメータの省略表記を許しているようですが、 曖昧さを招く恐れがあるため、本アセンブラでは許していません。
PIC 書き込みに関しては、タイミングが規定されているため少々時間を要します。 ですが大きなプログラムでも数分程度です。

公開

こんな便利なものを独り占めしているのももったいないと思い、 プログラムの見直しやマニュアルを含めて公開作業を開始しました。 Windows の標準 API しか使用していないことと、世界中の方々に 使用していただくことを念頭においたことで、今では 日本語 Windows だけでなく英語版Windows でも動作することが確認されています。 信頼性や安定性の面でも、公開してから半年以上になりますが、ドイツの方から 指摘のあった障害が一件だけで、すでに修正された物を公開しています。

ダウンロードサイト

英国マンチェスター大学の David Tail さんの好意で、PIC のホームページにも 掲載していただき、世界中で使用されています。
日本国内では有名なダウンロードサイト vector に登録されていました。

最後に

たかが赤外線リモコンを作成するために開発ソフトを開発することになってしまいました。 この開発に約半年かかりましたが、赤外線リモコンの作成には約一ヶ月しか掛かりませんでした。 開発ソフトにはコンパイラ技術、Windows API を使用したパラレルポート操作、 その他にもタイミング調整やファイル選択などにも Windows API を多用しており、 高度な技術を駆使しています。まさしく苦労の賜といえます。
今のところ機能的に満足しているのですが、もし MPASM との互換性を持たせて ほしいなどのご要望が多数あれば、今後検討したいかと思っています。 みなさまのご意見、ご感想をお聞かせください。
inserted by FC2 system