H8/3664の開発環境
以前はApple系のパソコンをメインに使っていたため、ハードウエアに興味がある人間にも関わらず、MIDI工作とは全く縁がなかった。Windows環境は、クリエイティヴな作業には向かないという定説に僕も与する人間だが(実際、効率の悪さは歴然だ)こと、デバイスの開発という条件に限って言えば、Macintoshの環境は劣悪だ。従ってパソコンを始めて暫くの間は、工作には一切手を出さなかった。

Appleに貢ぎ続けた数年の後、友人が持っていた Thinkpad/s30 のデザインに惚れたついでに、思い切ってWindowsを導入した。メインアプリケーションとして使っているKYMAはマルチプラットフォームなので、OSに拘る必要を感じなくなったためだ。当然、基板系のCADを行うことも当初からの目的であったが、アプリケーションの敷居が高い上に安定度が低く、EagleとOlimexに出会うまでは具体的なアクションを起こせないでいた。

その後、自作デバイスの開発の重要性を感じた僕は、マイコンを使ったMIDI工作に着手する。友人の助けもあってなんとかプログラミングを完遂するも、いまだに不慣れなことは間違いない。レベルとしては「どシロート」にダッシュが付いた程度だ。ここでは、小型マイコン、H8Tinyシリーズを使ったMidi工作のレポートしていく。日記というか、覚え書きのようなモノなので、これからH8をいじろうという人にとって役に立つかどうか、かなり心許ないが、僕のようなプログラミングを苦手とする人間でも、ココまでは出来るという参考にして頂きたい。
上の写真は僕が使っているH8系のデベロッパーツール。といっても、単純な自作回路だ。半導体は、MIDI受け動作確認用のフォトカップラーのみで、あとは「バラック配線でポートとコネクターを繋いだだけ」という簡単なモノだ。最近のラップトップからはそろそろレガシーインターフェイスが排除され始めているが、開発系はいまだにパラレル/シリアル・ポートに依存している。そのため、工作系には、USB→シリアル変換用のデバイスが必要となる。右の写真が件のデバイスであるが、意外と困るのがドライバーの入手だったりする。安物を買うとその点で作業以前にスタックしてしまうので注意しよう。書き込みには、AKI-H8のキットに付属するH8WriteTurboというアプリケーションが便利だ。関連づけさえ行ってしまえば、コンパイルした.MOTファイルを立ち上げるだけで、自動的に書き込みを行ってくれる
H8のなかでも、特にコンパクトなのがこのTinyシリーズだ。左はホボ原寸大の写真だが、実質切手二枚分ほどのフットプリントしかない。ここに、8chのAD入力、8Bitのポートが2つ(Port05/08)実装されているのは驚異的だ。基板はほぼ全ての端子が引き出されているので、Port05/08以外にも汎用入出力ポートとしての設定は可能だが、ポートの端子が飛び番号だったり、半端なビット数だったりするので、イマイチ使い辛いのが残念な点だ。

シリアル入出力ポートが1chなので、MIDI工作を行う場合は、マージ機能を持たせる事は出来ない。あと、他の頁にも書いたが、MIDIデバイスとしてこのキットを使う場合、実装されているRS232C用インターフェイスICと、MIDI入力のコンフリクトに注意する必要がある。この問題は、書き込み回路の基板上にRS232Cインターフェイスを実装して、カード上のICを排除することで解決出来そうなので、近いうちに回路を新設する予定だ。

消費電力は10mA程度なので、表示系に凝りさえしなければ電池駆動が可能な点が嬉しい
。キットは電源用のICを搭載しているが、006p使用時には電源を入力する端子に注意すること。間違えた箇所に9Vを入力した場合、デバイスは瞬時に破壊される。
左のデバイスはMIDI受け用の旧HP製(現Agilent) フォトカップラー。オーディオ帯域にも対応する仕様なので、贅沢すぎるデバイスである。本来はもっと低速なICを使って全く問題はない。
さて、実際のプログラミングだが、僕の場合は苦手なC言語ではなく、アセンブル言語という比較的機械語に近い言語で記述している。この方式は、ハードウエアの仕様に合わせて動作を最適化できることが「C」で記述を行うよりも有利な点である。反面、他機種への移植が困難であったり、規模の大きなシステムの製作が難しいなど短所も認識しておくべきだろう。今回の工作では、この互換性の無さがモロに影響してしまうケースだった。プログラミングはMaruoなどのテキストエディターで行っている。純正の開発ツールは敷居が高そうなので使っていないが、異なるH8の間でプログラム移植を行う場合や、マイコンをアップグレードする場合の互換性の確保を考えると、そろそろこちらに乗り換えた方がよい気がしている。

それでは、僕が現在行っているプログラミングの方法を説明しよう。必要となるものの殆どは、AKI-H8の製作キットを購入したときに付属してくる。他に用意するのはUSB/シリアル変換ポート位のものだろう。初心者の場合は、書き込みキット毎買ってしまった方が手間が省けて便利だと思う。なお、H8には3664の他に3048、3052などのラインアップが存在するが、入門用として最適なのは3052だと思っている。これは、書き込み時に異なる電圧を用意する必要なく、(3048は書き込み時に12Vが必要)データ書き込み用ライターの構成をシンプルに出来るためだ。3664も同様に書き込み専用電圧を必要としないが、マイコンのポート数が限られてる等、制約が多い。初心者にとっては構成がスッキリしている3052をお勧めする。

キットを購入し、ライターを組み立てた後は、AKI-H8基板の改造を行う。複数のMIDIチャンネルを扱わない場合は、RS232CインターフェイスICの11,12番ピンを根本からカッターで切除するか、ハンダで加熱後、ピンセットを使ってピンをフローティングさせるなどして、回路を遮断する必要がある。3052ではSCI(シリアルインターフェイス)が2回路あるので、書き込み用に1回路は温存して、他方は切り離す訳だ。ただし、MIDIマージや、ビットレートコンバーターを作る場合は、プログラミング後にMIDIを接続する際には完全にRS232Cからマイコンをフローティングさせる必要があるので注意しよう。MIDI工作を基本として行う場合は、ライター側にRS232Cのインターフェイスを増設して、AKI-H8側の機能は殺してしまった方が良いかもしれない。

H8関連の工作でMIDIは比較的マイナーな部類なので、検索を行っても製作例は余り見つけることが出来ない。そんなこともあって、初心者用の首っ引きとしてこの頁を作っているのだが、僕の場合は正直言ってゼロからコードを書けるか?というと甚だ怪しいモノがある。実際、友人にコードのテンプレート(ひな形)を作ってもらって、それを書き換えることで今日に至っている。だから、偉そうなことは何も言えないが、テンプレートさえあれば、僕のようなシロートでも何とかなった訳だから、自身の経験を踏まえて、一番ハードルの高そうな部分を解説することで、少しでも初心者の助けになったら、、、と思う訳である。

雑誌やアーカイヴで殆ど作例を見掛けないのが 「MIDIの勘所・Rx/Tx(送受信)のルーティン」 なので、その部分を解説しつつ、己のための備忘録としたい。

ちなみに、最近のロボットブームの影響かアンチョコは充実してきているようなので、基本的な事項はこれらを読んで自習しよう。

http://www.amazon.co.jp/exec/obidos/search-handle-form/249-3930487-5804307

巷では、I2C関連の設計がタコだと言うことで3664から3694に乗り換える風潮があるようなので、とりあえずトラ技付属の3694ボードで実験だ。
2005/0718追記

ようやく、TxD/RxD共に実装と相成った。これだけの作業に半月を費やしたことになるが、ひとえにこれもヒマの御陰である。 ところで、秋月のキットは安いのはよいのだが「MIDI工作」にはイマイチ不向きだ。そこで、買ったらすぐにRS232C通信用のレベルコンバーターICを取っ払らえるように、書き込み基板の方にこのICを搭載して、よりスピーディーに作業が行えるように工夫してみた。ただし、バラック構造で蛇の目基板に配線を引き回す場合は、レベルの管理が難しいので要注意。RxD周りの動作が不安定な場合は、プルアップ用の抵抗を端子に追加すれば良いだろう。
さくいん/リンク:

あ行: AD変換 AKI-8H 秋月電子 アナログ電源 アセンブラ RxD(あーるえっくすでぃー) RS232C(あーるえす232しー)
     H8(えいちえいと) 

か行: コンパイラ コンパレーター

さ行:

た行: TxD(てぃーえっくすでぃー) Tiny(たいにー)シリーズ

な行:

は行: フォトカップラー 

ま行: MIDI(みでぃ)

や行:

ら行: リセット リンカ ルックアップテーブル ルネサス