24CXX.pdf

(52 KB) Pobierz
77231728 UNPDF
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 8bitowy) oraz grupa
druga od AT24C32 do AT24C512 (pamięć w jednym bloku, adres 16bitowy)
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)
Zgłoś jeśli naruszono regulamin