パラレルポートの出力波形
■便利なパラレルポート
多くのパソコンに標準でパラレルポートがついている。ちょっとした実験や、ROMライタ、PICライターなどを接続したりと、プリンタを接続する以外にも便利に使うことができる。
しかし、ちょっとしたところに落とし穴がある。自作した物を接続するときには、注意が必要だ。
■双方向
最近のAT互換機は、パラレルポートを双方向で使うことができる。注意しなければならないのは、入力のできないパラレルポートがあることだ。こっちのパラレルポートでは問題なく動くのに、あっちでは動かないという事態になってしまう。BIOSの設定が双方向になっていることも必要だ。
設定が違っているのだとわかってしまえば、簡単なのだが、「どうして動かないのか」調べるのに時間がかかったことがある。
■ROMライタが動かない
トランジスタ技術1998年8月号「開発支援用アイデア・ツール集」に載っていた、「シンプルROMライタ」を作った。VPP,OEなどの信号を作る回路の部分は、カスタマイズした。
回路自体は、半年ほど前に作り、トラ技ホームページからダウンロードしたソフトでROMの読み書きができることを確認した。しかし、このソフトがあまり使いよくない。ちょっと間違った操作をすると、ハングしてしまう。アセンブラで書かれているプログラムで、例外の処理がきちんと書かれていないのだろう。
ソースを見たものの、もちろんこのソフトを修正する気にはならず(アセンブラだから)、Windows上で動くROM書き込みソフトを作り始めた。ROMを書き込む基本的な部分はできあがっていたのだが、しばらく中断していた。そして、夏休み。再開したのだが、なぜか動かない。
■ノートでは動くのに
ダウンロードした書き込みプログラムでも、読み書きすることはできなかった。以前は動いたのに。試しにノートパソコンにつないでみると、動く。この前、マザーボードを交換し、動かなくなったのだ。このことがわかるまで、結構時間を使ってしまった。
デバッグを始める。データの読み書きは、シフトレジスタを使っているのだが、1つシフトクロックを入れると、2つシフトしていることがわかった。
PICのメーリングリストで、「パラレルポート接続のPICライターが不安定だ。」という投稿があったが、きっとこれも、波形が歪み、シフトレジスタが誤動作しているのだろうと予想した。
■オシロで観測
プログラムを修正し、約300kHzのクロックを出し、シフトレジスタに到着する波を観測した。
![]()
左は、ノートパソコン(DynaBook Portege300CT)に接続した時の波形。右はデスクトップ(ASUS P2Z-B マザーボード)に接続したときの波形。ケーブルは、全く同じ物を使用しているのに、全く形が違う。それぞれの立ち上がり波形は、
![]()
左がDyanaBook、右がデスクトップ (左はSweepTime50ns、右は20nsにしてしまった。時間軸の縮尺が違うので注意)デスクトップの方の波形が汚い。これほどひどいとは... かなり驚いた。
スレッショルド付近でうねうねしている。Hレベルの電圧も低い。これなら、誤動作するのもうなずける。
たち下がり波形
![]()
(これも時間軸が違うので注意。間違って撮影してしまった。)
■シュミット・トリガ
とりあえず、シュミット・トリガを入れてみる。東芝の74HCシリーズデータシートによると、74HC14の高レベルしきい値(立ち上がりの時のしきい値)は2.7V、低レベルしきい値は1.6Vある。(電源4.5Vでの平均) これなら、動きそうだ。
シュミットトリガをクロックに入れた時の、デスクトップパソコンでの波形
![]()
![]()
ゲートを1つ通っただけで、驚くほどの変身ぶりだ。
これで、問題なく動くようになった。
■直接入力はダメ
レベル動作の回路では、汚い波形でもレベルがわかれば問題ないが、クロックとして使う場合には、波形が綺麗である必要がある。
今回の事例のように、場合によってかろうじて動いてしまう回路は、一番タチが悪い。このようなことのないよう、「きちんと作らねば!」
教訓:パラレルポートを使うとき、シュミットトリガは必須
(c) 1999 Ishijima Seiichiro