Arduino Mega 2 SD cards (SDFat TwoCards example)

Ich versuche derzeit gleichzeitig 2 SD Karten an meinem Arduino Mega zum Laufen zu bekommen.

Dazu verwende ich die SDFat Library, solange ich jeweils nur eine SD Karte verwende funktioniert alles einwandfrei (datalogger example)

Nun habe ich das SDFat TwoCards Example probiert (Pinbelegung von CS 10 auf 53 geändert) und bekomme meistens folgenden Fehler

FreeStack: 188804
type any character to start
sd1:
Can't access SD card. Do not reformat.
SD errorCode: 0X50,0X0

manchmal auch einen anderen auch irgendwas mit "format"

Ich habe schon versucht die Pinbelegung zu ändern, auch verschiedene Formatierungen der SD Karte.

Hat jemand eine Idee was ich falsch mache bzw. ein funktionierendes Beispiel?

Bei meinem Arduino UNO funktionierts ohne Probleme (mit komplett den gleichen SD Karten, gleiche Formatierung)

Mfg Thomas


"English version":

I'm trying to get two SD cards to work with my Arduino Mega but it seems hopeless.

I took the SDFat library from GitHub - greiman/SdFat: Arduino FAT16/FAT32 exFAT Library and there is a TwoCards example which runs fine on my Arduino Uno (even though in the sketch itself it says 'Warning This example requires extra RAM and may crash on Uno. Example use of two SD cards.')

So I tried changing the pin from 10 to 53, and multiple different pins for the second SD card, but I wasn't able to get it to work.

Then I tried changing both pins (e.g. to 7 and 8 ) but it also didn't work.

Has anyone a working example or an idea what I'm doing wrong?

I'm able to write to both SD cards when I'm using the datalogger example, so the SD cards are working properly.


This is the wiring I used link

TwoCards example sketch

SDFat library

Dann wäre es im deutschen Forum angebrachter deutsch zu schreiben.

Gruß Tommy

ja da hast du Recht, habs angepasst

Hast Du es mal mit den CS-Pins aus dem Beispiel probiert?

Gruß Tommy

ich habs grad nochmal neu verkabelt mit den Pins 10 und 4 und bekomme nun folgenden Fehler

FreeStack: 6441
type any character to start
error: sd1.mkdir
SD errorCode: 0X56,0X0

wenn ich das dataLogger example ausprobiere funktioniert es ohne Probleme, also solange ich im Sketch nur eine SD Karte ansteuere

Der Mega2560 arbeitet mit 5V-Signalen, Du versorgst die SD-Kartenplatine aber nur mit 3,3V. Entferne die 3,3V-Verbindung und ersetze sie durch eine 5V-Verbindung.

Mit einer SD-Kartenplatine funktioniert es bei mir, eine zweite baugleiche habe ich leider nicht.

ich habe beides probiert, 5V und 3,3V, macht leider keinen Unterschied (ob eine einzelne Karte mit 3,3V funktioniert habe ich nicht probiert, nur ob das TwoCards example funktioniert)

glaubt ihr wäre es leichter hinzubekommen einem zweiten Arduino die Daten zu schicken (I2C oder über RX/TX), also damit dieser dann die Daten auf der zweiten SD speichert ?

Als Nebeninfo:
Ich müsste ungefähr 2x pro Sekunde eine Zeile in ein Textfile auf der SD schreiben.

Die von Dir verlinkte SD-Kartenplatine hat nur Widerstände als Levelshifter drauf. Möglicherweise verliert die Platine damit ihre Busfähigkeit, obwohl es mit dem UNO ja funktioniert. Grübel ...

ich finde ehrlichgesagt nirgends ein Modul das es anders macht :confused:

(ich habe auch solche Micro SD Module probiert, haben auch nicht funktioniert)

SdFat sd1;

const uint8_t SD1_CS = 10;  // chip select for sd1

SdFat sd2;
const uint8_t SD2_CS = 4;  // chip select for sd2

// in setup()

  pinMode(SS, OUTPUT); // Auch wenn pin 53 nicht für CS genutzt wird, muss er doch ein output sein.

// wenn schon initialisieren, dann bitte auch komplett!
  pinMode(SD2_CS, OUTPUT);
  digitalWrite(SD2_CS, HIGH);
  pinMode(SD1_CS, OUTPUT);
  digitalWrite(SD1_CS, HIGH);

thomasbommel:
ich finde ehrlichgesagt nirgends ein Modul das es anders macht :confused:

(ich habe auch solche Micro SD Module probiert, haben auch nicht funktioniert)

Wichtig:
Diese Module müssen modifiziert werden, damit mehrere Slaves auf dem Bus funktionieren können.

Meinst du mit "diese Module" die SD Module oder die Micro SD Module?

falls Micro SD ... eigtl. egal (möchte sowieso lieber die normalen SD Module verwenden, evtl. für jemand anderen interessant)

falls SD.. wie müssen diese modifiziert werden?

danke für den Code, ich werd ihn heute Abend ausprobieren...
ich bin davon ausgegangen dass das Beispiel in der Library korrekt ist

Wie sollte dann das speichern im Loop aussehen?, also wie sage ich dem Sketch auf welcher SD Karte er gerade speichern soll?

https://forum.arduino.cc/index.php?topic=360718.msg2942160#msg2942160

ich habe gute Nachrichten, es funktioniert jetzt

hier ist was ich probiert habe:

  1. Micro SD Modul Pin 13 wie im Link beschrieben "umbauen" Ergebnis: 1Modul geschrottet (Pin abgebrochen, beim anderen hats funktioniert -> neue Erkenntnis ...meine SMD Komponenten Umbaufähigkeiten sind besch*..eiden :wink:

  2. Ich habe nochmal alles am Uno verkabelt, dann das TwoCards Example mit den Änderungen von combie
    hochgeladen, Fehlermeldung irgendwas mit Format -> mich unglaublich aufgeregt, dann nochmal jede Karte mit dem SdFormatter Beispielsketch formatiert, wieder angepasstes TwoCards Example hochgeladen -> funktioniert ohne Probleme ( ich schwöre hoch und heilig ich habe es auch gestern so gemacht... evtl hatte ich die Karte dazwischen mal am PC angesteckt und das hat irgendwas verstellt.. kA)

  3. Nochmal alles am Mega wie bei dem einen Bild verkabelt (SD Modul außer 5V statt 3,3V) -> TwoCards Sketch funktioniert ohne Probleme, also nehme ich auch an dass ich nun mein Projekt verwirklichen kann.

VIELEN DANK an alle Helfer!!! :grin:

Am Freitag bekomme ich neue Micro SD Module dann mache ich ein Update welche Kombinationen von MicroSD und SD Karte funktionieren

...habs gerade probiert, der Sketch funktioniert auch ohne die Updates von combie, solange man PIN 53 (SS pin des Mega) verwendet.

ich hätte jetzt noch eine "Nachfrage"
hat jemand einen Schaltplan für dieses Modul für mich? (oder generell ein SD Modul Schaltplan)
Ich würde meine SD Karten gerne direkt auf der Platine befestigen(mit so einem Connector)

kann man für die 3,3V auch genauso die 3,3V vom Arduino nehmen für die 2SD, oder doch nicht?

solange man PIN 53 (SS pin des Mega) verwendet.

Sachte ich doch!
Der Pin MUSS auf OUTPUT gestellt werden.
Oder wenigstens HIGH bleiben.

Das steht im Datenblatt und in der SPI Doku

Denn sobald der INPUT LOW Zustand an SS eintritt, schaltet die SPI Hardware in den Slave Modus, und die Kommunikation mit der SD Karte versagt.