Je sais, le sujet a été traité 1000 fois sur ce forum et ailleurs.
Je possède cette carte :

L'alimentation se fait en 5V.
Librairie utilisée : Ethernet dernière version.
CS = 10
Il fonctionne sans problème avec une NANO (serveur HTTP).
Le module SDcard :

Sur la photo on ne voit pas les pins DO DI : la sérigraphie SPI se trouve derrière.
L'alimentation se fait en 3.3V.
8 résistances sur le module (adaptation des niveaux je suppose).
Librairie utilisée : SdFat dernière version.
CS = 4
Il fonctionne sans problème avec une NANO et l'exemple QuickStart.
Mais vous l'aurez sans doute deviné: les deux ensemble ne cohabitent pas.
Les deux branchés ensemble :
W5100 fonctionne sans problème.
SDCARD ne fonctionne pas.
La réponse logique est : mettre les CS du W5100 à 1.
Et beaucoup de gens ont résolu leur problème comme ça.
J'ai même tiré le CS à 1 avec un fil : nada
Le symptôme le plus visible : à l'oscilloscope la pin 12 MISO est tirée à ZÉRO par le W5100, quelque soit la position de son CS.
Quand j'essaie d'initialiser la SD La pin MISO ne dépasse pas 800 mV.
Il faut que je débranche le MISO du W5100 pour que la SD soit vue.
Même chose avec une autre carte Ethernet.
IDE 1.8.5
Pendant que j'écrivais ces lignes j'ai trouvé : ;D
Il faut absolument initialiser la carte Ethernet si l'on désire utiliser la SdCard seule.
#include <Ethernet.h>
#define IP_ADDR "192.168.1.177"
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip;
void setup() {
Serial.begin(115200);
ip.fromString(IP_ADDR);
Ethernet.begin(mac, ip);
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println(F("Ethernet shield was not found. Sorry, can't run without hardware. :("));
while (true) {
delay(1);
}
}
if (!sd.begin(4, SPI_SPEED)) {
if (sd.card()->errorCode()) {
Serial.println("SD initialization failed");
}
}
if (sd.exists("template.txt")) {
Serial.println(F("template.txt found OK"));
}
Et cela suffit. La pin MISO remonte.
Je pense qu'avec un Ethernet shield avec SD intégrée, on doit avoir le même problème.
Un dernier problème :
La carte SD ne s'initialise pas toujours.
Après raccourcissement des fils du SPI, toujours le même problème.
Solution : un condensateur 10µF entre VCC et GND du module SD.
@+