I2Cは1組のラインに複数のI2C機器をぶら下げることが出来る。
知ってはいてもやったことが無かったが、LCDのAQM0802AとEEPROMのAT24C256Bを接続してどうやら問題なく駆動出来ているようだ。
変更点は特に無し。
それぞれのコードをコピーしてきてペーストしただけですぐに動いた。
そういう仕組みなんだからそうなんだろうけど、ちょっと感動した。
そもそも「PIC12F675 + I2C + AT24C256B」あたりからI2CをBit bangingで実装するってのをはじめ、「PIC16F1823 -> I2C(Bit Banging) -> AQM0802A」でAQM0802Aでの実装も試していたので、それらのコードの集合というわけだ。
要は、Slave AddressとかDevice Addressとか書かれているもので区別するわけだが、
EEPROM AT24C256B の場合は
The device address word consists of a mandatory “1”, “0” sequence for the first four most significant bits as shown. This is common to all two-wire EEPROM devices.
と書いてあって
先頭の4ビット「1010」がEEPROMをあらわし、その後の3ビットが複数のEEPROMを使う場合にそれを区別するためのもの、
AQM0802Aの場合は
Only one 7-bit slave addresses (0111110) is reserved for the ST7032.
と書いてあって
「0111110」が固有の識別符号のようだ。
こちらはAQM0802を複数使用するケースは想定されていないってことかな。
いやあ、データ線2本で表示の出来るI2C接続のLCDってのは、私のような行き当たりばったりのコーディングをするものには救いの神だ。
そういう意味でも、Bit bangingで実現できるのは大きいと思う。