i2cread ve i2cwrite sorunu

Başlatan mavi, 05 Şubat 2007, 23:06:26

equ

teşekkür ederim bu şekilde çalıştı

program:
LCDOUT $FE,1

i2cwrite PORTC.4,PORTC.3,$A0,1,[a]
LCDOUT $FE,1,"a ",#a
pause 500
                 
i2cREAD PORTC.4,PORTC.3,$A0,1,[c]
LCDOUT $FE,1,"c ",#c

pause 500
goto program
end

AT24C512 ile denediğimde

lcd de önce
a 23    yazıyor, sonra
c 255


24C16B ile denediğimde ise doğru çalışıyor. 2 eeprom arasındaki fark nedir?

Mucit23

#16
24C16  16Kbit yani 2048 Byte hafızaya sahiptir. Adres 8x256 Byte halinde olur. Şöyle düşünün 24C16 nın içerisinde 8 adet sınıf var ve her bir sınıf içerisine 256 tane sıramız var. İşte İlk Device adresinin birinci, ikinci ve üçüncü biti bizim hangi sınıfa öğrenci göndereceğimizi belirtiyor.

image hosting gif
Yukarıdaki resmi incelersen açıkça belirtilmiş.R/W biti yazmamı yoksa okumamı yapılacağını belirttiğimiz bittir. Yazma yapılacaksa 0, okuma yapılacağı zaman 1 yazılması gerekiyor. B0,B1 ve B2 bitleri ise bizim hangi sınıfa öğrenci gönderip alacağımızı belirtiyor. Sen bu bitleri 0 olarak yazarsan sadece 1. sınıfa öğrenci gönderip öğrenci alırsın.  1. sınıf için B2,B1 ve B0 bitleri 000 olmalıdır. 2. sınıf için 001, 3. sınıf için 010, ........., 8. Sınıf için ise 111 yazmalısın. İşte eepromun içerisindeki sınıf seçimleri bu şekilde oluyor. Eğer bunu yapmazsan eeprom içerisindeki sadece 1. sınıfa öğrenci gönderip öğrenci alırsın.
   24C512 ise 512Kbit yani 64Kb hafızaya sahiptir. Datasheede bakarsanız adreslemenin iki byte halinde yapıldığını göreceksiniz. Adres değişkenini Word Tipi yaparsan sanırım sorunun çözülecektir.

equ

Yardım ve açıklıyıcı bilgi için çok teşekkür ederim. Sonunda çalıştırmayı başardım, tekrar teşekkürler.. :)

Mucit23