2015年9月26日土曜日

AVRをI2Cスレーブとして使う スレーブを複数使う

製作したシーケンス入力用のデバイスと別にブレッドボードでI2Cのスレーブ回路組んでI2Cスレーブの2個使いの実験してみた。

ブレッドボード図





ブレッドボードの回路はリズムマシンのExt Boardを想定している

I2Cのスレーブ・マスタのテストプログラムをいろいろ作っているので、どれがどれかわからなくてかなり混乱したが、なんとか動くようになった。

このブログの記事を書きながら検証したのでなんとかなった感じだ(^q^;

ブログは見てもらいたいという動機もあるが、やっぱ書いてる時や、後で参照するのにとても役に立つ。

I2Cのスレーブ・アドレスはSequence Board:0xFE、Ext Board:0xAAに設定してやってみた。(スレーブ側のプログラムはSlave2のアドレス以外変えていない)

Atmel Studio(Slave1):Sequencer Board
https://github.com/ryood/RhythmMachine/tree/master/Atmel%20Stduio/Sequencer_I2C_Slave/Sequencer_I2C_Slave

Atmel Studio(Slave2):ブレッドボードで組んだ回路
https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Atmel%20Studio/I2C_2nd_Slave_Rx_Tx_ATMega88V

Arduino(Master)
https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Arduino/master_double_slave_tx_rx

メモ


  • 使おうと思っているSPIのグラフィクLCDはu8glibで動作確認されてるようなので、PSoCから直接制御するのはしんどそう。SPI経由でLCDを制御するAVRを入れて、PSoCとAVRはI2Cで通信?
  • そろそろPSoCでリズムマシンの音出しプログラムを作ったほうがいい?出力はぴゅんぴゅん3号のシールドを使う?
  • 秋月で仕入れたロータリーエンコーダーが安かったので(しかもALPS製)ちゃんとテストする