SPIを使った複数デバイス動作の当面の目標、というより手元にある Ethernet Shieldと SDカードを同時に動作させてみた。
まず先の実験の結果より、SDカードと Ethernet Shieldの出力が衝突しないように回路を追加する。
デバイスの選択は SSピンにより行なわれるが、AVRを SPIマスタとして使用しているときは単純なデジタル出力で、ソフトウェアで制御する必要がある。ハードで勝手に制御されるわけではない。これは 2つ目のデバイス用の SSを、適当なピンに割り当てて使用できるということであり、都合が良い。今回は SDカード用の SSを digital pin 9に割り当てた。
2つのライブラリが SPI機能を使うわけだから、競合して不具合が起きないようにしなければならない。SSの割り当て変更のついでに FatFSを修正した。内容は AVRの SPI機能の初期化部分の削除と SS制御部分の変更だけだ。SPI機能の初期化は Ethernet用ライブラリに任せるため、初期化の順序は気を付けなければいけない。
こんな大雑把な方法で良いのかよく判っていないのが本音だが、うまく動いているようだ。
ハードの改造が前提の部分が多少面倒だが、こういった組合せで使いたかった人の参考になれば幸いだ。
2010年4月6日火曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿