Hallo,
ich versuche eine (bei mir) funktionierende Library zur Verwendung einer
32GB microSD-Karte zu finden.
Über die Bib von Roland Riegel
(http://www.roland-riegel.de/sd-reader/index.html), welche bei mir
leider nicht funktioniert hat, bin ich bei der AVR FAT32 Version 0.6.4
gelandet (http://www.mikrocontroller.net/articles/AVR_FAT32).
Das Beispielprogramm aus der main_simple.c funktioniert, was mich schon
sehr euphorisch gestimmt hat. Allerdings traten/treten nun Effekte auf,
die ich mir nicht erklären kann. Vielleicht hat hier jemand Erfahrung
und kann mir weiterhelfen.
Folgende Probleme.
1. Wenn ich eine Datei TEST1.TXT erstelle und beschreibe und mir das
Ergebnis unter Windows mit dem Texteditor anschaue sieht alles wunderbar
aus.
Codeauszug:
1 | uint8_t test1_file[12] = "TEST1.TXT";
|
2 | uint8_t data1 [15] = "00000000000090";
|
3 | data1[14] = '\0';
|
4 | uint8_t *ptr_write_buffer1 = data1;
|
5 |
|
6 | status = ffopen(test1_file, 'c');
|
7 | ffwrites(ptr_write_buffer1);
|
8 | ffwrite(0x0D); // line feed
|
9 | ffwrite(0x0A); // carriage return
|
10 | ffclose();
|
Wenn ich allerdings die Datei TEST1.TXT bereits unter Windows anlege und
diese nur durch den µC mit dem Text beschreiben möchte, wird der Text
zwar geschrieben (kann mir das über die read-Funktion per Uart
ausgeben), allerdings kann ich die Datei danach unter Windows nicht mehr
öffenen.
Fehlermeldung: "Die Datei Y:\TEST1.TXT kann nicht geöffnet werden.
Stellen Sie sicher, dass sich ein Datenträger im angegebenen Laufwerk
befindet."
Warum auch immer scheint es nur zu funktionieren, wenn die Dateien durch
den µC angelegt werden. Hatte jemand dieses Problem schonmal?
2. Aufbauend auf obigem Problem trat anschließend noch der Effekt auf,
dass beim Erstellen und Beschreiben mehrere Dateien durch den µC (z.B.
TEST1.TXT beschrieben mit "01", TEST2.TXT mit "02", TEST3.TXT mit "03")
in allen Dateien "03" stand. Also immer das, was als letztes in
irgendeine Datei geschrieben wurde, stand nach Sichtung unter Windows
immer in allen Dateien, welche im Programmdurchlauf des µC eine
Schreibfunktion erlitten.
Das ganze ging nach zwei/drei mal Testen soweit dass die Karte (plus
Weitere) unter Windows gar nicht mehr erkannt wurden.
Dank meines Beaglebone konnte ich die Karten wieder formatieren, sodass
diese wieder von Windows erkannt werden. Der Code funktionierte danach
komischerweise wieder wie gewollt, also jede Datei wies ihren Text auf.
Können die genannten Probleme damit zusammenhängen, dass ich keine SPI
bzw. SD-Card disable-Funktion habe? Bisher ziehe ich die Karte entweder
unter "Last" raus oder ziehe das Stromkabel vom Board ab und ziehe dann
die Karte raus. Beides führt irgendwann mal unter Windows zur
Fehlermeldung:
"Möchten Sie (Y:) Wechseldatenträger überprüfen und reparieren? Es
besteht eventuell ein Problem mit einigen Dateien..."
Eigentlich möchte ich "nur" direkt im root-Verzeichnis ca. 10 Textfiles
haben, welche ich über Wochen hinweg robust(!) beschreiben und danach
unter Windows ohne Fehlermeldungen wieder auslesen möchte.
So wie es sich jetzt verhält ist das ganze leider eher Glückssache...
Gruß
Alex