Forum: Mikrocontroller und Digitale Elektronik ENC28J60 meldet "späte Kollision"


von Thomas W. (thomas100)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

Half duplex mode verwenden.

von Thomas W. (thomas100)


Lesenswert?

Bringt leider nichts. Auch hier der gleiche Fehler :-(

von Andreas K. (a-k)


Lesenswert?

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).

von Andreas K. (a-k)


Lesenswert?

Was hängt denn eigentlich am anderen Ende vom LAN-Kabel?

von Thomas W. (thomas100)


Lesenswert?

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 :-)

von Andreas K. (a-k)


Lesenswert?

Kann auch heissen: Kabel ist Schrott.

von Andreas K. (a-k)


Lesenswert?

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?

von Thomas W. (thomas100)


Lesenswert?

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.

von sepp (Gast)


Lesenswert?

>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.

von Andreas K. (a-k)


Lesenswert?

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.

von Stefan E. (sternst)


Lesenswert?

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?

von Thomas W. (thomas100)


Lesenswert?

> 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?

von Stefan E. (sternst)


Lesenswert?

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.

von Thomas W. (thomas100)


Lesenswert?

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.

von Thomas W. (thomas100)


Lesenswert?

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