Haberler:

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

Ana Menü

i2c hakkında

Başlatan picpicpic, 10 Temmuz 2012, 16:01:39

picpicpic

Merhaba, şuanda ds1621 sıcaklık sensörüyle uğraşıyorum çözemedim, şöyle sorularım olacak, SDA pini hem giriş hem çıkış işlemi yapıyor gördüğüm kadarıyla, tris değerini ne olarak ayarlayacağız, SCL pini giriş mi çıkış mı olacak, SDA ve SCL pininin dirençle pull-up yapılması gerekir mi, yoksa sadece SDA'nın pull up yapılması yeterlimidir, ve genel olarak dikkat etmem gereken nelerdir? Cevaplarınızı bekliyorum teşekkürler.

JOKERAS

Selam,

SCL pin'in sadece çıkış olacak.               "Master -----> Slave".
SDA pin'in hem giriş hem çıkış olacak.    "Master <---->Slave".

I2c Hattı hem SCL hemde SDA pullup yapılmalı,özellikle SDA hattındaki data Pullup'tan dolayı ıdle olacak

PİC C için şu şekilde yapabilirsiniz,basic bilmiyorum.

#define TRISx  SCL_DIR //Bu Trıs'ı sadece çıkış oarak kuracaksınız.
#define PORTx SCL

#define TRISx  SDA_DIR //Bu Trıs'ı hem giriş, hem çıkış olarak yönlendireceksiniz.
#define PORTx SDA

Aslında konu basit,I2C protokolünün en önemli noktaları Start - Stop
koşulu ve Ack 'dır onları çözerseniz gerisi çok daha kolay olur.

Tagli

I2C'nin çalışma mantığı fiziksel seviyede hep kafamı karıştırmıştır. Pek de anlamaya çalışmadım zaten. Donanımsal modülü kullanırsan bu ayrıntıları düşünmek zorunda kalmazsın. Donanımsal modül ile Start, Stop, ACK eylemleri, assembly kullanıyor olsan bile tek komutta yapılabiliyor.
Gökçe Tağlıoğlu

picpicpic

Alıntı yapılan: JOKERAS - 10 Temmuz 2012, 20:06:32

SDA pin'in hem giriş hem çıkış olacak.    "Master <---->Slave".


Hocam ben zaten basic kullanıyorum tek komutla yapılıyor okuma ve yazma işi, ama başta tris değerine ne demeliyim onu anlamadım, hem giriş hem çıkış nasıl oluyor acaba i2cread yada i2cwrite komutu kendisi mi ayarlıyor tris değerini? benim sensörüm bozukmuş buarada o yüzden okuyamıyormuşum

omereliusuk

#4
Include "MODEDEFS.BAS"
ds1307 için
aygıtın belleğindeki adres 0 saniye
aygıtın belleğindeki adres 1 dakika
aygıtın belleğindeki adres 2 saat
aygıtın belleğindeki adres 3 haftanın günü
aygıtın belleğindeki adres 4 gün
aygıtın belleğindeki adres 5 ay
aygıtın belleğindeki adres 7 yıl
i2cread SDA,SCL,$D0,0,[saniye]
i2cread SDA,SCL,$D0,1,[dakika] 'gibi kodlarla
veya

Dim zaman [7] As Byte
i2cread SDA,SCL,$D0,0,[str\7 zaman]
gibi tümünü bir seferde alabilirsin. i2c pinlerini çıkış olarak tanımlayacaksın ve dirençle +5 volta bağlayacaksın.  ayrıca bir an evvel basic'i bırakıp c ile uğraşacaksın ki ileride benim gibi
cırmalayıp durmayacaksın.
///////////////////////////////////////////



i2cread SDA,SCL,$D0,0,[str\7 zaman]
oku kodu  datapin, clockpin, aygıtın adresi, aygıtın belleğindeki adres,[okuyacağın bilgiyi aktaracağın değer]
i2cwrite SDA,SCL,$D0,0,[str\7 zaman]
yaz kodu  datapin, clockpin, aygıtın adresi, aygıtın belleğindeki adres,[okuyacağın bilgiyi aktaracağın değer]

picpicpic

modedefs'i neden include ettiğini anlayamadım seri iletişimde kullanılmıyor mu o..

Alıntı yapılan: omereliusuk - 10 Temmuz 2012, 22:10:45ayrıca bir an evvel basic'i bırakıp c ile uğraşacaksın ki ileride benim gibi
cırmalayıp durmayacaksın.
///////////////////////////////////////////


Pbp'de yapılmış akılalmaz uygulamalar gördüm önemli olan kendini geliştirmek, biraz da assembly bilgisi katarsan yanına yapamayacağın iş kalmaz

omereliusuk

yorum yok o zaman.En iyi bildiğin yol en kestirme yoldur diyip geçiyorum. Allah basic'ini açık etsin. :)))