現状

レジスタ読み出し成功した時点での写真。

LEDディスプレイ上は、上2桁が生存確認用のハートビート代わりのカウントアップ、中間12桁がI2Cのステータス表示(2桁毎)、下2桁がハードコーディングされたレジスタアドレスから読み出したデータ。
表示されている、I2Cのステータスは、
08→スタート送信
18→SLA+W送信・ACK受信
28→データバイト送信・ACK受信(レジスタアドレス送信)
10→リピーティッド・スタート送信
40→SLA+R受信・ACK送信
50→データバイト受信・ACK送信(レジスタデータ受信)
となるので、正常に通信ができていることが確認できた。


載っているICは右からATMEGA328、I2C EEPROM、TIの8ch I2CスイッチPCA9548A、ADIのI2C絶縁カプラADuM2250の順。
ATMEGAの左上あたりにある小さい基板は、LTのI2Cバスアクセラレーター LTC4311。
ハブとアイソレータの負荷が重いかな?と思って一応入れたが、効果は不明。


I2Cハブを使わなくても、Buffalo上のピンヘッダでI2Cアドレスは2種類(1bit)変化させられるが、左右の動作条件を最大限そろえるという拘りのためにハブを使ってそれぞれON/OFFする方法にした。
更にアイソレータを入れて、絶縁側の電源はBuffaloから取るようにし、制御コントローラ経由でループが発生しないようにしてある。(ただし、現状では全電源が共通)