実験の様子
今日は、途中で投げ出していたI2Cのスレーブ側のプログラムを
再度挑戦していました。
これまで、割り込みやら、シフト命令やら、ポート入力やら、色々
な方法で試していたのですが、どれもうまく行っていませんでした。
今回は、本当にマスター側からちゃんとした信号が出ているかなど
を、PCでのロジックアナライザを駆使しながら、一歩ずつやって
みました。
結果として、使用しているBASICのマスター命令での信号の出方
にも癖があり、それらを認識した上でスレーブ側(受信側)の
プログラムを作ればいいことがわかりました。
今回のテストプログラムは、割り込みなど使用せず、データと
クロックのポートをメインルーチンで監視しながら1ビットずつ
取り込む方法でスレーブ機能を実現しました。
受信したデータはアドレスとデータのそれぞれ8ビットずつです
が、設定したアドレスを認識し、送られたデータをLCDに表示でき
ています。
1行目がアドレス、2行目がデータ
I2CのパラレルI/O ICであるPCA9555と並列接続し、PCA9555用の
アドレスとデータ、今回作ったATTiny2313スレーブのアドレスと
データを送り、きちんと識別してデータの取り込みを行っています。
今回は、旨く行ったようです。
ATTiny2313に送られたデータの様子

