logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[xmega128a3u][AT24C164] - działa tylko połowa pamięci EEPROM

t__d 03 Sie 2014 11:05 900 0
REKLAMA
  • #1 13847326
    t__d
    Poziom 10  
    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.

    [xmega128a3u][AT24C164] - działa tylko połowa pamięci EEPROM

    Mam 3 funkcje odpowiedzialne za obsługę TWI.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zapis:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i odczyt:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Adres urządzenia zawiera też adres bloku pamięci.

    [xmega128a3u][AT24C164] - działa tylko połowa pamięci EEPROM

    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++
    Zaloguj się, aby zobaczyć kod


    Na terminalu powinien być wynik: 1, 2, 3 a otrzymuję 1,2, 255.

    [xmega128a3u][AT24C164] - działa tylko połowa pamięci EEPROM

    Co robię źle ?
  • REKLAMA
REKLAMA