Forum: Mikrocontroller und Digitale Elektronik SD-Karte lesen für Anfänger


von Cardreader (Gast)


Lesenswert?

Hallo,

ich möchte gerne am PC eine Datei erstellen (eine Tabelle bestehend aus 
20 16-Bit-Werten) und auf SD-Karte schreiben. Anschließend soll die 
Karte in meine Schaltung gesteckt werden und der Controller (ein 
AtMega88) soll auf Kommando den Datensatz einlesen und im EEPROM 
abspeichern.

Ich habe nun bereits versucht mich etwas in die Materie einzulesen, 
allerdings habe ich immer noch keine Ahnung wie ich das am besten 
angehen soll.


Was ich nun suche ist eine möglichst einfache Möglichkeit das Ganze zu 
realisieren. Konkret fallen mir dazu erstmal folgende Fragen ein:


Wie erstelle ich die Datei am besten auf dem PC, sodass der Controller 
damit klar kommt?

Muss ich wirklich dieses ganze FAT Dateisystem auf meinem Controller 
implementieren nur um ein paar Zahlen von der Karte zu lesen?


Vielen Dank erstmal!

MfG,
Philipp

von Eumel (Gast)


Lesenswert?

Cardreader schrieb:
> Muss ich wirklich dieses ganze FAT Dateisystem auf meinem Controller
> implementieren nur um ein paar Zahlen von der Karte zu lesen?

Wenn du deine Karte "normal" am PC bearbeiten willst ja. Ich weiß nicht, 
ob es PC Programme gibt die mit unformatierten SD Karten umgehen können 
um z.b. einfach einen Bitstrom drauf zu schieben.

von Purzel H. (hacky)


Lesenswert?

Nein, das filesystem braucht man nicht unbedingt. Der PC kann allerdings 
nur mit einem Filesystem schreiben. Du kannst einen Treiber fuer den 
Controller schreiben, der das SD als linearen, sektorisierten speicher 
anspricht.

Zentral ist allerdings der Zugriff auf die Sektoren der SD. Das musst 
erst mal drauf haben. Das FAT obendrauf, ist eine Frage der 
Implementaion einer vorgegebenen Struktur.

Eine durchschnittliche IDE hat allerdings Treiber fuer SD schon 
vorhanden. Sei das nun fuer fuer Atmel, PIC oder sonstwas, zu 
irgendeiner Sprache

von batman (Gast)


Lesenswert?

Die 40 Bytes werden ja mit Sicherheit in einem Block hintereinander 
abgelegt. Im Prinzip brauchst du also nur den Blockanfang nur mit einer 
Schleife zu suchen, z.B. auf ein vorgesetztes Schlüsselwort.

von Klaus (Gast)


Lesenswert?

Siebzehn und Fuenfzehn schrieb:
> Nein, das filesystem braucht man nicht unbedingt. Der PC kann allerdings
> nur mit einem Filesystem schreiben.

Unter Linux kann man auch das RAW-Device ohne Filesystem lesen und 
schreiben. Ich hab mal gehört, das geht auch unter Windows, kenn mich da 
aber nicht so aus.

MfG Klaus

von isnah (Gast)


Lesenswert?

Das Problem hatten wir doch schon mal:
Beitrag "PC ohne File system auf SD-Karte schreiben"

von Cardreader (Gast)


Lesenswert?

Hallo nochmal,

ein extra Programm wollte ich eigentlich nicht installieren um die 
SD-Karte zu beschreiben... das sollte von jedem PC aus funktionieren. 
Dann lieber das FAT-System auf dem Controller! Da würde ja dann eine 
abgespeckte "Read-only" Version ausreichen oder?


Wäre es damit dann möglich den Datensatz einfach als .txt datei auf der 
Karte abzulegen oder welches Dateiformat würde sich da am besten eignen?

In welcher Form liegen die Daten dann im Controller nachdem die Datei 
von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten 
40 Bytes aus der .txt Datei?


Gruß,
Philipp

von Karl H. (kbuchegg)


Lesenswert?

Cardreader schrieb:
> Hallo nochmal,
>
> ein extra Programm wollte ich eigentlich nicht installieren um die
> SD-Karte zu beschreiben... das sollte von jedem PC aus funktionieren.
> Dann lieber das FAT-System auf dem Controller! Da würde ja dann eine
> abgespeckte "Read-only" Version ausreichen oder?

Das 'Problem' ist nicht der Code. Das Problem ist der Speicher, den du 
zur Zwischenspeicherung der FAT Tabellen brauchst.

von Karl H. (kbuchegg)


Lesenswert?

Cardreader schrieb:

> Wäre es damit dann möglich den Datensatz einfach als .txt datei auf der
> Karte abzulegen

wäre möglich.
Hat den Vorteil, dass du am PC ganz einfach Notepad dafür verwenden 
kannst.

> In welcher Form liegen die Daten dann im Controller nachdem die Datei
> von der SD-Karte gelesen wurde?

so wie du sie einliest.

  Datei auf
  Datensatz lesen
  Datei zu


Vielleicht doch erst mal im C-Buch deines Vertrauens nachlesen, wie 
Dateibearbeitung in C grundsätzlich funktioniert und am PC mal ein paar 
Übungen dazu machen, ehe man dann auf die Spezialitäten in der 
µC-Version umsteigt, die dem Umstand geschuldet sind, dass dort einiges 
nicht ganz so einfach ist, weil man in Resourcennot ist.

von holger (Gast)


Lesenswert?

>In welcher Form liegen die Daten dann im Controller nachdem die Datei
>von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten
>40 Bytes aus der .txt Datei?

Alter ich krieg ne Krise wenn ich sowas lese.
Klatsch dir ne UART Verbindung an deine Schaltung
und beam die Daten so rüber. Oder mach es per ISP.

SD Karte ist sowas von gar nichts für dich.

von M. K. (sylaina)


Lesenswert?

holger schrieb:
>>In welcher Form liegen die Daten dann im Controller nachdem die Datei
>>von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten
>>40 Bytes aus der .txt Datei?
>
> Alter ich krieg ne Krise wenn ich sowas lese.
> Klatsch dir ne UART Verbindung an deine Schaltung
> und beam die Daten so rüber. Oder mach es per ISP.
>
> SD Karte ist sowas von gar nichts für dich.

Sehe ich ähnlich. Ne RS232 Schnittstelle und dann mit nem RS232toUSB 
wärs in dem Fall wohl doch leichter als das Gezuppel mit FAT...

von Cardreader (Gast)


Lesenswert?

Mh ja... ich merke schon... das Ganze ist wohl doch ne Nummer zu hart 
für meine bescheidenen Programmierkenntnisse (wie man vielleicht merkt).

holger schrieb:
> Alter ich krieg ne Krise wenn ich sowas lese.
> Klatsch dir ne UART Verbindung an deine Schaltung
> und beam die Daten so rüber.

Du brauchst ja nicht gleich die Krise zu kriegen, der Thread heist nicht 
umsonst "...für Anfänger".

Genau wie du es schreibst funktioniert die ganze Geschichte zur Zeit ja 
schon... allerdings wäre es praktisch verschiedene Datensätze auf 
SD-Karten in der Hosentasche zu haben die man Zuhause vorbereiten kann 
und nur noch umzustecken braucht.

Aber ich werde mich jetzt nach einer anderen Lösung umsehen! (Evtl. 
direkt mehrere verschiedene Datensätze auf den Controller schieben die 
dann per DIP-Schalter ausgewählt werden können... oder einen kleinen 
"USART-Programmer")


Trotzdem herzlichen Dank an alle Schreiber!

Gruß,
Philipp

von M. K. (sylaina)


Lesenswert?

Naja, FAT zum implementieren ist schon ne Ansage. Schau dir mal z.B. das 
hier an:
http://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html
Vielleicht hilft es dir, aber es wird noch ein langer Weg werden denke 
ich ;)

von Peter (Gast)


Lesenswert?

Hallo,
es gibt doch eine FAT Lib für AVRs hier in der Codesammlungen. Ich habe 
die damals glaube ich auf einen Mega 8 zum laufen gebracht.
Gruß
Peter

von Auch genannt... (Gast)


Lesenswert?

...werden in dem zusammenhang oft:
* Roland Riegel's FAT-Lib
* Petit-File System von Elm Chan

Beide schon gehabt.
Bei Elm Chan musst Du evtl. noch den HAL selber schreiben.

von kukuk (Gast)


Lesenswert?

Anstatt SD_Karte kannst du einen kleinen MC einsetzen in dessen EEPROM 
du die 40 Bytes gespeichert hast.

Auch so etwas passt in die Hosentasche.

von Wusel D. (stefanfrings_de)


Lesenswert?


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.