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.
Zapis:
i odczyt:
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.
Na terminalu powinien być wynik: 1, 2, 3 a otrzymuję 1,2, 255.
Co robię źle ?
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.
Kod: C / C++
Zapis:
Kod: C / C++
i odczyt:
Kod: C / C++
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.
Kod: C / C++
Na terminalu powinien być wynik: 1, 2, 3 a otrzymuję 1,2, 255.
Co robię źle ?