AVR_FAT32 und zwei geöffnete Dateien

OP #7389297
Lesenswert?

Hallo Mikrocontroller-Freunde,

ich verwende die Bibliothek AVR_FAT32 auf einem Arduino Uno.

Ich möchte nun während eine Datei zum lesen geöffnet ist, und auch schon von ihr gelesen wurde, eine zweite Datei zum lesen öffnen. Da die Bibliothek kein File-Handle oder sowas hat, weiß ich nicht, wie ich das machen kann. Es müssten doch Informationen zum Status der ersten Datei erhalten bleiben, während die zweite Datei geöffnet und gelesen wird.

Hat jemand von euch eine Lösung dazu?

Vielen Dank im Voraus.

Grüße Reinhard

#7389345
Lesenswert?

Hallo, also wenn das diese lib ist: http://www.mikrocontroller.net/attachment/116369/AVR-mmc-0.6.4.zip scheint das nicht vorgesehen zu sein. Alle Dateioperationen arbeiten da doch mit dem einen "struct File_t file; // wichtige dateibezogene daten/variablen" struct in der file.c, schätze aus Speichergründen. Das müsstest du wohl selber einbauen. Oder sowas wie FatFs nutzen und evtl. die Hardware Ansteuerung aus dieser lib verwenden. Aber hab auch nur n kurzen Blick in die file.c geworfen. Viel Erfolg!

OP #7390183
Lesenswert?

Hallo zusammen,

ich bin dabei, die lib von Elm-Chan zu kompilieren. Ich arbeite mit Atmel Studio 6, und ein Arduino Uno R3 ist mein Ziel.

Obwohl ich im ffconf.h FF_USE_LFN ausgeschaltet habe mit #define FF_USE_LFN 0 bekomme ich diese Fehlermeldungen:

Error 1 undefined reference to ff_oem2uni' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs Error 2 undefined reference to ff_wtoupper' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs Error 3 undefined reference to ff_wtoupper' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs Error 4 undefined reference to ff_wtoupper' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs Error 5 undefined reference to ff_uni2oem' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs Error 6 undefined reference to ff_uni2oem' D:\Arduino Projekte\Musterprojekt_FatFs\Release\ff.c 1 1 Musterproj_FatFs

Wer hat eine Idee und kann helfen?

Grüße Reinhard

OP #7390301
Lesenswert?

Hallo Christian, vielen Dank für deine Antwort. Stimmt, die ffunicode_avr.c habe ich in meinem Projekt nicht drin. Mit gutem Grund: denn die beginnt mit #if FF_USE_LFN != 0 wird also nicht gebraucht.

Und was mich stutzig macht: mit #define FF_USE_LFN 0 werden auch alle Stellen im Code nicht gebraucht, die ff_oem2uni, ff_wtoupper oder ff_uni2oem aufrufen.

Kann es sein, dass die ffconf.h 'zu spät' eingebunden wird?

#7391021
Lesenswert?

Reinhard schrieb:

Hallo Christian, vielen Dank für deine Antwort. Stimmt, die ffunicode_avr.c habe ich in meinem Projekt nicht drin. Mit gutem Grund: denn die beginnt mit #if FF_USE_LFN != 0 wird also nicht gebraucht.

Und was mich stutzig macht: mit #define FF_USE_LFN 0 werden auch alle Stellen im Code nicht gebraucht, die ff_oem2uni, ff_wtoupper oder ff_uni2oem aufrufen.

Kann es sein, dass die ffconf.h 'zu spät' eingebunden wird?

Ok das ist etwas merkwürdig wenn ff_use_lfn 0 ist. Tritt das Problem auch auf wenn du die fatfs internen String functions ausschaltest also #define FF_USE_STRFUNC 0 setzt?

... also ich hab es gerade eben selbst mal mit einem meiner Projekte probiert, ist zwar eine andere Plattform (rp-pico, vs code, platform.io, pico-sdk), da nutze ich die ganz normale R0.15 Version von FatFs und wenn ich da: #define FF_USE_LFN 0 und entsprechend auch: #define FF_FS_EXFAT 0 #define FF_LBA64 0 setze compiliert das einwandfrei.

OP #7391231
Lesenswert?

Christian schrieb:

Reinhard schrieb:

Ok das ist etwas merkwürdig wenn ff_use_lfn 0 ist. Tritt das Problem auch auf wenn du die fatfs internen String functions ausschaltest also #define FF_USE_STRFUNC 0 setzt?

Ja, #define FF_USE_STRFUNC 0 ist eingestellt gewesen, und dann treten die Fehler auch auf. Ich habe auch keine Idee, warum die bedingte Programmierung nicht greift. Bin jetzt auf die Lib von Falk gegangen. siehe oben: Beitrag "Re: Fatfs Code funktioniert nicht"

Nach einigen Anpassungen an meine Hardware funzt das gut.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren