arduino 2560 and ethernet shield

Hallo,
ich habe heute mein ethernet shield bekommen, welches auch für den arduino mega gebaut ist.
Allerdings bin ich verwirrt:
Überall steht, das neue shield ist auch mit dem Mega kompatibel, allerdings steht genauso überall, dass es die Pins 51-53 benötigt.
Das ist ja schon mal ein Widerspruch in sich.

Was genau muss ich denn nun machen?
Muss ich mich nach dem bekannten MEGA Hack richten und die PINs (ich glaube 9-12) leicht abknicken und diese dann mit den 51-53 verbinden?? Oder kann ich die PINs so ins board stecken und dann oben über die Buchse die PINs verbinden? Oder einfach gar nichts?

Sehr verwirrend, ich erhoffe mir Aufklärung.

VG
Thorsten

Hallo Thorsten,

bei 'kompatiblen' Shields sollte es so sein, dass diese nicht nur die am Rande liegenden Buchsenleisten kontaktieren, sondern auch die 6-polige Programmierstiftleiste.

Auf diese Stiftleiste sind u.a. die SPI-Pins geführt, da diese auch zur Programmierung benötigt werden.
Das sind beim MEGA eben die Pins 51 bis 53.

Sollte also Dein Shield diese Verbindung haben, müsste es problemlos funktionieren, allerdings eben beim MEGA mit den Pins 51 bis 53.

Gruß

Martin

Ich habe ein ähnliches Problem und zwar spielt das EthernetShield nicht mit dem MEGA R3 Board
wenn ich den Card Info Sketch aus der SD Card Library ausprobiere?

Egal ob ich

// disable w5100 SPI
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);

oder

// disable w5100 SPI
  pinMode(53,OUTPUT);
  digitalWrite(53,HIGH);

ausprobiere. Der Sketch bleibt bei "Initializing SD card..." also bei if (!card.init(SPI_HALF_SPEED, chipSelect)) { hängen?
Woran kann das liegen? Gleicher Sketch und Shield funzt mit einem Duemilanove Board problemlos...

Gruß
Snoops

Wie Du auf dem Schaltbild des Ethernet-Boards siehst wird als SS (EN) immer der Pin D10 auf der äußeren Stiftleiste verwendet.
also muß es heißen:

// disable w5100 SPI
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);

Wieso es dann in Deinem Fall nicht funktioniert weiß ich nicht zu sagen.

Grüße Uwe

Main_arduino-ethernet-shield-06-schematic ISP.jpg

Füge mal im Setup nach der Initialisierung ein delay von 1 Sekunde ein. Der SD reader braucht oftmal so lange zum initialisieren.

Viele Grüße

Jörg

Hallo,

ich habe mal ein delay in der CardInfo Sketch eingefügt, leider ohne Erfolg :frowning:

  Serial.print("\nInitializing SD card...");
  pinMode(10, OUTPUT);     // change this to 53 on a mega
  digitalWrite(10,HIGH);
 
  delay(1000);

  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card is inserted?");
    Serial.println("* Is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present."); 
  }

Der Sketch hängt bei Initializing SD card...

Gruß
Snoops

Ich habe im Prinzip ein ähnliches Problem wie der TS. Welche Pins denn nun? Wenn ich das "kompatible" Shield nicht direkt auf den Mega draufstecke, sondern über Kabel verbinde, welche Pins muss ich dann manuell verbinden, damit das ganze auch läuft?

Frank

Gelegenheitsbastler:
Ich habe im Prinzip ein ähnliches Problem wie der TS.

Habt ihr Eure Ethernet-Shields am MEGA inzwischen am Laufen?

Korrekte Ansteuerung beim MEGA im CardInfo-Sketch ist:
pinMode(53, OUTPUT); // change this to 53 on a mega
pinMode(53, HIGH);

Nach meinen Tests ist es so: Wenn das versemmelt wird und man nimmt stattdessen auch beim MEGA Pin-10, dann kann man es hinterher in manchen Fällen minutenlang vergessen, das Shield mit dem richtigen Code anzusteuern. Da wird irgendwas richtig verpolt. Abhilfe: Board stromlos machen, einige Minuten warten, dann nochmal richtig machen.

Außerdem sind bei den billigen China-Ethernetshields die Steckkontakte eine sehr häufige Fehlerquelle, insbesondere liegt das Ende der Pin-Leisten nicht auf exakt derselben Höhe wie die Anschlußbuchse für die 6 ICSP-Kontakte. Aber nur wenn auch die ICSP-Buchse des Shields verbunden ist, funktioniert das Shield. Im einzelnen treten folgende Kontaktierungsfehler bei China-Shields auf:

a) Pin-Stifte am Shield sind zu lang ==> ICSP-Header hat keinen Kontakt
Abhilfe: Mit einem Seitenschneider alle Stifte um exakt denselben Betrag einkürzen
Vorsicht: Aufpassen dass Fall b) nicht eintritt!

b) Pin-Stife am Shield sind zu kurz ==> Die Kontakte an der Unterseite der Ethernet-Buchse bilden einen Kurzschluss mit der Oberseite der USB-Buchse am Board. Bei Kurzschluss verschwindet auch der COM-Port dieser Kurzschluss-Kombi, so dass kein Sketch hochgeladen werden kann. Abhilfe: Shield nicht komplett aufstecken, sondern wenigstens am Ende der Ethernet-Buchse einen halben Millimeter hochstehen lassen. Ggf. ein kleines Stück isolierendes Material zwischen der USB-Buchse des Boards und Shield zwischenlegen.

c) ICSP-Headerbuchsen zu kurz: Die China-Hersteller verwenden fast immer keine langen ICSP-Buchsen bei der Bestückung wie es eigentlich notwendig wäre, sondern nehmen eine Normalausführung, die etwas vom Board abstehend eingelötet wird. Trotzdem reicht die Buchse nicht so hoch wie die Pin-Stifte der seitlichen Leisten, so dass es am ICSP-Anschluss nur knappen Kontakt gibt. Und manchmal auch keinen Kontakt. Abhilfe: Shield fest aufstecken, besonders an der ICSP-Buchsenseite gut andrücken. Wenn das noch immer keinen Kontakt liefert, ggf. Pin-Stife der seitlichen Pin-Header am Shield einkürzen wie unter a), aber dabei aufpassen, dass sie nicht zu kurz werden und kein Kurzschluss wie unter b) genannt auftreten kann.

Also wenn ihr Eure Ethernet-Shields nicht ans Laufen bekommt, immer auch ein Auge auf die Steckverbindungen werfen!

Und für erste Tests auch daran denken: Die SD Library kommt nicht mit jeder supermodernen SD-Karte hoher Kapazität zurecht. Im Zweifelsfall für erste Versuche immer eine nur maximal 2GB große und FAT-formatierte Karte verwenden! Wenn ihr mit so einer älteren SD-Karte alles im Griff habt, erst danach mit modernen SDHC Karten hoher Kapazität ausprobieren, was davon läuft!

Da hast du eine Menge Fehlerquellen aufgeführt. Das wird bestimmt hilfreich sein, aber bei den Pins habe ich irgendwie ein Brett vorm Kopf.

Heisst das, dass ich den Pin 10 wegbiegen müsste? Ich möchte das Shield nicht auf den Mega stecken, sondern mit Kabeln verbinden. Hier Arduino Shield List: Arduino Ethernet Shield v5.0 wird gezeigt, welche Ports verbunden sein sollten. Aber leider ist die ICSP nicht eingezeichnet.

Was muss ich manuell verbinden und was nicht? Mit welchen Pin auf dem Shield wird Pin53 verbunden?

Frank

Gelegenheitsbastler:
Heisst das, dass ich den Pin 10 wegbiegen müsste?

Nö, nicht wegbiegen. Nur für nix anderes benutzen.

Gelegenheitsbastler:
Was muss ich manuell verbinden und was nicht?

Im Zweifelsfall verbindest Du genau das manuell, was sonst beim Stecken verbunden wird, und zwar:

Board Shield
  4      4
 10     10
 11     11
 12     12
 13     13
 A0	A0
 A1     A1

Sowie alle 6 ICSP-Pins 1:1 verbinden (genau wie beim Zusammenstecken)

Guten Morgen,

das verstehe ich nicht. Wieso müssen D11, D12 und D13 noch verbunden werden, wenn MISO, MOSI und SCK schon über den ICSP verbunden sind? Ist das beim Mega wirklich notwendig?

Mein Problem ist, dass ich mindestens 10 (13 wären besser) PWM-Ports für meine Anwendung benötige. Das klappt aber nicht, wenn D11 - D13 belegt sind. Daher meine Frage.

A0, A1, D4, D10 (und ICSP) sind nicht das Problem. Da kann ich meine Hardware passend umlöten und auf andere Pins ausweichen.

Frank

Gelegenheitsbastler:
das verstehe ich nicht. Wieso müssen D11, D12 und D13 noch verbunden werden, wenn MISO, MOSI und SCK schon über den ICSP verbunden sind? Ist das beim Mega wirklich notwendig?

Ich habe keine Ahnung.

Was hindert Dich dran, die genannte Verkabelung mal herzustellen und dann selber auszuprobieren, ob Du die Leitungen weglassen kannst?

Hallo,

ich habe nochmal rumgespielt und mit einem Duemilanove funktioniert es wie gewünscht. Wie man unten sieht

Initializing SD card...Wiring is correct and a card is present.

Card type: SDHC

Volume type is FAT16

Volume size (bytes): 3959160832
Volume size (Kbytes): 3866368
Volume size (Mbytes): 3775

Files found on the card (name, date and size in bytes):

Nur bei dem MEGA weiterhin die bereits erwähnten Zicken :0
Auch mit...?

  Serial.print("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
   pinMode(53, OUTPUT);     // change this to 53 on a mega
  digitalWrite(53,HIGH);
 
  delay(1000);


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");

Gruß
Snoops

Snoops:
Nur bei dem MEGA weiterhin die bereits erwähnten Zicken :0
Auch mit...?

Und was ist, wenn Du nochmal mit der SPI-Geschwindigkeit runtergehst auf:

if (!card.init(SPI_QUARTER_SPEED, chipSelect))

???

@Snoops
Du hast dann auch das, was bei Due auf Pin 10 steckte beim Mega auf Pin 53 gesteckt ?

Hi,

zum Thema if (!card.init(SPI_QUARTER_SPEED, chipSelect)) {
--> Leider kein Erfolg...

zum Thema Du hast dann auch das, was bei Due auf Pin 10 steckte beim Mega auf Pin 53 gesteckt ?
-->Wie jetzt? Ich dachte das läuft via Board Routing der Kontakte automatisch.
Also Plug and Play, EthernetShield aufs MEGA Board, Pin in Sketch auf 53 und gut is?

Was meinst du jetzt mit Board-Routing ?
Die SPI-Pins liegen beim MEGA anders als beim UNO & Co.
Beim Mega ist Pin 53 der, welcher beim UNO die 10 ist.

Was meinst du jetzt mit Board-Routing ?

Dh. für mich, das ist intern verbunden ich muss nur in dem Sketch die Pins anpassen und gut ist.
Nicht noch zusätzlich den PIN10 des EthernetShields mit dem Pin53 des MEGA Boards verbinden.
Oder irgendwas wegbiegen und verbinden...

Das geht hier nicht einfach durch Software Änderungen, da diverse Schnittstellen nun mal in Hardware ausgeführt sind und auf festen Pins liegen.