Hallo,
wie schon im Betreff angesprochen habe ich ein Problem mit der
fat_open() Funktion aus Roland Riegel's FAT-Implementation. Folgender
Aufbau:
ATmega16 mit 16Mhz an Labornetzteil-3,3V (funktioniert und die Pegel
sind auch an der SD-Karte vorhanden. Andere Testprogramme laufen
ebenfalls einwandfrei bei den 3,3V). Ich nutze außerdem eine 1GB-MicroSD
Karte mit Adapter, zeitweise auch eine 32MB-MicroSD.
Die Initialisierung funktioniert einwandfrei, somit fällt ein Fehler in
der Schaltung ja eigentlich raus, oder? Ich nutze folgenden Code mit
der Roland-Riegel-FAT/MMC-Implementation:
1 | if (!sd_raw_init()) {
|
2 | continue;
|
3 | }
|
4 |
|
5 | partition = partition_open(sd_raw_read,
|
6 | sd_raw_read_interval, sd_raw_write, sd_raw_write_interval, 0);
|
7 |
|
8 | if (!partition) {
|
9 | partition = partition_open(sd_raw_read, sd_raw_read_interval,
|
10 | sd_raw_write, sd_raw_write_interval, -1);
|
11 | if (!partition) {
|
12 | continue;
|
13 | }
|
14 | }
|
15 |
|
16 | fs = fat_open(partition);
|
17 | if (!fs) {
|
18 | continue;
|
19 | }
|
und am fat_open() scheitert es. fat_open gibt immer 0 zurück.
Bislang liefen meine "Debugging"-Versuche mit einer Blinkenden LED, aber
ich bin mir sicher, dass es an der Stelle hakt. Davor läuft alles
wunderbar.
Ein weiterer Versuch, die SD-Karte "roh" auszulesen, war erfolgreich;
Die Ausgabe erfolgt über einen Lautsprecher, und ich hatte vorher auf
der SD-Karte eine WAV-Datei erstellt. Die wird auch nach einigem Piepsen
und Rauschen abgespielt, die Daten kommen also irgendwie beim uC an aber
das Dateisystem will nicht so wie ich es will.
Ich habe bereits mit Linux (fdisk, ist das die richtige vorgehensweise?)
und Windows formatiert - kein Erfolg. Auch ein wechsel von FAT16 auf
FAT32 brachte nichts - was mache ich falsch bzw. was könnte ich noch
ausprobieren?
Für alle Ideen bin ich dankbar.
Gruß mulax