PICでUSBを!(知識ゼロからのスタートです)
PIC18F14K50のUSB機能を100%自前のソフトで制御する試みです。しかもアセンブラで!
当記事は2009年12月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.7.8

前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆プロローグ

今までUSBを使ってパソコンと通信をする部分にはFTDI社のFT232RLかまたはFT245を使って、RS232C−USB変換をしておりました。
ところがUSBコントローラを内蔵しているPICがあることを知りました。
PICは232C通信をするためなどに使っています。
それならそのUSBコントローラを内蔵したPICを使えばFT232RLを使わなくても済んでしまいそうです。
FT232RLはなかなかに便利なICですが、ただ難点はフラットパッケージしかないことです。
それを使わなくても済むということならば、ここは一番ぜひとも挑戦してみるべきでありましょう。
さっそくPIC18F4550のマニュアルをダウンロードして読んでみたのでありますが…。

[第7回]

●何かシカケがあるのでは?

前回([第6回])をお読みになった読者の方からご質問のメールをいただきました。
「単に出力をトグルさせているだけなのに、なぜ1μsもかかるのですか?何かシカケでもあるのでしょうか?」
ごもっともなご質問です。

前回ご紹介した、パラレルポートにパルスを出力する8086のアセンブラプログラムはこんなリストでした。


        MOV DX,378
LOOP:OUT DX,AL
        XOR AL,01
        JMP LOOP

そしてこれが、そのプログラムを実行した結果ですよ、といってお見せした写真です。


ふつう、こういうパルスを出力するときは、パルス幅に合わせたダミーループで時間をかせぐようにします。
しかしご紹介したアセンブラプログラムにはそれがありません。

いったいどんなパソコンを使っているのでしょう?
これじゃ余りに遅すぎます。
これではまるで8ビットCPU並の速度です。

どうやらこれはDOS/Vパソコン(PC/AT互換機)のパラレルポートがもっている規格(?)のようです。
パラレルポートはプリンタポートとも呼ばれるように、プリンタ接続のためのインターフェースとして設計されました。
初期のパソコン用プリンタのインターフェースは低速で、ストローブ信号は少なくとも1μsは必要とされていました。
これに対してパソコンのCPUクロックはどんどん速くなる一方です。
もしもプリンタポートに出力するパルスをソフトウェアの待ち時間ループで作ったとすると、そのプリンタ制御プログラムはパソコンのクロックに合わせて全部変えなければなりません。
多分そういう理由からだと思いますが、実はパラレルポートにアクセスすると約1μsのウェイトが強制的に挿入されてしまいます。
これがハードウェア的に行われるのか、ソフト的に行われるのかは、私には不明です。
ただこのことはWindows98の機能ではなくて、もっと下のDOSの機能のようです。
今回のテストプログラムはWindows98のDOSプロンプトで実行しましたが、Windows98を終了してDOSでプログラムを実行させてみても、このウェイト時間は変わりません。
なおDOSプロンプトで実行すると、約1μsのウェイト時間とは別にWindowsがマルチプログラミング処理を行っていることを示す波形の乱れが見られます(上の波形写真で薄い影のような波形がそれです)。
この波形の乱れはWindowsを終了してDOSで実行したときには無くなりますが、それでも約1μsのウェイトはそのままです。

このウェイトについては、もう少し書きたいことがあるのですが、本日もまた時間が無くなってしまいました。
続きは次回にいたします。

またいずれあらためてお話ししますけれど、最後にちょいとひとこと。
Cを使ったプログラムばかりやっていると、こういうハードに直結した部分については全く気がつかないまま通りすぎてしまいます。
どなたも言及されないようですけれど、Cの功罪の、きわめて「罪」な部分だと思います。

逆にアセンブラを使ってDOS上でプログラムを作ると、こういうハードに直結した部分まで見えてきます。
これはなかなかに興味深いことだと思います。

こともあろうに、Microsoft社は、WindowsXP以後、その楽しみを技術者から奪ってしまいました。
これはもう罪も罪、とんでもない大罪だと思うのですが、いかがでしょうか?
(パソコンのOSはもはや一私企業のものではなくて、「公器」とも言うべきものになっていると、私は思います。果たしてMicrosoft社にその自覚はありや、なしや?)
CPUをつくろう!第399回(2009.12.14upload)を再編集

PICでUSBを![第7回]
2011.7.8upload

前へ
次へ
目次へ戻る
ホームページトップへ戻る