Hallo zusammen,
ich verwende die Lib von Roland Riegel (aktuelle Version) und schreibe
damit auf eine SD Karte.
Hier die Initialisierung:
1 | /* Initialisieren der SD Karte */
|
2 | sd_raw_init();
|
3 | // open first partition
|
4 | struct partition_struct* partition = partition_open(sd_raw_read, sd_raw_read_interval, sd_raw_write, sd_raw_write_interval, 0);
|
5 |
|
6 | // open file system
|
7 | struct fat_fs_struct* fs = fat_open(partition);
|
8 |
|
9 | // open root directory
|
10 | struct fat_dir_entry_struct directory;
|
11 | fat_get_dir_entry_of_path(fs, "/", &directory);
|
12 | struct fat_dir_struct* dd = fat_open_dir(fs, &directory);
|
13 |
|
14 | // create file in root dir
|
15 | const char filename[LENGTH_FILENAME] = {'D', 'a', 't', 'a', '.', 't', 'x', 't'};
|
16 | check = fat_create_file(dd, filename, &directory);
|
17 |
|
18 | // open file
|
19 | struct fat_file_struct* filehandle;
|
20 | filehandle = fat_open_file(fs, &directory);
|
Das schreiben läuft wie folgt:
1 | uint8_t sdbuffer[LENGTH_BUFFER_SDWRITE] = {'x'};
|
2 | fat_write_file(filehandle, sdbuffer, LENGTH_BUFFER_SDWRITE);
|
Die Datei wird allerdings nie geschlossen, sondern es wird irgendwann
die Versorgungspannung von µC und SD getrennt.
Wenn ich nun die Datei am Rechner anschauen will, wird mir zwar im Total
Commander der Dateinamen und auch die Dateigröße korrekt angezeigt, aber
wenn ich die Datei öffnen will, dann erscheint die Fehlermeldung "Datei
nicht gefunden".
Wenn ich die SD Karte im Windows Explorer anschaue, dann wird auch
Dateiname und Größe korrekt angezeigt, beim öffnen erscheint dann aber
eine leere txt Datei.
Hat jemand eine Idee was falsch läuft? Danke schonmal an alle
µC ist ein Atmega324@16MHz bei 3,3V, SD Karte hängt ohne Spannungsteiler
am SPI.