Habe die Standardschaltung von Microchip aufgebaut mit einem MagJack.
Die eine LED ist so programmiert, dasss sie beim Senden oder Empfangen
blinkt. Die andere zeigt den Linkstatus an. Nur leider bleibt die LED
vom Linkstatus aus. Wenn ich eine ARP-Message sende, blingt die eine
für Senden. Nur jetzt werden keine weiteren Packete mehr verschickt.
Mach die Initialisierung wie im Datenblatt beschrieben.
Hier mal der aktuelle Quelltext. überall wo im Quelltext ENC_ sind die
Register und Bits gemeint von dem Ethernet-Controller. Ich frage das
ENC_TXIF-Bit ab und weiss daher, das er Packete sendet. Nur leider
blinkt die LED nicht dazu. Ausserdem wird kein Link hergestellt
zwischen PC und Controller. Ich vermute, dass ich irgendwass bei der
Initialisierung vergessen habe
Auch ohne Initialisierung sind die Defaults so, dass die connect-LED
leuchtet, wenn die Buchse mit einer Gegenstelle passend (PC:
gedrehtes Kabel, Switch/Hub: gerades Kabel) verbunden ist.
Es liegt also an der Hardware.
Anhand der Datenblätter dürfte es stimmen. Zurzeit ist die Schaltung auf
einem Steckbrett aufgebaut und ich benutze einen RBIAS von 2k statt 2k7.
Könnte dort der Fehler liegen?
Poste doch mal deine Schaltung. Ich hatte mal den Ferrit falsch
angeschlossen.
Im Datasheet genau hingucken, bei mir im acrobat sah auf 100% Zoom eine
Kreuzung wie eine verbindung mit Punkt aus... Erst bei >150% sah man es
:-X
Bye, Simon
Okay, es lag an den zu langen Leitungen. Sobald ich den Router
anschließe, bekomme ich einen Link. Nur mit dem PC zu PC mit dem
gekreuzten Kabel ging es noch nicht. Die Schaltung ist im Anhang.
Also, ein Router kann einen Link aufbauen (aber ein Interrupt wird
trotzdem nich ausgelöst obwohl ich das PHY-Register beachtet habe). Der
andere Router kann keinen Link aufbauen und der PC auch nicht.
Hi!
Pack mal an jeden (!) Versorgungsspannungspin nen 100nF gegen masse
hin.
Aber wirklich jeden, nicht zwei Vdd als einen interpretieren ;)
Ob es bei deinem speziellen Problem hilft kann ich nicht versprechen,
ohne ausreichende Cs
macht der aber mal gerne was er will ;)
Bye, Simon
Aber sicherlich funktioniert das aufm Steckbrett...
Mein Prototyp lief wochenlang auf nem Steckbrett und bei mir
war es sehr viel Chaotischer verkabelt (teils mit 10cm langen
Kabeln)...
Bye, Simon
Platine ist schon fertig. Ich werde noch ein zweites Controllerboard
aufbauen und dann werden wir schon sehen wie es reagiert. Ich vermute
die Verkabelung unter dem MagJack mit Fädeldraht ist der Grund.
So, neue Erkenntnis. Nachdem ich ein weiteres ENC28j60-Board aufgebaut
habe und mit einem gekreuzten Kabel die beiden Schaltungen verbunden
habe, kann ich sagen: Es war sofort ein Link da. Nur mein PC und der
zweite Router schaffen es nicht, einen Link herzustellen zum ENC28j60.
Als Spule habe ich dei SMCC von Reichelt drinnen.
@ Simon
Was muss ich für den Empfang von Packeten Initialisieren. Senden kann
ich von einem ENC zum anderen ENC. Im Errata steht, dass man das
EPKTCNT lesen muss und dann vergleichen, ob es sich geändert hat. Nur
leider funktioniert das auch nicht.
Ab und zu wird EPKTCNT inkrementiert. Aber nur von einem Packet was der
Controller selber abgeschickt hat. Ich erkenne jetzt einen Link und
schicke erst dann die Packete. Nur der Empfang haut nicht so ganz hin.
Die Schaltung habe ich schon überprüft. Der PC baut immer noch keinen
Link auf. Ein abgeschicktes Packte kommt nicht beim PC an (das Packet
geht über einen Switch).
Evtl stimmt die ziel mac adresse nicht ?
Wenns über nen Switch zum PC wird das paket dort evtl verworfen wenn
die mac nicht stimmt.
Drauf achten dass die enc quell mac richtig rum ist, ich meine man
musste sie drehen
010203ABCDEF -> EFCDAB030201
Bye, Simon
Also wenn die MAC 00-11-22-33-44-55 (So steht sie bei den
Netzwerkverbindungsdetails) ist muß ich 55-44-33-22-11 schicken?
Ich schätze ich benötige für den RBIAS doch einen 2,7k Widerstand.
nein, in den ethernet paketen musst du es normal lassen.
Nur bei der initialisierung der enc config musst du die mac des enc
drehen.
Rbias: da ging bei mir 2k und auch 2k7 ohne Probleme...
Bye, Simon
Okay, aber wenn ich ein Broadcast (FF-FF-FF-FF-FF-FF) schicke, muß er
trotzdem reagieren, da ich ERXFCON nicht verändere. Ich habe beide so
programmiert, dass die Packete, die kleiner 60 bytes sind aufgefüllt
werden und dann ein CRC angehängt wird. Für ARP schicke ich erst die
MAC-Destination dann die MAC-Source und dann den Type 0x0806 und dann
was mir Ethereal anzeigt (Halt nur angepasst). Nur der PC bekommt das
Pakte nicht. IP-Adresse hab ich vom PC angegeben.
Okay, der Empfang von einem ENC28j60 zum anderen ENC28j60 funktioniert.
Aber leider empfängt der ENC28j60 immer dass, was er selber gesendet
hat. Auf jedenfall wartet einer der beiden auf einen Empfang, bevor er
etwas sendet. Wie kann ich das Echo ausschalten?
So dass Echo habe ich ausgeschaltet, indem ich während ich etwas sende
einfach RXEN auf 0 setze. Nur ein Packet vom PC wird noch nicht erkannt
und der ENC28j60 reagiert dann nicht darauf.
Bin immer noch nicht weiter gekommen.
Verbinde ich 2 ENC28j60 (mit MagJack SI-40138) über ein gekreuztes
Kabel, kann ich Packete empfangen. Schließe ich nun ein ENC29j60 mit
MagJack an den PC an (über das gekreuzte Kabel), wird noch nichteinmal
ein Link aufgebaut (Der PC ist auf Automatische Erkennung eingestellt).
Schließe ich das Modul mit dem ENC28j60 an einen Router an (über ein 1:1
Kabel) wird zwar ein Link aufgebaut, aber ein Packet vom Router zum
ENC28j60 wird nicht erkannt. Desweiteren wenn ich etwas schicke, kommt
es auch nicht am PC an.
Wer kann mir helfen?
vielleicht irgendein Systematischer Verkabelungsfehler ?
Sprich bei den beiden encs heben die sich auf und es geht, beim PC
klappts nicht...
Wär nur so eine idee...
Ich mein in der errata stand auch irgendwas vonwegen das irgendein
autosense nicht klappt und man evtl die tx oder rx +/- leitungen
drehen sollte (irgendwie sowas)
Hab mir grad mal das pdf von deinem magjack angesehen.
Was ist das denn für eine komische Verkabelung ?
Da hängen 75ohm zwischen den Mittelabgriffen der Übertrager ?!
Hab dir mal nen screenshot von meiner Verkabelung mit normer RJ45
buchse und
Übertrager angehängt
(kannst du ja zum testen mal von ner alten isa Karte ablöten oder so)
Bye, Simon
Gestern kam ein neues Errata B5 raus, aber für mich gilt B4 (laut
EREVID).
Der ENC28j60 soll laut Datenblatt eine falsche Verkabelung der TPIN+
und TPIN- Anschlüsse feststellen können. Im Errata heißt es nur, dass
dieses Modul nicht funktioniert und man selber darauf achten muß.
Im neuen Datenblatt sind diese 75 Ohm Widerstände eingezeichnet.
Als Ferrit Beat habe ich einfach eine Festinduktivität von Reichelt
genommen (SMCC 47).
TPIN+/-: ja genau, ich meinte das so dass du mal checkst ob du die
richtig verkabelt hast.
Errata: ist diesmal was neues drin ? B1 und B4 waren ja exakt (?)
gleich :-X
neues Datenblatt: Interessant, das kannte ich noch gar nicht :)
Ich hab leider auch keine ideen mehr woran es liegen könnte :-\
Bye, Simon
Zum Errata:
Der Interrupt PKTIF geht immer noch nicht. Der RBIAS ändert sich
wieder. Und es gibt immer noch insgesamt 13 Punkte.
Am besten selber reinschaun.
Ich werde mir in den nächste zwei Wochen mal eine Platine ätzen und das
ganze dann darauf aufbauen. Vielleicht liegt es an der
Blankdrahtverdrahtung des MagJack zum Steckboard.
Bevor das mit dem PC nicht funktioniert, kann ich eh nicht weiter den
TCP-Stack machen.
Auf ARP und ICMP wird schon geantwortet.
Ich habe jetzt ein Platine aufgebaut und es entsteht immer noch kein
Link zwischen PC und Platine. Aber Zwischen zwei Platinen entsteht ein
Link und ich kann Daten verschicken. Was mache ich falsch?
Ich habe den MagJack SI-40138. Verbinde ich TPOUT- mit TPIN- und TPOUT+
mit TPIN+ baut der PC einen Link auf.
Hast du vielleicht eine Firewall an deinem PC laufen ?
Ich falle da immer wieder drauf rein - hatte ich erst vor ein paar
Tagen, dass mein PC eine Verbindung von meiner Hardware ohne
irgendeiner Meldung von der Firewall verweigerte (obwohl an sich im
Lernmodus); hatte mich gewundert wieso da keine Pakete im Etherreal
ankommen. Firewall händisch nachkonfiguriert und lief wieder.
So, da ich in diesem Forum den Tipp bekommen habe, dass die
Kondensatoren raus sollten, bin ich schon weiter. ARP, ICMP und ein
TCP-Aufbau funktioniert schon.
Ich habe mir ein Modul geätzt mit einem ENC28j60 als DIP und Leitungen
für ein Steckboard. Alles hat funktioniert und ich konnte die Software
entwickeln.
Jetzt habe ich mir ein Modul mit einem PIC geätzt, damit ich wegen der
Verbindungsleitungen kein Problem bekomme. Der ENC28j60 ist hier ein SO
Type.
Jetzt sendet das Modul allerdings nicht, der PIC kann aber mit dem Modul
kommunizieren. Beide haben die REV. 5.
Wo könnte das Problem liegen?