Bascom AVR, atmega8 i pamięć at24c32

Cześć! Może mi ktoś wyjaśnić dlaczego poniższy programik w BASCOMie AVR działa z pamięcią at24c04, natomiast z at24c32 nie? Pamięć podłączona jest do ATMEGA8. at24c32 należy inaczej adresować???

Dzięki za pomoc Marcin

Dim a As Byte Const adresW = 174 Const adresR = 175

I2cstart I2cwbyte adresW I2cwbyte 1 I2cwbyte 3

I2cstop

Waitms 10

'--------------- teraz odczytamy to co zapisaliśmy ------------------

I2cstart I2cwbyte adresW I2cwbyte 1 I2cstart

I2cwbyte adresR I2crbyte a, Nack I2cstop End

Reply to
Myler
Loading thread data ...

powinno działać. 24c32 jest zbudowany z 16 stron po 256B. adres bazowy to

160 i 161 dla pierwszej strony. kolejne mają adresy aż do 191 i 192. więc trafiasz gdzieś w środek.

PC

Reply to
Pablo C

Użytkownik "Pablo C" snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:c6ov62$f6o$ snipped-for-privacy@atlantis.news.tpi.pl...

Wyczytałem w helpie, ale i tak sobie nie radzę: "when you want to control a chip with a larger memory like the 24c64 it requires an additional byte ' to be sent (consult the datasheet)" Wartość 160 albo w moim przypadku 174 jest adresem "device" podpiętego do i2c. Tak po prostu zaadresowałem urządzenie (pamięć).

Marcin

Reply to
Myler

adres komórki jest 16-bitowy, więc żeby zaadresować komórkę 1 musisz:

I2cstart I2cwbyte adresW I2cwbyte 0 I2cwbyte 1

a dopiero potem wysyłać albo czytać dane.

w.

Reply to
Wojtek Kaniewski

OK działa ;) Dzięki!!!

Użytkownik "Wojtek Kaniewski" snipped-for-privacy@SPAM.SPAM.SPAM> napisał w wiadomości news:c6p394$3ed$ snipped-for-privacy@atlantis.news.tpi.pl...

Reply to
Myler

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.