Forum: Mikrocontroller und Digitale Elektronik SD-Karte mit PIC18F2685 beschreiben, am PC auslesen


von Arno (Gast)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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.

von Arno (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Frank K. (fchk)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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.

von Arno (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Georg G. (df2au)


Lesenswert?

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.

von galileo (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.