Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

24c04a sorun u

Başlatan eozkantar, 10 Nisan 2012, 11:39:55

eozkantar

Meraba arkadaşlar.
24C08A  alarm log u tutan saat yapmak istedim
Bu 24C08A ile 0-255 arası adresleri doğru yazıp okuyabiliyorum. Fakat 256-4096  arası adresler de sorun çıkıyor.  .bu eeprom 4 kbyte olduğuna göre 9 10 bitlik adreslere nasıl ulaşıcam.  daha önceki forumlarda çözüm göremedim Teşekkürler.
komutta mı hata var

I2Cout DPIN , CPIN , %10100000 , EPROMADRES , [ AY, GUN, SAAT, DAKIKA ]

I2CIN  DPIN , CPIN, %10100001 , EPROMADRES,[ RAY, RGUN, RSA, RDK ]

ferit06

proton help ten...
Example

' Send a byte to the I2C bus.
DIM VAR1 as BYTE                     ' We'll only read 8-bits
DIM Address as WORD                  ' 16-bit address required
SYMBOL Control = %10100000           ' Target an eeprom
SYMBOL SDA = PORTC.3           ' Alias the SDA (Data) line
SYMBOL SCL = PORTC.4           ' Alias the SSL (Clock) line
Address = 20                         ' Write to address 20
VAR1 = 200                           ' The value place into address 20
I2COUT SDA, SCL, Control , Address , [ VAR1 ]  ' Send the byte to the eeprom
DELAYMS 10                           ' Allow time for allocation of byte

sizin EPROMADRES değişkeniniz byte mı, word mü?

Mucit23

24C04 4Kbit Hafızaya sahiptir. Buda 512Kb eder.

Adres değişkeni dataheetten anladığım kadarıyla byte halinde olması gerekiyor.
24C02 de sadece 8 bitlik adresleme yapılabiliyor ama 24C04 de ise iki adet 256 byte lık sayfaya sahip. Sen bu sayfalardan hangisine yazacağına Device Adres kısmının 1. Biti ile ayarlıyorsun
Yani;
Device Adres= 1 0 1 0 A2 A1 P0 RW şeklinde oluyor
Buradan 0. bit Yazmamı yapılacak yoksa okuma mı yapılacak onu seçiyorsun. 1 ise okuma yapılıyor.
P0 Biti ise Hangi sayfadan yazıp okuyacağını seçiyorsun. 0 ise 1. sayfa, 1 ise 2. sayfaya yazıyorsun. Her sayfa 256 Bytelık.
A1 ve A2 ise adresleme bitleri.
Yani Gerçek hayatta 3 Numaralı pini yani A2 bacağını Sen P0 olarak kullanacaksın. 

ete

Mesaj başlığında 24C04 ama mesaj içinde 24C08A olarak ifade edilmiş.
Mesaja itibar edersek; bu eprom 4 x 256 byte = 8192 kbit kapasiteli bir epromdur.
Bazı epromlar direk 16 bitlik adres değişkeni kullanılarak bütün adreslerine ulaşılabilir. Bazılarında ise 256 bytlık bloklar halinde adreslere ulaşılabilir. Yani 8 bitlik adres değeri yanında birde blok seçmeniz gerekir ki bu eprom bu şekilde çalışmaktadır.
İki bilgi çok önemli birincisi Cihaz adresi diğeri de fiziksel eprom adresi.
Önce cihaz adresine bakarsak %1 0 1 0 A2 P1 P0 R/W  şeklinde dizildiğini görürüz. Bu bilgide yer alan P1 ve P0 blok seçme bitleridir.
O halde epromun ilk 256 bytelık kısmında bir adres seçmek için,  P1 ve P0 %00 şeklinde olmalıdır. Ardından adres bilgisi byte cinsinden gelmelidir.
İkinci 256 bytelık kısımda bir yerde adres seçmek için %01 ve peşinden 8 bitlik adres.
Üçüncü blok da bir adres seçmek için  %10 ve peşinden 8 bitlik adres bilgisi.
Son blokta bir adres seçmek için %11 ve peşinden 8 bitlik adres bilgisi verilmelidir.

Ete

Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

eozkantar

arkadaşlar teşekkür ederim  ilk defa ı2  kullanıyorum
eeprom  um 24C04
değişken'im de word
yazdıklarınıza göre
örnek komut yazarsam boylemi olmalı
I2Cout DPIN , CPIN , %10100000 , 1     , [ AY, GUN, SAAT, DAKIKA ]
I2Cout DPIN , CPIN , %10100010 , 300 , [ AY, GUN, SAAT, DAKIKA ]
I2Cout DPIN , CPIN , %10100100 , 600 , [ AY, GUN, SAAT, DAKIKA ]
I2Cout DPIN , CPIN , %10100110 , 1200, [ AY, GUN, SAAT, DAKIKA ]

ete hocam soylediğiniz cihaz adresinde %1 0 1 0 A2 P1 P0 R/W    A2  neyi ifade ediyor
birde chip te    a1  ,a2 yazan  2 ve 3 nolu bacaklar şase ye mi bağlanmalı
teşekkürler....

Mucit23

A2 İse eğer aynı hata birden fazla eeprom bağlamanı sağlıyor. 8K eepromlarda en fazla 2 adet eeprom aynı hata baplayabilirsin. Çünkü Sadece A2 pini dışarıya verilmiş. Eepromun bacak yapısına bakarsan A2 pinin görürsün. Eğer A2 pinini GND ye bağlarsan eeproma device adresi gönderirken A2 bitini 0  sıfır göndermelisin. Eğer Gerçekte A2 Pinini +5V a bağlarsan Device adresi gönderirken A2 Bitini 1 göndermelisin. Yoksa Eeprom sana cevap vermez. Bu şekilde A1,A2 ve A3 pinleri ile 8 Adet eepromu aynı hata bağlayabilirsin.
Ama 24C08 de sadece A2 pini dışarıya verildiği için 2 adet eepromu aynı hata bağlayabilirsin anlamına gelir bu.

eozkantar

başka yorumu olan yok mu arkadaşlar

Mucit23

Sana Ne işe yaradığını anlattım. Başka ne problemin var.

ete

#8
Anlaşılan gelen bilgiye pek güvenmiyor arkadaş.
Bir kerede ben açıklayayım da böylece Mucit23 ün verdiği bilginin doğrulu pekişmiş olsun.
A2 bir donanımsal bağlantı pinidir. Devrende tek bir eprom kullanabileceğin gibi iki tane epromu aynı hatta bağlayarak kullanabilirsin.
Bu bağladığın iki epromdan birisinde A2 direk GND ye bağlanacak (Buna eprom-1 diyelim) diğerinde ise Pullup direnci ile A2 ucu HIGH da tutulacaktır (bunada eprom-2 diyelim).
Sen epromlar ile haberleşirken şayet Eprom-1 ile haberleşmek istersen verdiğin ön cihaz kodunda A2 bitini 0 (LOW), Eprom-2 ile haberleşmek istersen A2 bitini 1 (HIGH) yapacaksın. Hespi bu . Böylece aynı yere bağlanmış iki ayrı eproma sadece A2 seçim bitleri ile ayırd ederek haberleşmiş olacaksın.

Burada tek bir seçim bitinden bahsettim. Şayet birden fazla seçme biti var ise (Device adres de) bu durumda onların farklı seçilebilme adedi kadar eprom devreye bağlanabilir. Şayet A1 ve A2 şeklinde iki seçim biti var ise bunların varyasyonları şöyle olacaktır;
%00
%01
%10
%11
gördüğün gibi 4 ayrı seçenek var ve sen 4 ayrı epromu anynı hatta bağlayarak kullanabilirsin demektir bu. Tabiiki yöntem yukarıda açıkaldığım şekildedir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

eozkantar

arkadaşlar verdiğiniz bilgilere teşekkür ederim ,anlamadım demedeim
örnek kod yazmıştım sadece doğrumu böyle mi olmalı diye sordum.....
tekrar tşk..

ete

Sorularını sorma biçimini değiştirmelisin. Daha anlaşılır detay vererek soru sorman gerektiğini anlamışsındır sanırım.

Az bilgi= Yanlış anlaşılma  bu eşitlik sürekli gerçekleşiyor.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com