Atmega8, OLED 4pin, I2c

S řadičem SH1106 jsem se zatím nesetkal. Z toho, co píšeš, tak data posílám stejně jako Ty, ale Command funkci mám psanou kvůli univerzálnosti tak, jak jsem popisoval výše. Podle datasheetu jsou mezi těmito řadiči rozdíly v příkazech, ale komunikace jako taková je popisována shodně. Mě překvapuje, že po start condition posíláš rovnou control byte. Předpokládám, že jako první posíláš address byte a pak teprve control byte a že jsi to sem zapomněl napsat. Podle datasheetu má displej Set page address a Column address se nastavuje na dvakrát. Kromě toho jsem v datasheetu SH1106 nenašel příkaz pro Set working area, na který jsi se ptal. Jestli jsem datasheet správně pochopil, pak při zápisu dat do RAM zapisuješ pouze do aktuální stránky (page) a dochází k automatické inkrementaci adresy, ale pouze v rámci stránky. I podle toho, co jsi psal, to tak vypadá. Jakmile tedy zapíšeš všech 128 bytů, musíš přepnout stránku. Abys tedy smazal displej musíš zapsat 8x128 bytů po stránkách podobně jako u řadiče KS0108.