ENC28J60 mit der Library "EtherCard" - funktioniert nicht

Hallo,
ich benutze das Ethernetmodul http://www.komputer.de/zen/index.php?main_page=product_info&cPath=0&products_id=76 als Entwicklungsgrundlage für den dort verbauten Chip (ENC28J60).

Als Library dafür benutze ich EtherCard da das "offizielle" EthernetShield ja einen Wiznet-Controller verwendet und der TCP/IP-Stack somit nicht in der Standard Ethernet-Library enthalten ist.
Zum Testen habe ich die Beispiele verwendet die der Library beiliegen.

Mein Problem ist, dass ich keine Netzwerkverbindung mit dem Modul zustande bekomme.
Beim Compilieren sind keine Fehler aufgetreten; Die Verdrahtung zwischen dem Arduino Board und dem Netzwerkcontroller ist fehlerfrei; Sobald ein Netzwerkkabel angeschlossen wird leuchtet die Orange LED dauerhaft und die Grüne LED blinkt;

Aber ich bekomme im Serial-Monitor keine Meldung also weder Erfolg noch Misserfolg und ebenso ist das Board nicht im Netzwerk verfügbar. Da ich mir nicht sicher bin wo mein Fehler liegen könnte hoffe ich hier Hilfe zu bekommen.

Kannst Du mal deinen Code und die Fehlermeldung posten?

Fennek:
Mein Problem ist, dass ich keine Netzwerkverbindung mit dem Modul zustande bekomme.

Chinaversender bieten kompatible Ethernet-Shields mit W5100 Chip für teils unter 10 EUR an.

Die Verwendung des ENC28J60 für Arduino-Projekte anstelle eines W5100 Chips rechnet sich nicht, wenn Dir Deine Zeit lieb und teuer ist.

Kannst Du mal deinen Code und die Fehlermeldung posten?

Wie ja bereits beschrieben gibt es keine Fehlermeldung.

Die Beispiel-Codes für die EtherCard Library gibt es unter dem Link EtherCard/examples/backSoon at main · njh/EtherCard · GitHub.

Die Verwendung des ENC28J60 für Arduino-Projekte anstelle eines W5100 Chips rechnet sich nicht, wenn Dir Deine Zeit lieb und teuer ist.

Danke für den Hinweis, aber auf einen anderen Chip umzusteigen wäre für mich der letzte Ausweg.

Fennek:
Danke für den Hinweis, aber auf einen anderen Chip umzusteigen wäre für mich der letzte Ausweg.

Irgendwie bist Du masochistisch veranlagt.
Aber na ja.

Ich fange mit Deiner Beschreibung an:

Fennek:
Aber ich bekomme im Serial-Monitor keine Meldung

Gar keine?

Dieser Fehler ist typisch für eine falsch eingestellte Baudrate im seriellen Monitor. Der von Dir verlinkte Sketch sendet mit:
Serial.begin(57600);
Serial.println("\n[backSoon]");

Wenn Du nicht mal den Text "[backSoon]" im seriellen Monitor zu sehen bekommst, dann prüfe mal, ob der serielle Monitor auf dieselbe Baudrate eingestellt ist, mit dem der Sketch sendet.

Falls Du ein Leonardo-Board verwendest, wird im Setup-Code für die serielle Schnittstelle auch eine zusätzliche Zeile benötigt;
Serial.begin(57600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
Serial.println("\n[backSoon]");

War der Fehler ("falsche Baudrate" oder "fehlende Zeile für Leonardo-Boards") dabei?

Wenn es Meldungen im seriellen Monitor gibt, dann poste bitte mal alles, was im seriellen Monitor an Meldungen erscheint.

Nun gut das war etwas unglücklich ausgedrückt, ich bekomme die Zeile "[backSoon]". Aber das war's dann auch, von dem möglichen Meldungen "Failed to access Ethernet controller"; "DHCP failed"; oder eben die durch DHCP zugewiesenen Adressen erscheint keine.

Die serielle Kommunikation funktioniert Problemlos, das ist sicher.

Ich verwende das Board "Arduino UNO - SMD", das sollte aber für das Problem nicht essentiell sein.

Da die Bibliothek ja scheinbar recht häufig erfolgreich verwendet wird, muss ich ja annehmen, dass der Fehler bei mir liegt.

Ich weis nur leider nicht welche Möglichkeiten ich überhaupt habe um den Fehler zu finden, mal vom überprüfen der Verdrahtung abgesehen :).

Fennek:
Ich weis nur leider nicht welche Möglichkeiten ich überhaupt habe um den Fehler zu finden, mal vom überprüfen der Verdrahtung abgesehen :).

Als erstes würde ich mal die standardmäßige "Ethernet" Library in der Arduino-Standardinstallation löschen. Wenn ich mich nicht täusche, gibt es teilweise wohl Namensgleichheit von Funktionen und sogar Dateien zwischen der Ethernet-Library und verschiedenen ENC28J60-Libraries, und selbst wenn Du die richtige Include-Datei in Deinem Sketch inkludierst würde ich mich nicht wundern, wenn sich Arduino beim Einbinden der Funktionen trotzdem verhaspelt.

Weiterhin könntest Du mal überprüfen, ob Dein Netzwerk überhaupt mit 10 MBit Komponenten arbeitet. Es soll ja inzwischen Leute geben, die haben Gigabit-Heimnetzwerke, wo der DSL-Router genau so mit 1000 MBit arbeitet wie die Switches und natürlich die PC-Netzwerkkarten. Wenn ich mich nicht täusche, sind GBit Netzwerke zwar im Prinzip nicht nur fallback-fähig auf 100 MBit, sondern auch auf historische 10 MBit. Aber da das eine eher museumsreife Geschwindigkeit für Netzwerkkomponenten ist, muß das nicht die Grundkonfiguration sein. Eine 10 MBit Komponente im 1000 MBit Netzwerk ist nämlich auch eine ziemliche Bremse für den Gesamt-Datendurchsatz.

Die Frage ist also: Hast Du schon mal irgendeine museumsreife 10 MBit Netzwerkkarte erfolgreich in Deinem Heimnetz in Betrieb genommen? Oder arbeitet Dein Netzwerk vielleicht nur auf GBit und 100 MBit?

Der ENC28J60 ist ja nun auch mal ein schlapper Chip, der nur museumsreife 10 MBit verkraftet, und zu so einem Museumsstück müßte Dein Netzwerk natürlich auch kompatibel sein, wenn Du den Chip in Gang setzen möchtest. Viele Switches haben LED-Anzeigen für den Netzwerk-Link, also ob ein Netzwerk-Link besteht und mit welcher Verbindungsgeschwindigkeit die angeschlossene Komponente erkannt wird. Kannst Du am Switch eine Änderung der LED-Anzeigen feststellen, wenn Du den (verdrahteten und mit Spannung versorgten) ENC28J60 anstöpselst?

Das ist so nicht richtig. Gigabit Ethernet und Switches sind "immer" 10MBit fähig.
Ich betreibe hier einige AVR-NET-IOs von Pollin mit dem Chip an meinem 1000er Netzwerk aus TP-Link und AVM Infrastruktur.

Der Post ist zwar uralt, aber ich stand vor dem selben Problem. Hier meine Lösung:

Anschluss des Modules.
// PIN Connections (Using Arduino UNO):
// VCC - 3.3V
// GND - GND
// SCK - Pin 13
// SO - Pin 12
// SI - Pin 11
// CS - Pin 10 <- 10 (SS bei Uno) ist Regelzustand. 8 muss explizit angegeben weden!

CS-Problem gelöst mit der Änderung der Zeile:
ether.begin(sizeof Ethernet::buffer, mymac, 10) // z.B. CS auf Pin 10
oder
ether.begin(sizeof Ethernet::buffer, mymac) // CS auf Pin 10
oder
ether.begin(sizeof Ethernet::buffer, mymac, 08) // z.B. CS auf Pin 8

Antwort ist nur eine Memo.

Es bringt nichts, einen uralten Thread zu kapern.
Mache bitte einen eigenen Thread auf. Stelle Deinen kompletten Sketch in Codetags hier ein. (</> - Button oben links im Forumseditor).

Mißverstanden.

Gruß Tommy

Er hat doch nichts gekapert, sondern nur vorbildlich eine Lösung für einen ungelösten Thread hingeschrieben. So hat jeder was davon, der bei einer Suche auf den Thread stösst.