SD Karte initialisieren klappt nicht...

Hallo zusammen,
habe ein Problem an dem ich mich schon den ganzen Tag aufhalte, habe mich schon durchs halbe Internet gegooglelt aber nichts hilft...

Und zwar versuche ich zur Zeit meine ersten Schritte mit einem Arduino als Webserver.
Dazu benutze ich das Ethernet-Shield W5100 von AZDelivery mit dem zugehörigen Arduino Uno des gleichen Herstellers.

Dann für den Anfang nutze ich den Beispielcode aus der Rubrik SD mit dem Namen CardInfo.

Leider zeigt der serielle Monitor seit heute morgen nur immer wieder, dass die Initialisierung fehlgeschlagen ist. Ich habe bereits mehrere (davon eine brandneue) MikroSD Karten getestet, außerdem habe ich das Ethernetshielt auch auf meinem Mega ausprobiert, keine Initialisierung der SD Karte möglich.

Eine ganz simple Webseite ohne SD Karte hat geklappt. Kann mir da irgendwer weiterhelfen?
Bin am verzweifeln...
Vielen Dank für eure Hilfe

(deleted)

Zeige doch einfach mal den Sketch, den du verwendest.
Poste den in Code-Tags, verwende dazu die Schaltfläche </> oben links im Editorfenster.
Oder setze [ code ] davor und [/ code ] dahinter, ohne die Leerzeichen.

Das ist der Beispielcode, den ich verwende,

/*
  SD card test

  This example shows how use the utility libraries on which the'
  SD library is based in order to get info about your SD card.
  Very useful for testing a card when you're not sure whether its working or not.

  The circuit:
    SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
 		Pin 4 used here for consistency with other Arduino examples


  created  28 Mar 2011
  by Limor Fried
  modified 9 Apr 2012
  by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 4;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("\nInitializing SD card...");

  // 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 inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card type:         ");
  switch (card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Volume type is:    FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);

  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {
}

@Peter-CAD-HST ich habe chipselect angepasst auf arduino uno, wo es die 4 sein sollte

Hast du denn auch geprüft, ob der Pin D4 richtig für CS am SD-Reader ist ?

Wir kennen dein Shield nicht, daher wissen wir es nicht.
Poste einen Hyperlink deines Shields, dann erst können wir es prüfen.

Das ist der Beispielcode, den ich verwende,

Da sehe ich nicht, dass du dem Ethernet Teil auf dem Shield sagst, dass es sich aus SPI der Kommunikation raushalten soll.

Auch schaltet der AVR SPI "Baustein" automatisch in den Slavemode, wenn der Hardware SS nicht auf OUTPUT, oder High ist.
Das steht geschrieben, im Datenblatt und der Arduino SPI Doku.

Tipp:
Dass willst du nicht, da dann deine SD-Karten Kommunikation versagt!

void setup() 
{
  pinMode(SS,OUTPUT); // verhindern dass der SlaveMode erzwungen werden kann
  digitalWrite(SS,HIGH); // verhindern, dass der Ethernet Chip dazwischen quatscht
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

Beim UNO entspricht SS dem Pin 10, welcher vom Ethernetshield als /CS genutzt wird.
SS - Slave Select
CS - Chip Select

Ich habe die beiden Beispielcodes CardInfo und Webserver auf dem W5100 Ethernet-Shield von AZDelivery getestet. Die Webserveranwendung funktioniert.

Nun habe ich ein zweites baugleiches Ethernetshield eines anderen Herstellers verwendet. Die Codes habe ich nicht verändert, auf dem einen funktioniert nun aber die SD Karte und dafür die Webserver-Anwendung nicht mehr. Ich bin echt am Ende mit meinem Latein...

Vielen Dank für eure Hilfe, vielleicht kriegen wir das ja noch hin :confused:

PS: das zweite Ethernet-Shield ist auch das W5100 von Paradisetronic...

Uns nützen keine Namen, nur Hyperlinks helfen, wenn wir dir helfen sollen.

Herstellen können nun mal unterschiedlich bauen.

Wie Combie schon schrieb, musst du beide SPI CS-Pins richtig setzen. Das machen die Demos wie CardInfo nicht.

Und wenn beide Shields sich unterschiedlich verhalten,kann man blind mir schlecht Tipps geben.