標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第468回]

●これまでの説明を整理してみました

前回までで、やっとZ80版TK80ボード(ND80ZH)についての説明がひとまず終わりました。
もともと「PICでUSB通信を」というテーマで説明していたところ、突然特注品の作業がはまり込んでしまったものですから、PICUSBの説明も中断して、そちら(ND80ZH)の説明をしてきました。
で、その説明もやっと終わりましたので、さて、もとのUSBの説明に戻って…、と思いましたが、はて、なにをどこまで説明していたのか、もうすっかり忘れてしまいました。
説明の続きを再開するために、まずは、きれいに失われてしまった記憶を取り戻すことからはじめなければなりません。
ということで、過去にさかのぼってざっと読み直しながら内容を整理してみました。

「PICでUSB通信を」は、[第394回]から始まりました。

09/12/6 [第394回]
PICにUSB通信機能内蔵のものがあることに気がつきました(PIC18F2550、PIC18F4550)。
それならば、新しくつくる予定の4ビットCPUボード、8ビットCPUボードにそれを使わないという手はありません。
ということで、すべてはここからのスタートでした。
長い長い泥沼のはじまりでありました。
Microchip社が供給するC18コンパイラを使って、同社が供給する仮想COMポート通信ファームウェアを組み込めば楽々USB通信ができてしまうと思ったのがそもそもの間違いでした。

09/12/7 [第395回]
MPLAB最新版ダウンロードの顛末。

09/12/9 [第396回]
秋月のPICプログラマを購入したのですけれど、PICをうっかり逆差しして壊してしまいました。
逆差ししたPICは壊れないで、PICプログラマの方が壊れてしまいました(と思い込んでしまったのですが、後にこれも勘違いであったことに気がつきます)。

09/12/10 [第397回]
肝心のPICプログラマが壊れてしまったのでは、この先USB通信ソフトの開発もすることができません。
かといってもう1台同じPICプログラマを購入するというのも余りに情けない話です。
そこで、7〜8年も昔に自作したパラレルポート接続のPICプログラマを利用することを思いつきます。
でも、それはPIC16F用のフリーソフトをダウンロードして使っていたものなので、PIC18F用の書き込みソフトはありません。
無いならそれも自分で作るしかありません。
かくしてPIC18F4550書き込みソフトの製作にとりかかることとなります。
それもCではなくて、8086アセンブラを使って、です。

09/12/13 [第398回]
なぜ今ごろCではなくてアセンブラなのか、というお話です。

09/12/14 [第399回]
DOS/Vのパラレルポート出力にはウェイトがかけられている、というお話です。

09/12/15 [第400回]
FreeなDOSのお話です。

09/12/16 [第401回]
フロッピーディスク版FreeDOSのお話です。

09/12/17 [第402回]
フロッピーディスク版FreeDOSの作成についての補足説明です。

09/12/18 [第403回]
余計な道草をして関係のなさそうなお話をしている間に、PICライタソフトの作業は着々と進んでおりました。
ずっと昔に自作したパラレルポートを使ったPICプログラマを使って、PIC18F2550、PIC18F4550の読み出し、書き込みに成功しました。
さっそく[第396回]で壊れてしまったPICプログラマに搭載されていたPIC18F2550の複製を作ってみたところ、なんとすんなりコピーができてしまいました。
そこで複製したほうのPIC18F2550を壊れてしまったはずのPICプログラマに実装してみましたら、なんとPICプログラマが復活してしまいました。

09/12/19 [第404回]
てっきり壊れたと思い込んでいたPICプログラマが全く壊れていませんでした。
もともとついていたオリジナルのPIC18F2550をPICプログラマに実装して、つまり購入したときと同じ状態にしてみても、ちゃんと書き込みができるようになってしまいました。

09/12/21 [第405回]
PICプログラマが壊れた、と思い込んでしまったことの、意外な、そしてなんともお粗末な真相です。

09/12/23 [第406回]
お話をもとに戻しまして、PICプログラマのソフトを自力で、しかもCではなくて8086アセンブラを使って作成しようと思ったことの次第について、です。

09/12/25 [第407回]
PIC18F4550のデータシートについて。

09/12/28 [第408回]
PIC18F4550の命令とメモリマップについて。

09/12/30 [第409回]
PIC18F4550のメモリアクセス(メモリバンク)。

09/12/31 [第410回]
PICのプログラムはCではなくてアセンブラで書きましょう、というお話です。

10/1/2 [第411回]
PICのプログラムはアセンブラで書きましょう、の続きです。

10/1/4 [第412回]
PIC18F4550のメモリアクセス(アクセスバンク)について。

10/1/5 [第413回]
PIC18F4550のメモリアクセス(アクセスバンク)について、の続きです。

10/1/6 [第414回]
PICのメモリアクセス(間接アドレッシング)。

10/1/7 [第415回]
PICの直接アドレッシングと間接アドレッシング。

10/1/8 [第416回]
PIC16F88のメモリバンクについて。
PICのプログラムにミスがありました。

10/1/9 [第417回]
プログラムミスを訂正して再実行してみました(出力波形がシャープになりました)。
PIC16F88の間接アドレッシングについて。

10/1/13 [第418回]
PIC18F4550の間接アドレッシングについて。

10/1/14 [第419回]
PIC18F4550の間接アドレッシングについて、の続きです。

10/1/18 [第420回]
ここまでPIC18F4550について、ざっと説明をしてきましたので、いよいよUSBプログラムについての説明にとりかかります。
PIC18F4550のUSBプログラムのサンプルリストはMicrochip社のサイトからダウンロードできるのですが、それがC18なるもので書かれていて、しかもとにかく余りに長すぎて、さっぱり理解できません。
そこにもってきて、PC側のサンプルプログラムが、VB.NetとVC++とVC#で書いてあって、そのままではBorland C++ではコンパイルできそうにありません。
まさに前途多難です。
PIC側のプログラムは、PICプログラマのときと同じように、アセンブラで書くことにしました。

10/1/19 [第421回]
唐突なのですが、USB送信に成功しました。
[第420回]からの流れでは、まずPIC側のUSB制御をアセンブラプログラムでどうやって書いていくのか、PIC側のUSB制御の動作、仕組みはどうなっているのか、について説明を進めていくところなのですが、説明の方がもたもたしているうちに、実際の作業がずっと先に進んでしまって、PCとPICをつないで、PC側からPICにUSBでデータを送信するのに成功してしまいました。
そこで、PIC側の説明は一時棚上げにしておいて、USB通信の仕組みから先に説明をすることにしました。
ここまで、主にPIC側のプログラムを中心に作業してきたのですが、そのPIC側のプログラムは、今まではCDCクラス(仮想COMポート)として作業をしてきました。
ところが、どうもCDCクラスはWindows98ではサポートされていないらしいことがわかりました。VISTAでは問題が発生するとの情報も。とするとWindows7でもどうなるのか、そのあたりも考慮すると、これはとても信頼できるものではありません。
そこで、予定を変更してHIDクラスで行くことにしました。
そして、USB送信に成功したのです。

10/1/21 [第422回]
HIDの送信速度を測定。少し準備不足でした。

10/1/25 [第423回]
HIDで受信ができません。
HIDについて参考資料をダウンロードして調べてみました。

10/1/28 [第424回]
HIDのデータ転送方式について。
送信データの構造について。フレーム、トランザクション、パケット、パイプ、エンドポイントなど。

10/1/30 [第425回]
パイプとエンドポイントについて。

10/1/31 [第426回]
パイプとエンドポイントについて(続き)。

10/2/1 [第427回]
パイプとフレームとトランザクション。

10/2/2 [第428回]
インタラプト転送の転送速度について。
転送速度はやっぱり64KB/秒でした。

10/2/3 [第429回]
HID受信に成功。
送受信テストを行って、転送速度を測定してみました。

10/2/4 [第430回]
HID送受信の仕組みと転送速度について。

10/2/7 [第431回]
HID送受信プログラム(C++)をコンパイルするとエラーになってしまいます。
外部シンボル …が未解決。

10/2/8 [第432回]
Win98DDKを捜してきて、ヘッダーファイルを組み込んでみたのですが、エラーは解決できませんでした。

ここまでで、USBについての説明は中断したままになっています。
こうして読み直してみますと、途中でも何回か説明を中断してしまっていることがわかります。
いずれそれぞれの続きを書かなければなりません。
が、ともかくは、まずは[第432回]の続きから説明を再開することにいたしましょう。
2010.4.2upload

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