I2C Seri Haberleşme ???

Başlatan alamutharemeynn, 27 Kasım 2016, 18:49:03

alamutharemeynn

Merhaba arkadaşlar. Pic 16F yada 18F'den herhangi biriyle bir I2C seri haberleşme uygulaması yapmam lazım. Tercihen 16F ile olursa daha iyi olur bildiğim tek pic olduğu için. I2C Seri Haberleşme uygulaması hakkında çok küçük bir bilgiye sahibim. Bilgi sahibi olanlar hem bilgi hemde bu uygulamayı nasıl gerçekleştireceğim hakkında yardımcı olursa çok memnun olurum. İnternet üzerinden yaptığım araştırmada çok yüzeysel bilgilere ulaştım ve bu bilgiler ışığında herhangi bir aydınlanmaya da ulaşamadım. Bu benim proje ödevim çok önemli şimdiden teşekkür ederim. İyi günler.

Cemre.

#1
Aslında forumda onlarca konu ve döküman, hatta PIC için yazılmış kütüphaneler vs mevcut. Bir iki arama ile erişilebiliyor.

Onun yanında ben I2C ile çalışırken şu sayfanın çok yararını görmüştüm. mikroC ile örnek de paylaşılmış. Bunu kullanıp kullanmamanız mesele değil, buradaki kütüphane aslında temel olarak yapılması gereken işlemleri fonksiyonlara bölüp yapmış. Write, Read, Start, Stop gibi temel fonksiyonları kendi başınıza yazabilecek durumdaysanız yine dökümanı inceleyerek ve mcu datasheet'ine başvurarak bunu yapabilirsiniz.

Benim tavsiyem, elinizde MCU ve I2C kullanan herhangi bir donanım yoksa Proteus indirin (proteus'ta i2c bus'ı inceleyebiliyorduk sanırım, i2c donanımı vardı), bir de bu şekilde hazır kütüphane sağlayan bir derleyici bulun ve basitçe okuma nasıl yapılır, yazma nasıl yapılır, kullanacağım donanımın adresini nasıl öğrenirim, bu adresi nerelerde kullanacağım, sıralı okuma nasıl yapılır, rastgele okuma nasıl yapılır, misal eeprom vs kullanılacaksa bir page'i dolduracak fonksiyonlar vs yazarak alıştırmalar yapılabilir. I2C'yi genel hatlarıyla özümserseniz kendi kütüphanenizi yazarken hiç zorluk çekmezsiniz.

http://embedded-lab.com/blog/lab-14-inter-integrated-circuit-i2c-communication/

İyi çalışmalar.
Aramanın gücüne inanın!

Sanırım yeni üye olan bir arkadaşsınız, başlık konusunda da forum kurallarını okumanızı tavsiye ederim.
https://www.picproje.org/index.php/topic,65932.msg518816/topicseen.html#msg518816

alamutharemeynn

Evet yeni üyeyim. Eğer bir kurala aykırı birşey varsa afedersiniz. Ayrıca yardımınız içinde çok teşekkür ederim. Fazlasıyla yardımı olacağını düşünüyorum. İyi günler :)

alamutharemeynn

Merhabalar birşey daha sormam gerekiyor. Ben Pic16F877A kullanacağım ve bunun için uygun I2C cihazını nasıl bulabilirim? Arattığımda sürekli Ardunio falan çıkıyor kafayi yiyeceğim yardımcı olun. Sıcaklık sensörü falan çıkıyor. Yapmak istediğim sadece seri haberleşmelerini sağlamak. Yardımcı olursanız çok sevinirim. İyi günler şimdiden.

mehmet

#4
Başlangıç için 24L02 gibi bir E2Prom kullanabilirsiniz.

Ek:
http://saeedsolutions.blogspot.com.tr/2012/12/pic16f877-i2c-code-proteus-simulation.html
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

yldzelektronik

@alamutharemeynn

I2C bir haberleşme alt yapısı.Birden çok ucu vardır.Yani en az iki ucu.Yapıyı incelediysen bir master en az bir slave olması gerektiğini görürsün.Haberleşmek istediğin cihaz nedir?Diğer uçta da bir pic mi kullanmak istiyorsun?Bir sensör mü, hafıza ünitesi mi, lcd ekran mı?

Tavsiyem önce biraz protokolü öğren.Sonra diğer detaylara cevap bulursun.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

alamutharemeynn

#6
Arkadaşlar cevaplarınız için teşekkür ederim. Kusura bakmayın pek bilgi sahibide değilim aslında projem olduğu için biraz hızlı hareket etmeye çalışıyorum. Burada amacım 2 pici haberleştirerek 16 tane ledi yakmak. Ancak problem şu ki ben proteusa I2C debugger olsun veya başka bir I2C olsun devreye yerleştirdiğimde karşıma çıkan SCL ve SDA ve TRIG(Debuggerda, diğer I2C yi koyduğumda bu W veya W' gibi bir çıkış oluyor.) Yalnız ben internetten bakıyorum I2C sıcaklık sensörü olarakta kullanılıyormuş, ama benim istediğim bu I2C sadece Master Pic16f877a yı diğer slave 16f877a ile haberleştirsin ve ledleri buna göre dipswitch ile yakıp kapatabileyim ama bakıyorum lcd var temperature vesaire var. Şimdi bahsettiğim bu protokolü yerine getirebilecek cihazı ne isimle aratarak bulabilirim? Yada hepsi aynı işi yapıyorda ben mi kendimi paralıyorum? Yardımınız için şimdiden teşekkürler. Ayrıca devre bu şekilde :


Cemre.

Ne cihazı yahu?

İki MCU'yu biri Master diğeri Slave olarak haberleştireceğim demişsiniz. Haberleşme protokolü olarak da I2C kullanacağım diyorsunuz. Şemayı da vermişsiniz, sorun yok gibi gözüküyor. Tamam işte, sıvayın kolları, başlayın kodlamaya...

alamutharemeynn

Sanırım ben anlatamadım. Şimdi devre hazır arkadaşlar, kodlarıda yazdım. MPLABX 'de ve Proteus'ta da denedim. Herşey güzel, devre çalışıyor. Ares'e attım yollarıda çizdim. Şimdi sıra baskı devrede. Yalnız baskı devrede bu I2C debugger'ın olduğu kısımda yani areste I2C 8 bacaklı olarak gösteriliyor. Buraya yerleştireceğim cihazı nasıl bulacağım bahsettiğim bu. Onu bulamıyorum yani.

baran123

Öyle bir cihaz yok. Ama onun işini yapabilecek cihaza Logic Analyzer Deniyor.
Sen sadece simülasyondan iş yapmak için onu oraya bağlıyorsun. Gerçek anlamda böyle bir şeye ihtiyacın yok.
Eğer o hattan geçen bilgileri çözmek istersen Logic Analyzer kullanabilirsin.