www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMC-Ansteuerung: fat_open schlägt fehl (roland riegel)


Autor: mulax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
if (!sd_raw_init()) {
    continue;
}

partition = partition_open(sd_raw_read,
        sd_raw_read_interval, sd_raw_write, sd_raw_write_interval, 0);

if (!partition) {
    partition = partition_open(sd_raw_read, sd_raw_read_interval,
            sd_raw_write, sd_raw_write_interval, -1);
    if (!partition) {
        continue;
    }
}

fs = fat_open(partition);
if (!fs) {
    continue;
}

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

Autor: hm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: mulax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das hatte ich auch schonmal ausprobiert. Hier habe ich allerdings 
das Problem gehabt, dass das Dateisystem der Karte überschrieben wurde?? 
Anstatt eine Datei zu lesen, hat das Ding mir die selbe Datei nochmal 
ins Verzeichnis geschrieben. Die Schreiboperationen haben allerdings 
funktioniert! Unter Windows lagen dann tatsächlich 2mal die selbe Datei 
im Root-Verzeichnis, daher bin ich zu Roland Riegel gewechselt. Ich 
werde es aber nichtsdestotrotz nochmal ausprobieren.

Autor: hm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt nach falscher Anwendung...

Autor: mulax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm schrieb:
> Klingt nach falscher Anwendung...

So erkläre er mir was er damit meint ;)

Autor: mulax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, es funktioniert! Zwar nicht so wie ich anfangs gedacht hatte mit der 
Implementation von Roland Riegel, aber mit der AVR-FAT32-lib.
Lösung: Im betreffenden Thread wurde einmal kurz das Thema mehrere 
Sektoren pro Cluster angesprochen. Ich habe die SD-Karte nun unter Linux 
formatiert und - siehe da - es funktioniert! Verwendeter Befehl:
mkdosfs -s 4 -F 32 -I /dev/sdb

Dankeschön! Gruß mulax

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.