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

●読者様からご質問のメールをいただきました

「MYCPU80に8255などが接続可能でしょうか?」

はい。接続可能です。
MYCPU80は外部にI/O回路などを接続できるように、アドレスバス信号、データバス信号とIORD、IOWRなどの制御信号を26pinと16pinのフラットケーブル用コネクタに配線してありますから、82C55などのICやその他のI/O回路を接続することができます。

確か82C55を接続してテストしている写真があったはず…と思って探してみましたら、ずいぶん前の回にありました([第108回])
でもこれはちょっと古いですねえ。一番最初の試作基板を使っての動作テストの写真でした。
MYCPU80でのテストは?と思って探したのですが、みあたらないようです。
これはいけません。
さっそくテスト用に82C55のボードを作って動作テストをしてみました。

8255はちょっとタイミングがきつくてうまくいかないかもしれません。82C55なら大丈夫です。

●MYCPU80に82C55をつなぐ

MYCPU80の外部接続用コネクタの端子接続図は、こちら([第355回])にあります。
MYCPU80附属の説明書では、MYCPU80操作説明書の最終ページにあります。

82C55を接続するために必要な信号はCN1のD0〜D7とA0〜A7、CN2のIORD、IOWRと、それにCN1かCN2のどちらかの+5VとGNDの以上あわせて18本です。
必要な信号が2本のコネクタに分かれているところがちょっとまずいところです。
CN1のA8〜A15は、まず使うことはないはずですから、それを外して、ここにIORD、IOWRをつければよかったのですが、基板の配線が、もういっぱいでCN1までもってこれなかったのです。

●I/Oを接続するためには、アドレスデコード回路が必要

82C55にはデータバス信号のD0〜D7はそのままつなぎますが、アドレス線はA0とA1の2本のラインしかつなぐ端子がありません。
じつはアドレス線については、その上のA2〜A7を使って、他のI/O回路とぶつかってしまわないように、固有のアドレスを与えなければいけません。
他にI/Oがなければそんな面倒なことは不要なのですが、MYCPU80は基板内のTK80用回路でI/Oを使っているために、そのアドレスとぶつからないようにしなければいけません。
TK80回路で使っているI/Oアドレスはこちら([第367回])にあります。
MYCPU80附属の説明書では、MYCPU80(TK80回路)操作説明書の33ページにあります。
TK80用回路では94〜9Fを使っていますから、それ以外のアドレスなら使うことができます。
8080やZ80ではI/Oアドレスは00〜FFを使うことができます。
ですからMYCPU80では、TK80用回路で使っている以外のI/Oアドレスとして00〜93、A0〜FFの中から適当なアドレスを割り当てて使うことができます。

今回のテストでは、簡単にテスト用の82C55回路を用意するために、既存のボードを流用しました。
そのボードでは82C55のアドレスとして80〜83を使うように配線してありますので、それをそのまま使いました。

●82C55の回路です


アドレスデコードには74HC138を使い、アドレス80〜83を82C55に与えています。

●MYCPU80に接続してテスト中の写真です



82C55のAポート、Bポート、Cポートを全部出力に設定して、AポートにはED、BポートにはCB、CポートにはA9を出力させて、LEDに表示させています。
テスト用につないだLED表示回路は、出力がLのときに点灯、Hのときに消灯するようになっていますから、出力データの1と0が反転して見えます。
LEDは上からAポート、Bポート、Cポートです。00010010、00110100、01010110に見えますでしょうか。

TK80用回路で、下のプログラムを入力して実行させました。

8000 3E80 MVI A,80
8002 D383 OUT 83   ;A、B、CをOUTに設定
8004 3EED MVI A,ED
8006 D380 OUT 80
8008 3ECB MVI A,CB
800A D381 OUT 81
800C 3EA9 MVI A,A9
800E D382 OUT 82
8010 76   HLT

☆☆☆☆☆本日、MYCPU80については以上です。ここからは、いよいよ☆☆☆☆☆

●知ってしまいました

さていよいよ、大変だったことのはじまりです。
よくよく調べてみましたら、そもそものはじまりは10月の10日ころのことだったようです。
かれこれ一月ほど前に、お話しはさかのぼります。

あれこれ調べものがあって、ネットを検索していましたら、
「PIC(USB内蔵)」
なる言葉が目につきました。
USB内蔵?

そんなものがあるなんて、知らなかった…。
ううう、と思って調べてみましたら、もうかなり前から市場にでていて、なんと「トランジスタ技術」にも何回か紹介されているらしい…。
「トランジスタ技術」はずっとずっと昔から購読しているのでありますけれど、ここ数年は、買ってそのまま本棚につっこんでおくだけで全く読んでいませんでした。不勉強もいいところです。
雑誌記事では40pinのPIC18F4550が取り上げられておりましたが、もう少し小さい28pinの18F2550も同様にUSB内臓なのだそうです。
さらにさらに調べてみましたら、なんと20pinの18F14K50つうのもあるらしい。

知らなかった…。

私は、こんなものがあるとは夢にも思っていなかったので、それでMYCPU80にPIC16F88を載せて、わざわざ別の小さな基板まで作って、そこにUSB−232C変換ICのFT232RLを貼り付けたものを用意したのでしたけれど…。
こんなものがあることを知っていたら、そりゃあ、それを使うことを考えたでしょうよ。

…いえいえ。そうではありませぬ。
知らぬが仏、とはまさにこのことで、もし私がもう少し前にこのことを知ってしまっていましたら、多分まだMYCPU80は供給できていなかったことでしょう。
きっと、ここのところで泥沼にはまってもがいていたことでしょうねぇ。
これはまさに天の配慮。

もちろん知ってしまった今となっては、もうFT232RL+PIC16F88なんてかったるいものは使う気になりませぬ。
断然、PIC18F2550か、できれば18F14K50道を一直線。

んで、遅まきながら「トランジスタ技術」の、そのPIC利用のUSB通信なる記事を読み始めたのでありますが…。
こいつは、ちょっと、てごわいのでは?
うう。読んでも、わからんではないか。
こりゃ、大変だ。

結局、ネットをあちこちさぐったり、「トランジスタ技術」の別の記事もあわせて読んでみたりもしたのですが。
うう。1週間たっても、わからん。なんだか、ややこしくて、よくわからん、のでありますね。

私が最初喜んだのはどうやら早とちりだったようで、USB内蔵と言っても、そんなに簡単なものではないようなのですよ。
私は最初はFT232RLのように、難しいところは全部勝手にやってくれて、それでこちらは普通に今まで通りに232Cのつもりでプログラムを書けばそれでいい、とそんなふうに思っていたのですけれど、なかなかどうしてそんなものじゃないらしい。

なんでも最初のパソコンとの接続開始のところからいろいろホストにデバイス情報とかなんたらかんたらを送らなければならないらしい。
そのなんたらかんたらがまたややこしくて、早い話が、さっぱりわからん。
うう。これは、ちと、話が違うではないか…。

あかん。読んでもわからん。

で、ネットを必死でさぐってみましたら、なんと、おお、Microchip社のホームページに、簡単おまかせ接続の仮想232Cファームウェアなるものが用意されているらしいではありませぬか。
それ、それ。そういうものがあれば、それでいいの。こんな読んでもわからんようなものにかかわっていなくても。
こっちは、とにかくPICを使ってUSBシリアル変換が簡単にできれば、それでいいの。

あ?
でも、それ、機械語のオブジェクトファイルではないの?
だって、ファームウェアなんでしょ。

え?
Cなのぉ?
Cのソースで供給…?
なんで、そんな面倒なことを…。

だいたい、PICのプログラムをどーしてCなどで書いたりするのさ。
Microchipよ、お前もか!

Cのソースつうことは、じゃあ、コンパイラがいるではないか。
そこでまたもやネットサーフィン…。

なんでもMicrochip社にはPIC18用の純正コンパイラC18つうのがあるらしいのですよね。
それがまた、どういうわけか、Microchip社のサイトの読みにくいこと!
あんたたち、いったいどういう感覚でサイト作ってるの?
これじゃどこでダウンロードすればよいかもわからんではないか。
C18コンパイラをダウンロードしようとして、サイト内をあちこち行くのだけれど、特徴やら、何やらをたらたら紹介しているだけで、リンクが無い!みつかりません。
いまもってどこをどうやって行きついたのか、よくわからんけれども、とにかくやっとのことで、ダウンロードできるところに行きついたのであります(なんだかとんでもないところに置いてあったような…。また落ち着いたら、暇な時に調べてみます)。

このC18コンパイラは本当は有償なんだけれども、最初の2〜3ヶ月はお試し期間なんだそうですね。
おまけにその期間を過ぎても全然使えなくなる、ということではなくて、一部の機能が制約を受けるだけで、継続して使うことに特別の支障はないようです。もちろんとりあえずは無償でダウンロードさせていただきました。

ああ。それとついでにMPLABの最新版。そいつもダウンロードいたしました。
MPLABというのはPICプログラム開発のためのツールで、昔から供給されているものです。
もちろん私も以前から使っていますけれど、ずっとPIC16Fばっかりでしたから、PIC18F用に最新版が必要になるだろう、と思ったからです。

ところが、ところが、実に腹立たしいことに、このMPLAB最新バージョンとC18コンパイラが、一筋縄では、いってくれなかった…のでありますよ。
2009.12.6upload

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