HI,
ich möchte eigentlich Holger Klabundes Fat System
(http://www.holger-klabunde.de/) für meine Schaltung verwenden. Ein
ATMEGA32L soll auf die SD-Karte per Hardware SPI schreiben und lesen.
Da ich mit Holgers Programm bisher noch keine brauchbare Fehlermedlung
bekommen habe, nutze ich nun Ulrich Radig´s FAT System. Über den USART
bekomme ich dann folgende Meldungen:
***********************************************
System OK
Karte gefunden!!
0 26 0 32 5f 59 83 c8 be fb cf ff 92 40 40 d7
Directory
Directory Ende
FERTIG!!
***********************************************
Wenn ich das richtig interpretiere, dann wird die Karte zwar erkannt,
allerdings das Dateisystem nicht, bzw. wird das Root-Verzeichnis nicht
gefunden oder ausgelesen.
Nun ich habe die SD-Karte schon auf verschiedenste Weisen formatiert.
Die letzte Variante war:
Mit Knoppix meinen Wi***** Rechner gestartet. Dann per konsole mit
"fdisk /dev/sda" zuerst eine leere Dos-Partitionstabelle erstellt, dann
eine Partition mit einem FAT16 Dateiformat (Hex 6) und dann das ganze
mit "w" geschrieben. Habe dann eine "mmx.txt" Datei erstellt in die ich
nur den Text "Test" reingeschrieben habe.
Was mache ich also falsch ? Ich schätze das es an meiner Formatierung
weiterhin liegt. Bin für jede Hilfe dankbar.
Hi
was hast für eine Karte?
versuch mal die software von roland riegel, hab damit gute erfahrungen
gemacht, ist hier in der code-sammlung, braucht aber momentan 15kB
flash. da kann man aber noch etwas machen um 2-4 kB einzusparen, das war
mir aber im moment nicht so wichtig da ich sie auf einen mega128
einsetze.
gruß
Andreas
Ich verwende eine Sandisk Mini SD Karte mit Adapter auf die normale
SD-Karten-Grösse und einen Kartenleser von Reichelt.
Ich bin mir ziemlich sicher, dass es nicht an der Software liegt, da es
vorallem über Ulrich Radiks Software doch auch viele positive Feedbacks
auch auf dieser Website gibt.
Der Fehler, so glaube ich liegt an meiner Formatierung. Die Karte wird
ja erkannt nur die Debug-Messages über die USART sind für mich zu schwer
zu interpretieren.
Ich weiss das die Hex Zahlen die Rückgabewerte der CSD-Abfrage sind,
kann diese aber nicht interpretieren.
Aussderdem gibt die fat_read_dir_ent ein 0xffff zurück.
So geschafft, ich hatte bei der letzten Formatierung vergessen eine
"mmc.txt" wieder anzulegen. Nun hat er den Text "Test" im HT ausgegeben.
Bleibt dann nach der Ausgabe dort stehen.
Die SD-karte sollte gehen wenn sie nicht größer 1GB ist.
Ich hab meine MMC Karte unter windows formatiert. mit FAT16 (heist bei
windows FAT) und es läuft.
Könnte noch an die art der Partition liegen, hast du eine Primäre
Partition angelegt? Schaue mal nach ob die Sektoren 512 Byte groß sind,
sollte eigendlich so sein solange die karte kleiner gleich 1 GB ist.
Hast du der karten einen namen gegeben?
Wie hast du die Stromversorgung gemacht? eine so eine karte zieht
spitzen bis 200mA.
Die roland-riegel lib beruht auf ulrich radigs und die beispielanwendung
sagt ganz genau woran sie scheitert. ob beim karte finden, Partition
wählen, dateisystem öffnen oder hauptverzeichniss öffnen.
Holger Klabundes System funktioniert nun auch ;-) Zumindest erkennt er
die Karte nun und gibt folgendes aus:
***********************************
FirstDataSector 581
maxsect 1984000
FirstDirCluster 0
maxcluster 61959
Using FAT12
Using FAT16
Using FAT32
Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE
FAST_SPI_READ
FAST_FWRITE
FAST_FREAD
F_CPU 4194304
Start writing files
1 374.21s 5.3kB/s
*********************************
Is nich schnell aber bei der Frequenz normal oder ? Werde auch auf einen
ATMEGA32 und dann einem Takt von 16MHz wechseln
Hallo Matthias,
ich bin auch gerade dabei Holgers Code zum laufen zu bekommen aber habe
dabei ein paar Probleme. Der Code erkennt einfach das Dateisystem nicht.
Könntest du vielleicht dein Programm mal hochladen, damit ich das
vergleichen kann und somit möglicherweise meinen Fehler finde?
Schonmal Danke im Voraus.
Gruß,
Marian
Dann liegt das an der Formatierung der Karte.
Lade dir mal das Tool: "Hard Disk Low Level Format Tool" runter und
formatier deine Karte komplett. Dann in Windows XP unter
Datenträgerverwaltung neu formatieren auf Fat. Dann geht das. ;-)
Habe gemacht was du geschrieben hast und das Problem besteht immer noch.
Muss ich bei der Formatierung eine bestimmte Zuordnungseinheit wählen
oder kann ich das auf Standard lassen?
Ich nutze folgendes:
-Atmega32-L mit 7.3728MHz, d.h. SPI Takt von 57,6 KHz
-Versorgung: LiPo-Akku 3.6 V , 1200mAh
Ich verwende keine Spannungsteiler, da mein ganzes System durch 3.3V
Spanungsregler begrenzt wird, d.h. die Pins der SD Karte sind direkt mit
dem Atmega32 verbunden. Ich habe auch noch einen Sensor in der
Schaltung, den ich Problemlos über SPI auslese.
ok hatte ich auch zuerst, dann könnte es an den FUSE Bits liegen. Wie
sind die eingestellt ?
Das Protokoll gibt dir wahrscheinlich "No Flash" zurück oder ?
Ist die Pin Belegung der SD-Karte richtig ? siehe http://ulrichradig.de/
Wie lange ist deine Leitung zur Karte, eventuell benötigst du Pull-Ups ?
An dem Prog liegt es jedenfalls nicht, das funkt, hab auch erst mehrere
kleine Fehler herausfinden müssen bis es ging.
Was für eine Karte nimmst du ?
Du hast auch ganz sicher zuerst die Low Level Formatiernug gemacht ? Hat
dann Windows die Karte erkannt und konntest du darauf zugreifen ?
>Muss ich bei der Formatierung eine bestimmte Zuordnungseinheit wählen>oder kann ich das auf Standard lassen?
ich habs mit Standard gemacht, dann ging es.
Wird deine Karte erkannt ? MMCIdentify(); ?
@ Marian
Poste hier weiter, und nicht in "GCC" !
>Wird deine Karte erkannt ? MMCIdentify(); ?
Ja tut sie, aber scheinbar kommen falsche Werte aus dem CSD.
Zeigt nur 98MB statt 128MB an.
Dann wird auch der FAT Typ nicht erkannt.
SPI ist auf Minimum runtergeschraubt.
So weit zur Zusammenfassung.
Das hängt sicherlich irgendwie zusammen.
Aber was da jetzt faul ist ? Keine Ahnung.
Du benutzt einen LiPo Akku mit 3.6V und dann noch einen
Spannungsregler 3.3V. Selbst für einen LowDrop Regler
bleibt da nicht viel Marge. Hast du mal die Spannung
hinter dem 3.3V Regler gemessen ?
Ja sorry wegen dem Doppelpost aber in beiden wurde ich was gefragt und
wollte halt nur nett antworten :).
@Holger:
Der Akku liefert voll geladen 4,2 Volt und das geht auch direkt an den
Atmega. Nur die restliche Peripherie wird über den Spannungsregler
versorgt welcher auch die 3,3 Volt am Ausgang hat.
@Matthias:
Die Fusebits sind "normal" eingestellt. Jtag aus, Brown out ist
aus,Externe Quarz ist an. Willst du was spezielles dazu wissen?
Ja, es gibt "no flash" zurück, da er in der Readsector Routine beim MBR
Check abbricht, da dort der bootsector größer ist als maxsector.
Tja wie lang die Leitung ist kann ich nicht genau sagen. Das ist alles
auf einer Platine geätzt worden, schätzte so maximal 4 cm.
Ich benutze eine 128 MB MMC von Kingston.
Ja ich hab zuerst die LLF mit deinem Tool gemacht. Dann habe ich sie in
der Datenträgerverwaltung so wie du gesagt hast formatiert.
Kann ich davon ausgehen, wenn die Karte erkannt wird (auch wenn nicht
ganz richtig), dass die Routinen so weit funktionieren oder kann es
sein, das er irgendwo anders die Werte herbekommt, die ich sehe?
Gruß,
Marian
Marian wrote:
> Der Akku liefert voll geladen 4,2 Volt und das geht auch direkt an den> Atmega.> Ich verwende keine Spannungsteiler, da mein ganzes System durch 3.3V> Spanungsregler begrenzt wird
Was denn nun?
Marian wrote:
> Hm war wohl etwas unglücklich ausgedrückt.>> Der Atmega (und nur der) liegt direkt am Akku, der Rest wird über die> Spannungsregler versorgt.
Und warum hast du dann keine Levelshifter (zB Spannungsteiler)?
Weil uns damals, als die Schaltung gebaut wurde, nicht bekannt war das
das wichtig ist. Laut den SPI bzw. TTL Spezifikationen sind kleine
Schwankungen auf den Leitungen ja ok. Also haben wir unsere Platine ohne
gebaut. Auf dieser PLatine befinden sich auch noch 2 weitere Sensoren
(Ein Beschleunigungssensor und ein Drucksensor) die über SPI korrekt
ausgelesen werden. Deshalb wurde bei der Erweiterung mit dem SD Karten
Slot auch nichts an den SPI Leitungen verändert.
Ich habe ja auch schon den SourceCode 2.5 von Ulrich Radig verwendet,
mit dem ich lesen und schreiben konnte, aber leider nicht mit voller
zufriedenheit, da dieser Code das schreiben ja nicht voll unterstützt,
weshalb ich nun zum Code von Holger gekommen bin.
>Kann ich davon ausgehen, wenn die Karte erkannt wird (auch wenn nicht>ganz richtig), dass die Routinen so weit funktionieren oder kann es
Ja, du kannst. Mein Programm funktioniert bei mehreren
SD/SDHC/MMC Karten. Die Kartengröße wird richtig berechnet.
Sie wird nicht richtig berechnet wenn von der Karte falsche
Werte kommen.
>sein, das er irgendwo anders die Werte herbekommt, die ich sehe?>>Und warum hast du dann keine Levelshifter (zB Spannungsteiler)?
Das wird genau das Problem sein. Latchup der 4.2V vom Atmega
über die SD/MMC Datenleitungen in die 3.3V. Wer weiss ob die
Karte noch OK ist ?
holger wrote:
> Das wird genau das Problem sein. Latchup der 4.2V vom Atmega> über die SD/MMC Datenleitungen in die 3.3V. Wer weiss ob die> Karte noch OK ist ?
Tja, würde ich nicht drauf wetten. Zumindest würde ich das erstmal
sofort abklemmen...
"Kleine Schwankungen" Wer erzählt denn so einen Mist im Bezug auf
Levelshifting? *Kopfschüttel
Wie hast du meine Routinen getestet ?
In dein Programm eingefügt ?
Vieleicht hast du einfach keine 1kB RAM mehr frei.
Wenn du meine Routinen benutzen möchtest solltest
du bei so wenig freiem RAM auf jeden Fall den FAT-Buffer
abschalten. Auch alle Funktionen die du von meinem
FAT nicht brauchst.
avr-size meldet die erforderliche RAM Größe
nicht ausführlich genug. Da fehlt z.B. der Stack
Bedarf. Den muss man abschätzen.
Weil das ein portables Gerät ist und ich ansonsten keine Batterieanzeige
für den Akku hätte. Wenn ich den Atmega an 3,3 Volt hänge, kann ich ja
den Bereich von 4,2 bis 3,3 V leider nicht messen. Also haben wir den
ADC etwas missbraucht und Aref an den Akku gelegt, so dass wir als Aref
jetzt die Akkuspannung haben (damit die immer größer oder gleich groß
der zu messenden Spannung ist). Dann haben wir an ADC0 die 3,3 Volt
gelegt und quasi den ADC invertiert um somit den Batterieverbrauch zu
ermitteln.
Ich hoffe das war jetzt richtig nausgedrückt :).
Ich hab dein Programm ohne alles andere getestet. Ich habe error-Codes
eingebaut, die ich mir über Bluetooth an meinen Laptop schicke, weshalb
ich auch weiß, dass es beim MBR Check hängen bleibt.
Das AVRstudio gibt einen RAM bedarf von 74,8% aus. Ich habe auch
versucht alles abzuschalten was ich nicht benötige, wie z.B. Dateien
erstellen oder löschen usw.
Kannst du denn wenigstens mal ausprobieren, den AVR (sowie den Rest) mit
3.3V zu versorgen? Es könnte ja durchaus sein, dass da teilweise einige
Bits verrutschen (Sind denn die Ergebnisse immer gleich?), wenn du die
SD ein gutes Stück ausserhalb der Spezifikation betreibst. Sind in den
Datenleitungen denn wenigstens Widerstände?
Die Akkuspannung hättest du übrigens auch messen können, ohne den AVR an
die Betriebsspannung zu hängen. Mit einem sehr hochohmigen
Spannungsteiler und (falls nötig) den unteren Widerstand an einem
Port-Pin statt direkt an GND müsste sich die Spannung recht sparsam
messen lassen.
Ist der Stromverbrauch denn überhaupt ein grösseres Kriterium
(Akkulaufzeit)? Dann solltest du nämlich die SD und alles andere Zeugs
auch abschalten können. Das ist alles nicht unbedingt so sparsam.
>>Kannst du denn wenigstens mal ausprobieren, den AVR (sowie den Rest) mit
3.3V zu versorgen?
Möglich ja aber etwas schwierig ,da alles auf einer Platine verbaut ist.
Ich könnte den Akku abtrennen und ein Labornetzteil dran hängen.
>>Es könnte ja durchaus sein, dass da teilweise einige
Bits verrutschen
Ich denke nicht das Bits verrutschen, da die Ergebnisse immer gleich
sind und bei den anderen Sensoren auch keine Schwankungen auftreten.
Wie oben schon erwähnt sind dort keine Widerstände? Kann mir mal bitte
einer erklären warum diese Spannungsteiler bzw. Levelshifting so wichtig
ist? Darüber habe ich mir noch nie so den Kopf gemacht, da die anderen
Sensoren über SPI perfekt funktionieren. Ist eine SD Karte anfälliger
für Störungen?
>>Ist der Stromverbrauch denn überhaupt ein grösseres Kriterium
(Akkulaufzeit)? Dann solltest du nämlich die SD und alles andere Zeugs
auch abschalten können. Das ist alles nicht unbedingt so sparsam.
Hm das man die Akkuspanung auch so messen kann wusste ich noch nicht. Ja
die Akkulaufzeit ist sehr wichtig, weshalb ich auch das Bluetooth und
den Rest immer abschalte sofern ich ihn nicht benötige. Im Moment will
ich halt nur die SD Karte zum laufen bekommen, um meine Daten Online und
"in freier Wildbahn" aufnehmen und abspeichern zu können.
Marian wrote:
>>>Kannst du denn wenigstens mal ausprobieren, den AVR (sowie den Rest) mit> 3.3V zu versorgen?>> Möglich ja aber etwas schwierig ,da alles auf einer Platine verbaut ist.> Ich könnte den Akku abtrennen und ein Labornetzteil dran hängen.
Dann solltest du aber den Spannungsregler rausnehmen und überbrücken,
sonst hast du wegen dem Spannungsabfall des Reglers wiederum eine
tiefere Spannung an der Karte (Und am Rest der Schaltung).
>>>Es könnte ja durchaus sein, dass da teilweise einige> Bits verrutschen>> Ich denke nicht das Bits verrutschen, da die Ergebnisse immer gleich> sind und bei den anderen Sensoren auch keine Schwankungen auftreten.> Wie oben schon erwähnt sind dort keine Widerstände? Kann mir mal bitte> einer erklären warum diese Spannungsteiler bzw. Levelshifting so wichtig> ist? Darüber habe ich mir noch nie so den Kopf gemacht, da die anderen> Sensoren über SPI perfekt funktionieren. Ist eine SD Karte anfälliger> für Störungen?
Ganz einfach: Wenn die SD-Karte mit 3.3V versorgt wird, der AVR aber
(schlimmstenfalls) mit 4.2V, dann liegt an den Eingängen der Karte eine
um 0.9V höhere Spannung als Vcc an. Das geht nicht gut...
>>>Ist der Stromverbrauch denn überhaupt ein grösseres Kriterium> (Akkulaufzeit)? Dann solltest du nämlich die SD und alles andere Zeugs> auch abschalten können. Das ist alles nicht unbedingt so sparsam.>> Hm das man die Akkuspanung auch so messen kann wusste ich noch nicht. Ja> die Akkulaufzeit ist sehr wichtig, weshalb ich auch das Bluetooth und> den Rest immer abschalte sofern ich ihn nicht benötige. Im Moment will> ich halt nur die SD Karte zum laufen bekommen, um meine Daten Online und> "in freier Wildbahn" aufnehmen und abspeichern zu können.
Dann ist ein Linearregler eigentlich fehl am Platz. Für sowas gibt es
ganz kleine Schaltregler, da wird dann wenigstens auch keine Leistung
verheizt (Oder nur sehr wenig). Ausserdem musst du auch beachten, dass
auf der Versorgungsleitung für die Karte genügend grosse Kondensatoren
sitzen. Die will beim Schreiben schonmal 100mA oder so.
BTW: Welchen Thread denn jetzt?
Hallo,
ich habe damals keine Level-Shifter benutzt da das Datenblatt des
Atmegas zeigte, dass die Pins ungefähr Vcc-0.5V ausgeben. Bei einer
durchschnittlichen Akkuspannung von 4V käme man somit auf 3.5V. Das ist
nicht die feine Art, allerdings sollten 0.2V ein TTL-Signal nicht in dem
Maße beeinflussen.
Das ist alles schon ne Weile her und Marian hat nun eine fertig
bestückte Platine. Einfach mal Umlöten sollte also nur als Notlösung
dienen.
Grüße,
Daniel
Also seltsam ist das schon alles. Heute morgen habe ich nochmal ein
wenig im Programm was geändert wie z.B. unnötige Errorcodes entfernt und
den FAT-Buffer und andere Routine mal defined und wieder undefined und
siehe da, jetzt geht es. Kann mir das einfach nicht erklären! Ich teste
jetzt mal die Karte vollständig zu beschreiben, dauert ja ne Weile.
Danach melde ich mich nochmal.
Vielen Dank an alle die sich mit mir hier so lange rumgeschlagen haben!
Gruß,
Marian
Daniel (x2) wrote:
> ich habe damals keine Level-Shifter benutzt da das Datenblatt des> Atmegas zeigte, dass die Pins ungefähr Vcc-0.5V ausgeben.
Wo steht denn sowas? Die AVRs haben 2 Fets, die gegenläufig verschaltet
sind am Port. Die Spannung, die bei einer 1 am Port anliegt, hängt vom
Strom ab, der dort fließt.
Wenn du allerdings ne Steuerleitung anschließt (Strom ziemlich klein)
liegt die Spannung bei nahezu VCC.
OK die 128 MB zu beschreiben habe ich mal unterbrochen, das dauert mir
etwas zu lange :).
Habe nun einfach etwas in die Datei hineingeschrieben und es
funktioniert endlich. Wo der Fehler lag, weiß ich leider immer noch
nicht.
Nochmals danke an euch!
Daniel (x2) wrote:
>>Wo steht denn sowas?>> Wie erwähnt, ist das alles schon ziemlich lang her. Ich denke, es stand> im Datenblatt des Atmega32.
Du hast garnicht mal so unrecht. Im Mega16 Datenblatt steht:
VOH (Output High Voltage)
bei Vcc = 5V; IOH = -20mA
->4,2V
Beachte aber, dass das bei 20mA Stromfluss ist. Deine Steuerleitung wird
kaum dauerhaft 20mA ziehen. Ergo wird die Spannung am Portpin noch etwas
höher sein, als 4,2V.
@Holger:
Eine Frage hätte ich noch. Auf deiner Homepage steht folgendes :
>Ein reines Lesesytem für FAT12/16/32 kommt mit ca. 5kB Code aus. Ein KLEINES
Schreib/Lesesystem mit ca. 10kB. Wenn man ALLE Funktionen benutzen möchte, kann es
in einem ATMega16 schon ziemlich eng werden. RAM Bedarf ohne FAT-Buffer ca. 0.7kB.
Mit FAT-Buffer 1.2kB
Bei mir sieht der RAM Bedarf leider nicht so aus. Ohne FATbuffer steht
bei mir 1099 Bytes und mit FATbuffer 1651 Bytes. Ich habe folgendes
defined:
1
// #undef defines below in "mydefs.h" if you don't need them
2
// spare program memory by deciding if you want to read, write or both
3
#define DOS_READ //define this if you want to read files
4
#define DOS_WRITE //define this if you want to write files
5
// spare program memory by deciding if we want to use FAT12, FAT16, FAT32.
6
// don't touch if you don't know the FAT type of your drive !
7
#define USE_FAT16 //define this if you want to use FAT16
Wieso wird bei mir mehr RAM benötigt als bei dir? Muss ich zusätzlich zu
den undefines noch mehr auskommentieren?
Gruß,
Marian
>Beachte aber, dass das bei 20mA Stromfluss ist. Deine Steuerleitung wird>kaum dauerhaft 20mA ziehen.
Meine Pins ziehen immer 20mA! :P:P:P
Hehe, es scheint ja nun zu funktionieren - so schlecht kann die
Schaltung also nicht gewesen sein. :)
Hey,
bin auch gerade dabei an MMC/SD mit FAT zu werkeln.
Lesen klappt schon gut und recht schnell.
Jetzt will auch noch das schreiben implementieren. Dazu wollt ich mal
fragen wie ich das am sinnvollsten angehe:
1) In der FAT einen freien Sektor suchen und die Adresse im Root Dir
eintragen
2) den nächsten Sektor suchen und dessen Adresse im vorigen eintragen.
3) 512 Byte Daten an die adresse des vorigen schreiben
4) Loop über 2/3 bis das Schreiben beendet ist.
Das wäre jetzt meine spontane Vorgehensweise.
Voraussichtlich fallen ca 32kbit also 4kB Daten an (IMA APDCM bei 8kHz).
Da ich vorher nicht weiß wie lange ich jeweils aufzeichne kann ich
leider nicht vorher berechnen wieviele Cluster ich ungefähr brauche und
da schon mal eine Clusterkette schreiben lassen.
Den Atmel auch an die 3,3V hängen und den Akku hochohmig über einen
Spannungsteiler an einen A/D Port hängen. Zieht dann praktisch kein
Strom und wenn du keine Spikes detektieren willst, dann geht das auch
wunderbar.
Größenordnung so um die 100k/100k, dann bist du bei 4,2V Akku bei 2,1V
A/D.
Zieht dann etwa 20µA, was ok ist denke ich, ggf. kannste die Were noch
hochschrauben. Dann würde ich aber einen Kerko oder so noch
dhinterhängen, wen der A/D seine paar µA zieht. Das geht bei mir ganz
gut...
Ich habe nun auch versucht, eine SD-Karte anzusprechen. Erst gabs
Probleme aufgrund verschliffener Signale durch den Spannungsteiler an
den Signalen (vermutlich C´s in der Karte und parasitäre Kapazitäten
durch den wilden Testaufbau). Hab dann den SPI-Takt herunter gedreht und
nun gehts.
Weil es am Anfang mit Ulrich Radigs Software nicht ging (aufgrund des
oben beschriebenen Probleme) habe ich die Software von Roland Riegel
getestet. Da die mir aber zu kompliziert ist, habe ich nach dem Finden
des Fehlers wieder die von Ulrich Radig verwendet.
Die geht auch soweit. Allerdings ist mir aufgefallen, daß das Programm
die Daten bei der Übertragung "verfälscht". Wenn Daten von der Karte
geholt und auf die Schnittstelle geschickt werden, dann passiert
folgendes:
Ist ein Zeichen 0x0D (LF) in der Datei auf der SD-Karte enthalten, dann
wird über die Schnittstelle anschließend ein weiteres 0x0D bei der
RS232-Übertragung zum PC eingeschoben.
z.B.
Daten auf Karte: 0x00 0x00 0x0D 0xFF 0xEE
vom PC empfangen: 0x00 0x00 0x0D 0X0D 0xFF 0xEE
Bei Text ist das nicht so kritisch, aber ich habe ein Bitmap übertragen,
das danach etwas "verschoben" ausgesehen hat.
Bin bisher nicht dahinter gekommen, wo das passiert. Hat jemand ne
Erklärung dafür? Kommt das schon von der SD-Karte so oder gibts da in
der Software eine Stelle, wo dieses 0x0D eingeschoben wird? Falls ja,
was ist der Grund dafür?
hab das Problem mit den "eingeschobenen "0x0D" gelöst. Es wurde nicht
nach einem 0x0D, sondern vor einem 0x0A (das erwähnte Beispiel entsprach
nicht ganz der Realität - hab 0x00...0xff ausgegeben und geschaut, an
welcher Stelle das Problem passiert). Habe nun einfach ne neue Funktion
geschrieben, die den Bufferinhalt vn der SD-Karte 1:1 weiter gibt.
Der Dateizugriff (Lesen) auf Daten vom Hauptpfad der SD-Karte
funktioniert nun problemlos. Hab auch die Größe der gesendeten Datei auf
die tatsächliche Dateigröße begrenzt.
Kann man mit der Software von Ulrich Rading auch irgendwie auf Dateien
auf Unterpfaden zugreifen?