Arduino Mega2560 und Ethernet/SD-Shield

Hallo,

gibt es eigentlich Inkompatibilitäten zwischen dem Mega und dem Ethernet W51000 Shield (das mit der microSD-Karte)?

Hintergrund: Ich hab das Shield auf meinen ATMega2560 gesteckt, Karte rein und dann die Beispiele (Cardinfo, Listfiles, Files) ausprobiert. Die sind alle ohne Anpassung gelaufen.
Dann wollte ich mal sehen, was auf der Karte vom Arduino geschrieben wurde und hab die SD (im laufenden Betrieb) aus dem Shield gezogen.
Seitdem krieg ich die Sch.. nicht mehr zum Laufen.
Ich hab ein zweites EthernetShield und eine zweite SD-Karte probiert. No way.
Die Komponenten laufen auf einem UNO aber alle problemlos.

In den Beispielen steht zwar immer, man soll den Port10 gegen Port 53 tauschen. Am Anfang lief das Shield auch mit dem nicht modifizierten Beispielen.
Auch wenn ich anstelle des "pinMode(10, OUTPUT)" -> "pinMode(53, OUTPUT)" nehme, gibt es keine Besserung.

Immer das "Initialization failed".

Oder hab ich was auf dem Mega geschossen???

Ratlos bin / hk007

"Fehler" gefunden.
Im Forum hab ich einen Tip entdeckt: (Hab zwar vor eröffnen des Posts schon gesucht, aber manchmal ist es Glücksache die richtigen Tips zu finden)

pinMode(10, OUTPUT);
digitalWrite(10, HIGH);

Die rot markierte Zeile einfügen, damit der Wiznet Chip nicht den SPI-Bus stört. Den Pin nur als Ausgang zu definieren reicht nicht.
Anscheinend reagiert der Mega auf dem SPI-Bus etwas empfindlicher als der UNO.

Na ja, muss ich mir halt in Zukunft merken, daß die Beispiele nicht 100% auf alle boards passen.

Gruß/hk007

Natürlich muß nur ein Gerät (IC) am SPI-BUS aktiv sein. Mit CS auf HIGH deaktivierst Du das Gerät.
Grüße Uwe

Ja Uwe,
das versteh ich. Klingt auch logisch. (Wieso der Uno trotzdem arbeitet?)

Wie ist es denn dann umgekehrt? Wenn ich das Ethernet Shield benutzen will. Muss ich dann die SD-Karte (also Pin4) mit High abschalten?
Wobei ich bei den Beispielen für Ethernet keine Definition des CS-Signals gefunden habe.
Bei SD-Karte gibt es ja ein "SD.begin(4)"
Bei Ethernet hätte ich dann auch ein "Ethernet.begin(10)" erwartet.

Dazu hätte ich noch ne Frage: Ich hab gelesen, daß der UNO die Pins 11,12 und 13 für den SPI Bus verwendet. Der Mega aber 50,51,und 53.
Das ist doch in den pins_arduino.h definiert oder? Da brauch ich mich nicht drum kümmern?
Die Praxis würde für meine Vermutung sprechen, da es funktioniert.

Gruß/hk007