Hallo, ich möchte mir einen Datenlogger mit einer SD-Card, die per SPI angesteuerert wird bauen. Nun ist es so, dass ich immer 1 Byte pro Zeiteinheit (z.B. 1s) darauf abspeichern will. Nun ist es aber so, wenn ich ein Byte auf der SD Card abspeichere bereits 16kB (das 16000-fache!) belegt sind, weil diese eine Clustergröße von 16kB hat. Mit dem nächsten abgespeicherten Byte wären dann schon 32kB belegt. Das ist reine Platzverschwendung. Deshalb meine Frage, bevor ich weitere Überlegungen anstelle: Gibt es eine Möglichkeit nacheinander 1 Byte auf einer SD Card im SPI-Modus abzuspeichern , ohne dass deswegen immer ein ganzes Cluster belegt ist? Die Seite von www.ulrichradig.de habe ich schon durchsucht.Konnte aber nichts diebezüglich finden. Für Hilfen wäre ich sehr dankbar. Gruß Jan Purrucker
Also die speicherbare Einheit bei SD-Karten ist meines Wissens 512 Byte. Du müsstest also entweder 512 Werte im RAM halten (Wenn dein Controller denn genügend RAM hat) oder halt jeweils 511 Byte verschwenden. Damit könntest du deinen Logger mit einer 256MB-Karte fast 6 Tage im Dauerbetrieb laufen lassen. Ob das reicht musst du selbst wissen.
Hallo Philipp, vielen Dank für deine Hilfe. Ich habe mal testweise eine 1Byte große Datei auf meine SD-Karte kopiert, und dann waren bereits 16kB belegt. Wenn ich unter Windows die Karte formatieren will, kann ich die Clustergröße auch nicht angeben. Wie kann man dann eine SD-Karte formatieren, dass die Clustergröße 512Byte beträgt? Und welches Dateisystem braucht man für einen Datenlogger? Hab leider noch nicht so viel Erfahrungen mit SD-Karten Datenloggern. Deswegen die Fragen. Für weitere Antworten wäre ich sehr dankbar. Gruß Jan
Probier mal nun ein byte oder zwei anzuhaengen und schau wie gross die datei dann ist. rene
Mach doch einfach z.B. pro Tag/Stunde eine eigene Datei auf, in die du dann (evtl. mit Zeitstempel) deine Messwerte zyklisch hineinschreibst. Ich würde die Datei dann ersteinmal in ausreichender Größe nur mit Leerzeichen anlegen, damit - falls du FAT16 verwendest - nicht bei jedem neuen Eintrag die FAT neu geschrieben werden muss (Abnutzung). Die Position des letzten Eintrages kann man ja relativ einfach wieder auffinden.
Ihr sprecht von verschiedenen Sachen ! Ein Sektor auf der SD-Card wird sicher 512 Bytes haben, wahrscheinlich wird dieser schon durch mehrere Pages im Flash-Speicher gebildet. Das FAT-Dateisystem arrangiert dann mehrere Sektoren zu einem Cluster.... Ich würde erst mal darüber nachdenken, wie ich das FAT-Dateisystem in den uC bekomme, dann ist es auch leicht, an eine Datei ein weiteres Byte anzuhängen...
Hallo, ich habe gerade 4 einzelne Dateien mit jeweils 1Byte gespeichert -> 64kB belegt. Danach habe ich eine Datei mit 4Byte gespeichert ->16kB belegt. Da muß ich wohl noch Überlegungen anstellen, bevor ich zu basteln beginne. Meine Frage ist nur, ob ich (entsprechende Foramtierung vorausgesetzt) 512 Byte einzeln reinschreiben kann. Weiterhin müsste ich dann wissen, wie ich die SD-Card formatiere. Gruß Jan
> Weiterhin müsste ich dann wissen, wie ich die SD-Card formatiere.
Die handelsüblichen Karten sind schon in FAT16 formatiert.
Wenn du hier eine Datei erstellst, nimmt sie nunmal mindestens einen
Cluster ein. Die Cluster sind nur bei Karten mit geringerer Kapazität
kleiner, mindestens aber so groß wie ein Sektor.
Du musst halt mehr Daten in eine Datei schreiben, und nicht pro Datei
nur 1 Byte!
Hallo Thomas, mein yC hat 1024Bytes Ram. Nun sammle ich meine Daten, bis ich 512 Byte voll habe, und danach beschreibe ich die Karte. Aber 16kB kann ich leider nicht sammeln, da mein Ram halt nur 1024 Byte hat. Ich recherchiere am besten nochmal im Web, bevor ich hier weiter Fragen aufwerfe. Vielen Dank einstweilen. Sollte jemand einen Link zu einem ähnlichen Problem haben, wäre das nicht schlecht. Gruß Jan
hallo also du kannst auf eine MMC karte immer nur in 512byte(sektor) schreiben, kleiner geht net. deine 16kb ist die clustergrösse deiner MMC karte, welche 32 sektoren(512byte) zu einem cluster zusammen fasssen. ansprechen tust du deine MMc karte sektor(512byte) weise, also solltest du immer 512 byte in deinem mikrocontroller sammeln und anschliessend auf das medium schreiben; so verschwendest du auch kein einziges byte deiner MMC. falls zeitrelevant solltest du einen zeistempel zu jedem byte speichern. gruss fubu
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.