www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mmc/sd-karten


Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
überlege gerade ob ich mir ne sd/mmc-karte und ne halterung kaufe und
dann mal ein was damit programmiere. Es gibt ja schon viel code um fat
und die karten aunzusprechen, ich lese aber öfters mal dass man beim
speichern "sowieso" probleme kriegt weil der interne speicher nicht
groß genug ist. Lohnt sich das überhaupt damit einen datenlogger zu
bauen? Hab im moment hier ne atmega8, der soll nach einigen aussagen zu
wenig speicher haben. Könnte man nicht einfach das ganze in
speicherstücke zerhacken und den internen speicher wieder löschen? Ich
kann mir irgendwie nicht vorstellen dass man damit keinen vernünftigen
datenlogger bauen kann! danke für eure antworten.

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn man nicht unbedingt auf speed setzt ist das RAM nicht so wichtig.
einen 512 byte buffer sollte man eigentlich haben aber es geht auch
ohne (wird dann aber sehr unschön). Man muss dann sehen, dass man die
Daten, die man einliest abarbeitet ohne sie zwischen zu speichern.

Schreiben ist daher problematisch, da man die FAT tabelle selber ändern
muss und nur in 512 byte blöcken schreiben darf. Wenn du nun 32 byte
ändern willst musst du den rest des 512 byte blocks zwischenspeichern
um keine daten zu verlieren indem du sie versehentlich auf 0 setzt

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an was du alles loggen willst
der ATMega8 hat 1K RAM

Abschätzung:
512Byte Sektorpuffer
100 Byte Dateisysteminterne Variablen <- Das sollte problemlos
schaffbar sein
100 Byte Stack

sind 712Byte
Also selbst mit einem ATMega8 gibt es im RAM kein Problem.
Aus eigener Erfahrung, wenn du ein komplettes Dateisystem
implementierst
(open,read,write,chdir,findfirst...) dann kann es mit 8K
Programmspeicher etwas eng werden, wenn dein Datenlogger auch noch ein
wenig tun soll und Strings vorhält. Aber nicht benötigte Funktionen des
Dateisystems muss man ja nicht einbinden.

Autor: Philipp Burch (not logged in) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

also soweit ich das gelesen habe, kann man die Blockgrösse für die
Karten selber bestimmen. Von 1 Byte bis 512 Byte (Oder sogar mehr?).
Man muss einfach aufpassen, dass man die internen "Blöcke" der Karte
(AFAIK 1kB) nicht überschreitet, daher nur Blockgrössen verwenden,
durch die 1'024 ganzzahlig teilbar ist. Dem Dateisystem kann es ja
eigentlich auch egal sein wie du schreibst und liest, Hauptsache die
Struktur stimmt beim Auslesen mit dem PC.

(Alle Angaben ohne Gewähr ;))

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hört sich nicht schlecht an :). ich glaub ich kauf mir einfach mal ne
karte ;).

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
programmier das eigentliche Dateisystem aber lieber auf einem PC
zugriff auf Karte über USBreader mit CreateFile
Vorteile:
geht schneller
plattformunabhängig
fördert ungemein die Aufteilung in mehrere Softwarelayer
sauberer C code (gcc und Visual C kompatibel)
bessere Debugmöglichkeiten
du kannst gleich anfangen

Wenn du mit einem Sektorpuffer arbeitest wird vieles unproblematischer

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das stimmt nicht 100%, weil nicht alle Karten das unterstützen.

Du kannst bei manchen die blocklänge fest legen aber ich glaube bei
vielen ist sie fest auf 512b. Wenn du nur ein paar bytes lesen willst
kannst du natürlich auch den 512b block lesen und die restlichen daten
weg schmeissen.

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.