I²C Eeprom kullanımı hakkında

Başlatan Dagci-85, 03 Ağustos 2010, 13:03:14

Dagci-85

Merhaba

Arkadaşlar Eepromda page write modunda eeproma veri yazdırdıktan hemen sonra eepromun meşguliyetinin bitip bitmediğini nasıl anlarım acaba? İlk defa bu protokolü kullanıyorum yardımlarınız için teşekkürler.

Dagci-85

Sorunu hala çözemedim arkadaşlar  :-\

LukeSkywalker

Eepromun datasheetinde ne kadar beklemen gerektiği yazıyordur.

Dagci-85

Sorunu bekleyerek değil eepromu sorgulayarak çözmek istiyorum. Daha önceden SPI ile flash hafızalar kullandım (25P80). Bu entegrelerin durum kaydedicilerini okuyarak meşguliyetlerini sorgulayabiliyordum. Bekleme yapmak malesef pek sağlıklı bir çözüm değil.

Okuduğum dokümanlara göre sanırım eeprom meşgul iken gönderdiğim datanın ardından bana gönderdiği ACK sinyalini göndermiyormuş fakat tam anlamıyla oturtabilmiş değilim. Yardımlarınızı bekliyorum.

Teşekkürler.

Dagci-85

Sorunu hala çözebilmiş değilim arkadaşlar  ???

CLR

Merhaba

Uygulama yapmadan önce datasheeti okuman lazım veya projeye başlamadan önce istediğin özellikte bir eeprom veya komponent seçmeliydin. Eğer standart i2c eeprom kullanıyorsan onlarda bahsettiğin bir status registeri yok yani eeprom meşgul mu değilmi okuyamazsın. Bunun yerine datashette max. 10ms'de page yazılır veya chip silinir vs. yazar dolayısıyla bu kadar süre bekleyip sonra yeni page'i yazmalısın. Genelde 1 byte-page silmek/yazmak için 5ms gerekmektedir.
Knowledge and Experience are Power

LukeSkywalker

ACK bilgisi okunarak da yapılabilir. Kullandığın derleyiciye göre ACK bilgisini kontrol eden komutlar değişir. Ama eğer ki kendi protokolünü kendin yazıyorsan o zaman eepromun datasheetindeki sinyal diyagramlarını inceleyerek gelen veriyi kontrol edebilirsin.

Dagci-85

Çözdüm arkadaşlar, belki başka arkadaşlara da yarar anlatmaya çalışayım.

Seri olarak 8 bit bilgi gönderirken 8. bitten sonra 1 pals daha gönderiliyor. Yani toplamda 8bit ile 9 pals gidiyor. 9. palsde eepromdan veri okunuyor. Eğer gelen veri 0 (ACK) ise eeprom müsait, gönderilen veri alınmış anlamına geliyor. Fakat eeprom meşgul iken bize bu kez 9. bitte 0 yerine 1 (NACK) geliyor. Buradan da eeprom meşgul olduğunu ve gönderdiğimiz 8 biti alnadığını anlıyoruz. Bu biti kontrol ederek eepromun meşguliyetini anlayabiliyoruz arkadaşlar.

Herkese teşekkürler