Ansteuerung W5500

#3436608
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
Angehängte Dateien:
#3437387
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
Gast #3438898
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
#3439116
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
Gast #3455290
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
#3476332
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.
#3476521
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
Gast #3518084
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
Gast #3518252
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
#3550709
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
#3550735
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren