Ethernet shield Verbindungsabriss nach mehrmaligem Browseraktualisieren

Hallo ihr Lieben,

ich habe folgendes Ethernet shield in Benutzung:

http://www.nuelectronics.com/estore/index.php?main_page=project_eth

und es funktioniert einwandfrei.
Das originale Arduino Shield hingegen hat ein etwas merkwürdiges Verhalten. Wenn man am Browser mehrfach schnell hintereinander aktualisiert (um Werte zu aktualisieren) reagiert der Controller nicht mehr und der gesamte Datenablauf funktioniert auch nicht mehr. Auch mit dem Browser "Opera" habe ich alle 10 Sekunden automatisch aktualisieren lassen. Selbes Ergebnis, jedoch erst nach einigen Minuten.
Meine Vermutung: Speicherüberläufe. Jedoch habe ich hierzu keinen Lösungsansatz.
Software : Win7, Ide 0.22, Standard Webserver aus den Examples mit geänderter IP. Feste IPs,Ide Example zum Shield.
Hardware: Uno, Ethernet Direktverbindung mit Crosskabel.
Ein anderer Wiznet Controller mit derselben Library zeigt das selbe Verhalten.
Hardwaredefekte scheiden somit aus.

Wer hatte dies schon einmal ?

Vielen Dank für eure Hilfe und nette Grüße

Jörg

Ich habe ein ähnliches Problem. Ich benutze das ArduinoBoardBoardEthernet http://arduino.cc/en/Main/ArduinoBoardEthernet.
Ich habe einen simplen Code, in welchem ein Webserver aufgebaut werden soll der einem Client eine HTML Website anzeigen soll. Manchmal funktioniert der Code und manchmal funktioniert er einfach nicht. Dann startet er sich ständig neu, oder er bekommt einfach keine IP (per DHCP). Ich vermute dass es am Speicher liegt, da es einwandfrei funktioniert wenn ich die gesamte loop() leere...

Ohne Euren Code: keine Hilfe möglich.

Das Nuelectronics-Board ist komplett unterschiedlich aufgebaut (anderer Chip) und somit nicht mit dem Arduino Ethernet Shield vergleichbar, also in diesem Zusammenhang. Die erwähnten Problem sind meist Software-Probleme, also müssen wir Euren Code sehen.

hi,

ich hab' das mit meinem genauso, wenn ich einen neuen request absetze, bevor der vorige abgearbeitet ist. irgendwie hängt sich dann der shield auf. die meisten shields können ja meines wissens nur eine sitzung gleichzeitig, vielleicht liegts daran.
eine lösung ist, mit ajax zu arbeiten und die response abzuwarten, bevor man wieder anfordert. wenn der arduino am internet hängt, geht das sehr komfortabel mit jquery.

gruß stefan

Die WizNet5100 chips können 4 Verbindungen gleichzeitig abhandeln und selbst dann hängt sich das Shield nicht auf, es akzeptiert einfach keine neuen Requests mehr, bis die alten fertig sind. Wie bereits gesagt: es liegt mit sehr grosser Wahrscheinlichkeit an Eurem Code, also zeigt den her oder wir können Euch nicht helfen.

Hallo nochmal,

zunächst Danke ich euch für eure Posts. Ich dachte schon ich wäre der Einzige auf diesem Planeten mit diesem Problem.
Bezüglich der mehrfachen Forderung von Pylon den Code zu posten. möchte ich noch kurz Stellung nehmen. Das Problem ist nicht das als Link gepostete Board von Nuelectronics mit deren Library. Dieses Funktioniert tadellos!!! Das Problem taucht nur bei dem Arduino Ethernet Shield mit Wiznet Chip auf. Um einen Hardwarefehler auszuschließen habe ich, wie beschrieben, das Shield gegen ein anderes Mit Wiznet Chip getauscht. Der Fehler blieb.

Um das Forum nicht vollzuspammen habe ich darauf hingewiesen den unveränderten Examplecode aus der 0.22 IDE zu benutzen in der Annahme, dass dies nicht nur genügen würde weil ihn alle kennen und schon x-Male verwendeten sondern zudem den Hinweis beinhaltet wo der Code her kommt.
Falls Du, Pylon, die alte IDE ncht mehr auf Platte hast werde ich sie morgen gerne nochmal hier reinkopieren. Über Deine Hilfe würden ich mich freuen.

Um noch ein wenig mehr Klarheit reinzubringen: Wie beschrieben hingen nur 2 IPs im Netzwerk.Von 4 parallelen Anfragen bin ich also weit entfernt. Nur ein Rechner aktualisiert seinen Browser regelmäßig (10 Sekunden) oder unregelmäßig (bis zu mehrmals pro Sekunde).

Interessant finde ich den Ansatz von Stefan. Allerdings muss ich zugeben, dass ich in der Serverprogrammierung nur soweit mithalten kann um die grundsätzliche Problematik zu begreifen. Kannst Du uns und mir ein wenig Näheres hierzu erklären?

Vielen Dank im Voraus und nette Grüße

Jörg

Wieso muss der Arduino im Internet hängen, um jQuery zu benutzen? Die Website liegt im normalfall auf der SD und der Server hat keinerlei Arbeit mit JS, einzig die Übertragungsgeschwindigkeit des Scripts zum Client könnte noch problematisch werden. Keine Ahnung wie sich der Arduino da schlägt, hatte ihn noch nie autark im Netz... Aber bei 16Mhz sollten es nach Abzug von geschätzten 80% wegen des eigentlichen Scripts, und des Overheads noch etwa 400 kByte/s sein - nicht viel, aber genug um ein popeliges Javascript mit 30 - 100 kByte zu übertragen.

Die jQuery Lib muss ja nicht vom Arduino selbst kommen, es reicht ja der Verweiss auf die Quelle bei code.google.com im HTML-Code.
Laut Produktspezifikation kann der Wiznet W5100 bis zu 4 Sockets gleichzeitig bedienen, beherrscht allerdings keine IP-Fragmentation (das sollte aber bei HTTP-Requests keine Rolle spielen).
Allerdings vermute ich das Problem eher in der Ethernet-Lib, vor allem in der älteren Version.
Der W5100 hat nur einen begrenzten Pufferspeicher für ankommende Pakete / Daten und es ist die Aufgabe der Ethernetlib diesen Puffer zu leeren. Es gibt eine Möglichkeit per Interrupt über ankommende Daten informiert zu werden (Jumper INT laut Beschreibung), die per default aber nicht genutzt wird und evtl. in der Lib gar nicht implementiert ist.
Hast Du denn die Lib der aktuellen IDE mal getestet, beim Wechsel zu 1.0 wurde da einiges geändert?

Dieses Funktioniert tadellos!!!

Ich nichts Gegenteiliges behauptet, ich habe nur darauf hingewiesen, dass es sich dort um andere Hardware handelt, die von einer anderen Bibliothek angesprochen wird und somit nichts mit dem Arduino Ethernet Shield zu tun hat.

Falls Du, Pylon, die alte IDE ncht mehr auf Platte hast werde ich sie morgen gerne nochmal hier reinkopieren.

Ich meine, das geht anders herum. Du hast ein Problem und arbeitest mit veralteter Software. Denkst Du wirklich, dass die Leute, die Dir helfen wollen, die alte Software installieren sollten, nur weil Du nicht updaten willst? Es gibt eine realistische Chance, dass Deine Probleme bereits durch das Update verschwinden. Falls nicht, kommt Dir (und den anderen) das Forum sicher gerne zu Hilfe.

Der Ansatz von Stefan löst das Problem nicht, er ist bestenfalls Symptombekämpfung.

Der W5100 hat nur einen begrenzten Pufferspeicher für ankommende Pakete

Das sind 16kB, der dürfte im Normalfall für einige Request reichen. Aber die Requests sollten gelesen oder mindestens die Verbindungen nach Gebrauch geschlossen werden.

hi,

Wieso muss der Arduino im Internet hängen, um jQuery zu benutzen? Die Website liegt im normalfall auf der SD

und wie ruf' ich sie von dort ab? das sind 400k. die kann ich nicht einfach in den code einbetten. also brauch' ich doch direkten zugriff vom tab, handy oder pc zur sd-karte über http. ich weiß da keinen weg, bin aber dankbar für hinweise...

Die jQuery Lib muss ja nicht vom Arduino selbst kommen, es reicht ja der Verweiss auf die Quelle bei code.google.com im HTML-Code.

genau, dafür braucht man die internetverbindung.

Der Ansatz von Stefan löst das Problem nicht, er ist bestenfalls Symptombekämpfung.

naja, nachdem ich sowieso mit jquery arbeite...
außerdem dachte ich, es wär' einfach eine schwäche des arduino/ethernetshields, daß er bei einigen schnelleren aufrufen hintereinander die patschen streckt. ok, wenn das zuhause passiert, muß ich halt auf einen sessel steigen, aber bei zugriff über's internet isses schon blöd. selbst wenn man's "einigermaßen" in den griff bekommt und es nur selten passiert, gibt mir die ajax-lösung mehr sicherheit. jquery benutze ich wegen der jquery-mobile und jquery-ui, das ist wunderschön gelöst, und deren ajax-implementierung ist grenzgenial, also...

gruß stefan