Zapis i Odczyt Pamięci AT24Cxx

Poniżej przedstawione są dwie grupy procedur obsługi pamięci. Dla kostek od AT24C02 do AT24C16 pierwsza grupa (pamięć podzielona na bloki, adres w bloku 8-bitowy) oraz grupa druga od AT24C32 do AT24C512 (pamięć w jednym bloku, adres 16-bitowy)

Język Bascom AVR

Poniżej przedstawiona jest procedura zapisu danych dla pamięci od AT24C02 do AT24C16. Najpierw ustalany jest blok danych dzieląc podany adres przez 256, następnie obliczany jest adres komórki w bloku. W dalszej kolejności za pomocą magistrali I2C zapisywane jest dana pod wskazanym adresem
Zapis_24c16:
‚ustalanie w ktorym bloku ma lezec dana
Blok = Adres / 256
‚oblicznie adresu do zapisu jednej z grup danych
Adr = 160 ‚tylko 1010 0000
Shift Blok , Left , 1
Adr = Adr + Blok ‚ teraz jest 1010 (blok) 0
‚oblicznie adresu komorki w ustalonym bloku
Adr2 = Adres Mod 256
I2cstart
I2cwbyte Adr
I2cwbyte Adr2
I2cwbyte Dana
I2cstop
Return

Używanie procedury zapisu:

Adres = xxx
Dana = yyy
Gosub Zapis_24c16

Poniżej przedstawiona jest proceduraodczytu danych dla pamięci od AT24C02 do AT24C16. Obliczenia bloku danych i adresu są analogiczne jak w przypadku procedury zapisu. W dalszej kolejności adresujemy pamięć do zapisu, wykonujemy ponownie warunek startu, co pozwala odczytać wartość wykorzystując ostatnio używany adres.

Odczyt_24c16:
‚ustalanie w ktorym bloku ma lezec dana
Blok = Adres / 256
‚oblicznie adresu do zapisu jednej z 8 grup danych
Adr = 160 ‚tylko 1010 0000
Shift Blok , Left , 1
Adr = Adr + Blok ‚ teraz jest 1010 (blok) 0
‚oblicznie adresu komorki w ustalonym bloku
Adr2 = Adres Mod 256

I2cstart
I2cwbyte Adr
I2cwbyte Adr2
I2cstart

Incr Adr ‚zmiana adresu na odczyt

I2cwbyte Adr
I2crbyte Dana , Nack
I2cstop
Return

Używanie procedury odczytu:

Adres = xxx
Gosub Odczyt_24c16
yyy = Dana

Do zapisu pamięci od AT24C32 do AT24C512 wykorzystujemy procedurę przedstawioną poniżej. Najpierw obliczany jest starszy i młodszy bajt adresu a następnie wysłane są trzy bajty za pomocą magistrali I2C

Zapis_24c256:
Adr2 = Adres / 256
Adr3 = Adres Mod 256

I2cstart
I2cwbyte 160
I2cwbyte Adr2
I2cwbyte Adr3
I2cwbyte Dana
I2cstop
Return

Używanie procedury zapisu:

Adres = xxx
Dana = yyy
Gosub Zapis_24c256

Do odczytu pamięci od AT24C32 do AT24C512 wykorzystujemy procedurę przedstawioną poniżej. Sposób obliczania bajtów adresowych jest analogiczny jak w procedurze zapisu. W dalszej kolejności adresujemy pamięć do zapisu, wykonujemy ponownie warunek startu, co pozwala odczytać wartość wykorzystując ostatnio używany adres.

Odczyt_24c256:
Adr2 = Adres / 256
Adr3 = Adres Mod 256

I2cstart
I2cwbyte 160
I2cwbyte Adr2
I2cwbyte Adr3
I2cstart

I2cwbyte 161
I2crbyte Dana , Nack

I2cstop
Return

Używanie procedury odczytu:

Adres = xxx
Gosub Odczyt_24c256
yyy = Dana

Zakresy zmiennej Adres w zależności od typu pamięci:
AT24C02 -> 0 – 255
AT24C04 -> 0 – 511
AT24C08 -> 0 – 1023
AT24C16 -> 0 – 2047
AT24C32 -> 0 – 4095
AT24C64 -> 0 – 8191
AT24C128 -> 0 – 16383
AT24C256 -> 0 – 32767
AT24C512 -> 0 – 65535
AT24C1024 -> 0 – 65535 (zapisany zostanie tylko jeden blok pamięci, żeby zapisać drugi należy zmienić bajt adresowy, wynoszący standardowo 160)
Materiał nadesłał użytkownik : Elektron

Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Potwierdz, że nie jesteś botem. *