iki pic nasil hem TX ve RX olur

Başlatan 0ankara6, 18 Temmuz 2008, 13:19:07

0ankara6

bir haftadir cözmeye calistigim bir konu var

serin2 ve serout2 komutlari kullanarak iki pic arasinda rs485 kullanarak haberlesiyorum. Aslinda sadece Master dan Slave e data yolluyorum problem olmadan. Asil sorun bilginin slave e gidip gitmedigini bir türlü mastera yolluyamiyorum. Veri slave de ve onu kullanabiliyorum. Ama Master i tekrar alici yani serin2 komutu kullanir duruma getiremiyorum.
Lütfen bana yardimci olabilirmisiniz :oops:

halukece

picler arasında rs485 için kullandığın entegrenin alış ve veriş için Enable pinlerini ayarlamalısın.

Sıra ile önce master dan slave e gönderme, sonra almayı aktif etmelisin.

Benimde bugünlerde uğraştığım bir konu. 100 adet 16f628 i senkronize çalıştırmaya uğraşıyorum.

Kolay gelsin.

0ankara6

cevabin icin tesekkürler,,
evet tabiki enable lari ayarliyorum ama herhalde dediginde haklisin senkron olmasi lazim herhalde yeterli bir PAUSE gerekiyor gibi, deneyecegim bakalim ne olacak

My75

Data gönderirken Max485 yada aynı işi gören ve daha hesaplı olan 75176 entegresinin 2 ve 3 nolu pinlerini kullanacaksın,yani 2 gnd ise sürekli rx mod,3 vdd ise sürekli tx moddadır.Ben şöyle kullanıyorum,2 ve 3 kısa devre ve çalışma esnasında sürekli rx modda(pic enable pini low),serout komutundan önce enable pinini high yapıp 100ms bekletip datayı gönderiyorum ve tekrar 100ms bekletip tekrar low yapıp pini low yapıyorum(sürekli data alımı için),bu süre datanın sağlıklı iletilmesi için gerekli bir zaman..Örnek Pic 16f628 usart donanımını kullan,rx ucunu 10k dirençle pullup yap yoksa gürültüden etkileniyor..Max485 pin 6 yine 10k ile vdd'ye,pin 7 10k ile vss'ye bağlamayı unutma..Kolay gelsin..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

0ankara6

my75 cok tesekkürler, yazdigim program simdi harika calisiyor, dedigin gibi
enable pinini high yapiyordum ama herhalde pin hemen high olmadan data yollaniyordu ve tabiki hata olusuyordu, araya 1ms pause ile ve yolladiktan sonrada enable pinini low yapmadan koydugum 1ms ile problemi hallettim, Tekrar cevabin icin cok tesekkür ederim :mrgreen:  :lol:

My75

Pin high olmadan data yollanmaz mantik olarak program sirasina göre isledigi icin ama 485'in  devreye girmesi pic' in program hizina yetisemeyebilir,1ms 1 byte veri icin sorun teskil etmez ama 7 byte veri gönderirsen  100ms yapsan daha saglikli olur çünkü ilk 3 byte gönderirsin digerlerini gönderemeyebilirsin,bizzat basima geldi,en azindan high pause 50,low pause 100 yaparsin.High 50 485'in hazir olmasi için gerekli zaman,low 100 datanin hatta tam olarak iletilmesi için gerekli zaman..Kolay gelsin..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

0ankara6

my75 cok haklisin 1ms yetmedi pini low yapmadan önce gerekli süreyi verdim verinin karsiya ulasmasi icin 30ms kadar sonra low yaptim ve sonuc süper......tekrar tesekkürler yardimin icin

rf

Projelerimde yoğunlukla RS485 uygulamaları kullanıyorum ve çok fazla sorun yaşadığım söylenmez . Aşağıdaki kod C dilinde ama yardımcı olabilir bu şekilde zamanını bilmediğiniz beklemeler yapmak zorunda kalmazsınız. Umarım yardımcı olmuştur.
saygılarımla,

[code]
         while(!TXIF)         //Check TX buffer empty
            continue;
         RS485_TALK = 1;          //Turn on transmitter
.
.
.
.



         while(!TRMT)
            continue;
         RS485_TALK = 0;      // Turn off transmitter


.
KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/