Pic 16f877A ile 24C64 e veri yazma/okuma

Başlatan husam881, 11 Ekim 2012, 19:45:23

husam881

Selamun aleykum;
Arkadaşlar I2C haberleşmesi konusunda yardımlarınızı istiyorum.  Bu konu hakkında forumda pekçok konu var.  Aşağı yukarı tamamını  incelemeye çalıştım.   Yapmak istediğimin aslında çok karmaşık olmadığını düşünüyorum.  Ancak bir türlü sonuca ulaşamadım. Bu yüzden de yaptığım işlemleri sizlerin incelemesini istiyorum.
PİC 16f877A ile 24C64 entegresine veri yazıp, yazılan veriyi okumaya çalışıyorum.
Ama bir türlü I2CWRITE ve I2CREAD komutlarıyla yazma/okuma işlemini gerçekleştiremedim. İncelediğim kodlara bakıyorum
benim yazdıklarımla aynı. Bir türlü sonuç alamadım. Yazdığım kodları ve uygulama devresini ekliyorum.
( Proglamlama dili = Pİc Basic, PROTEUS sürümü = 7.1 SP2)

uygulama devresi

basic kodu

Oceanicy

aslında bu konuda benim de sıkıntılarım var açıklayak biri olursa sevinirim bende.bu arada resimler tam görünmüyor.

FEHMİ_ASM


  Sorunun ne olduğunu tam olarak açıklayınız, bunu netleştiremiyorsanız I2C debuggeri ile iletişimin nerede koptuğunu ya da başlayıp başlamadığını görebilirsiniz. Detaya inmek lazım.
   
   Ayrıca, dirençlerin "dijital" seçilmesi önemli.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !

ÜC


husam881

#4
Arkadaşlar dosyaları tekrar ekledim. (Resim yerine proteus ve basic dosyalarını ekledim)

Alıntı yapılan: FEHMİ_ASM - 12 Ekim 2012, 10:06:14
  Sorunun ne olduğunu tam olarak açıklayınız, bunu netleştiremiyorsanız I2C debuggeri ile iletişimin nerede koptuğunu ya da başlayıp başlamadığını görebilirsiniz. Detaya inmek lazım.
   
   Ayrıca, dirençlerin "dijital" seçilmesi önemli.

Sorun anladığım kadarıyla I2C ile iletişim başlamıyor. Çünkü debugger da kontrol  bilgisi ($A0) gönderildikten sonra, alıntı biti (A) gönderilmeden alındı bitinin tersi (NACK) gönderilip işlem sonlandırıyor (P).


-Sayın umitco;
Gönderdiğin proteus dosyasını açamadım. Version hatası verdi.

http://www.dosya.tc/server22/mCFVQj/pic16f877a_24c64.rar.html

FEHMİ_ASM

#5
   1. 24C64, 2 Byte adreslemesi olan bir eeprom. Adresi iki byte olarak giriyor musunuz? (A0 , 00, 00 , XX)
   2. WP ucunu Pull-up'a çekip pic le kontrol ediniz. Eeproma yazabilmek için bu noktayı da yazılımla Ljk-0 yapınız.
   3. Eğer daha donanım adres verisini (A0) gönderdiğiniz gibi hemen peşine Nack verisi alırsanız; A0,A1,A2 pinlerinin şase potansiyelinde olup olmadığını    kontrol edin. Yani bunların değeri simülasyonda 0 (gerçek ortamda eksi) olmalıdır
   4.  SSPCON registerinin SSPEN bitinin aktif olduğundan emin misiniz?
   5.  Kullandığınız kristale göre SSPADD registerine uygun değer yükleniyor mu? Bu değeri netten araştırınız.

    Yazılım için birşey deyemeyeceğim, basic bilmiyorum. Ayrıca zahmet olacak ama bir şema yükleyin.

   -------------------------------

    Ayrıca, Master I2C için 10 bit adreslemede, SSPRON Reg.in SSPM1/2/3/4 bitlerinin neden 0000 olarak yapılandırıldığında iletişimde kaldığını / iletişimi sorunsuz yaptığını bilen birisi açıklarsa iyi olur.
   
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !

ÜC


husam881

Uygulama devresi
http://www.dosya.tc/server22/sHzMSX/_EMA.JPG.html

Alıntı yapılan: FEHMİ_ASM - 12 Ekim 2012, 16:15:24
   1. 24C64, 2 Byte adreslemesi olan bir eeprom. Adresi iki byte olarak giriyor musunuz? (A0 , 00, 00 , XX)
   2. WP ucunu Pull-up'a çekip pic le kontrol ediniz. Eeproma yazabilmek için bu noktayı da yazılımla Ljk-0 yapınız.
   3. Eğer daha donanım adres verisini gönderdiği gibi (A0) hemen peşine Nack verisi alırsanız, donanım pinlerinin şasede olup olmadığını kontrol edin.
   4.  SSPCON registerinin SSPEN bitinin aktif olduğundan emin misiniz?
   5.  Kullandığınız kristale göre SSPADD registerine uygun değer yükleniyor mu? Bu değeri netten araştırınız.

    Yazılım için birşey deyemeyeceğim, basic bilmiyorum. Ayrıca zahmet olacak ama bir şema yükleyin.

   -------------------------------

    Ayrıca, Master I2C için 10 bit adreslemede, SSPRON Reg.in SSPM1/2/3/4 bitlerinin neden 0000 olarak yapılandırıldığında iletişimde kaldığını / iletişimi sorunsuz yaptığını bilen birisi açıklarsa iyi olur.
   


1. Adres konusunda sıkıntı yok. Evet 2 byte olarak giriyorum.
2.WP ucundan ne kasteddiğinizi tam anlamadım.
3. Donanım olarakta sıkıntı görünmüyor.
4. Ben basicteki I2C iletişim komutlarını (I2CWRITE ve I2CREAD) kullandığım için PIC in kaydedici(register)leriyle işlem yapmıyorum. Hazır komutlar o işlemi gerçekleştiriyor.

Alıntı yapılan: umitco - 12 Ekim 2012, 16:44:20
ekteki dosya isis 7.0 dosyası olarak yüklendi


http://www.dosya.tc/server22/2tSN3M/24C_7.0_.rar.html

Gönderdiğin dosyayı inceledim. Fakat doğru çalıştığından emin değilim. Anladığım kadarıyla S1 değişkenini 1 den 10 kadar artırıyor. Her artırmada EEpromun 00H adresine kayıt yapıyor. Daha sonra bu değeri okuyor. Ancak I2C debugger ile kontrol ettiğim zaman hiç bir işlem görünmüyor.

İlginiz için çok teşekkürler. Sonunda yazdırmayı başardım. Nasıl oldu derseniz; pull-up direnç değerlerini değiştirince sorun çözüldü. Ama okuma işleminde özellikle arka arkaya okuma yaptığım zaman rastgele değerler okuyor veya ilk 2 veriyi doğru okuyor 3.yü yanlış okuyor sonraki değerleri doğru okuyor.

FEHMİ_ASM

#8
Alıntı yapılan: husam881 - 12 Ekim 2012, 19:00:02
okuma işleminde özellikle arka arkaya okuma yaptığım zaman rastgele değerler okuyor veya ilk 2 veriyi doğru okuyor 3.yü yanlış okuyor sonraki değerleri doğru okuyor.

      Ardarda her okuma arasına (uygun değerini test ederek bulabileceğiniz) bir süre koyarsanız sorununuz  çözülecektir. Ayrıca sayfa okumayı da tercih edebilirsiniz.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !

husam881

Arkadaşlar  verdiğiniz bilgiler için çok teşekkürler. Ben bu konuya bir süre ara veriyorum. Yoksa kafayı yiyeceğim. Yazma da sıkıntı yok gelgelelim okuma işini bir türlü gerçekleştiremedim.  Sayın FEHMİ_ASM söylediğiniz gibi her okuma arasına süre koydum ama yinede istediğim sonucu elde edemedim. Şöyle bir kafamı toparlayayım konuyla tekrar ilgileneceğim inşaallah. İlginiz için teşekkürler.