Go Down

Topic: Arduino Mega - EthernetShield (Langsamer als duemilanove) (Read 827 times) previous topic - next topic

Trib

Hallo zusammen,

für mein LED Projekt habe ich mir nun einen Arduino Mega bei Watterott bestellt.
Der kam auch schon am folgenden Tag und ich habe ihn gleich ausprobiert. Dazu konnte ich einfach mein EthernetShield umstecken und den Sketch uploaden (Bordtyp natürlich umgestellt).
Auf der SD-Karte habe ich eine HTML-Seite liegen und der Aufruf dauert nun statt ca. 5 Sekunden etwa 45 Sekunden (!!!).

Muss ich bei der Programmierung irgendetwas spezielles beachten? Liegt es vielleicht auch nur an der SD Ansteuerung?

Bin für jeden Tipp dankbar :)

pylon

Grundsätzlich sollte der Mega genau gleich schnell sein, wie der Duemillanove. Hast Du einen Mega oder einen Mega2560? Welche Revision des Ethernet Shields hast Du (sollte auf der Rückseite stehen)? Kannst Du uns den Code zeigen?

uwefed

Der Upload auf den Arduino UNO und der Arduino MEGA 2560 sollten doppelt so schnell sein wie der des Arduino2009.
Die SD karte bzw das Ethernetshield sollten keinen Einfluß auf den Upload haben. Auch müßte der vom Kompiler generierte MaschienenKode nicht wesentlich größer sein.
Grüße Uwe

pylon

Habe ich oder Uwe was falsch verstanden?

Mein Verständnis ist, dass der Upload ohne Probleme geklappt hat (auch in normaler Zeit), aber der Zugriff über das Netz per Webserver viel langsamer geworden ist. Ist das "nur" bei den statischen Seiten, die von der SD-Karte kommen, der Fall oder grundsätzlich bei jedem Zugriff? Kannst Du auf dem Rechner, von dem aus Du zugreifst, mal den WireShark mitlaufen lassen? Werden ständig Pakete übertragen? Oder wartet der Arduino zuerst eine kleine Ewigkeit und sendet dann alle Daten auf einmal?

Was geschieht, wenn Du den Vorgang umdrehst? Also Ethernet-Shield zurück an den Duemillanove, Boardtyp wieder auf DMN und Sketch hochladen. Sind dann die Zugriffe wieder schnell oder immer noch langsam?

Trib

#4
Oct 05, 2012, 11:11 am Last Edit: Oct 05, 2012, 11:17 am by Trib Reason: 1
Hallo zusammen,

danke für die Antworten und die Denkanstöße!

Also grundsätzlich geht es natürlich nur um die Anzeige einer Webseite von der SD-Karte.
Der Upload des Sketches geht schneller als beim Duemilanove.

Was ich nun in meinen Tests feststellen konnte ist, dass auch der eine Seite die auf dem Arduino selbst zusammengebaut wird, deutlich länger dauert. Die SD ist es dann anscheinend nicht.
Die Anfrage wird vom Serial Monitor sofort ausgegeben. Dann passiert gefühlt erstmal eine ganze Weile garnichts. Ich muss mal die SD-Komponente so umschreiben, dass ich mir ein paar Zeiten ausgeben kann.
Übermittle ich z.B. von einer Webseite Farbcodes an das Shield, dann dauert dies auch doppelt so lange wie sonst. Dort wird im Hintergrund auch nur der String exrahiert und die Farbe meiner LED geändert. Eine Rückmeldung an die Webseite passiert nicht. Auch wird nichts von der SD geladen.
Mir kommt es so vor, als wäre der Takt vom Board irgendwie niedriger oder so...

Der Mega ist der 2560. Auf dem EthernetShield ist nur ein Aufkleber mit "90-A2--DA-00-58-87"
Der Coder ist für das Shield nahezu unverändert dieser:
Ladyada/ethfiles

pylon

Quote
Der Coder ist für das Shield nahezu unverändert dieser:


Definiere nahezu! Wenn Du Änderungen gemacht hast, die nicht nur Deiner Netzwerk-Konfiguration geschuldet sind (IP-Adresse, Gateway, etc.), dann solltest Du Deinen Code hier posten, denn auch kleine Änderungen können Grosses bewirken. Im von Dir verlinkten Code gibt es keine Seiten, die nicht von der SD-Karte kommen, welchen Code hast Du dafür verwendet?

Trib

#6
Oct 08, 2012, 01:31 pm Last Edit: Oct 08, 2012, 09:17 pm by Trib Reason: 1
Hallo pylon,

es macht natürlich Sinn das Pferd nicht von hinten aufzuzäumen. Heute Abend spiele ich mal den Code aus dem Beispiel 1:1 auf den Ardu und messe dort nochmal die Zeit.
Trotzdem bin ich etwas verwundert darüber, dass es zu diesem Verhalten kommt. Wenn der Mega2560 sich irgendwie anders verhalten sollte als der Duemilanove, würde ich erwartet dass garnichts funktioniert. Es gibt im Sketch auch ein
"SPI_HALF_SPEED", welches ich auf "FULL_SPEED" gesetzt habe. Das werde ich ebenfalls testen.

Wenn ich noch etwas Zeit finde mache ich auchmal einen generellen Performance-Check auf den beiden Boards.

[EDIT:]Also nachdem ich das unveränderte Original-Sketch aufgespielt habe, rannte der Mega erwartungsgemäß los und war gefühlt noch eine Ecke flotter als der Due. Nachdem ich meinen modifizierten Sketch nochmal auf den alten Due aufgespielt habe, war dieser weiterhin flotter. Woran das liegt möchte ich jetzt durch auskommentieren weitertesten und bin gespannt woran das liegen kann.

Trib

Nachtrag zu gestern:
Ich konnte feststellen, dass es nicht an dem Ethernet- oder SD Zugriff an sich liegt. Der Sketch aus dem Tutorial rennt förmlich :)
Es muss an dem weiteren Code liegen, den ich für z.B. die Ansteuerung meiner LED-Kette benutze. Dieser läuft hervorragend auf dem Duo und äußerst langsam auf dem Mega.
Auf die Schnelle konnte ich nicht herausbekommen woran das liegen kann. Dazu werde ich heute mal den Code Funktionsweise auf den Mega übertragen und abwarten wo dieser die Performance-Einbuße hat.

Schon komisch! Hätte eher ein "Geht" oder "Geht nicht" erwartet.
Werde das mal positiv sehen und mich damit zu einem Code-Review zwingen ;-)

Go Up