Hallo Forum! Ich habe ein Problem beim Senden mit meinem ENC28J60 an einem XC167CI Wenn ich mit einer langsamen Geschwindigkeit, ca. 10kBaud; auf den Baustein schreibe, kann ich wunderbar senden. Sobald ich aber schneller schreibe, bekomm ich eine "late Collision" beim senden. Die SPI-Timings habe ich mit dem Oszi nachgemessen. Ich bin noch weit weg von dem, was der Baustein kann (20MBaud). Woran kann das liegen? Im Errata-Sheet hab ich nichts gefunden, was der Grund sein könnte. Kennt jemand das Problem? Und hat es vielleicht auch gelöst oder zumindest eine Idee? Danke Thomas
Late collisions heisst bei sauberem Netzwerk beispielsweise, dass beide Seiten sich über den full/half duplex mode nicht einig sind. Wenn der ENC auf half steht, der switch aber auf full, dann passiert genau dies. Umgekehrt können late collisions im ENC per definitionem eigentlich nicht auftreten. Da der ENC keine auto negotiation durchführt, ist der full duplex mode meist sinnlos, es sei denn man nagelt den Switch-Port manuell auf full, denn ohne auto negiotiation steht der i.d.R. auf half. Aber ok, wenn beide Seiten den gleichen Modus fahren und das Problem trotzdem auftritt, dann spinnt irgendwas im Netzwerk. Störungen, Switch/Hub ist Schrott, falsches Design vom LAN-Interface, ... Jedenfalls bedeutet dieser Fehler, dass der ENC Daten kriegt oder zu kriegen meint, obwohl er grad auf der Leitung aktiv ist (und der Zeitraum indem das zulässig ist schon abgelaufen ist).
Hallo, also bei HD ist genau das gleiche Problem. Komischerweise hängt es von der Geschwindigkeit ab, mit der ich auf den Baustein schreibe. Im Errata-Sheet hab ich auch nichts gefunden, was zu dem Thema passt. Auch nicht in einem älteren oder neueren. Auf der anderen Seite hängt ein D-Link Switch 10/100/1000. Ich hab auch schon meinen Rechner direkt mit einem gekreutzen Kabel verbunden. Auch keine Änderung :-)
Thomas Weyhrauch wrote: > Komischerweise hängt es von der Geschwindigkeit ab, mit der ich auf den > Baustein schreibe. Was genau meinst du mit dieser Geschwindigkeit? Das SPI vom ENC ist ja kein Modem, d.h. eine Baudrate ist da ein eher seltsamer Begriff. Sind die Ethernet-Frames sehr klein (64 Bytes), kann das Problem nicht auftreten. Dann geht zwar der normale collision counter hoch, aber late collision können überhaupt nur ab einer bestimmten Grösse der Frames auftreten. Wie sieht die Hardware genau aus? Selbstbau? Kit? Wer zeigt die late collisions an? Ein counter im ENC?
Hallo, das SPI-Interface ist eine serielle Schnittstelle. Und bei einer seriellen Übertragung spricht man von Baudrate. Das muss nicht unbedingt ein Modem sein. Ich habe etwa 10kHz eingestellt. Das ist noch weit weg von dem, was der ENC kann. Da klappt die Sache ohne Kolissionen. Sobald ich schneller werde, also so ab ca. 20-30kHz, treten die Kollisionen auf. Das ganze ist auf einer kleinen Platine untergebracht, auf der das ENC-Modul von www.b-redemann.de sitzt. Beides sind professionelle Boards. Also kein fliegende Verdrahtung. Als Ethernetkabel kommt Cat5e zum Einsatz. Auch hier hab ich mehrere getestet. Das Late-Collision-Bit im ENC ist gesetzt. Und es werden auch keine Daten gesendet. Zumindest nicht laut Wireshark.
>das SPI-Interface ist eine serielle Schnittstelle. Und bei einer >seriellen Übertragung spricht man von Baudrate. Das muss nicht unbedingt >ein Modem sein. http://de.wikipedia.org/wiki/Baudrate Vielleicht erspart das einige Diskussionen.
Thomas Weyhrauch wrote: > das SPI-Interface ist eine serielle Schnittstelle. Und bei einer > seriellen Übertragung spricht man von Baudrate. Besser nicht, es sei denn man weiss genau was das heisst. Gigabit Ethernet hast 125 MBaud. > Sobald ich schneller werde, also so ab ca. 20-30kHz, treten die > Kollisionen auf. Dann hat das Problem mit dem Ethernet nichts zu tun. ENC Revisionen unter B5 benötigen einen SPI Takt von mindestens 8MHz.
Die Fehlermeldung besagt also, dass der ENC28J60 etwas zu empfangen glaubt, und das Problem tritt auf, wenn du mit der SPI-Geschwindigkeit hoch gehst? Wie wäre es mit einer kapazitiven Kopplung von SPI nach Ethernet?
> ENC Revisionen unter B5 benötigen einen SPI Takt von mindestens 8MHz. Ich habe die B5-Version. Mit 20MHz (das max. laut Datenblatt) geht garnichts. Mit 10MHz geht die Kommunikation mit dem Baustein, das wars aber. Und mit 20kHz klappt dann endlich auch das versenden von arp-Packeten. Manchmal sogar TCP/IP-Packete von mehr als 64byte. Mit 10kHz klappt dann alles so, wie es sein soll. > Wie wäre es mit einer kapazitiven Kopplung von SPI nach Ethernet Wie meinst du das genau?
Thomas Weyhrauch wrote: >> Wie wäre es mit einer kapazitiven Kopplung von SPI nach Ethernet > Wie meinst du das genau? Ich habe gerade gelesen, dass du ein fertiges Modul benutzt, dann wird das vermutlich nicht dein Problem sein. Trotzdem eine Erklärung: Wenn z.B. zwei Leiterbahnen direkt nebeneinander verlaufen, dann bilden sie einen kleinen Kondensator, über den sie gekoppelt sind. Wenn nun auf der einen Leiterbahn ein digitales Signal ist, hast du auf der anderen bei jeder Flanke einen kurzen Impuls. Je hochohmiger das eigentliche Signal auf der zweiten Leiterbahn ist, desto ausgeprägter der Spike.
Ja, da geb ich dir grundsätzlich recht. Aber nicht bei 10kHz und Abständen von ca. 0,8mm. Die Leitungen liegen auch weit auseinander. Hab mir eben das Layout noch mal angeguckt. Die Kommunikation zwischen meinen µC und dem ENC klappt ja auch wunderbar. Und während der Baustein sendet, ist SPI still. Aber die Idee ist gut. Ich werde mich mal dran machen und messen, ob sich da was feststellen lässt.
Ok, hab das Problem gelöst, bzw. Microchip hat es gelöst Im Erratasheet zum B5 unter dem Punkt "13. Module: PHY" steht die Lösung. Wenn der ENC Linkimpulse erhält, während er sendet, meldet er die als Kollision. Ein Workaround ist auch angegeben. Und siehe da, es klappt auch alles. Was das ganze allerdings mit der SPI-Geschwindigkeit zu tun hat, ist fraglich. Gruß Thomas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.