Witam.
Mam problem z zapisem do zewnętrznej pamięci EEPROM AT24C164. Działa mi zapis tylko w zakresie 0-1023 a powyżej 1023 nie działa poprawnie.
Podłączyłem EEPROM do portu E.

Mam 3 funkcje odpowiedzialne za obsługę TWI.
Inicjalizacja:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zapis:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i odczyt:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Adres urządzenia zawiera też adres bloku pamięci.

Piny A1 i A2 są podłączone do VCC a A2 do GND więc urządzenie ma adres 0xF0 czyli 11110000
bity 2,3,4 od prawej (1111xxx0) to adres bloku. Ustawiam go więc tak ((register_address>>8)<<1), gdzie register_address to 16 bitów.
Wszystko działa dobrze jak zapisuję do wartości 1023. Poniżej przykład.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Na terminalu powinien być wynik: 1, 2, 3 a otrzymuję 1,2, 255.

Co robię źle ?