N O T A T N I K P R A K T Y K A
Pamięci EEPROM w systemach
mikroprocesorowych, część 2
Tym artykuÅ‚em koÒczymy EEPROM-y szeregowe - VCC i GND - zasilanie ukÅ‚adu;
prezentacjÍ sposobÛw z magistralÄ… 3-przewodowÄ… - CS - wybÛr ukÅ‚adu, stan wysoki
programowania szeregowych
Powierzchnia pÅ‚ytki pÛÅ‚przewod- natym wejÅ›ciu uaktywnia pamiÍĘ;
pamiÍci EEPROM. PoniewaÅ‚
nikowej zawierajÄ…ca strukturÍ pa- - SK - wejÅ›cie zegarowe, synchro-
najwiÍkszÄ… popularnoÅ›ciÄ… cieszÄ…
miÍci stanowi uÅ‚amek powierzchni nizujÄ…ce wprowadzanie i wypro-
siÍ wÅ›rÛd uÅ‚ytkownikÛw pamiÍci
obudowy z jej wieloma wyprowa- wadzanie danych z pamiÍci;
z interfejsem I2C, przedstawiamy
dzeniami adresowymi i danych. - DI- wejÅ›cie bitÛwrozkazu,adresu
przykÅ‚adowÄ… procedurÍ ich
W celu zmniejszenia miejscazajmo- i danych;
obsługi, napisaną w asemblerze
wanego przez pamiÍĘi redukcjilicz- - DO - wyjÅ›cie danych i statusu pa-
MCS-51.
by poÅ‚Ä…czeÒ niezbÍdnych do komu- miÍci;
Interesującym uzupełnieniem
nikacji miÍdzy systemem a pamiÍ- - ORG- wejÅ›ciesterujÄ…ce wewnÍtrz-
artykułu jest opis programatora
cią, opracowane zostały EEPROM-y, ną organizacją danych;
szeregowych pamiÍci EEPROM,
w ktÛrych adres i dane przesyÅ‚ane - DC - wejÅ›cie niepodÅ‚Ä…czane.
ktÛry znajduje siÍ na str. 47.
są szeregowo, bit za bitem. Wyjaśnienia wymaga funkcja wy-
Do rodziny ukÅ‚adÛw z magistralÄ… prowadzenia ORG. OtÛÅ‚ ukÅ‚adyserii
3-przewodowÄ… naleÅ‚Ä… EEPROM-yse- 93CxxtraktujÄ… dane w sposÛbzaleÅ‚-
rii 93C46/57/66 o pojemnościach 1/ ny od potencjału dołączonego do
2/4kb. Schemat wyprowadzeÒ tych wyprowadzenia ORG. JeÅ‚eli wypro-
ukÅ‚adÛw pokazano narys.6,a struk- wadzenie jest zwarte do masy, dane
turÍ blokowÄ… na rys. 7. sÄ… traktowane jako sÅ‚owa 8-bitowe
Redukcja liczby wyprowadzeÒ i pojemnośĘ pamiÍci 1K wynosi 128
i szeregowy sposÛb transmisji spo- sÅ‚Ûw. JeÅ‚eli wyprowadzenie podÅ‚Ä…-
wodowaÅ‚y komplikacjÍ struktury czone zostanie do napiÍcia zasila-
ukÅ‚adÛw w porÛwnaniuz EEPROM- jÄ…cego, danezapisywanesÄ…jakosÅ‚o-
amirÛwnolegÅ‚ymi. TakÅ‚e wspÛÅ‚pra- wa 16-bitowe i pojemnośĘ pamiÍci
caz pamiÍciÄ…jestbardziejskompli- zmniejsza siÍ do 64 sÅ‚Ûw. WybÛr
kowana. W pamiÍci dane wejÅ›cio- trybu powoduje zmniejszenie lub
wei wyjÅ›ciowesÄ…rozdzielonei po- zwiÍkszenie przestrzeni adresowej
Rys. 6.
jawiajÄ… siÍ na rÛÅ‚nych wyprowa- pamiÍci i zmianÍ liczby bitÛw ad-
dzeniach ukÅ‚adu. PoszczegÛlne wy- resu (dla 93C46 i formatu sÅ‚owa 8-
prowadzenia majÄ… nastÍpujÄ…ce bitowego, adres skÅ‚ada siÍ z 7 bi-
funkcje: tÛw, a dla 16-bitowego formatu da-
Rys. 8.
Rys. 7. Rys. 9.
Elektronika Praktyczna 9/98
21
N O T A T N I K P R A K T Y K A
nych adres skÅ‚ada siÍ z 6 bitÛw).
Listing 2.
;********************************************* setb scl ;SCL h
DziaÅ‚aniem pamiÍcisterujesiedem
;* Procedura I2C obsługi pamięci EEPROM 24C02 call i2ctakt
instrukcji. Kałdej instrukcji przypi- ;* dla procesora z rodziny 51 zegar do 12MHz mov c,sda
;* bajty i bity ustawiane przed wywołaniem rlc a
sany jest 2-bitowy kod i adres, wy- ;* procedury I2C djnz counter,ir24
;* ADRES - adres układu do zapisu/odczytu mov @r1,a ;A do buf.ram
syÅ‚ane szeregowo do pamiÍci po-
;* przez procedurÄ™ clr scl ;SCL l
;* SUBAD - subadres komórki, od której zacznie call i2ctakt
przez wyprowadzenie DI. W tabeli
;* siÄ™ zapis/odczyt inc r1
;* BUF_ADR -adres bufora danych w pamięci RAM djnz r2,ir4
1 zawarto zestawienie poszczegÛl-
;* procesora setb scl ;SCL h
;* BUF_SPACE - długość bufora danych w pamięci call i2cend
nych instrukcji, ich kodÛw i powiÄ…-
;* RAM procesora ret
;* R_W - bit 0 procedura zapisze dane
zanych z instrukcjami adresÛw.
;* z bufora do pamięci EEPROM ir4: clr sda ;ACK
Najprostszą operacją jest odczyt ;* 1 procedura odczyta dane z pamięci EEPROM do call i2ctakt
;* bufora po zakończeniu procedury do setb scl ;SCL h.9
danychz pamiÍci. Schemat przebie-
;* akumulatora i rejestru R7 wpisywana jest call i2ctakt
;* wartość: clr scl ;SCL l
gÛw na liniach sterujÄ…cych podczas
;* 00h -gdy procedura zakończyła się sukcesem call i2ctakt
;* FFh -gdy wystąpił błąd setb sda ;SDA h
realizacji tej instrukcji pokazano na
;* bajty i bity używane przez procedurę: call i2c10ms
;* end_trans - bit flaga zakończenia jmp ir22
rys.8. Przed uaktywnieniem układu
;* transmisji gdy 1
pamiÍci przez podanie stanu wyso- ;* subadr_trans - bit flaga nadania subadresu i2ctakt: ;opóznienie
;* gdy 1 nop
kiego na wyprowadzenie CS, linie ;* wait - bajt pętla 10ms nop
;* counter - bajt licznik bitów nop
SK i DI powinny byĘ na poziomie
;********************************************* ret
I2c:
niskim. NastÍpnie jest generowany
mov r1,buf_adr i2ctest:
mov r2,buf_space mov wait,#080h
cykl rozbiegowy zegara, a potem na
jnb r_w,i2cw i2ct1: jnb sda,i2ct3 ;SCL i SDA wolne?
jmp i2cr jnb scl,i2ct3
wejÅ›ciu DI pojawia siÍ obowiÄ…zko-
i2ct5: clr c ;SCL i SDA wolne
wo stan 1. Bit jedynki musi po- ;zapis do pamięci eeprom ret
i2cw: clr end_trans i2ct3: mov counter,#0ffh
przedzaĘ kaÅ‚dÄ… instrukcjÍ wysyÅ‚anÄ… ;wsk.zakoÅ„czenia transmisji djnz counter,$
clr subadr_trans ;wsk.nadania subadresu djnz wait,i2ct1
do pamiÍci! Zapis bitÛw z linii DI
call i2cw1 jnb sda,i2ct4
ret jnb scl,i2ct4
jest dokonywany narastajÄ…cym zbo-
jmp i2ct5
i2cw1: call i2ctest i2ct4: setb c ;błąd SCL i SDA nadal zajęte
czem impulsu zegarowego. Po zapi-
jc blad ret
clr c
saniu bitu 1 do pamiÍci jest wysy-
call i2cstart i2cstart:
Å‚any kodinstrukcji, w tym przypad- iw31: clr a mov a,adres
cjne a,wait,iw22 rlc a
ku 10,a nastÍpniesiedem bitÛwad- jmp blad mov counter,#9
iw22: jnb subadr_trans,iw24 clr sda ;start
resu komÛrki pamiÍci, ktÛrej zawar-
;czy nadany subadres? call i2ctakt
mov a,@r1 ;kolejny znak z bufora do A sir3: clr scl ;SCL l
tośĘ chcemy odczytaĘ. Bity adresu
mov counter,#9 call i2ctakt
iw27: jnb scl,iw27 rlc a
są wysyłane od najstarszego do naj-
jb end_trans,iw28 djnz counter,sir2 ;adres układu
inc r1 jmp sir21
młodszego. Wpisanie ostatniego bi-
djnz r2,iw3 sir2: mov sda,c
setb end_trans call i2ctakt
tu adresu spowoduje pojawienie siÍ
jmp iw3 setb scl ;SCL h
na wyjściu DO poziomu niskiego, call i2ctakt
iw28: call i2cend jmp sir3
poprzedzającego wysłaniezawartoś-
ret
iw24: mov a,subad ;transmisja subadresu sir21: setb sda ;SDA h
ci odczytywanej komÛrki pamiÍci
setb subadr_trans call i2ctakt
mov counter,#9 setb scl ;SCL h
EEPROM. NastÍpnie,synchronicznie
iw26: jnb scl,iw26 call i2ctakt
iw3: call sir3 mov wait,#080h
z narastajÄ…cymzboczemimpulsuze-
jmp iw31 sir23a: jnb sda,sir22
mov counter,#0ffh
garowego, pojawi siÍ 8 bitÛw da-
blad: setb sda ;błąd zapisu/odczytu układu djnz counter,$
nych, poczÄ…wszy od bitu najstarsze- setb scl djnz wait,sir23a
mov a,#0ffh sir22: ret
go. Kolejne bity danych na wyjściu
;procedura wraca z wartością FFh w A i R7
mov r7,a i2cend:
DO pojawiajÄ…siÍz opÛünieniem kil-
ret call i2ctakt
clr scl ;SCL l
kuset nanosekund w stosunku do
;odczyt z pamięci call i2ctakt
i2cr: setb end_trans clr sda ;SDA l ACK
zbocza impulsu zegarowego. Po za-
clr subadr_trans call i2ctakt
call i2cw1 ;adres i subadres do eeprom setb scl ;SCL h
koÒczeniu odczytu danych wyjÅ›cie
cjne a,#0ffh,i2cr2 call i2ctakt
CS, co najmniej na 1µs, powinno ret setb sda ;END
call i2ctakt
znaleüĘ siÍ na poziomie niskim
i2cr2: call i2c10ms clr a
mov r7,a
przed inicjacjÄ… kolejnej instrukcji.
call i2ctest ret
jc blad
CzÍstotliwośĘimpulsÛwzegarowych
setb c i2c10ms:
call i2cstart mov wait,#20 ;pętla 10ms
nie powinna przekroczyĘ 1MHz.
clr a i10m: mov counter,#0ffh
cjne a,wait,ir22 djnz counter,$
ObsÅ‚uga pamiÍci, przynajmniej na
jmp blad djnz wait,i10m
początku, nie naleły do najłatwiej- ir22: mov counter,#8 ret
ir24: clr scl ;SCL l
szych. PewneczynnoÅ›ci, ktÛre ukÅ‚a-
call i2ctakt end
dy rÛwnolegÅ‚e EEPROM wykonujÄ…
automatycznie,tutaj musząbyĘ prze- musi byĘ wprowadzona instrukcja zapisem jest wykonywane automa-
prowadzone przezsystem mikropro- EWEN, dopiero wtedy mołna zmie- tycznie. W dodatku, kałda zmiana
cesorowy przy pomocy odpowied- niĘzawartośĘ pamiÍci.Jednakzapis zawartoÅ›ci pamiÍci wymaga pewne-
nich instrukcji. Tak jest w przypad- nowych danych do komÛrki, w ktÛ-
ku wszelkich manipulacji związa- rej juł coś jest, wymaga wymazania
nychz zapisem do pamiÍci. Po wÅ‚Ä…- jej zawartoÅ›ci. WiÄ…Å‚e siÍ to z uÅ‚y-
czeniuzasilania pamiÍĘautomatycz- ciem (wprowadzeniem) instrukcji
nie wchodzi w tryb ochrony przed ERASE. W opisywanych pamiÍciach
zapisem. Dlatego, zanim cokolwiek rÛwnolegÅ‚ych podobne wymazanie
bÍdzie moÅ‚na zapisaĘ do pamiÍci, zawartoÅ›ci komÛrki przed nowym
Rys. 10.
Elektronika Praktyczna 9/98
22
N O T A T N I K P R A K T Y K A
EEPROM-y szeregowe
z interfejsem I2C
Standard magistrali I2C odniÛsÅ‚
prawdziwy sukces na rynku elek-
troniki. Coraz wiÍksza liczba ukÅ‚a-
dÛw scalonych jest wyposaÅ‚ana
w interfejs umołliwiający im
wspÛÅ‚pracÍ z tÄ… szeregowÄ… magis-
tralÄ…, wykorzystywanÄ… do sterowa-
nia i wymiany danych. Do zalet
naleły mała liczba linii sterują-
cych (linia SCL zegara i SDA da-
nych), dobrze opisany i przejrzys-
ty standard, a takłe mołliwośĘ do-
łączania do magistrali wielu ukła-
dÛw.
Z tych powodÛw powstaÅ‚a i roz-
wija siÍ rodzina pamiÍci EEPROM
z interfejsem I2C. Nalełą do niej po-
pularne układyz rodziny24C01/04/
08/16/64,gdzieliczba politerzeìCî
okreÅ›la pojemnośĘ pamiÍci w ty-
Rys. 11. siÄ…cach kilobitÛw.
go czasu, zwiÄ…zanego z cyklem za-
Tabela 1.
pisu i mołe trwaĘ do 10ms. Przed
Nazwa Kod Adres dla formatu słowa 8-bitowego
upÅ‚ywemtegoczasu pamiÍĘ nie mo-
READ (odczyt 1 słowa danych) 10 A6..A0
łe wykonaĘ kolejnej instrukcji.
EWEN(zezwolenie na zapis) 00 11xxxxx
W celu stwierdzenia, czy cykl zapi-
ERASE(wymaż komórkę pamięci) 11 A6..A0
su zostaÅ‚ zakoÒczony, po kaÅ‚dej in-
WRITE(zapisz 1 słowo danych) 01 A6..A0
strukcji zmieniającej zawartośĘ pa-
ERAL(wymaż całą pamięć) 00 10xxxxx
miÍci (ERASE, WRITE, ERAL,
WRAL(zapisz całą pamięć wzorem) 00 01xxxxx
WRAL)i podaniu na wejście CSim-
EWDS(zablokowanie zapisu) 00 00xxxxx
pulsu ujemnego jest badany stan
(x -wartość bitu dowolna)
wyjścia DO. Jełeli stan tego wyjścia
bÍdzie niski, to oznacza, Å‚e cykl
zapisu nie zostaÅ‚ jeszcze zakoÒczo- Rozkazy ERAL i WRAL odnoszÄ… Na rys. 10 i 11 pokazano rozkÅ‚ad
ny. Pojawienie siÍ poziomu wyso- siÍ dozawartoÅ›cicaÅ‚ej pamiÍcii po- wyprowadzeÒ i schemat blokowy
kiego oznacza, Å‚e pamiÍĘ moÅ‚e wy- zwalajÄ… na jej globalne skasowanie tych pamiÍci. NazewnÄ…trzobudowy
konaĘ nastÍpnÄ… instrukcjÍ. Dopiero i zapisanie okreÅ›lonym wzorem da- oprÛcz wyprowadzeÒzasilania,linii
wtedy mołna zapisaĘ dane do pa- nych. Jest to pomocne podczas tes- magistrali SCL i SDA, wyprowadzo-
miÍci przy pomocy instrukcji WRI- towania pamiÍci. Ostatni z rozka- no takÅ‚e trzy linie adresowe i koÒ-
TE. Przebiegi czasowe impulsÛw zÛw EWDS powoduje sytuacjÍ ana- cÛwkÍ TEST (u niektÛrych produ-
zwiÄ…zanychz tÄ…instrukcjÄ… pokazano logicznÄ… jak po wÅ‚Ä…czeniu napiÍcia centÛwjest nieczynna). Redukcjali-
na rys. 9. zasilajÄ…cego: wszelkie zmiany w za- nii sterujÄ…cych i rozbudowany pro-
wartoÅ›ci pamiÍci tokÛÅ‚ transmisji spowodowaÅ‚y kom-
EEPROMsÄ… niemoÅ‚- plikacjÍ struktury wewnÍtrznej pa-
liwe. miÍci, ktÛra musi byĘ wyposaÅ‚ona
w układylogikiinterpretującej dane
napływające magistralą I2C. Na
szczÍÅ›cie budowa wewnÍtrzna ukÅ‚a-
du nie jest kłopotem ułytkownika
i programisty, tylko konstruktora
Rys. 12.
układu scalonego.
Rys. 13.
Elektronika Praktyczna 9/98
23
N O T A T N I K P R A K T Y K A
został podzielony na dwa bajty.
Przebieg zapisu bajtu do tego typu
pamiÍci pokazano na rys. 14.
Niekoniecjednakzamieszania wy-
nikajÄ…cego ze sposobu adresowania
pamiÍci! Na rynku sÄ… dostÍpne tak-
Å‚e pamiÍci oznaczane jako 24C01
o pojemnoÅ›ci 128 bajtÛw, ktÛrych
Rys. 14.
wyprowadzenia A0..2 pozostajÄ… nie-
W celu jednoznacznej identyfika- wany przez pamiÍĘ. Wreszcie wy- aktywne. Zastosowanietakiego ukÅ‚a-
cji ukÅ‚adu EEPROM, do ktÛrego da- syÅ‚anyjestbajt danych,a posygnale du eliminuje moÅ‚liwośĘ doÅ‚Ä…czenia
ne majÄ…byĘzapisanelubodczytane, ACK transmisja jest koÒczona przez dodatkowych pamiÍci EEPROM do
kaÅ‚da kostka pamiÍci doÅ‚Ä…czona do sekwencjÍ STOP. W przypadku od- magistrali I2C, poniewaÅ‚ sposÛb ko-
magistrali I2C ma przypisany unika- czytu danych z pamiÍci procedura munikacji z tym ukÅ‚adem jest
towy adres. Adres to sÅ‚owo skÅ‚ada- jest tylko trochÍ bardziej skompli- uproszczony i niekompatybilny
jÄ…ce siÍ z oÅ›miu bitÛw. Cztery naj- kowana i skÅ‚ada siÍ jak gdyby z resztÄ… rodziny.
starsze bity okreÅ›lajÄ… grupÍ, do ktÛ- z dwÛch czÍÅ›ci. Najpierw jest wy- Zapis bajtu do takiej pamiÍci po-
rej naleÅ‚y dany ukÅ‚ad scalony (w syÅ‚any do pamiÍci adres z subadre- kazano na rys. 15. Wynika z niego,
tym przypadku pamiÍci), trzy kolej- sem okreÅ›lajÄ…cym pierwszÄ… komÛr- Å‚e po sekwencji START jest pomi-
ne bity adresujÄ… konkretnÄ… kostkÍ kÍ, od ktÛrej rozpocznie siÍ odczyt. jany adres, a transmitowany zostaje
pamiÍci ze wszystkich doÅ‚Ä…czonych NastÍpnie, bezpoÅ›rednio po sygnale bezpoÅ›rednio subadres wskazujÄ…cy
do magistrali, a stan bitu najmÅ‚od- ACK jest generowana sekwencja komÛrkÍ, do ktÛrej zapisany zosta-
szego określa rodzaj operacji (0 - START i ponownie wysyłany adres nie bajt danych. Ze sposobu adre-
zapis, 1 -odczyt). pamiÍci, tym razem z ustawionym sowania wynika, Å‚e pojedyncza pa-
b7 b6 b5 b4 b3 b2 b1 b0 najmÅ‚odszymbitemb0. Zaadresowa- miÍĘ EEPROM moÅ‚e byĘ w ukÅ‚adzie
1 0 1 0 A2 A1 A0 R/W na do odczytu pamiÍĘ EEPROM po- bez kÅ‚opotu zamieniona na pamiÍĘ
Bity A2..0 sÄ… powiÄ…zane z nogami twierdza swojÄ… gotowośĘ sygnaÅ‚em o wiÍkszej pojemnoÅ›ci, z wyjÄ…tkiem
adresowymi o takich samych symbo- ACKi zaraz potem w taktimpulsÛw ukÅ‚adÛw 24C01, 24C32/64 rÛÅ‚niÄ…-
lach. JeÅ‚eli wszystkie trzy wyprowa- zegarowych wysyÅ‚a zawartośĘ pier- cych siÍ sposobem komunikacji
dzeniaadresowe ukÅ‚aduzostanÄ…zwar- wszej komÛrki pamiÍci. Tym razem z otoczeniem.
te do masy, pamiÍĘ bÍdzie odpowia- to urzÄ…dzenie odczytujÄ…ce wysyÅ‚a Takjak w przypadku EEPROM-Ûw
daĘtylko w przypadku,jeÅ‚eli w bajcie sygnaÅ‚ ACK i wtedy moÅ‚liwy jest szeregowych, pamiÍci z rodziny
adresu bity b3..1 bÍdÄ… wyzerowane odbiÛr kolejnego bajtu z pamiÍci. 24Cxx wyposaÅ‚ono w moÅ‚liwośĘza-
itd. Wynika z tego, Å‚e do magistrali Liczba odczytywanych danych jest pisustronicowanego. Oznaczato,Å‚e
mołe byĘ jednocześnie podłączonych ograniczona tylko pojemnością pa- jednorazowo mołna zapisaĘ do pa-
8 pamiÍci(chociaÅ‚istniejÄ…pewneogra- miÍci. ZakoÒczenie transmisji na- miÍciblok danycho wielkoÅ›ci4 lub
niczenia, o czym za chwilÍ). stÍpuje przez pominiÍcie potwier- wiÍcej bajtÛw. WielkośĘ strony za-
Przebieg sygnaÅ‚Ûw na linii SDA dzenia ACK i wygenerowanie przez leÅ‚y od pojemnoÅ›ci pamiÍci i pro-
w czasie operacji zapisu bajtu do ukÅ‚ad odczytujÄ…cy sekwencji STOP. ducenta. Nie majÄ…c dostÍpu do da-
pamiÍci EEPROMi odczytusekwen- Taki sposÛb zapisu i odczytu od- nych katalogowych moÅ‚na jednak
cji bajtÛw z pamiÍci pokazano na nosi siÍ do pamiÍci, ktÛrych pojem- bezpiecznie przyjąĘ, Å‚e dla pamiÍci
rys. 12 i 13. Z wyjÄ…tkiem sekwencji nośĘ nie przekracza256bajtÛwi ktÛ- powinno byĘ moÅ‚liwe jednorazowe
START i STOP sygnaÅ‚ na linii SDA re mogÄ… byĘ bezpoÅ›rednio adreso- zapisanieco najmniej4 bajtÛw. KaÅ‚-
mołe uleczmianietylko wtedy,gdy wane przezsubadres.Jakjednak wy- dy cykl zapisu (bajtu lub strony)
linia SCL jest na poziomie niskim. glÄ…da wspÛÅ‚praca z pamiÍciami moÅ‚e trwaĘ do 10ms. Przed upÅ‚y-
W czasie zapisu bajtu danych do o wiÍkszych pojemnoÅ›ciach? OtÛÅ‚ wem tego czasu EEPROM moÅ‚e nie
pamiÍcijest wysyÅ‚ana najpierwsek- kostki te ìudajÄ…î, Å‚e majÄ… w Å›rodku wykonaĘ prawidÅ‚owokolejnychope-
wencja STARTi adres pamiÍciz wy- wiÍkszÄ… liczbÍ pamiÍci o pojemnoÅ›- racji zapisu lub odczytu.
zerowanym najmÅ‚odszym bitem b0. ci 256 bajtÛw, a do ich adresowania NaleÅ‚ytakÅ‚e wspomnieĘ o znacze-
Aktywna pamiÍĘ potwierdza fakt sÄ… uÅ‚ywanebityb3..1adresu. Z tego niu wyprowadzenia oznaczanego ja-
odebraniaadresusygnałem ACK. Ro- powodu w układzie 24C04 jego wy- ko TEST. Czasamijestono nieaktyw-
bi to w ten sposÛb, Å‚e zwiera do prowadzenie A0 musi pozostaĘ nie- ne, czasami jednak peÅ‚ni funkcjÍ
masy liniÍ SDA w czasie trwania podÅ‚Ä…czone,a liczba pamiÍci wspÛÅ‚- sprzÍtowejblokadyzapisu do pamiÍ-
pierwszego impulsu zegarowego po pracujących z magistralą I2C jest ci.Jełelizostanie ono podłączone do
odbiorze adresu. NastÍpnie jest ograniczona do 4. W przypadku poziomu wysokiego, zapis danych
transmitowany WORD ADRES lub ukÅ‚adu 24C16 wszystkie wyprowa- do pamiÍci bÍdzie niemoÅ‚liwy.
SUBADRES bÍdÄ…cy binarnym adre- dzenia A0..2 pozostajÄ… wolne,
sem komÛrki pamiÍci, ktÛra ma byĘ a urzÄ…dzenie moÅ‚e adresowaĘ tylko
zapisana. JeÅ‚eli, jak w przypadku jednÄ… pamiÍĘ tego typu.
EEPROM-Ûw24C01A, pojemnośĘ pa- Producenci oferujÄ… juÅ‚ pamiÍci
miÍci wynosi tylko 128 bajtÛw, naj- EEPROM(24C32/64),ktÛrych pojem-
starszy bit subadresu jest ignorowa- nośĘ wykracza poza opisane wcześ-
ny. Potwierdzeniem odbioru subad- niej mołliwości adresowania. Z tej
resu jest znÛw sygnaÅ‚ ACK genero- wÅ‚aÅ›nie przyczyny WORD ADRES
Rys. 15.
Elektronika Praktyczna 9/98
24
N O T A T N I K P R A K T Y K A
Na list. 2 zamieszczona została adres equ 30h mov buf_adr,#adres_bufora
procedura asemblerowa obsługi pa- subad equ 31h ;adres bufora w pamięci RAM procesora
miÍci 24C02 przez procesorz rodzi- buf_adr equ 32h mov buf_space,#8
ny '51, taktowany zegarem do buf_space equ 33h ;odczytanych będzie 8 bajtów
12MHz. Procedura niejest mołezbyt wait equ 34h ;z pamięci EEPROM
elegancko napisana i zoptymalizo- counter equ 35h setb r_w ;ustawienie flagi odczytu
wana,alejejzaletÄ…jestto,Å‚eìÅ‚yjeî, r_w bit 0h call I2c ;wywoÅ‚anie procedury
poniewał pochodzi z funkcjonują- end_trans bit 1h
cego programu. JeÅ‚eli chochlik dru- subadr_trans bit 2h JeÅ‚eli odczyt siÍ powiedzie, pro-
karski czegoś nie popsuje, procedu- cedura wraca z wartością #0 w aku-
ra po dokładnym skopiowaniu po- Wywołanie procedury poprzedza mulatorze i rejestrze R7. Jełeli na-
winnaodrazuzadziaÅ‚aĘ. MoÅ‚natak- ustawienie parametrÛw okreÅ›lajÄ…- stÄ…piÅ‚ bÅ‚Ä…d (np. pamiÍĘ jest uszko-
Å‚e Å‚atwo jÄ… zmodyfikowaĘ do obsÅ‚u- cych jej pracÍ. Trzeba podaĘ adres dzona), w rejestrach znajdzie siÍ
gi innych pamiÍci z interfejsem I2C. ukÅ‚adu, subadres komÛrki, ustawiĘ wartośĘ #FFh. Korzystanie z proce-
Przed wywoÅ‚aniem procedury bit r_w okreÅ›lajÄ…cy rodzaj operacji dury musi uwzglÍdniaĘ ogranicze-
w programietrzebazdefiniowaĘ por- (0 -zapis, 1 -odczyt) oraz podaĘ po- nia związane z funkcjonowaniem
ty procesora, ktÛre majÄ… peÅ‚niĘ rolÍ czÄ…tek bufora w pamiÍci RAM pro- pamiÍci EEPROM takie jak zapis do
koÒcÛwek SDA i SCL. NaleÅ‚y takÅ‚e cesora i jego dÅ‚ugośĘ. Z bufora bÍdÄ… pamiÍci bajtu, strony, czas trwania
zadeklarowaĘ kilka bajtÛw i bitÛw zapisywane dane do pamiÍci EEP- cyklu zapisu itd. W przypadku nie-
wspÛÅ‚pracujÄ…cychz procedurÄ…. Przy- ROM lub podczas odczytu w bufo- ktÛrych asemblerÛw moÅ‚e byĘ ko-
pisanie wyjśĘ oraz adresÛw bajtÛw rze bÍdÄ… zapisywane dane z ukÅ‚adu nieczna zmiana skÅ‚adni zapisu pro-
jest dowolne i zaleły od programu, EEPROM. Przykładowe wywołanie cedury w celu dostosowania do wy-
w ktÛrym procedura ma pracowaĘ. procedury I2c z programu gÅ‚Ûwnego magaÒ asemblera.
PrzykÅ‚adowa deklaracja moÅ‚e wy- moÅ‚e wyglÄ…daĘ nastÍpujÄ…co: Ryszard Szymaniak, AVT
glÄ…daĘ nastÍpujÄ…co: ;odczyt danych z EEPROM
scl bit p1.3 ;linia SCL mov adres,#50 ;adres pamiÄ™ci EEPROM Program z list. 2 jest dostÍpny
sda bit p1.2 ;linia SDA mov subad,#0 ;odczytane będą dane po- na internetowej stronie EP, pod ad-
czÄ…wszy od subadresu =0 resem: www.avt.com.pl/avt/ep/ftp/.
Elektronika Praktyczna 9/98
25
Wyszukiwarka
Podobne podstrony:
Uklady zegarowe w systemie mikroprocesorowymPodstawy projektowania systemów mikroprocesorowych, cz 3Różnice w funkcjach zapisu danych w wewnętrznej pamięci EEPROM mikrokontrolerów AT89S8252 i T89C51RPodstawy projektowania systemów mikroprocesorowych, cz 8System mikroprocesorowyDydaktyczny system mikroprocesorowy DSM 51 Budowa systemuProgramator szeregowych pamieci EEPROM I2C sterowny z pakietu BASCOMPodlaczanie zewnetrznych ukladow do systemu mikroprocesorowegoSystemy mikroprocesorowe, systemy wbudowanePodstawy projektowania systemów mikroprocesorowych, cz 2system mikroprocwięcej podobnych podstron