w5500 ile veri transferi
  • Merhabalar,
    Arduino due/mega(her ikiside mevcut) ile w5500(8 soket açabiliyor) ile veri transferi yapmak istiyorum ethernet MTU (Maximum Transmission Unit) sınırının(1500 bayt) altında yapabiliyorum ama üzerine çıkınca bilgisayar bu veriyi paketlere ayırıyor, w5500 de paket ayırma işlemini desteklemediğinden dolayı, geri cevap vermiyor diye düşünüyorum.Kendi forum sitelerilerinde soketleri yönetebilirsen 1 GB dosyayı bile transfer edebilirsin demiş, tabiki yönetebilirsem :). Bu aşamada soket yönetimini nasıl yapabilirim?
  • Gidecek paketlerin boyutunu, bilgisayarda 1450 bayt olarak ayarlayıp gönderme işlemini hallettim ama bu seferde 250 ms.de 1 paket gönderirsen due bunu alıyor,normal hız ile due'ya gönderilen 40 paketten sadece 4 paketi alabiliyor.Bu hızda çok düşük, diğer arduino için üretilen modülleri denemedim aynı sorun onlarda da var mi acaba ve hızlandırma namına ne yapabilirim.Algoritmik olarak birşeyler mümkün mü(kendi kütüphanesini kullandım), sonuçta spi arabirimini kullanıyor onunda çıkabileceği bir hız limiti var ama 250 ms de çok yüksek bir süre mi yoksa normal mi arduino due için.
  • ethernet ile çalışmış olanların yorumlarıda işime ışık tutacaktır:)
  • Ağ konularında pek tecrübem yok ama bahsettiğin 1500 byte sınırı ethernetin kendi iç limiti olsa gerek. Yani senin dosyayı parçalara bölmen gerekmez, işletim sistemi kendisi halleder onu. (Ha aşağıda bahsedeceğim nedenden dolayı yine manuel olarak yapman gerekebilir o ayrı konu.)

    Sorunu bulmak için işlemin hangi noktada tıkandığını bulmalısın. Ancak ben bir tahmin yapabilirim. Modülün datasheetine bakarsan her soketin 2kb belleğe sahip olduğu göreceksin. Yani yollağın paket spi ile arduinoya yazılmadan yeni paket gönderirsen eskisinin üzerine yazılır. Ethernet spi dan çok daha hızlı bir arabirim olduğu için bu sorun kaçınılmaz olarak gerçekleşir.

    Çözüm olarak arduinoya yazılan her paketten sonra bilgisayara "paket alındı" komutu gönderebilirsin. Böylece komut gelene kadar bekler ve üzerine yazmamış olur. Tabi 2 paket arasında bir miktar bekleme durumu olacak. Hız önemli ise birden fazla soketi tampon bellek gibi kullanarak işlemi kesintisiz hale getirebilirsin. Tabi bu iş yazılımda ustalık ister biraz.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.