İKİ PİC ARASINDA BİR KABLO İLE NASIL İLETİŞİM KURAR

Başlatan koray351, 13 Şubat 2005, 00:41:41

koray351

ARKADAŞLAR YARDIMINIZA İHTİYACIM VAR BENİM SORUNUM İKİ PİC ARASINDA TEK KABLO ÜZERİNDEN İLETİŞİM BU BENİM DÖNEM ÖDEVİM YARDIMCI OLURSANIZ ÇOK SEVİNİCEM!! :roll: :cry:

z

Tek kablo derken tek bir iletken hattan mi bahsediyorsun?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

SpeedyX

tek kablo içerisinde 3-5-8-13 tel de olabilir.

çift yönlü bir iletişim mi yapcaksın ve tel sayısı kaç, mesafe nekadar?

koray351

ben size komple benim ödevi yazayım

şimdi iki tane pic var bu iki pic bir tane iletkenle birbirine bağlı iki pic ede bir led ve bir buton bağlı bi butona basınca diğer pic in ledi yancak diğer butona basınca ötekinin led i yancak lütfen yardımcı olun alkıma bişey gelmiyo bi de bu dönem ödevim

aster

şöyle yapsan olurmu ,
picleri bir er portlarından birbirine bağla, her birinde birer led ve birer buton koy
birinin butonuna basınca diğer pike bagli olan port çıkış versin öteki de onu giriş olarak algılasın ve ledi yaksın
yani birbirine bağlı oldukları portları hem giriş hem çıkış olarak kullan
tersi içinde aynı olay ne dersin ?

koray351

tamam zaten yapmam gereken de o ama bi port u nasıl hem giriş hem çıkış olarak kullanacağımı bilmiyorum lütfen nasıl yapacağımı tarif edermisin??

tnen

Merhaba koray bilmem işine yarar mı ama http://groups.yahoo.com/group/PicProjeUP/files/ ' a senin için bir dosya upload ettim.pictopic haberlesme klasorunun altında acık kod , hex file ve proteus 6.2sp5 de hazırlanan similasyonu burda iki pic arasında seri haaberlesme kullandım.Tek hat değil ama işine yarar sanırım. Bu arada eger picler birbirinden uzaklıgı ne olacak bilmediğim için RS232 yada 485 kullanman gereebilir.

aster

Koray dostum, eğer hayatta bir şeyler yaptım demek istiyorsan bu işin burada sana yön gösterilerek yapılmasını istiyorum
nedeni nereye kadar bedava yaşıyabilirsin, yarın bir işe girdiğinde sana buradaki gibi yön gösterenler olmayacak sen kendi bilginle başbaşa kalacaksın o yüzden nacizhane sözlerimi dinle ve bu işi burada sindir ama sindir
Evet şimdi bu işi bu arkadaşa nasıl yapacağını bir veya birkaç arkadaşım anlatarak izah edebilirmi ?

koray sende elinde neler var izah et programlayıcı, pic vs ona göre işi hızlandıralım

optech

Bana gore mantik su olmalidir:

* Akisi butona basilmisken ve basilmamisken diye ikiye ayirmak lazim.
* Basilmamisken akisi icinde
-1- buton kontrol edilmeli
-2- senin istedigin bir pin mesela portb nin 0. pini giris olarak ayarli olmali. bu pinde "1" algilandiginda led e cikis verilmeli.
* Butona basildigi anda giris konumunda olan portb nin 0 inci pini cikis yapilmali ve diger pic e "1" gonderilmeli. Butondan cekildigi anda basilmamisken akisina gecmeli.

Bu sekilde tek bir kodu iki pic e yuklersin ve ikisi de calisir.
Kolay gelsin...

rr

Sorunuza cevap yazmaya çalışacaım ama sorunuzdan anladığım kadari ile kolay bir olay değil.
-iki pik giriş durumda olmalı
-Girişler Int kesme port uçları kullanılmalı
-Eğer birisi bilgi gönderme durumuna geçerse çıkışı başlangıç için belli süre high yapmalı eğer 1 ,0 dataları gönderecekse süreleri farklı olmalı
-Alıcı pik kesme ile aktif olmalı ve zamanı ölçebilmeli
-Örnek zamanlar Başlangıç 100 ms
- Data high  50 ms
- Data Low    25 ms
-Paket sonu 200ms
Paket organizasyonu yapılmalı veriler 8 bit mi 16 bitmi 32 bitmi vs
Mesela 16 bitin 8 i adres  8i data olabilir
Alıcı Paket organizasyonuna göre dataları sayarak verileri tam aldığını kontrol etmeli.
-Dataları aldıktan sonra geriye alındı dataları bilgisini göndermeli
-Paket organizasyonunda handler işlemler için data serileri belirlenmeli
-Kolay gelsin

ete

İlk düşünce olarak aklıma şöyle bir çözüm geldi.
İki adet pic var. Her ikisinin RB.1 bacağına buton bağlı. Her ikisinin RB.2 bacağına Led bağlı. Her ikisi RB.0 bacaklarından birbirine bağlı.
RB.0 kesmesi açık ve RB.0 lar giriş olarak ayarlı.

Şimdi A pic'inden butona basıldığında;
- Kesme disable yapılıcak
- Porb.0 çıkış olarak ayarlanacak
- Portb.0 dan Serout komutu ile 65 gönderilecek.
- Port tekrar giriş olarak ayarlanıp kesme açılacak.

Şimdi B pic'inde neler oluyor onu gözleyelim.
- PortB.0 dan seri bilgi gelince kesme çalışacak ve gelen bilgi 65 ise LED yakılacak. Led yanık ise söndürülecek.

Bu olay A pic'inde de aynen uygulanacak.
Dolayısıyla her iki pic de tek kablo üzerinden haberleşmiş olacak.

Bence bu sistem çalışır gibi geliyor. Bir ara deneyeceğim.

Kolay Gelsin
ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

yıldırım ak

Eğer ödevin sadece buton ve ledler için ise oldukça basit bir mantıkla yapılabilir.

1- Her iki mikrokontrole ait iletişim pini giriş olarak atanmalı ve pulldown veya pullup direnci kullanılmalı.

2- Her iki mikrokontrolde buton takibi ile iletişim pininin kontrolünü peşpeşe yapmalı veya bunlardan biri veya her ikisi için kesme kullanmalı. buton girişinde veya iletişim pininde değişiklik olduğu anda ilgili rutine yönlenmeli.

3-

a-) Buton girişinde değişiklik olur ise ;
İletişim pinini çıkış yapmalı, pinin asıldığı yönün tersine data yazılmalı. Buton bırakılıncaya dek beklemeli ve pini tekrar giriş yapmalı

b-) İletişim pininde değişiklik olur ise;
led yanıyor ise söndürmeli, sönüyor ise yakmalı ve iletişim pininde bir değişiklik daha oluncaya dek beklemeli.


Bu mantıkla yazıldığında butona bir defa basmak diğer mikrokontrole bağlı ledi yakar, ikinci basış söndürür. Tek hat üzerinden iletişimde hata olmasın, her ne kadar mümkün olmasada iki butona basış aynı ana denk gelebilir denirse iletişim pini bir kaç defa giriş çıkış yapılarak ve zaman faktörü kullanılarak engellenebilir.

Tek hat kullanılacağı için I2C gibi seri iletişimler kullanılamaz. Eğer led dışı datada yollamak istersen aynı USART da olduğu gibi zaman kontrolü ile data transferi yapabilirsin. Ancak iletişim tek hattan olacağı için transfer öncesi karşı mikrokontrolle alıcı-verici belirleme için bir yöntem uygulaman gerekir.

Bunların dışında önemli olan hattın tek olması ise pin sayısının önemi yok ise ADC kullanılabilir. İletişim tek hattan yapılır ancak verici hat üzerine 1 den fazla pin kullanarak voltaj bindirir. Yok eğer pinde tek olacak dersen o zaman bu voltaj PWM ile ayarlanabilir.

Saygı ve Sevgiler...
"... Bana kulluk et; Beni anmak için namaz kıl" (Taha 14)

SpeedyX

evet dostum. bişeyler uydurmaya çalışalım senin için...
iş konusu açılmışken, hala işsizim. yokmu şöyle eli yüzü düzgün bir iş :cry:

şema bu... birer buton ve tek bir hat var... tabi bunu bu şekilde çok uzun yapamazsın. neyse artık orasınıda sana bırakalım... (fiberoptik kullan :))

iki pic için de aynı programı yazacağız. bunu iyi kavra diye asm ile yacazağım. isteyen olmaz sanırım ama olursa pbp veya c ilede yaparız.

       ; coded by SpeedyX
        LIST    P=16F84
        INCLUDE "P16F84.INC"

        __CONFIG _WDT_OFF&_XT_OSC&_CP_OFF&_PWRTE_OFF

 #define        Buton           PORTA,0
 #define        Led             PORTB,6
 #define        SeriPin         PORTB,7

        org     h'00'
        clrf    PORTB
        clrf    PORTA
        bsf     STATUS,5
        movlw   b'00000001'
        movwf   TRISA
        movlw   b'10000000'
        movwf   TRISB
        bcf     STATUS,5
        clrf    PORTB
        clrf    PORTA
Main    btfsc   SeriPin
        call    LedTersle
        btfss   Buton
        call    SeriVeri
        goto    Main
        
LedTersle
        btfss   Led
        goto    $+2
        goto    $+3
        bsf     Led
        goto    $+2
        bcf     Led
        return
        
SeriVeri
        bsf     STATUS,5   ; pin çıkış yapılıyor.
        bcf     TRISB,7
        bcf     STATUS,5
        bsf     SeriPin
        nop                ; biraz bekleme
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        bcf     SeriPin        
        bsf     STATUS,5   ; pin giriş yapılıyor.
        bsf     TRISB,7
        bcf     STATUS,5
        return


programda buton gecikmeleri falan filan ihmal edilmiştir.
sadece mantığı anlatmak istedim.
bu programı iki pic e de yüklerseniz ve tabi buton gecikmeleride koyarsanız... düzgün bir şekilde çalışır.
bundan iyisi şamda kayısı :)
Saygılar.

bsivgin

Buradaki veri trafiği 2 yönlü olmasaydı aşağıdaki çözüm mükemmel olurdu. Burada gerçek tek kablo uygulamasını bulabilirsiniz. Yani hem veri hem de güç tek kablo üzerinden gitmektedir. Ama tek dezavantajı verinin tek yönlü olmasıdır.

http://www.diyot.com/tekpin.html


Saygılarımla
Bülent ŞIVGIN
www.diyot.com

optech

Benim anlamak istedigim seyi "SpeedyX" tam olarak anlatmis. Dusundugum devre ayni devre ama ben kodlari farkli yazardim. eee her yigidin bir yoğurt yiyişi vardir.  :D
SpeedyX usenmeden devreyi kurmus ve kodlar yazmis. Azmini tebrik ederim yalniz bana gore "koray351"in kendi yapsaydi daha faydali olurdu!?
@koral351 gardasim bu devreyi kur. Mutlaka calisir. Tabi SpeedyX in kodlar icin verdigi onerileri de uygulaman gerekir....
Kolay gelsin.