Hallo,
ich möchte mit meinem ATMEGA326 eine Datei von der SD-Karte lesen.
Hierzu verwende ich das FatFs von Elm Chan.
Der Kartenleser ist über SPI an den Controller angebunden.
Als Grundlage verwende ich das Beispiel von Elm Chan - dort ist auch die
SPI-Integration her.
Hier folgender Code-Ausschnitt
sprintf(cDebug,"Could not open the file - Return: %d\n\r",res);
21
uart_puts(cDebug);
22
}
23
}
24
else
25
{
26
uart_puts("Could not open the directory\n\r");
27
}
Am Terminal sehe ich die Ausgabe "File opend" - ich gehe somit aus, dass
bis hier alles richtig ist.
Der Returnwert vom f_read ist aber 9 -> FR_INVALID_OBJECT und die
Variable br hat den Wert "0".
Muss ich hier noch etwas machen, bevor ich die Daten lesen kan ?
Vielen Dank schon mal im vorraus.
Gruß,
Michael
@ Michael A. (michael_a43)
>Der Returnwert vom f_read ist aber 9 -> FR_INVALID_OBJECT und die>Variable br hat den Wert "0".>Muss ich hier noch etwas machen, bevor ich die Daten lesen kan ?
Nein, der Ansatz ist richtig. Das Directory musst du nicht öffnen, es
reicht der absolute Pfad. Aber
"folder_0\\track2.wav"
Doppelbackslash? Wozu?
@Programmierer (Gast)
>> "folder_0\\track2.wav">> Doppelbackslash? Wozu?>Escaping? Damit der C-Compiler den akzeptiert und einen einzelnen daraus>macht?
Ahhh, war schon zu spät 8-0
Ich hab noch das Problem, wenn ich mir den Inhalt eines Ordners anzeigen
lassen will, dass ich hier nicht alle Dateien bzw. Unterordner sehe.
Evtl. liegt es an meiner Implementierung von der SPI-Kommunikation.
Hat jemand für mich evtl. eine Beispiel implementierung für einen
Atmega328 o.ä., damit ich diesen Fehler ausschließen kann ?
Gruß,
Michael
P.S. hat der Doppelslash ist das Escaping ;o)
@ Michael A. (michael_a43)
>Ich hab noch das Problem, wenn ich mir den Inhalt eines Ordners anzeigen>lassen will, dass ich hier nicht alle Dateien bzw. Unterordner sehe.>Evtl. liegt es an meiner Implementierung von der SPI-Kommunikation.
Niemals. Wenn dort was klemmt, gehen ganz andere Sachen nicht.
>Hat jemand für mich evtl. eine Beispiel implementierung für einen>Atmega328 o.ä., damit ich diesen Fehler ausschließen kann ?
Die Implementation von ELM Chan ist OK, dort sind mehrere AVR-Beispiele
drin.
Konntest du nun die Datei lesen?
Hallo,
bin nun einen Schritt weiter...
Das Problem liegt in der Funktion "disk_timerproc();" die ich, wie auch
im Beispiel angegeben" alle 10 ms Aufrufe.
Wenn ich dieses Funktionsaufruf auskommentiere, kann ich die Dateien von
der SD-Karte lesen.
Bin noch auf der Suche, warum das bei mir nicht geht.
Michael
@ Michael A. (michael_a43)
>Das Problem liegt in der Funktion "disk_timerproc();" die ich, wie auch>im Beispiel angegeben" alle 10 ms Aufrufe.
Gut.
>Wenn ich dieses Funktionsaufruf auskommentiere, kann ich die Dateien von>der SD-Karte lesen.
Kann es sein, dass du die Macros nicht an deine Hardware angepasst hast?
Dann erkennt deine Fat Lib nämlich nie eine Karte. Zu Einfachheit kann
man sie als konstant definieren
Hallo Falk,
vielen Dank für deine Hilfe - das war natürlich der richtige Hinweis !!
Hab an die ganzen Ports für SPI gedacht und dann die beiden vergessen
:o(
Kann nun die Daten von der SD-Karte lesen....
Hab nur noch ein kleines Problem wenn ich WAV-Dateien auf der Karte
abspielen will, aber dazu hab ich einen neuen Thread aufgemacht.
Nochmals vielen Dank !
Gruß,
Michael
@ Michael A. (michael_a43)
>Kann nun die Daten von der SD-Karte lesen....
Kaum macht man es richtig, schon funktioniert's! ;-)
>Hab nur noch ein kleines Problem wenn ich WAV-Dateien auf der Karte>abspielen will, aber dazu hab ich einen neuen Thread aufgemacht.
Wo?