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.
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/1066/4dbe4f5ed4dd243139948440af50ed5a.png)
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.
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/1066/c276e330c27348d0984baf3de70c5375.png)
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.
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/1066/bd85e75d6012e605ba9792bb8b1da5b4.png)
Co robię źle ?