Problema SD con arduino MEGA2560

ciao a tutti,
ho dovuto sostituire un arduino mega1280 con il mega2560, ora però non riesco più a leggere la scheda SD montata sulla ethernet shield..... Ovviamente non ho cambiato nulla, ho solo spostato la shield da una scheda all'altra

Ho provato gli esempi dell'ide e funziona solamente quando sostuisco la riga
pinMode(10,OUTPUT)
con

pinMode(53,OUTPUT)

Questo però non riesco ad adattarlo al mio sketch.....girovagando per la rete mi è sembrato di capire che il problema è nel file sd2card.h della libreria SD.
Dii seguito parte dello sketch

#include "SPI.h"
#include "SD.h"
#include "Ethernet.h"
#include "DS1307new.h"
#include "Flash.h"
#include "WebServerSD.h"
#include "Wire.h"
#include "EEPROM.h"
.....
.......

{
........
........
	Ethernet.begin(mac, ip);
	webserver.setDefaultCommand(&defaultCmd);
	webserver.begin();
	webserver.addCommand("FORM", &formCmd);
	webserver.addCommand("leggi", &inviaValoricmd); ////////////////////////////////
	
//INIZIALIZZO uSD
	if (!card.init(SPI_FULL_SPEED, 4)) {
		has_filesystem = false;

// initialize a FAT volume
	if (!volume.init(&card)) {
		has_filesystem = false;
	}

	if (!root.openRoot(&volume)) {
		has_filesystem = false;
.......
.......
}

Come posso risolvere??

La linea SS indica la periferica SPI con cui l'Arduino sta dialogando. Siccome sia la Ethernet che la SD usano il bus SPI, hanno bisogno di 2 pin differenti per poter lavorare insieme.
Per lavorare la Ethernet Shield ha bisogno comunque di avere quel pin 53 settato come output, anche se poi userai i pin 10 e 4 per selezionare la periferica SPI con cui dialogherai (solo 1 alla volta). E' spiegato nella scheda del prodotto:

Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work.

Note that because the W5100 and SD card share the SPI bus, only one can be active at a time. If you are using both peripherals in your program, this should be taken care of by the corresponding libraries. If you're not using one of the peripherals in your program, however, you'll need to explicitly deselect it. To do this with the SD card, set pin 4 as an output and write a high to it. For the W5100, set digital pin 10 as a high output.

grazie per l'ottima spiegazione!!
avevo letto la documentazione, solo che pur mettendo il pin 53 come output nel mio sketch non riesco a vedere la sd mentre non ho problemi con gli esempi.. :~

Ma setti ad high il pin 4 prima di accedere alla SD?

leo72:
Ma setti ad high il pin 4 prima di accedere alla SD?

Ma non dovrebbe farlo in automatico la libreria lo scambio ethernet/SD??? anche perchè sulla mega1280 funzionava perfettamente.....spulciando un po' la libreria (in modo assolutamente incompetente XD) ho visto che vengono "trattate" allo stesso modo

Negli esempi delle lib vedo che è il codice nello sketch che si occupa di questo pin.

PS:
scusa, ho scritto male. HIGH=deselezione, LOW=selezione

provato anche con LOW ma non viene ancora letta...la cosa che a me sembra strana è che con la mega1280 non avevo questo problema! il pin ss è lo stesso

Mi spiace, allora ci vuole qualcuno che abbia quello shield e la Mega per aiutarti meglio. Io non posseggo queste schede.

Ciao,

Mi intrometto in questa discussione perchè anche io ho un problema con SD...

Premetto che non ho molta esperienza con il C++ per questo sto "provando" gli esempi e vari tutorial per capire come funzionano.....

Ho un Mega2560 fatto in casa e una classica W5100; con ethernet nessun problema, ma con la lettura della SD =( non c'è niente da fare....

Potrei postare gli sketch ma alla fine sono i vari esempi che si trovano in rete o sul programma......ho provato tutto quello che ho trovato, ma la SD non si inizializza.....

Formattata "spero" in FAT16 (ho win7) 2 GB micro SD (non HC)

Qualcuno può aiutarmi a capire??????

Vi ringrazio!!!!