AYNI DEVREDE BIR KAC PIC KULLANMAK

Başlatan oyhan, 12 Ocak 2005, 17:57:31

oyhan

Selam
Aynı devre üzerinde birden fazla pic kullanırsa; Haberleşmelerini en sağlıklı hangi protokoller ile sağlayabiliriz. Veri kaybı olmaması için interruptda kullanır isek bu seçilecek olan protokollerin cinsini sınırlarmı? Tecrübesi olan arkadaşlar varmı?
İyi çalışmalar dilekleriyle...
BİRLİKTEN KUVVET DOĞAR:

DumrulBey

Merhaba,

Bu iş için RS232 usulü (protocol) mükemmeldir ve kesme (interrupt) desteği de vardır. Aslında seçimi aktaracağın bilgiye, kullanım ortamı ve mesafeye göre belirlemek lazım. Her ne kadar aynı devre demiş olsan da arada mesafe olan ve toprağı (ground) birleşen iki PIC de tek devre oluyor. Bu konuda bir çok usul var (örn. CAN) ama en iyisi seri haberleşme, çünkü sade. Hatta bazı PIC'ler dahili (RB6-RB7) seri (USART) haberleşmesi vardır. Bu yüzden en kolayı bu olsa gerek.

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

Erol YILMAZ

Evet haberlesme de ayrı bir problem oldugu icin kartta tek pic ile isi bitirmeye calismak bence en iyisi.

Donanim destekli haberlesme en rahatı olur.
Bunun icin de rs232, i2c, spi var bazı piclerde.
rs232 tipi haberlesme daha genel. Bildigim kadarıyla rs232 protokol değil sadece arayuz. Yani  haberlesme de 1 gerilimi sudur 0 sudur diyor sadece.
En basiti rs232 tipi. Haberlesme de veriler karismasin diyorsan bir de CRC yazarsin verilerin ardından, alıcı da kontrol eder. OK der.
Ama clock sinyali icermedigi icin Verici alıcı zamanlayıcılarının hassas olması lazım. Yani kristal kullanman gerekiyor.

g6n

ben bircok projemde 2 pic  hatta 3 pic kullandim. (ayni kart uzerinde) topraklari ortakti ayrica clock sinyallerinide birinin cikisini digerinin girisine olmak uzere dizayn etmistim. benim karsilastigim sorun bilginin basini yanlis yakalamasiydi. cozum olarak 2 tarafli haberlesme yerine gonderici ve alici olarak tasarlamistim (projeme yetiyordu) genel standartlar yerine kendime ozgu bir seyler uydurmustum saglikli calistigini gorunce diger projelerdede copy+paste  :)  yaptim. kisaca anlatayim (zaten kisa) baslangic bilgisi olarak sabit bir sayiyi 3 kez gonderiyorum 3. uncu gonderimden sonra bytelar arasindaki beklemeden biraz daha uzun bir sure bekleyip esas bilgiyi gonderiyorum (bu fazla bekleme ns duzeyinde bir farktir; baslingic degerleri esas bilginin icinde varsa ayirt edebilmek icin) en son olarak esas bilgiden elde ettigim kontrol byte'ini gonderiyorum (aslinda son projemde iptal ettim gerek kalmiyordu)

bundan sonrasi  hurafedir 8)
  prensip olarak interrupt kullanmiyorum.  (hurafelerimin basi) yanlis ama ne yapayayim. haberlesme protokolu yaparken sabit uzunluklar kullandigim icin haberlesmenin kontrolunu zamani iyi kontrol ederek (olcerek) yapiyorum interrupt kullanmadigim icin islemci zaman acisindan sadece benim yazdigim kodlar icinde kalacagindan daha guvenli gibi geliyor, bazen yazdigim alt programin bile zaman kontrolunu yapiyorum.
iyi calismalar

oyhan

Peki elinize örnek kod varmı konu ile alakalı?
BİRLİKTEN KUVVET DOĞAR: