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:
Tek kablo derken tek bir iletken hattan mi bahsediyorsun?
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?
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
şö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 ?
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??
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.
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
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...
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
İ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
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...
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:
(http://www.ozlubilgiislem.com/temp/tekpin.gif)
ş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.
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
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.
Valla hepinize ne diyim çok sağolun özellikle speedyx valla hayatımı kurtardın bu arada hepinizin tavsiyesine uycam size söz ama bişeyleri öğrenmeden uygulama yapmak zor ben daha lise 2. sınıfım ve sınıfta iyilerin arasındayım işallah bende sizin gibi biraz daha büyüyüp daha çok şey öğrendiğimde bende hayırlı işleri kendim yapacam hepiniz sağolun!!
arkadaşlar hepinize ayrı ayrı teşekkürler özellikle speedyx çok sağol valla hayatımı kurtardın
Bir cevapta ben yazmak istedim. Daha kolaymı daha zormu olur bilmiyorum ama iki pic in seri port uclarini bu is icin kullan birini master birini slave olarak ayarla. piclerin tx ve rx uclarini birbirine bagla. simdi iki kablo olmaz diyeceksin ama devam ediyorum. slave beklemede kalsin. master giris portunun durumunu slave gondersin slave bunu aldıgında kendininkini gondersin. bu sekilde surekli birbirinin durumunu bileceklerdir. aradaki bosluklarda da cikislari degistirirler. tek kablo olayina gelince. kablo lardan birini sok. diger kabloyu her ikisinin rx ucuna bagla. her iki tarafta da tx ucunu bir adet 1n4148 le rx ucuna bagla. diyotlarin anotlari tx e katotlari rx e gelecektir. bu sekildeki baglantida pic kendi gonderdigi data yi yine kendisi okuyacaktir. fakat sen her gondermeden sonra bir bos okuma yaparsan buda hallolur. kolay gelsin.
HERKEZE SELAMLAR BEN BULENT,
ONCELİKLE HERKEZE MESAJIMI OKUMA ZAHMETİNE KATLANDIĞI İÇİN TEŞEKKÜRLER.
BEN DE PİC -PİC HABERLEŞMESİ ÜZERİNE UĞRAŞIYORUM BU ARALAR.
İKİ HAFTA ÖNCE ETE HOCANIN HSEROUT VE HSERIN DERLERİNİ ÇALIŞTIM BAŞARILI OLDUM. HOCAMDA BURAYA
YAZDIĞI İÇİN BURADAN TEŞEKKÜR EDİYORUM ELİNE SAĞLIK HOCAM. ÇOK TEŞEKKÜR EDERİM.
BEN ŞU ARALAR PBP İLE PİCTEN PİCE HABERLEŞME ÜZERİNDE ÇALIŞIYORUM (ÖĞRENMEYE).
KONUYU AZ ÇOK ANLADIM BENİM SORUM 6 (ALTI) ADET 16F877A NASIL BİR ARADA HABERLEŞİR ?.
VE BU HABERLEŞMEYİ 2MT.LİK 0.35 KALINLIĞINDA KABLOYLA NASIL YAPARIM.
ŞİMDİDEN TEŞEKKÜRLER. SAYGILAR BULENT
BUARADA BELİTMEYİ UNUTTUM DATA GÖNDERMEYE ÇALIŞIYORUM .
TEKRAR TEŞEKKÜRLER ..
6 adet 877 tek kablo üzerinden mi haberleşecek?
neden şaşırdın
anlayamadım olduğu konusunda bilgim var
nasılda biraz takıldım
Alıntı yapılan: oooben - 15 Ağustos 2011, 17:24:03
neden şaşırdın
anlayamadım olduğu konusunda bilgim var
nasılda biraz takıldım
cümlemde bir şaşkınlık ifadesi mi var? Bildiğin soru cümlesi. şaşıran sen olmalısın ki yazdıkların anlaşılmaz bir dille yazılmış.
var sayalım ole olsun konuyu kişiselleştirmeyelim lütfen
bu konuşma çok boş ve anlamsız amacım bilgi edinmek seninle veya başkasıyla uğraşmak değil.
ama
sorun buydu:
6 adet 877 tek kablo üzerinden mi haberleşecek?
anlattığım ise ;
HERKEZE SELAMLAR BEN BULENT,
ONCELİKLE HERKEZE MESAJIMI OKUMA ZAHMETİNE KATLANDIĞI İÇİN TEŞEKKÜRLER.
BEN DE PİC -PİC HABERLEŞMESİ ÜZERİNE UĞRAŞIYORUM BU ARALAR.
İKİ HAFTA ÖNCE ETE HOCANIN HSEROUT VE HSERIN DERLERİNİ ÇALIŞTIM BAŞARILI OLDUM. HOCAMDA BURAYA
YAZDIĞI İÇİN BURADAN TEŞEKKÜR EDİYORUM ELİNE SAĞLIK HOCAM. ÇOK TEŞEKKÜR EDERİM.
BEN ŞU ARALAR PBP İLE PİCTEN PİCE HABERLEŞME ÜZERİNDE ÇALIŞIYORUM (ÖĞRENMEYE).
KONUYU AZ ÇOK ANLADIM BENİM SORUM 6 (ALTI) ADET 16F877A NASIL BİR ARADA HABERLEŞİR ?.
VE BU HABERLEŞMEYİ 2MT.LİK 0.35 KALINLIĞINDA KABLOYLA NASIL YAPARIM.
ŞİMDİDEN TEŞEKKÜRLER. SAYGILAR BULENT
yardımcı olalım dedik pişman olduk. bu forumdaki bazı insanların neden sadece konuları takip ettiğini yorum yapmadığını sayende anladım.
Alıntı yapılan: subram - 15 Ağustos 2011, 18:04:17
yardımcı olalım dedik pişman olduk. bu forumdaki bazı insanların neden sadece konuları takip ettiğini yorum yapmadığını sayende anladım.
cok haklısın hocam
arkadasn sorusuna gelecek olursak KeyWord Protocol yani (KWP) denen arabaların içindeki network haberleşmesinde kullanılan bi sistem var
sistem soyle çalışıyor
gonderilen 8 byte lık datanın ilk byte ı pic numarasını son byte ise checksum yapıyor
boylece güvenli bi şekilde data gonderebiliyorsunuz burdaki tek sorun 2 pic aynı anda tek hatta veri gonderirse hat bozulur check sum sayesinde bunu algılayıp tekrar data isteyip gondertebilirsin bu cok profesyonel bi cozum olur ama gelecegin acısından boyle bi işe kalkışman sana güzel bi tecrübe katabilir
kwp yi araştır... ve gerginlik yaratmamaya çalış büyüklerinle kolay gelsin
Alıntı yapılan: ete - 13 Şubat 2005, 23:30:08
İ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
erol hocam fikrinizi denedinizmi acaba denediyseniz sonuç ne oldu.