Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino + EEPROM - Odczyt, zapis, kasowanie

18 Sty 2015 23:06 4158 4
  • Poziom 25  
    Witam
    Mam podłączoną pamięć EEPROM 24C32 pod arduino i chciałbym się dowiedzieć kilku rzeczy.
    1) Ile można zapisać na niej bajtów?
    w datasheet piszę Internally Organized 4096 x 8, czy to znaczy że można na niej zapisać 32748 bajtów?
    2) W datasheet piszę "32-Byte Page Write Mode" to ile ona ma tych stron?
  • Moderator Mikrokontrolery Projektowanie
    Ad. 1 Pojemność pamięci podaje się w bitach. Dlatego zapis z dataqsheet: 32K (4096 x 8)
    oznacza 32 kilo bitów, zorganizowanych w 4096 komórek po 8 bitów.

    Ad. 2 Znając już odpowiedź na punkt 1 możesz to sam obliczyć. Możesz także w dokumentacji sprawdzić punkt: Memory Organization
  • Poziom 25  
    Więc skoro pamięć ma 4096 bajtów to ma 128 stron.

    Żeby zapisać bajt E2 np. w drugiej komórce to robię coś takiego:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    A jak zrobić żeby np zapisać bajt E2 w komórkach od 5 do 128?
  • Poziom 25  
    Próbuje, próbuje i nic nie wychodzi.
    Myślę że powinno być coś takiego:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Przy kompilowaniu wyskakują błędy.
  • Poziom 25  
    Mam taki kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program zapisuję bajt "0" w sektorach od 0 do 94.
    robi to w ten sposób że wysyła:
    A0 Write
    2 bajty z adresem 00, 00
    30x komórek o wartości "0"

    10ms przerwy

    A0 Write
    2 bajty z adresem 00, 30
    2x komórki o wartości "0"

    10ms przerwy

    A0 Write
    2 bajty z adresem 00, 32
    30x komórki o wartości "00"

    10ms przerwy

    A0 Write
    2 bajty z adresem 00 62
    2x komórki o wartości "0"

    10ms przerwy

    A0 Write
    2 bajty z adresem 00 64
    30x komórek o wartości "0"

    10ms przerwy

    A0 Write
    2 bajty z adresem 00 94
    2x komórki o wartości 00 C2 ( nie wiem czemu w ostatnią komórkę program wstawił C2)

    Po każdym bajcie jest "ACK" myślę że ten sketch jest dobry tylko nie wiem jak ustawić żeby np. zamiast bajtu "00" zapisywał bajt "B2"

    Mam jeszcze taki sketch:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tu wiem gdzie wpisać jaki bajt (DD) ma zapisywać do danego obszaru pamięci, ale myślę że ten sketch jest zły.
    Oto screen z analizatora (nie chciało mi się już przepisywać)
    Arduino + EEPROM - Odczyt, zapis, kasowanie

    Jest w nim sporo "NACK" domyślam się że chodzi tu o czas zapisywania i zastanawiam się skąd program z pierwszego sketcha wie że ma zapisywać po 32 bajty danych no i jak zrobić żeby zapisywał mi bajt który chcę.