Forum: Mikrocontroller und Digitale Elektronik Ansteuerung W5500


von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

Liebe Leute,

ich hab hier ein Problem und würde von euch gerne hören wie ihr weiter 
vorgehen würdet.

Ich plane eine kleine Leiterplatte mit Atmega1284P, W5500, MagJack 
HR911102A und Stromversorgung über Mikro-USB. Der Schaltplan ist im 
Anhang und folgt dem Referenzdesign von WizNet. Die Lieferung von 
OshPark (http://oshpark.com/shared_projects/AyGGbXqq) ist in der Post 
und wird wohl in ein bis zwei WOchen eintrudeln.

Ich habe diese Schaltung jetzt mal fast vollständig zur Probe aufgebaut, 
siehe Fotos im Anhang. Die Kommunikation über SPI funktioniert. Es wurde 
auch tatsächlich ein Link aufgebaut und ich konnte Daten versenden. 
Allerdings wurde der Datenempfang im Laufe einer halben Stunde oder so 
immer erratischer. Als ich dann noch eine fehlende Verbindung 
(Buchsenabschirmung zu GND) hinzugefügt habe, habe ich keinen Link mehr 
aufbauen können.

Ich habe dann die kritischen Verbindungen zwischen W5500 und MagJack 
(war auf Breadboard) auf der Platine verlötet. Das hat nichts gebracht. 
Drei der Kondensatoren stammten aus Altbeständen, die habe ich durch 
neue ersetzt (SMD 0603, mein erstes Mal, was ne fisselei), auch kein 
Erfolg. Der aktuelle Zustand ist auf den Fotos erkennbar.

Ich sehe am Oszi sowohl an MagJack 1/2 als auch auf Kabelpaar 1/2 (TX) 
am Stecker zum Switch die Linkimpulse des W5500. Ich sehe sowohl an 
MagJack 7/8 als auch an W5500 Pins 5/6 die Linkimpulse des Switches 
(machen allerdings einen etwas kurzen Eindruck, so etwa 50ns statt 
100ns).

Ich hab schon die meisten Kontakte und Komponenten noch einmal 
durchgemessen, ohne Erfolg. Ich habe dem W5500 einen eigenständigen 
3.3V-Linearregler spendiert. Ich habe die Spule gebrückt. Der TOCAP-Elko 
hat nachgemessen 5uF, der EXRES1-Widerstand 12.4k. Die SPI-Kommunikation 
steht perfekt, aber ich erhalte keinen Link.

Wie würdet ihr weiter vorgehen? Auf die Boards warten, bestücken und 
Daumen drücken? Quarz et al, TOCAP und EXRES1 auf die Platine löten? 
W5500 auslöten und ersetzen (wenn ich das schaffe ...)? Ich wüsste halt 
gern, warum die Probeschaltung erst lief und jetzt nicht mehr 
funktioniert.

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

Es war der Quarz! Jetzt sitzt er nicht mehr im Steckbrett, sondern ist 
mit seinen Resonanzkondensatoren nahe am W5500 angelötet, und alles 
funktioniert bestens und ohne Datenverlust!

LG, Sebastian

von Alex (Gast)


Lesenswert?

Hallo Sebastian,
ich habe auch mit der Schaltung so meine Probleme gehabt und gelöst. 
Will mich jetzt mal an das Programmieren ran wagen vom W5500. Kannst du 
da weitere Infos zur verfügung stellen. Verwende einen ATMega32.
Gruß Alex

von Sebastian W. (wangnick)


Lesenswert?

Alex schrieb:
> Hallo Sebastian,
> ich habe auch mit der Schaltung so meine Probleme gehabt und gelöst.
> Will mich jetzt mal an das Programmieren ran wagen vom W5500. Kannst du
> da weitere Infos zur verfügung stellen. Verwende einen ATMega32.
> Gruß Alex

Hallo Alex,

ich werde bedenkenlos die von WizNet für den W5500 angepasste 
Arduino-Ethernet-Bibliothek verwenden, und mir die Mühe sparen, alles 
neu zu entwickeln.

LG, Sebastian

von Alex (Gast)


Lesenswert?

Hallo Sebastian,
das Arduino Shield war doch für den W5100.
Hab den W5500 mal an das Arduino-Board angeschlossen.
Der W5000 lief damit aber nicht bei mir.
Gruß Alex

von spess53 (Gast)


Lesenswert?

Hi

>das Arduino Shield war doch für den W5100.
>Hab den W5500 mal an das Arduino-Board angeschlossen.
>Der W5000 lief damit aber nicht bei mir.

Kann auch nicht. Vergleich mal die Datenblätter.

MfG Spess

von Sebastian W. (wangnick)


Lesenswert?

Alex schrieb:
> das Arduino Shield war doch für den W5100.
> Hab den W5500 mal an das Arduino-Board angeschlossen.
> Der W5000 lief damit aber nicht bei mir.

Hallo Alex,

du brauchst die von WizNet modifizierte Arduino-Ethernet-Bibliothek 
(http://github.com/Wiznet/WIZ_Ethernet_Library). Damit sollte es 
funktionieren.

LG, Sebastian

von spess53 (Gast)


Lesenswert?

Hi

>du brauchst die von WizNet modifizierte Arduino-Ethernet-Bibliothek
>(http://github.com/Wiznet/WIZ_Ethernet_Library). Damit sollte es
>funktionieren.

Adding function to read / write W5500 PHY configuration register : 4 
December 2013

Den W5500 gibt es schon eine ganze Weile. Brauchen die Arduino-Jungs für 
jede kleine Änderung so lange? Da ist man ja mit Assembler schneller.

MfG Spess

von Sebastian W. (wangnick)


Lesenswert?

spess53 schrieb:
> Adding function to read / write W5500 PHY configuration register : 4
> December 2013
>
> Den W5500 gibt es schon eine ganze Weile. Brauchen die Arduino-Jungs für
> jede kleine Änderung so lange? Da ist man ja mit Assembler schneller.

Die Bibliothek ist ja in C++, damit ist man von Anfang an (14-Aug) so 
fehlerlos dass nur noch von Zeit zu Zeit kleine feature requests 
nachgepflegt werden müssen ... ;)

Aber ernsthaft: Ich finde, WizNet gibt sich mit der Bereitstellung 
dieser und anderer Bibliotheken grosse Mühe. Nicht jeder Hersteller 
liefert gleich soviel Quellcode für seine Produkte mit. Schau mal unter 
http://wizwiki.net. Da gibt es Treiber für den W5500 für Arduino, BSD 
und CooCox, und Projekte mit dem MSP430 Launchpad und dem Parallax 
Propeller.

Die Geschwindigkeit der Arduino-Jungs selbst ist eine andere Sache. Das 
ist zum Teil wirklich ein Trauerspiel.

LG, Sebastian

von Alex (Gast)


Lesenswert?

Hallo Sebastian,
ja das kingt gut eine fertige Bibliothek zu verwenden.
Danke für den Link. Habe mir mal die C++ und die Header-Datei erstellt.
Habe jetzt zwischen den Jahren Frei und möchte mich damit jetzt weiter 
beschäftigen. Hoffentlich bekomme ich es hin. An der Stelle schon mal 
vielen Dank für eure Unterstützung.

Habe die beiden Dateien für die Verwendung von Atmel Studio 6 unter
C:\Program Files\Atmel\Atmel Studio 
6.0\extensions\Atmel\AVRGCC\3.4.1.95\AVRToolchain\avr\include
abgelegt und das Projekt neu erstellt.

Würden die Dateien dort richtig liegen oder geht das auch im 
Projektordner?
Habe im Projekt dann die Bibliothek mit #icnclude <w5500.h> aufgerufen.
Auf jeden fall bekomme ich dann einige "unknown type name 'class' 
Fehlermeldungen.

Kann es sein das man für die Komunikation noch eine SPI.h braucht. Die 
würde mir dann auch noch fehlen für den ATMega32.
Gruß Alex

von Alex (Gast)


Lesenswert?

Hallo Leute,
kann denn jemand weiterhelfen bei der Verwendung der Bibliothek?
Danke

von tobi m. (tobi1)


Lesenswert?

Hallo ich beschäftige mich auch mit W5500 und versuche derzeit das 
Example von Codevision von W5200 auf W5500 abzuändern und zwar auf einem 
Xmega. Derzeit kann ich aber nur über die SPI schreiben (IP ändern 
etc.). Kann mir Jemand helfen wie man die Driver von der Wiznetseite so 
ändert das sie auch für andere Plattformen und Mikrocontroller 
funktionieren. Villeicht hat Jemand ein kleines Beispielprogramm mit 
einem Webserver der mit einem W5500 von Wiznet läuft.

von Sebastian W. (wangnick)


Lesenswert?

tobi müller schrieb:
> Hallo ich beschäftige mich auch mit W5500 und versuche derzeit das
> Example von Codevision von W5200 auf W5500 abzuändern und zwar auf einem
> Xmega. Derzeit kann ich aber nur über die SPI schreiben (IP ändern
> etc.). Kann mir Jemand helfen wie man die Driver von der Wiznetseite so
> ändert das sie auch für andere Plattformen und Mikrocontroller
> funktionieren. Villeicht hat Jemand ein kleines Beispielprogramm mit
> einem Webserver der mit einem W5500 von Wiznet läuft.

Im Endeffekt sind die Unterschiede zwischen W5200 und W5500 nicht so 
viele. Sobald du auf multi-byte SPI, die leicht unterschiedlichen 
Adressen einiger Register und die etwas andere Speicherverwaltung 
umgestellt hast sollte schon einiges funktionieren. Die 
Wiznet-Arduino-Ethernetbiblithek unterstützt ja W5100, W5200 und W5500 
aus einem Source heraus (natürlich mit #ifdef's für die verschiedenen 
Chips), da kann man die Unterschiede gut erkennen.

LG, Sebastian

von Alex (Gast)


Lesenswert?

Hallo,
also hat es bisher nur ein einziger geschafft den W5500 zum laufen zu 
bekommen.

von CalM (Gast)


Lesenswert?

Hallo,

hab gerade die W5500 Platine von eHaJo.de am laufen, momentan schaufel 
ich nur 80kBit/s durch den Chip aber das geht ganz gut. Ich nutze dafür 
die Socket Libary von Wiznet und der Hardware SPI von nem Mega644p, 
macht was es soll, und bis auf einen kleinen aber ärgerlichen Bug in der 
Lib von Wiznet bin hellauf begeistert.

mfg

CalM

von Peter (Gast)


Lesenswert?

was war das für ein Fehler in der Wiznet Lib.?

Will auch in Kürze mit dem 5500 und der Lib anfangen...

Gruss und Danke
Peter

von CalM (Gast)


Lesenswert?

Hallo Peter,

in der Version 1.0.2 (sollte die aktuelle auf der Homepage sein) wird in 
der wiz_recive_data und wiz_send_data ein implizieter cast verwendet, 
der einen Überlauf eines uint16_t nach einem Shift erzeugt. Der 
Entwickler des Treibers hat vor zwei Tagen einen Bugreport bekommen + 
Fix erhalten und einen aktualisierten Teiber in aussicht gestellt. In 
der zwischenzeit kann ich dir einen gepatchten Treiber bereit stellen. 
Dieser ist aber nur mit dem W5500 Board von eHaJo.de getestet. Ich 
könnte dort mal fragen ob ich den gepatchten Treiber inkl. AVR Studio 6 
Projekt ins Wiki von eHaJo.de hochladen kann. Wenn sollte das ganze dann 
heute Nacht online sein und ich würde dann dreister weise den Link in 
den Thread hier packen :-)

mfg

CalM

von Peter (Gast)


Lesenswert?

Hallo CalM,

vielen Dank für die Info. Dieses Problem gab es durch meine vorsorgliche 
"Performance-"Anpassung der Lib schon nicht mehr :-).

Da ich von einem W5100 mit einem ATMega2560 (wo der W5500 den W5100 
ersetzen soll) komme und das max. an Performance erreichen möchte, habe 
ich die WIZCHIP_WRITE_BUF(...), WIZCHIP_READ_BUF(...), 
wiz_send_data(...), wiz_recv_data(...) und alles was sonst noch den 
32bittigen "addrsel" (der eigentlich ja nur 24bit ist) nutzt schon auf 
einen Pointer auf eine 24bit Union umgestellt, da die Umsetzung mit dem 
32bittigen "call by value" addrsel (und sogar echtem shiften beim Senden 
auf den SPI) auf einem AVR mit 8bit doch einiges an Zyklen kostet und 
den Durchsatz schmälern könnte.

Mal sehen was mit dem besseren SPI des W5500 geht. Derzeit erreiche ich 
mit dem W5100 und optimiertem Treiber so um die 200-210kByte/s in meiner 
Applikation. Ich hoffe mal wenigstens in die Nähe des theoretischen 
Faktors ~3.9 durch den Blockmode des SPI und die einfachere 
Speicherverwaltung vom W5500 zu kommen...

Gruss und Danke
Peter

von Dankmar S. (daggi)


Lesenswert?

Hallo Sebastian,

ich bin gerade dabei ein Board mit Xmega und dem W550io zum Laufen zu 
bringen. Bis jetzt konnte ich zumindest die grundlegenden Sachen wie 
IP-Adresse usw. einstellen und das Modul antwortet auch auf dieser IP.
Meine Schwierigkeit ist momentan, das Modul zur Ausgabe eines Interrupts 
bei eintreffenden Daten zu bewegen, damit der Xmega datauf reagieren 
kann.
Kannst du mir ein wenig auf die Sprünge helfen, welche Register ich 
ansprechen muss?

Gruß und Danke
Daggi

von Sebastian W. (wangnick)


Lesenswert?

Hallo Daggi,

Dankmar Schmidt schrieb:
> Meine Schwierigkeit ist momentan, das Modul zur Ausgabe eines Interrupts
> bei eintreffenden Daten zu bewegen, damit der Xmega datauf reagieren
> kann.

Nein, das hab ich auch noch nicht probiert. Ich würde mich est einmal 
stur an dem Datenblatt des W5500 orientieren.

Es gibt wohl auch von WizNet ein Tutorial (für den W5100) dass die 
Zustände und Zustandsübergänge der verschiedenen Typen von Sockets 
erklärt. Eventuell sind dort auch die Interrupts eingeordnet. Wer das 
mal hat oder wieder findet: Ich würde mich sehr über die URL freuen!

Ansonsten habe ich eine erste Version eines Internet-Bootloaders für 
Atmega1284P und W5500 am laufen, siehe 
Beitrag "Atmega Eeprom/Flash andauernde Schreibfehler"!

LG, Sebastian

von Dankmar S. (daggi)


Lesenswert?

Guten Abend Sebastian,
das Tutorial wird sich doch finden lassen, oder?
Wegen des Bootloaders kann ich nur den von U.Radig empfehlen.
Für den 1284p mit ENC28J60 hab ich ihn schon im Einsatz.
Vielleicht findest du dort einige Anregungen.

LG, Daggi

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
Noch kein Account? Hier anmelden.