Předpokládám, že se jedná o OLED displej s řadičem SSD1306.
Vzhledem k tomu, že jsi sem nedal výpis funkce i2c_write_byte, pak předpokládám, že start condition a stop condition řeší právě tahle funkce. To sice zajišťuje přenos dat, ale ne komunikaci s displejem.
Jedna tuhle funkci musíš rozdělit na odesílání Data nebo Command.
I2C komunikaci s displejem (funkci SendCommand) mám vyřešenou takhle :]Start condition/:m]
]I2C Slave adresa zařízení s požadovaným stavem R/W/:m]
]Control byte (0x00) - tedy jestli se bude jednat o data nebo command/:m]
]vlastní byte/:m]
]Stop condition/:m]
Nastavení pracovní oblasti displeje -
ldi r16,SET_COLUMN_ADDRESS ; Set Working Area
rcall i2c_write_byte
ldi r16,0 ; Columns 0 - 127
rcall i2c_write_byte
ldi r16,127
rcall i2c_write_byte
ldi r16,SET_PAGE_ADDRESS
rcall i2c_write_byte
ldi r16,0 ; Rows (Pages) 0 - 7
rcall i2c_write_byte
ldi r16,7
rcall i2c_write_byte
by mělo vypadat nějak takto :
ldi r16,SET_COLUMN_ADDRESS
rcall i2c_write_Command
ldi r16,0x00
rcall i2c_write_Command
ldi r16,0x7F
rcall i2c_write_Command
ldi r16,SET_PAGE_ADDRESS
rcall i2c_write_Command
ldi r16,0x00
rcall i2c_write_Command
ldi r16,0x07
rcall i2c_write_Command
Funkce i2c_write_Command musí nejenom odesílat hodnotu z r16, ale zajišťovat to, co jsem popisoval pro funkci SendCommand.
Jak píšu každýmu. Je potřeba číst datasheety - a to PEČLIVĚ !!!