Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: oongit - 28 Kasım 2010, 09:21:17

Başlık: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 09:21:17
Merhaba arkadaşlar;

Diyelim ki; 5 adet PIC var (16F84A, 16F628A falan...), bu PIC'lerden aynı anda gelen bilgileri okuyup, başka bir ana işlemci olan F877 ile okuyup GLCD ekrana yazdırmak gibi bir şey mümkün müdür?

2 adet işlemci arasında olabildiğini biliyorum ama, 2'den fazla işlemci de böyle bir durum sözkonusu olabilir mi?

Teşekkürler...
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: Tagli - 28 Kasım 2010, 10:20:53
Olay tamamen sana kalmış. I2C veya SPI gibi hazır bir protokolü de kullanabilirsin (ki birçok PIC'te hazır dahili modülü bulunur) veya normal seri iletişim ile PIC sayısı kadar hat da çekebilirsin. Yalnız "aynı anda" gerçekleşmez bunlar. Master konumundaki PIC'in diğerlerine sorgu göndermesi ve varsa yeni verileri alması uygun olur.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: sigmoid - 28 Kasım 2010, 10:28:11
picler arasindaki mesafe fazla ise rs485 kullanabilirsin.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 10:30:03
Alıntı yapılan: abdullaho - 28 Kasım 2010, 10:28:11
picler arasindaki mesafe fazla ise rs485 kullanabilirsin.
Aynı kart üzerinde...
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 10:31:13
Alıntı yapılan: Tagli - 28 Kasım 2010, 10:20:53
Master konumundaki PIC'in diğerlerine sorgu göndermesi ve varsa yeni verileri alması uygun olur.

Sorgu göndermeden, yani Master ya da Slave olmadan, sadece ilgili pinin okunması mümkün değil midir peki?
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: neural - 28 Kasım 2010, 11:38:58
Yazacağın uygulamaya bağlıdır. Yapmak istediğini biraza üstü kapalı anlatmışsın.
Göndereceğin ve alacağın bilgilerin içeriği neler?
Tek pin ile yapmak istediğin bir seri haberleşmemi yoksa basit bir bit okumamıdır?

Eğer okuma yapacağın istemcilerden gelen veri; farklı konumların sıcaklık bilgisi, konum bilgisi vb. şeyler ise ve bunların hangi noktalardan geldiğini anlamak istiyorsan,

her bir istemci için ayrı olarak tek pin kullanırsın. Ama bu durum sistemin esnekliği açısından kötü bir durumdur.
her bir istemci için tek pin kullanırsın. Bu durumda Sahip - Köle ilişkisi kullanman gereklidir. Bu durumda ise sistem esnek olur. Daha sonra sistemi genişletmen mümkün olur.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: X-Fi - 28 Kasım 2010, 12:08:17
Fxdev inde dediği gibi
Tüm slave Rx leri birleştirip 877nin Tx ine
Tüm slave Tx lerini bir diyot ile 877 nin Rx ine pull up ile girerseniz teker teker sorup cevap isteyebilirsiniz.

veya I2C protekolü slave master çalışma moduna uygun standart bir yazılım ile yapılır artı olarak hızlıdır ve diyotlardan kurtulursun.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: iyildirim - 28 Kasım 2010, 12:25:46
X-Fi
iletişim TTL seviyesinde olacağına göre pull-up yapmamamız gerekmez mi?
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: X-Fi - 28 Kasım 2010, 12:52:02
hocam slave piclerin TX çıkışları sürekli "1" konumundadır hepsini birleştirirseniz "0"a çekme şansınız yok bu yüzden seri diyotlarla birleştiriyoruz ve master'ın Rx ine giriyoruz ancak bu konumda diyotlardan sadece 0' geçişi olacağından master RX'in pinin 1de kalmasını pull-up ile sağlıyoruz.

Veyahut benim kullandığım bi yöntemi söyleyeyim usart pinleri PORTB de olanlar için geçerli Rx pinini yanındaki pin ile kısadevre yapın ve diğer pini input yapıp internal pull-up'ını açın oda RX'i "1" de tutacaktır.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: justice_for_all - 28 Kasım 2010, 13:27:10
piclerin birini master diğerlerini ise slave yaparsn her pice ayrı adres verirsin ve master adreslere göre bilgi alıp verir slaveler ise sadece adres kendini aitse mesaja cvp verebilir...
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: iyildirim - 28 Kasım 2010, 13:32:20
@X-Fi
çok fazla işlemci tanımıyorum. dspic ve 32 lerde uart modülü ttl seviyesinde iken active high çalışıyor. gönderilen birşey yok iken hat low'da kalıyor. max232 gibi bir çeviriciye girince sinyal invert edilip voltajı yükselip rs232 standardına ulaşılıyor diye biliyorum.

sizin söylediğiniz yöntemde de diyotların katotları slave tarafında oluyorsa anladım sanırım.

justice_for_all un söylediği yöntemi datasheetlerde bende okumuştum ancak hiç adresli uart iletişimi denemedim.  Bu yapıda da master slave var. ancak kodlama vs. gibi şeyleri düşününce bana göre UART, SPI'dan daha kolay kullanılabiliyor diye düşünüyorum.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: justice_for_all - 28 Kasım 2010, 13:52:21
uart yamanı daha kolay olur die dusunuyorum...bende onceden spi ile denemiştim ama bilgi alışver.şini başaramamıştım...
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: X-Fi - 28 Kasım 2010, 13:52:59
iyildirim hocam haklısınız üst seviye modellerinde invert var aklıma bişey daha geldi yazılımda çözülebilecek bir yöntem daha.

Tüm TX,RX ler birleşip master a direk girilir.

Master piclere isimleriyle sorar bunu hepsi dinler kendisine ait olmayanlar (SPEN=0) seri portu kapatıp TX çıkışını input yaparlar hat boşalmış olur ismin sahibi bilgisini master a gönderebilir çakışmadan.

Burada sorun paket boylarının(zamanlarının) standart olması lazım ki cevap vermiyecek olan slaveler hattı nekadar boş bırakması gerektiğini bilip sonra tekrar dinlemeye geçebilsinler. 

Şimdi bu yöntemde diyotlara da gerek kalmadı çakışmayı ortandan kaldırdı.

Biz hep usartdan bagsediyoruz ama en başdada söylediğim gibi ben olsam I2C ile haberleşirdim geliştirmeye açık bir haberleşmeniz olması herzaman iyidir sınırlı çözümler ilerde elinizi kolunuzu bağlayabiliyor bunlarıda göz önünde bulundursunuz.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: iyildirim - 28 Kasım 2010, 14:08:41
Sanırım en doğru çözüm bahsettiğiniz bağlantı yöntemi ile  (tüm pinlerin birleştirilmesi)  UART modülünü RS485 olarak konfigüre edip slavelere de bir adres atamak olacak.
Bu durumda da çakışmaları engellemek için yine master-slave yapısı olmalı. İlla bir idareci gerekiyor. Birde bu durumda gelen data paketlerinde de adres bilgisi olmalı.

I2C protokolünü sevmememin nedeni iletişim sırasında başından ayrılamamanız.  Kesme li kullansanız bile ancak bir byte lık başından ayrılınabiliyor. I2C 400KHz geçemiyor. SPI biraz daha rahat ve çok daha hızlı. UART ise daha kullanılabiliyor ve megabitlere çıkılabiliyor ve sadece iki bağlantı yetiyor. Bu nedenle seçme şansım varsa basitliği nedeniyle UART'ı tercih ediyorum.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: X-Fi - 28 Kasım 2010, 14:21:34
evet mantıklı usart ve SPI hızlı benim I2C dememin sebebi haberleştiğiniz slave ler birer pic olacağından diyelimki sisteme eklenti gerekti slaveler belirsiz bir zamanda master a acil bilgi iletmesi isteniyor usartda bu yöntem çöker sorgu yapmanız lazım ama I2C çalışır.
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 15:19:49
http://img337.imageshack.us/i/adszmg.jpg/

Yapmak istediğim buna benzer bir şey... F877'ye bağlı 2-3 adet 628 olduğunu düşünebiliriz... F877'nin şimdilik yapacağı ilk şey; 628'den gelecek 1 ve 0 bilgilerini saymak... Basit bir frekansmetre gibi düşünülebilir sanırım...
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: kudretuzuner - 28 Kasım 2010, 15:23:37
Merhaba
Takip ettiğim başka bir forumda şöyle bir çalışma gözüme çarptı.Tasarlayan arkadaşdan müsaade almadım ama forumda açık olarak yayınladığına göre bir sakıncası olmaz herhalde.İsis devresine ETİK davranmak adına kendisinin nicini ben ekledim.Kolay gelsin
http://www.4shared.com/file/S-ccHH-r/3_pic_aras__haberleme_2.html
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 15:37:45
Eklediğiniz linkteki dsn dosyalarını açamıyorum. Proteus versiyonum düşük kalıyor. Acaba bu konunun geçtiği sayfanın linkini verebilmeniz mümkün mü?
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: iyildirim - 28 Kasım 2010, 15:48:49
Amaç sadece sıfır ve birleri saymaksa yani bit sayacaksanız, 877 de bir clock oluşturun, her bir 628'den  877 'ye ayrı bir bağlantı yapın. 877 clock sinyaline basınca 628ler  int kesmesinde hattı sifır veya bir yapsın. 877 de pinlerin durumuna bakın. 16 serilerini bilmem ama 877 de varsa input capture modülünüde kullanabilirsiniz.  Eğer senkronizasyon çok önemli değilse clock sinyaline de gerek kalmaz. Bu durumda 628 istedikleri zaman bilgilerini gönderir. 877'nin IC modülü de IC kesmesinde alır.

Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: kudretuzuner - 28 Kasım 2010, 15:56:07
Merhaba
7.0 versiyon olarak save ettim.Buyrun.
http://www.4shared.com/file/7sztyXIp/3_PIC_Haber_7v.html
Başlık: Ynt: PIC'ler arası haberleşme
Gönderen: oongit - 28 Kasım 2010, 16:17:26
İnceleyeceğim, teşekkürler...