Ich möchte mit einem PIC eine SD-Karte mit Daten beschreiben. Danach soll ich die Daten am PC auslesen können, oder umgekehrt. Doch genau das funktioniert nicht. Ich benutze einen PIC18F2685, eine 2GB Speicherkarte und FAT32. Ich habe den Beispielcode ex_fat.c von CCS verwendet. Einiges habe ich schon in den Includes mmcsd.c und fat.c ergänzt was ich im Internet gefunden habe[[http://www.picprojects.net/sdcard_demo/index.html]]. Ich konnte danach Daten mit dem PIC auf die SD-Karte schreiben. Das heisst, ich konnte Ordner und Files erstellen und diese dann auch wieder anzeigen, lesen und löschen. Doch wenn ich die Karte am PC eingesteckt habe, hat es nichts angezeigt. Und auch umgekehrt, wenn ich etwas am PC erstellt habe hat es nichts angezeigt wenn ich es mit dem PIC auslesen wollte. Kann mit jemand weiter helfen was ich noch tun könnte? Ist etwas falsch formatiert, bzw. anders als beim PC? Vielen Dank Arno
Wenn du die Karte mit dem PIC initialisierst, was behauptet der PC dann zu sehen (Explorer, Eigenschaften)? Und umgekehrt, wenn du die Karte am PC initialisierst, was erkennt der PIC als Dateisystem? Solange sich da nicht beide Seiten einig sind, was für ein Filesystem-Typ es sein soll, brauchst du mit Daten schreiben/lesen nicht anzufangen.
Also der PC sagt, die Karte sei noch nicht formatiert. Mit dem PIC kann ich es nicht sagen. Das könnte also bedeuten, dass der PIC etwas nicht richtig formatiert!? Was müsste ich ändern? Ich habe auch die Karte kommplett auf 0 gesetzt und danach mit dem PC und mit dem PIC formatiert. Danach habe ich jede belegte Speicherstelle ausgelesen und in einem Textfile gespeichert. Vieleicht hilft das auch noch weiter. Was ich komisch finde ist auch, dass wenn es mit dem PC formatiert wurde nicht bei Cluster 0x000 begonnen wie beim PIC, sondern bei 0x200. Was ist falsch?
Der Standard sagt, dass SD-Karten FAT16 verwenden sollten, SDHC-Karten FAT32. Man kann auch auf SD-Karten FAT32 verwenden, aber es kann sein, dass nicht alle Geräte damit zurechtkommen. Dann sollten SD/SDHC-Karten wie Disketten formatiert sein, d.h. der Bootblock steht an Sektor 0. Auf dem PC kann man SD/SDHC-Karten auch wie eine Festplatte formatieren, d.h. mit Partitionssektor auf Sektor 0 und der Bootsektor der ersten Partition auf Sektor 63 oder 255 oder so, je nachdem wie viele Sektoren pro Track der Treiber zurückmeldet. Mit dem Festplatten-Formatierungsschema könnten auch einige Geräte nicht zurechtkommen, deswegen besser nicht verwenden. Schau hier, wie der Sektor 0 normalerweise aussehen sollte: http://de.wikipedia.org/wiki/FAT16#Aufbau fchk
Der PC ist im allgemeinen recht flexibel, was Datenformate angeht. Man muss ihm nur sagen, welche Sprache gesprochen wird. Also solltest du dir als erstes dein PIC-Fat-FS Programm ansehen, was dort implementiert ist. Sowohl beim Floppy Format wie auch beim HD Format stehen im ersten Sektor dann die Infos. Lass den PIC die Karte initialisieren. Das ist üblicherweise eine Sonderfunktion. Es ist nicht gesagt, dass die Funktion "formatieren" das mit erledigt. Nun muss der PC die Karte erkennen. Wenn nicht, hast du sie falsch initialisiert. Wenn alle Stricke reißen, nimmst du dieses http://panasonic.jp/support/global/cs/sd/download/index.html Programm und versuchst die Karte damit auf dem PC zu überreden.
Ich habe nun das ganze einmal mit FAT16 probiert. Was jedoch auch nicht geklappt hat. Danach habe ich alle einzelnen Daten wieder ausgelesen. Als ich es mit dem PIC formatiert hatte, habe ich gesehen, dass irgendwo FAT12 in der SD-Karte steht, obwohl der Beispielcode alles auf FAT16 formatieren sollte. Jedoch die Cluster und Sektorengrösse ist korrekt(FAT16). Und wenn ich es mit dem PC formatiere, sehe ich den ersten Wert leider nicht an der Stelle 0, so wie es eigentlich sein sollte! Daten vom PIC auf den PIC Schreiben und lesen funktioniert nach wie vor, auch mit FAT16. Doch der Austausch zwischen PC und PIC geht immer noch nicht.
Noch einmal, ganz langsam geschrieben: Als erstes musst du dir klar werden, ob du als Festplatte mit MBR und Partitionstabelle formatieren willst oder als Superfloppy mit Bootsektor und den Einträgen zum Layout. Dein PIC initialisiert als Superfloppy im FAT12 Format. Dein PC hat eine Partitionstabelle geschrieben. So können sich die beiden nicht verstehen.
Noch an einer Loesung interessiert? Habe ein weitgehend funktionierendes FAT-System, das FAT16 oder FAT32 beim Initialisieren erkennt, mit dem PC formatierte SDs lesen und schreiben kann. Basierend auf den Originaldateien von CCS mit etlichen Korrekturen und Erweiterungen. Dann melde dich hier. galileo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.