*このパートはH8/300/TinyにMidiを導入するためのノウハウを蓄積するための場所です*
関連項目:

  
H8/3664
  
AKI-H8
  
PallarellPort増設
  
VHDL coding

  前の頁  次の頁
アセンブル・プログラミングに先立って
ここでは、一休みして、マイコン工作を始めるにあたってのTIPSを紹介しよう。内容は個人的な失敗例を採り上げている。初心者の陥りやすいトラブルを未然に防ぐことを目的としているので、それなりに経験のある人は読み飛ばして頂きたい。

最初にマイコンを使った工作をする場合に、混乱するのは、ハードウエアとソフトウエアの境界面の不確かさだろうか。僕たちの世代が今まで持っていた工作の概念は、基本的に現物(げんぶつ)ベースなので、故障や失敗の箇所を探る場合の対象になる箇所は限られていたように思う。確かに複雑な構造のものを組み立てるためにはそれなりのスキルが必要とされていたが、これらは構造体として視覚化されていて勿論実体が存在する。何か様子がおかしければ、最悪の場合は発熱したり、イレギュラーな電圧が観測されたりと、失敗の概念がクリアで改善方法に悩むことはあってもその対象は比較的明瞭だったと思う。ところが、ここにマイコンが絡んでくると問題は複雑になってしまう。物理的な配線ミスは人間のやることだから当然無くならないとして、そこに、「ソフト上の不具合」というきわめて観念的といったらよいのだろうか、目に見えない要素が加わってしまうのだ。従って、トラブル発生時に僕たちは何を疑って良いのか、明確にフォーカスを絞ることが出来なくなってしまう。ここに至って入門者は最悪パニックに陥ってしまうのだが、それを出来る限り防止するための方策をここでは提案していきたいと思う。

まず、考えられることは、「ハンダ付けの失敗」など、トラブルの物理要因を可能な限り排除することだろう。マイコンといえども実体のある半導体デバイスである。その構造は僕らの世代が慣れ親しんでいるC-MOS ICと規模の差こそアレさほど変わるモノではない。昔のことなのでつい忘れてしまいがちだが、僕らの世代が初めてC-MOS製品に出会ったときは、やれ「静電気で壊れる」だの「乾燥する冬場に弱い」などと、やたらとその華奢さが喧伝されていて、中学生だった僕らはおっかなびっくりで製作に望んだものだった。たしかに、当時の保護回路は性能がイマイチだったらしいのでC-MOS系のデバイスは製品として成熟したモノではなかったのかもしれない。そういえば、工作中に、IC壊してしまった経験もある。 そんなC-MOSデバイスも最近はタフになったようで、御陰で僕らは少年時代の貴重な体験をともすれば忘れてしまっているのだが、侮るなかれ。例え壊れなくなったと言っても高インピーダンス状態に端子が晒されてしまう環境は、C-MOS製品に動作不良を引き起こす原因となるのだ。

端子の多いマイコンは、それぞれのポートに対する電気的なケアを怠ってしまいがちだが、これが動作不良に直結し、トラブル要因の洗い出しの障害になってしまうことがままある。具体的な経験を挙げると、試作のため、マザーボード単体で試運転をしたときに、どうしても複数の入力端子の状態を安定させることが出来ない。しかも、不具合を起こしている端子が、ポートのグループ単位ではなく、基板上の1列単位という不思議な現象が発生している。もしや、マイコンがすっ飛んでしまったか!?と不安になったが、原因はなんのことはない「基板の設計ミスで集合抵抗の共通端子がグランドに接続されていなかった」タダそれだけのことだった。マイコン内部で何が起こっていたのか定かではないが、マイコンの立ち上がり時に変な電圧が端子に印可されて、その結果不具合を誘発していたようだ。 この時僕はハードウエア上の配線ミスを発見する前に、1時間近くもコードの書き換えと修正を繰り返す、という笑うに笑えない経験をした。遊びだからまだイイが、仕事絡みでこの手の不手際は許されないだろう。

で、解決法である。僕らのようなホビイストのレベルでは、表面実装の基板設計を行うのは現実的ではないので、H8を使った工作には既存のキットを流用することになる。この場合、開発ツールのような値段の張る製品は、端子の処理をキッチリ行ってあるので心配はない。むしろ、値段をケチって秋月のカードを使う場合に問題が発生しやすい。 秋月のキットは人気があって、そこそこの数が流通している所為か値段も格安だ。DIY用の素材としコレを使わない手はないんだが、工作を行う上での問題点はマイコン端子のターミネーションがリセット用など一部の例外を除いて殆ど行われていないことにある。従って、動作確認を行うボードには、これらの入力端子に対するケアを十分に行う必要があるのだ。

具体的にはI/O端子の電位を安定させる、つまり、抵抗を介して電源かグランドに端子を繋ぐとよいのだが、H8のI/Oは数十本もあってその処理にはかなりの手間が掛かってしまう。結局、掛かる手間と作業の失敗を考えると、自分専用の実験基板を作って、後に行う作業の効率化を図る方が賢いと思う。

マイコンは汎用性が高いので、設定次第でI/Oに対するケアが変わってくる。ここでは、ひとまず全端子に入力が行われるモノと仮定して基板の設計を行っておく。出来れば、ポート毎に接続する集合抵抗のグループを分けておけば、基板の汎用性が高まる。また、ある程度値の大きな抵抗値を選んでおけば、端子の極性を考える必要がなくなるので、とりあえずは端子に取り付ける抵抗を10k〜100kΩあたりの値で調整すればよいだろう。

さて、基板の設計を行う方法だが、色々なソフトを試した結果、僕はEagleに落ち着いている。Eagleは、ドイツ製の基板用CADソフトで、サイズとレイヤー数を限定したらフリーで使うことができる。安定性も良好で、直感的に使用出来るアンチョコ要らずの便利なソフトウエアだ。また、最近はわかりやすい日本語のHowTo本も発売されているようなので、こちらも一度読んでみたいところだ。

特にパターンが込み入りそうな場合は、外注に出すとよいだろう。僕の場合は、2年ほど前にWebで発見したOlimexというブルガリアの業者に発註している。両面基板で$30ちょっと、という価格は魅力的だが精度は値段それなりなので、製品化する場合には注意が必要だ。この業者の特徴は、Eagleのファイルを直接扱ってくれるところにある。とにかく、DIYに掛かるコストを安くあげたいなら、EagleとOlimexの組み合わせをお勧めする。


   


つづく→