I/Oポートの少ないAVRマイコンを使っていてAVRのI/Oポート数よりも多くの入出力が
必要になるときがあります。そんなときにデコーダーの74HC138をI/Oセレクタに使って、
入力に74HC244、出力に74HC273を使って入出力I/Oポートを増設することができます。
Tiny2313を使った場合、以下のような回路になります。
ポートBを入出力のデータポートとして、ポートDの上位3ビットをI/Oセレクタのアドレスに
使います。この回路図では、アドレス0x10が、入力ポートに、アドレス0x20が出力ポートに
なります。
ここで、アドレス0x00は、特殊なアドレスになり使用しないので、74HC138のY0は、使いません。
この回路では、入出力1ポートづつですが、最大で、7本のI/Oポートを増設できます。
AVRのプログラムは、アドレスを指定して、ポートDの入出力の方向を切り替えてポートを
読み書きします。この回路では、アドレス0x10を指定すれば、74HC244からデータを入力。
アドレス0x20を指定すれば74HC273からデータが出力されます。
データの入出力は、高速なので、プログラムは、C言語よりもアセンブラが向いています。
C言語でプログラムを作る場合は、入出力のサブルーチンをインラインアセンブラで組むと
処理が速くなります。
AVRのアセンブラによるプログラムは、以下のような感じになります。
ここでは、データの入出力は、ポート単位で行っていますが、ビット単位でも可能です。
;//////////////////////////////////////////////////////////
データ出力の例
outPORTB,tmp ;ポートBの出力設定
rcallioout
データ入力の例
rcallioin
intmp,PORTB ;ポートBからデータを入力
;//////////////////////////////////////////////////////////
ioout: ;出力 HC273
pushtmp
sertmp
outDDRB,tmp ;ポートBを出力
cbiPORTD,5 ;L
rcallioexit
poptmp
ret
ioin: ;入力1 HC244
pushtmp
clrtmp
outDDRB,tmp ;ポートBを入力
sbiPORTD,4 ;H
cbiPORTD,5 ;L
cbiPORTD,6 ;L
nop
poptmp
ret
ioexit:
cbiPORTD,4 ;L
sbiPORTD,5 ;H
cbiPORTD,6 ;L
ret
;//////////////////////////////////////////////////////////
この回路では、AVRのデータポートの入出力を切り替えているので、常時入力の状態を監視
しているとか、常時パルスなどを出力するような用途では使えませんが、入力のSWの状態を
監視して、それに応じた出力するなどの用途に使えます。
このI/O回路は、Z80の入出力I/Oポート回路そのものですが、結構汎用性があります。
スポンサーサイト
この新月期を利用してMさんが南半球某所に遠征されているのですが、遠征先の撮影ポイントに
インターネット環境があるので、MさんがSkypeに繋がっているときにSkypeで話をしてます。
遠征先の撮影ポイントには、ライブカメラもありライブカメラのホームページを見ながら
映った画像を見ながら遊んでみたり、先日は、現地のお友達の方が、PHD Guidingの使い方が、
よく分からないということなので日本から設定方法などをレクチャーしました。
Skypeは、ご存知のようにインターネット回線を利用した電話で、インターネット環境があれば
世界中何所からでもSkypeユーザー間で、無料で会話やビデオ通話をすることができてとっても便利。
ファイル転送の機能があるので、もし、海外の遠征先でトラブルがあってもサポート出来ちゃいます。
ホンと便利な時代になりましたよ。
頼まれて、ここの http://homepage3.nifty.com/~prius/index_astro.html
NFC-Cというフォーカサーとステッピングモーターを繋ぐケーブルを作ったのですが、ケーブルを
繋ぐコネクタに日本圧着端子の2mmピッチの基板対電線接続用コネクタのPADコネクタなんて使うか!
http://www.jst-mfg.com/product/detail.php?series=191
こんな小さなコネクタで、細いケーブルを繋いでいたらすぐにケーブルが切れるで!
だいたい、天体写真なんて、屋外で過酷な使用環境で使うので、ケーブルをLANケーブルや多芯の
フラットケーブルをモーターの接続ケーブルに使うのが、大きな間違い!!
遠征先で、ケーブルが切れることになればどうしようもないということを経験していないのでしょうね。
明らかに、製作者が、遠征して撮影をしていないか良く分かりますよ。
小さくコンパクトにしたいのは分かるけど、使用環境を考えれば多芯ケーブルを使って、コネクタを
小さくするのであれば、ヒロセの小型丸型コネクターHR10Aを使うとか、多少大きくなってもミニDINの
6ピンや8ピンのコネクタを使ってケーブルと端子の接合部分を保護するようなコネクタで接続する
ようにしないとすぐにケーブルが切れてしまいますよ。
この手の天文用の機器を製作して頒布するのであれば多少頒布する価格が高くなっても低温などの
過酷な使用環境でも安心して使える部品を選んで使うのが、基本ですよ。