mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Werte auf SD-Karte in Datei schreiben


Autor: johnson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich weiss, dass es schon ein paar Diskusionen über SD-Karten gegeben 
hat... aber ich bin immer noch nicht ganz schlau geworden.

Ich möchte mir einen GPS-Loggerbauen, der jede Sekunde den NMEA 
Datensatz auf eine SD Karte schreibt (ich verwende einen Atmega8).  Die 
SD Karte möchte ich später in einem Kartenleser am PC auslesen und dann 
die GPS Daten als Weg z.B. in Google Earth anzeigen.
Ich habe bisher alles in Assembler geschrieben (GPS auslesen usw.), 
jetzt fehlt mir noch das Speichern auf der SD Karte.

Wie ist das denn am einfachsten zu realieren? Habe gelesen, dass manche 
eine Datei auf der Karte anlegen und dann an die Adresse der Datei 
schreiben - funktioniert das? Ansonsten habe ich auch Quellcode von 
Ulrich Radig gefunden, aber der ist ja in C. Dann müsste ich meinen 
Assemblercode in C integrieren oder? Hat mir jemand einen Tip wie ich am 
besten an das ganze rangehen könnte? Gibt es vielleicht auch irgendwo 
eine gute Erklärung?

Gruß Johnson

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was Du brauchst, ist ein FAT16 Dateisystem auf Deiner Karte.

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fat in Assembler, viel Spaß. Wer viel Zeit hat^^

Autor: Sebastian ... (zahlenfreak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht auch. Zumal er es eben nicht komplett implementieren muss. Du musst 
nur die FAT finden. Dann gehst du in den Root-Ordner, holst dir die 
Clusternummer der datei "meine.dat" (oder so) und schreibst ab dort in 
die Datei. Die Datei musst du vorher am PC mit entsprechender Größe 
anlegen.

Ok, in Assambler ists schon etwas aufwand, aber auf jeden Fall machbar, 
vor allem, weil er eben sehr viele Einschränkungen eingehen kann.

Besorg dir auf jeden Fall das White-Paper von Microsoft. Da ist alles 
drin beschrieben.

Sebastian

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da könntest du auch mal vorbeischauen

http://www.mikrocontroller.net/articles/AVR_FAT32

:)

Um die eine oder andere 32 Bit Operation wird man nicht rum kommen und 
auslesen eines Sektors 512 Byte...Sonst, wenn man sich etwas einschränkt 
;)

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Auslesen des Sektors dürfte mit dem Mega8 aber schon ein Problem 
darstellen. Der Mega328 hat in jedem Fall mehr Ram und Flash und 
dasselbe Gehäuse.

Autor: Daniel R. (zerrome)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn es den johnson nicht mehr zu interessieren scheint,
mit nem mega8 wäre das trotzdem kein Problem es ist unglaublich was man 
mit 1KByte Ram so alles machen kann :)

Autor: johnson (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank erstmal für die Antworten!

Dann werde ich das mit der SD Karte doch lieber in C machen...
Manche haben ja ihren Quellcode dazu bereitgestellt (z.B. Ulrich Radig) 
habe ich hier gelesen. Ich denke ich werde es damit versuchen... ich 
möchte mich nicht erst Wochen in das ganze einarbeiten.

Ich möchte aber möglichst meine Funktionen in Assembler weiterbenutzen.
Welche Möglichkeiten kennt ihr um C und Assembler zu kombinieren?
Man kann ja soweit ich weiss den Assembler Code per Inline Assembler in 
C integrieren oder man ruft die Assemblerfunktionen im C Programm auf.

Kann ich auch die C Funktionen in Assembler aufrufen?

Und wie funktioniert das ganze? Kann mir jemand mehr dazu sagen oder mir 
einen Tip geben wo ich mehr dazu finden kann?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.