ich lasse nur auf Tastendruck paar Daten auf die SD Karte schreiben. Wenn ich jetzt einen Kartentausch simuliere, in dem ich die Karte herausnehme und wieder reinstecke, dann kann danach nicht mehr geschrieben werden. Das File ist nach einem Schreibvorgang jedoch immer geschlossen. Der µC sollte doch überhaupt nichts mitbekommen das die Karte kurz gefehlt hat. Solange das ihm bekannte File noch da ist. Warum bekommt der µC das dennoch mit?
wie der das mitbekommt verstehe ich eben nicht. Mein SD-Card Modul hat keine Pins nach außen geführt für Card-Detect oder sowas. Es gibt nur +, CS (ChipSelect), DI (auf MOSI), CLK, DO (auf MISO), Masse.
Der Link kommt mir bekannt vor. Ich möchte nun doch auf die SdFat Library umbauen. Nachdem ich das wieder gelesen habe. Dann würde es ausreichend sein immer vorm schreiben sd.beginn aufzurufen. Richtig?
Du bist damals bei der alten SD Library geblieben und hast die Funktion gepatcht? Läuft das noch?
Hallo,
ich habe immer noch die "alte" Lib. Das läuft ohne Probleme.
Wenn die SD eingesteckt wird- und danach entfernt wird, dann wird "root" der SD
nicht geschlossen. Steck´s Du nun eine neue rein, ist es ein "falsches" root-
Verzeichnis- bemerkt der Arduino u.a. über CS.
Das "SD.begin" brauchst Du nur ausführen, wenn eine SD eingesteckt wird.
Danach kannst Du lesen/schreiben.
Ich habe das über den "Schalter" des SD-Reader gemacht. Nach einem Schreib/Lese
Zugriff wird das File ja geschlossen, ist also sicher.
Steckst Du also eine SD rein, wird sie neu initialisiert.
Hier ein Code Ausschnitt:
if (digitalRead(S2) == HIGH) // Schalter des SD-Reader
{
if (!SD.begin(chipSelect)) // hier das SD-begin
{
lcd.clear();
lcd.setCursor(3, 1);
lcd.print("SD-Card Fehler"); // Fehler abfangen
delay(1000);
lcd.clear();
return;
}
lcd.clear();
lcd.setCursor(4, 1);
lcd.print("SD-Card i.O."); // SD i.O. es geht weiter
SDZL = 1;
delay(1000);
lcd.clear();
mzl = 1;
(mDatum = Datum);
(mZeit = Zeit);