USIでI2Cのマスタになる

AVR Tinyマイコンには、TWI(Two-wire Serial Interface)というI2C専用のハードウェアがない。そのかわりUSI(Universal Serial Interface)を用いてソフトウェアで実現するのがAVR流なのである。

ばんとさんはがた老さんの作例を元に、USIでI2Cマスタを実装したATtiny用I2Cマスタライブラリィを作っているのだ。I2C LCDは大気圧計で使ってしまい手持ちがなかったのだが、今回入手したI2C LCDは、大気圧計で利用したストロベリーリナックスのI2C LCDと同じST7032iコントローラを使ってるので、大気圧計で作ったドライバを流用できるのである。

手持ちのAVR Tinyマイコンに接続

ライブラリイもドライバも既にあるので簡単にテストできるのだ。
テストしない理由はないのである。

ATtiny2313に接続

大気圧計で作ったST7032iドライバは、予想通りほとんど修正することなく流用できた。それがこれだ。

ATtiny2313にI2C LCDを接続

ATtiny2313にI2C LCDを接続

簡単に表示できたのでRTC8564も接続して時計にしてみようかと、ドライバを追加したのだがプログラムが2Kバイトを超えてしまった。 😥

ATtiny861Aに接続

それならと、フラッシュ8Kバイトと大きいATtiny861Aに変えて時計に仕立てたのがこれである。

ATtiny861AにI2C LCDを接続

ATtiny861AにI2C LCDを接続

ATtiny85に接続

同じくフラッシュ8KバイトのATtiny85なら、ターゲットをATtiny861AからATtiny85に変えて再コンパイルするだけでOKだ。

ATtiny85にI2C LCDを接続

ATtiny85にI2C LCDを接続

問題なく動作した。

ATtiny2313は少しツライかな…

ATtiny2313は少しツライかな、だがATtiny2313でI2Cデバイスをまともに動かしてる記事をみたことがないので貴重だな。 😆

ライブラリィは”AVR ATtiny用 I2Cマスタライブラリィ“で公開してるので、ATtinyでI2Cデバイスを動かしたいひとはどうぞ遠慮なく。