Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

pic ile usb flashdisk okuma

Başlatan taxin, 20 Aralık 2005, 22:47:01

taxin

her byte yazmadan sonra 3-5ms bekleme yapıyorum
ve okurken zaten problem yok hepsini birden değil sıra ile okuma yapılıyor
asıl aktarım esnasında zaman problemi var  ve ayrıca sebebini bilemiyorum ama bazı bilgisayarlarla mükemmel bir şekilde haberleşirken bazılarında seri bağlantıda problem yaşıyorum. yan yana iki bilgisayar mesafe aynı program aynı biri normal biri göndermiyor.
ayrıca bazı bilgisayarların seri portu yok usb to seri kablo takıyorum bi kablo normal başka bi kablo takıyorum çalışmaya biliyor
tabi müşteri yeni makina almış kurmaya gtmişsin daha ilk çalıştırmada böyle bir problemle karşılaşmak pekte hoş olmuyor

Petek

her bayt yazdırmadan sonra 3-5 ms beklemek büyük zaman kaybı. Şöyle yapın, ilk baytı gönderdikten sonra ack sinyali adıktan sonra stop göndermeyin, 7 bayt daha gönderin, sonra stop gönderin ve 3 - 5 ms bekleyin. Böylece yazma işlemi 7-8 kat hızlanmış olur. Aslında bu page write işleminde herhalde 64 baytı birden yazabiliyorsunuz ama biraz datasheet okumak lazım bu iş için. Biraz da isis üzerinde deneme yapmak gerek :)

Seri port haberleşmesinde flow kontrol yapmanız gerek ki, gönderilen bilgiler kaçmasın. Bu yazılımdan olabildiği gibi donanımdan da olabiliyor. Ben yaptığım bir uygulamada donanımdan akış kontrolü yapmıştım, gayet güzel çalışıyor. PC nin bilgi göndermesini istemediğinizde RTS hattını yanlış hatırlamıyorsam 1 yapıyorduk. PC yazılımının bunu desteklemesi lazım. Ben hyperterminal kullanmıştım ve bağlantı ayarlarını ona göre seçmiştim. PC haberleşme programını siz kendiniz yapıyorsanız, CTS hattının durumunu kontrol edeceksiniz, pic müsait ise cts (hatırlayamadığım) durumda oluyor ve her bayt bilgi gönderme sonunda CTS e bakmanız gerekiyor.

(eskiden dos kullanırken) PC de her bir bayt göndermenin arkasına bir gecikme koymazsak alıcı bir bayt alıp bir yerlere saklamak için harcadığı sürede PC ikinci baytı göndermiş oluyordu ve bu çoğunlukla overrun yada frameerror hatasına sebep olabiliyordu. İsterseniz yazılım açık kaynak ise seri haberleşmede her bayt gönderme işlemi arkasına delay koyup haberleşmeyi tekrar deneyin.

USB <> rs232 dönüştürücü ben de kullandım. Seri haberleşmede bir sorunla karşılaşmadım.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

mhk

Alıntı yapılan: "Petek"
Seri port haberleşmesinde flow kontrol yapmanız gerek ki, gönderilen bilgiler kaçmasın. Bu yazılımdan olabildiği gibi donanımdan da olabiliyor. Ben yaptığım bir uygulamada donanımdan akış kontrolü yapmıştım, gayet güzel çalışıyor. PC nin bilgi göndermesini istemediğinizde RTS hattını yanlış hatırlamıyorsam 1 yapıyorduk. PC yazılımının bunu desteklemesi lazım. Ben hyperterminal kullanmıştım ve bağlantı ayarlarını ona göre seçmiştim. PC haberleşme programını siz kendiniz yapıyorsanız, CTS hattının durumunu kontrol edeceksiniz, pic müsait ise cts (hatırlayamadığım) durumda oluyor ve her bayt bilgi gönderme sonunda CTS e bakmanız gerekiyor.

Eğer visual basic  gibi bir programla kendi programınızı yazabilirseniz  bunu yazılımsal olarakta yapabilirsiniz.  PC bilgi gönderiminde ilk önce senkronizasyon byte (sizin belirlediğiniz ,250 veya kullanmadığınız bir 0-255 arası bir değer) gönderebilirsiniz ve PC'nin 250 verisini beklemesini istersiniz. ardından 1 byte gönderdiğinde mikroişlemci kısmı bilgiyi alıp işledikten sonra PC'ye, 250 bilgisini göndermesini programlayabilirsiniz. PC 250 verisini aldıktan sonra 2.byte gönderir. taki işlem bitene kadar. Bu arada veri transferinin bittiğini göstermek için başka bir veri gönderilebilir mesela 251 gibi .
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

Petek

bahsettiğiniz bir çeşit software flow kontrolü. Fax cihazları, modemler kendi arasında bu şekilde haberleşiyorlar. Bu da mümkün.
“Önyargıları yıkmak atomu parçalamaktan zordur” A.Einstein

CaFFeiNe

@taxin

http://www.usb.org/developers/devclass_docs

Mass Storage sekmesindeki dökümanlar işini görebilir gibi

aslan_korhan

mesafe sadece 200 metre ise bu işi kablosuz yapsan daha iyi olmazmı?
Entegre veya USB sök-tak daha zahmetli bence.

434MHz'de çalışan alıcı-vericiler ile bu iş gayet iyi olur.
Program olayıda çok zor olacağını sanmıyorum. En azından USB olayından daha kolay...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.