今回はシリアルデータをパラレル出力するためのICである、74HC595の使い方を説明します。
このICは最低3本の制御線で、8本の出力ができます。また、74HC595を直列に繋ぐことにより制御線はそのままに、一個追加するごとに8本の出力を増設できます。
用途はというとマイコンの出力端子が足りないときに増設するときに利用します。ただ、マイコンから直接出力するよりも時間がかかるので、速度の必要な用途には厳しいかもしれませんが、LEDへの出力など低速(内蔵IOポートに比べて)でも大丈夫な用途に利用できます。
さらに、74HC595は普通のシフトレジスタとは異なり、データの送信中は出力端子の状態を変えずに、全てのデータを送信し終わってから任意のタイミングで一気に出力ポートを変化させることができるようにラッチが内蔵されています。これにより、遅い動作で駆動させても出力端子の余計な変化は起こりません。
今回はAVRのATtiny2313から74HC595を通して3本の制御線で8個のLEDを点灯させてみることにします。
2010年3月4日追記:
ATmega等のSPI機能がついたAVRを利用する場合はSPI機能を利用することをおすすめします。SPIをつかったシフトレジスタの操作はこちら。SPIを使うことにより、シフトレジスタへの送信がハードウエアで行われ倍近くの動作速度が期待できます。しかし、動作原理を知るには以下のようにポートを直接操作するプログラムのほうがわかりやすいので、こちらも読んでいただくことをおすすめします。
BDL168とRX4のLoconetとの通信部分は解析できたので次は車両から発信(発光?)するパケットの構造を決めてAVRで送受信の実験をしたいと思います。
(実はAVRとLoconetの接続を避けているだけなのですがw。UARTを一旦MAX232を通せばLocoUSB Rev.1と同じ回路でLoconetに接続できるのですが、LoconetはオープンコレクタなのでわざわざRS232に変換しなくても….長くなるので今度にします。)
- パケット構造の決定
- パケット内容の決定
- AVRに実装
という順番で書きます。 Continue reading »
はじめてAVRについて書くのにいきなりプログラムですいません。
開発環境などについては今後書く事にします。
今回はUSARTが搭載されているAVR(今回はATTiny2313)を利用してシリアル通信する方法を紹介します。 Continue reading »
送受信とも割り込みを利用しているので他の作業と平行してシリアルの送受信ができます。
車両検出を行うにあたり、最後の実験であるAVR(マイコン)をLoconetに接続し、実際にLoconet上に検出情報を送信することを試みます。
Loconetはマイコン関係でいうところのUART(USART)、パソコンではRS-232CのTTLレベル(正論理)に相当する信号です。詳しくはDigitraxのLocoNet ® Personal Use Edition 1.0を参照してください。
LocoUSB Rev.1では一旦MAX232でRS-232C(負論理)に変換してからJMRIのページの参考回路を利用しましたが、TTLレベルのシリアルをMAX232を利用せずに安価な回路でLoconetに接続することを実現したいと思いました。 Continue reading »
DCCのパケットの取得はできたのでポイントデコーダを作りたいと思います。
- マイコンからポイントを駆動させる
- DCCパケットからアクセサリデコーダへの命令を取得する
- 上記2つをくっつける
という手順で進めます。 Continue reading »
(注意:最新はLocoUSB Ver.2です)
Loconetとパソコンをつなぐためのインターフェースを製作します。
市販されているものですと、MS100やLocoBuffer-USBなどがあります。
MS100はシリアルポート接続なのでシリアルポートが搭載されていないパソコンでは使えませんし、USBシリアル変換というものも存在しますが、Loconetの特殊な通信速度(16600bps)には対応していないものがほとんどです。
また、LocoBuffer-USBは日本で入手するのはめんどくさく、価格もそれなりにします。
以上の理由でインターフェースを製作することにしました。 Continue reading »


最近のコメント