Gast
#313951
Hallo ! konnte zwar mein Problem mit dem Hardware SPI ( http://www.mikrocontroller.net/forum/read-1-309359.html#309359 ) noch nicht lösen, aber mit der softwaremässigen Implentierung scheint es halbwegs zu klappen. Hab jetzt aber wieder das nächste Problem: Die Daten die vom ENC empfangen und gesendet werden sind fehlerhaft und stimmen nicht mit den von Ethereal aufgezeichneten überein. Als Beispiel: ARP Broadcast vom Computer an 192.168.0.20 PC (Etherreal): 0000 ff ff ff ff ff ff 00 11 d8 5e e0 2e 08 06 00 01 ........ .^...... 0010 08 00 06 04 00 01 00 11 d8 5e e0 2e c0 a8 00 01 ........ .^...... 0020 00 00 00 00 00 00 c0 a8 00 14 ........ .. Emfpang beim ENC: rxstat: 0x0 len: 0x70 Received packet len: 112, type:0x21 | 33 Packet Contents 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF ----------------------------------------------- ---- ASCII ----- 0000 FF FF FF FF F0 02 76 2F E0 5C 20 30 00 21 00 03 ÿÿÿÿð.v/à\ 0.!.. 0010 04 00 04 00 1D 0B B8 17 C0 50 00 08 00 00 00 00 ......¸.ÀP...... 0020 00 81 A0 00 40 00 00 00 00 00 00 00 00 00 00 00 . .@........... 0030 00 00 00 00 0B 1E 92 A7 B D.h. schon die Länge stimmt nicht mit dem gesendeten überein, und bei den Daten scheinen nur die ersten paar Bytes richtig zu sein (sofern man das mit 0xFF beurteilen kann ;) ) Ähnliches spielt sich beim Senden ab: ENC sendet ein UDP Packet an 255.255.255.255:4950 mit dem Inhalt "hello_test". Ethereal erhält: 0000 ff ff ff ff ff ff 66 55 44 33 22 11 08 00 59 00 ......fU D3"...Y. 0010 00 4e 00 00 00 00 80 11 f3 fc c0 a8 00 14 ff ff .N...... ........ 0020 ff ff 13 56 13 56 00 3a 00 00 bc 23 ff 90 b9 8a ...V.V.: ...#.... 0030 fa f1 07 1d 93 f3 48 89 c6 26 0b c7 a3 e2 b7 b2 ......H. .&...... 0040 07 a4 a1 33 73 4e f0 3c a4 e7 3a 7c 2e 53 3e a1 ...3sN.< ..:|.S>. 0050 e8 ff 1f b0 da d4 b3 00 00 00 00 00 ........ .... Hierbei sind dann aber die Source IP (192.168.0.20) und die MAC vom ENC (665544332211) richtig. Nur der Rest der Daten ist wieder irgendwas... Der Speicher vom ENC an sich dürfte keine Probleme machen; zumindest zeigt der Speichertest (übernommen vom Microchip Stack) daß alles in Ordnung ist. Die grundsätzlichen Routinen hab ich von der avrlib übernommen und an soweit notwendig an meinen Controller (M16C) angepasst. Was mir noch auffällt: Wenn ich das Bit LLSTAT vom PHSTAT1 Register abfrage, erhalte ich die Antwort, daß der MAC Layer nicht verbunden ist. Auch die Link Led leuchtet am ENC nicht; am Switch hingegen schon. Die LED selber funktioniert aber. Und noch etwas was mich interessiert: Was hat es mit dem Lesen der MAC und MII Register auf sich; diese beginnen ja laut Datenblatt alle mit MAC bzw MI und sind mit einem speziellen Lesebefehl zu behandeln, bei dem erst ein Dummy Byte ausgelesen wird und erst danach das eigentliche Datenbyte. Aber in der AVRLib wird auch für dir MAC Register der normale Lesebefehl wie für die anderen Register benutzt; auch praktisch funktioniert bei mir nur dieser. Hab ich da in der Errata Note etwas dazu übersehen ? Oder verstehe ich da irgendwas im Datenblatt falsch ? Hat jemand ne Ahnung was ich da bei der Fehlersuche noch überprüfen könnte ? Mir fällt langsam nichts mehr ein. Schöne Grüße, Thomas B.