Hallo Ich habe mir mit einen atmega2560 (16MHz) und einen Ethernet shield basieren auf dem w5100 Controller eine steuerungs Webseite zusammen gezimmert. Läuft alles ganz gut. Das problem ist eher die zeit die vom auf rufen (PC lokal oder ober Internet egal) benötig wird bis die seite geladen ist mit fast 2 sek doch recht lange ist. Und JA ich habe die Webseite schon mal test halber um 50% verkleinert und es wird auch nur noch 50% der zeit benötig. Daher mal die frage was steuert die "sende Geschwindigkeit" eigentlich ? Bremst der der 2560 mit seinen 16 MHz welcher die Daten bereit stehlt oder der W5100 welcher die daten versenden muss ? Es werden KEINE bilder oder große Daten übermittel nur text und werte welche vor dem versenden schon fest stehen. Vielen dank.
Du kannst doch relativ leicht ausmessen, wie lange es dauert, die ganze Website über das Interface zum W5100 zu übertragen. Bei Controllern mit integriertem Ethernet Controller ist so etwas deutlich effizienter. Wenn du beispielsweise das STM32 NUCLEO-F756ZG Board nimmst, ist die ganze Logik auf dem MCU. Dessen interner Bus kann die Daten mit theoretisch 864 MByte/Sec verschieben - das ist eine ganz andere Größenordnung als bei solchen separaten Ethernet ICs. Nebenher hat der Controller auch mehr als die 10fache Rechenleistung.
Wie ist der W5100 angebunden - über SPI oder über das External Bus Interface auf den Ports A, C und G? Wenn Geschwindigkeit wichtig ist, nimmt man tunlichst das External Bus Interface. Damit liegen die internen Register des W5100 direkt im Adressraum des Prozessors und können mit einfachen Speicherzugriffen gefüllt werden. Schneller geht es einfach nicht. SPI ist ein Flaschenhals. Heutzutage sind 32-Bit Prozessoren mit ARM- und MIPS-Kernen nicht teurer als der Mega2560, der für seine Leistung eigentlich zu teuer ist. Das hier wäre eher was für Dich. http://www.ti.com/tool/EK-TM4C1294XL Bekommst Du z.B. hier: https://www.conrad.de/de/entwicklungsboard-texas-instruments-ek-tm4c1294xl-1270206.html fchk
Der W5100-Shield wird nur über SPI angeschlossen, obwohl er aufgesteckt ist. Ausserdem muss der Shield dauernd angesprochen werden, damit er läuft/funktioniert. Ist ein bisschen Murks. Vielleicht läuft Deine Loop() zu langsam? Hast Delay() drinnen? Gruss Chregu
Das ganze ist ein ARP Problem, dieser kann nur eine Adresse speichern. Sobald eine Anfrage von einer anderen IP kommt muss dieses wieder aufgelöst werden. Das kann dauern... Ich habe damals meine eigene ARP Tabelle erzeugt und das Register vor dem Senden gesetzt. Der SPI Bus kann mit 30MHz und mehr getaktet werden...
Mit einem Atmega644 bei 20Mhz und einem parallel angebundenen CP2201 Controller konnte ich ein bisschen mehr als 200k Byte pro Sekunde für das Erzeugen von HTML Seiten mit dynamischen Anteilen erreichen. Das ist zwar nicht berauschend schnell aber es war schnell genug um nicht negativ aufzufallen. Was mir aufgefallen war ist, dass die Übertragung nach jedem Ethernet paket für rund 200ms stoppte, allerdings nur bei Windows Clients. Unter Linux war diese "Denkpause" viel kürzer. Dahinter steckt der sogenannte NAGLE Algorithmus, der sich nicht gut mit dem von mir verwendeten µIP Stack verträgt. Für Nagle braucht man einige zig Kilobyte Pufferspeicher um eine ausreichend große Windows-Size zu unterstützen. Selbst geschriebene Client Programme können durch Setzen der Option TCP_NODELAY diesen Nagle Algorithmus deaktivieren. Aber alle mir bekannten Web Browser tun das nicht. Es gab früher mal die Möglichkeit, eine entsprechende Option in der Windows Registry zu setzen, aber die gibt es (soweit ich herausgefunden habe) inzwischen nicht mehr. Vielleicht ist das auch bei Dir der Knackpunkt. Wenn das so ist, kannst du (mit der vorhandenen Hardware) nichts machen.
Marco H. schrieb: > Das ganze ist ein ARP Problem, dieser kann nur eine Adresse speichern. > Sobald eine Anfrage von einer anderen IP kommt muss dieses wieder > aufgelöst werden. > > Das kann dauern... Wie viele µs dauert das denn beim w5100?
Hallo, Stefanus F. schrieb: > Selbst geschriebene Client Programme können durch Setzen der Option > TCP_NODELAY diesen Nagle Algorithmus deaktivieren. Aber alle mir > bekannten Web Browser tun das nicht. Es gab früher mal die Möglichkeit, > eine entsprechende Option in der Windows Registry zu setzen, aber die > gibt es (soweit ich herausgefunden habe) inzwischen nicht mehr. Unter Win7 ist es möglich, laut Internet auch unter Win10. Interessanterweise ignoriert unter Win7 der IE es ohnehin, Seite wird zügig aufgebaut, FF beachtet die Einstellung und ich habe es bei mir abgeschaletet. Gruß aus Berlin Michael
Morgen, Da ich Shield lese, Projekt auf Arduino Basis? Wenn ja dann könnte dies eventuell für dich interessant sein. https://www.pjrc.com/arduino-ethernet-library-2-0-0/ ...auch so vll. nicht ganz uninteressant wegen vergleiche der Wiznet Chips. Lokales Netzwerk? Desweiteren mach doch erstmal ein paar Captures von laufenden Übertragungen mit z.B. Wireshark. Da sieht man dann, liegt es an z.B. langen ARP zeiten oder einem verzögerten ACK seitens PC. Ein W5500 hat den vorteil des deutlich effizienteren Transfer über SPI. Damit ließe sich auch noch eine Steigerrung erreichen welche noch einfach umzusetzen wäre. Ich nutze aktuell selbst ein W5500 an einem kleinen 8-Bitter(EFM8LB1), Geschwindigkeitsrekorde aus heutiger sicht sind damit nicht drin. Für unsere Anwendungen Maschinen/Geräte Messdaten innerhalb kleinere Lokalen Netzwerke zu unserer Software zu übertragen reichts noch dicke. Mini Webserver zur Visualisierung von Messdaten im Browser ist auch in Arbeit. Was helfen kann den Wiznet Fifo auf >=4K stellen damit hatte ich mit Browser(FF/Chrome auf Win7) auch keine verzögerten ACK's mehr.
ARP kann schon mal 2sec dauern... Das war mein Problem bei einem Projekt. Sobald der W5500 etwas an einen anderen Client senden musste dauerte das rechte lange. Die ARP Tabelle kann nur eine Adresse speichern, sobald eine andere IP ins Spiel kommt versucht der W5xxx diese neu aufzulösen. Abhilfe schafft man sich in dem man seine eigene Tabelle erzeugt und in den W5xxx schreibt. Beitrag "einfache und performante W5500 LIB"
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.