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のマニュアルをダウンロードして読んでみたのでありますが…。 |
[第5回]
●PICプログラマをなんとかしませんと…
突然に昇天してしまわれた、PICプログラマボード。
いまさら嘆いてみたところで、どうなるものでもありません。
でもなんとかしなければ、PICを使ってのUSB通信プログラムを開発することもできません。
む?
壊れてしまった?
いやいや。まてよ。
ハードはあるではないか。
ずっと以前から使っていた、PICライターが。
これです。これ。
これはちょっとやそっとでは壊れませんよ。
ちょいと逆差ししただけで壊れてしまうような「やわ」なものではありません。
なんたって構造は超シンプル。
TTLが1個とあとはトランジスタだけ、なのですから、壊れようがない。
やっぱ、これを使うしかないなあ。
●パラレルポートを使うが一番
なんたってやっぱりこういうものはパラレルポートを使うのが一番簡単でしょう。
え?
XPじゃ、それができません?
そうでしょう、そうでしょう。
皆様、こう言っちゃなんですが、なんとまあ、不便なパソコンをお持ちでいらっしゃる。
ええ。私のは、Windows98でございますから、そんなチンケな制約は一切無し。
実に便利でございますですよ。
さて、このPICライターボード。
いつ頃作ったのかもはっきりしないのですが、多分7〜8年は前のものだと思います。
ずっと使っていて壊れないのですからそりゃあもう丈夫なことは実証済みです。
前回も書きましたように、もとは「トランジスタ技術」の記事を参考に作ったものでした。
たまたまこのPICライターボードの資料が残っていて、そこにその「トランジスタ技術」の記事のコピーがついていました。
回路図と、記事の一部だけだったのですが、その記事の一部に、「Microchip社のドキュメントAN589を参考にした」という文がありました。
うう。そんな昔のドキュメントが残っているかなあ。
駄目元でもと思ってMicrochip社のサイトへ行って、検索してみましたら。
ありました。出てきましたよ。
●AN589
Microchip社のサイト(http://www.microchip.com)に行って、「AN589」で検索すると、すぐにみつかります。
このドキュメントに、回路図も紹介されていました。
●PICライターの回路図
「トランジスタ技術」の回路は、この回路図をもとに一部を変更したもので、私もその変更をもとに基板を作りました。
U1は78M05に、またトランジスタは2SA1015と2SC1815に変更しています。
この回路図ではVppを13.5Vにしていますが、この電圧は一般的ではありません。
「トランジスタ技術」の回路では、DC14〜18V入力のあと78M12のGNDにダイオードでゲタをはかせて13V弱の電圧をVppにしています。
私は、そんな面倒なことをしなくても、と思って、DC12V電源をそのまま使い、電源の出力調整トリマを+に回して、約13Vにして使っています。
もう一箇所、この回路図ではACK(セントロニクスコネクタ10pin)を使っていますが、「トランジスタ技術」の回路ではACKの代わりにBUSY(同11pin)を使っています。
私もそのようにしています。
なんとも簡単なものじゃありませんか。
トランジスタの回路がちょっと面倒だ、と思われるかもしれませんが、これはVpp電圧(約13V)が誤って、パラレルポートに流れ込んでポートを破壊することがないように、というための工夫です。
なかなかによく考えてあります。
さてさて、ハードウエアはよいとして、かんじんなのは書き込みソフトです。
実はAN589には書き込み用のプログラムリストも紹介されているのです。
もっともPIC16C84用ということですから、今回の18F用のプログラムとして利用するわけにはいきません。
それにしても…。
なんでまた、Cなんぞで書くのでしょう。
面倒なだけだと思うのですけれど…。
ま、それについては、そのうち少しずつ言及していくことにいたしましょう。
ああ。この書き込み用のサンプルプログラムは、Microchip社のサイトから、ソースプログラムをzipファイルでダウンロードできます。
AN589 Source Codeで検索すると見つかります。
試しに、と思ってBorland C++でコンパイルしてみましたら、エラーになってしまいました。
biosprintというのは名前からすると、多分プリンタポート(パラレルポート)をアクセスする関数のようです。
delayというのは、時間かせぎでしょう。
Borlandのヘッダーファイルをさぐってみましたら、bios.hに、_bios_printer()で定義されているのが、それのようです。
ほらね。
こういうところが、Cの嫌いなところなのですよ。
リストをざっと見てみたのですけれど、なんでこんなのをCで書かなきゃなんないのかなぁ。
理解に苦しむ、つうのが正直な感想ですねぇ。
つうことは?
ええ。そりゃあもう。
もちろん私はCなんぞでは書きませんです。
なんたってアセンブラです。
それも自前の8086アセンブラで。
PIC18F4550ライタープログラムを、書いてしまうのだ(おお、なんと悲壮な覚悟)。
いざ行かん。苦難の道を乗り越えて。
CPUをつくろう!第397回(2009.12.10upload)を再編集
PICでUSBを![第5回]
2011.7.8upload
前へ
次へ
目次へ戻る
ホームページトップへ戻る