W

16F877A'da aynı anda DS1302 ve Harici EEPROM kullanımı.

Başlatan wishes, 13 Mart 2012, 08:27:28

wishes

merhaba.16f877a'da 24c serisi (I2C) eeprom

SCL   var   PORTC.3             ' Clock pin'i
SDA   var   PORTC.4             ' Data pin'i

şeklinde bağlanmış.

DS1302 gerçek saat entegresi ise RC4 (DTA), RC5 (RST), RC6 (SCLK) pinlerine bağlanıyor gözüküyor. yani data pinleri ortak. pic'in bacak özelliklerinde Rc4 pini SDI/SDA ( dijital i/o veya spi modunda data girişi veya i2c modunda i/o ucu) olarak geçiyor. anladığım kadarıyla sadece Rc4'e bağlamak zorundayım. ben bu ikisi çakışmasın diye saat entegresinin datasını RC7'ye bağlayabilir miyim?


bir de simulasyonda picbasic pro bağladığım eeprom'un ne kadar hafızası olduğunu nasıl algılıyor? direk olarak şu kadar byte eeprom ekliyoruz diye belirttiğimizi hatırlamıyorum.

teşekkürler.

ete

Bana kalırsa hiç bir şeyin yerini değiştirme.
DS1302 ile haberleşeceğin zaman RST bacağını HIGH'e çekerek haberleşeceksin. Haberleşme bitince rst bacağı low da kalacak.
Eprompla haberleşirken normal komutları vererek ve kontrol byte'ınıda vererek haberleşeceksin. Böylece kimse kimseye karışmadan haberleşme yapabilirsin.

Epromların kapasitelerini kullanıcı bilir. Bilir derken Data sheetlerinden öğrenirsin. Daha sonrada programda bu limitleri aşmamaya özen gösterirsin. Yoksa işlemcilerde bunubelirleyecek yada sınırlayacak bir komut yok maalesef.

Ete

wishes

ete hocam yalnız sürekli olarak haberleşmek zorundayım. lcd'de daimi olarak saat ve tarih gözükecek, lcd'de görülecek bilgileri de eeprom'dan alacak.

acaba saati c portunda eski yerinde tutarak, eeprom modelini değiştirip başka bir porta bağlayabilir miyim?

ete

İstediğin değişikliği yapabilirsin. Ancak ayrınıca hepsini ayrıman daha doğru olur. Ortak pin kullanmamaya bak. Yani DS1302 nin pinleri ayrı, Eprominkiler ayrı olsun.

Ete

Mucit23

Bence Eğer tasarım aşamasındaysan DS1307 kullan. I2C eeprom la RTC yi aynı hatta Bağla.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

wishes

aynı hatta bağlarsam çakışma olmaz mı mucit hocam. ikisi de aynı anda görevlerini yapabilir mi

Mucit23

Hayır çakışma olmaz zaten I2C nin en güzel taraflarından biri budur. Birden fazla slave cihazın aynı hata bağlanabilmesidir. Dolaysıyla Sen I2C ile Haberleşen Sensör, RTC, Eeprom, I/O modülü ve diğer birçok cihazı SDA ve SCL olmak üzere iki adet pin ile haberleştirebilirsin. Zaten Dikkat Edersen Her bir cihazın kendine özel bir Adresi vardır. Sen ilk başta Bu adresi girmezsen Slave sana cevap vermez. Hangi cihazı kontrol edeceksen onun cihaz adresini gireceksin. Bu bilgiler Datasheetlerde mevcut.

I2C mantığı bu şekildedir.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

wishes


wishes

son bir soru. eğer hatları ortak alırsam TRIS tanımlamalarında o pini 1 'mi yapmam gerekiyor 0'mı. eeprom tanımlarken ikisini de 00 yapıyorduk. RTC tanımlarken de üçünü 111

TRISC=%011?0000

'''''''''''''''
pinleri tek tek tanımladım, saat epey yavaşladı. normalde 1 saniye kademesi 1.5 saniye civarı atıyor.
    SCL    var       PORTC.3      ' Clock pin'i
    SDA       var       PORTC.4      ' Data pin'i

    RTC_RST     var PORTC.0
    RTC_CLK     var PORTC.1
    RTC_DTA     var PORTC.2

ete

İşin mantığını öğrenmen daha doğru olurdu.
Giriş olan pinler "1" yapılır , çıkış olan pinler ise "0" yapılır.
CLK pinlerinin hepside  Çıkış dır o halde bütün CLK lar "0" yapılacaktır.
DATA pinleri hem çıkışa hemde girişe çalışırlar. Bunu program düzenler. Bu nedenle başlangıçta Tris registerlerine sen "0" verebilirsin.
Bu durumda bütün bu pinlerin karşılığı tris registerleri sıfır olabilir.

RTC de 111 veriyoruz demişsinki oda yanlış bir ifade bence.

Ete

wishes


fatih88

mucit23 kardeşimin dedigi gibii I2C protokolunde bircok slave modül bağlaya bilirsin hangisiyle haberleşmek istiyorsan onun kontrol adresini yazıyorsun bilgi alışverişi yapabiliyorsun
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Powered by EzPortal