www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenlogger für größere Datenmengen


Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mehrere Sensoren die Daten liefern welche ich auf einen 
geeigneten Speichermedium in genau der Reihenfolge speichern muß wie die 
daten anfallen.

Es fallen z.Z. ca 2-3kByte pro Sekunde über je ein USART (ATMEGA644p) 
an. Später könnte das auch noch mehr werden.

Zuerst dachte ich an eine Lösung wie sie hier schon oft besprochen 
wurde: Daten über USART in einen ATMEGA... und dann auf eine SD Card 
speichern.

Bei ausgiebigen Tests kam es aber immer wieder zum "verschwinden" von 
daten, d.h. manche  Datensätze wurden nicht gespeichert. Ich habe die 
wirkliche Ursache nicht genau herausfinden können aber ich vermute dass 
es mit der Eigenschaft der SD Cards zusammenhängt, daten manchmal 
verzögert zu übernehmen wenn (SD card-)intern irgenwelche "arbeiten" 
anliegen (wear leveling). Bei GPS Loggern mit einem NMEA Datensatz pro 
Sekunde wird das noch keine Probleme geben.

Hat jemand Erfahrungen beim speichern solcher datenraten auf SD Card? 
Ich weiß dass viele kommerzielle Geräte die karten mit viel höheren 
datenraten beschreiben. Aber dort werden wahrscheinlich größere 
Pufferspeicher eingesetzt die ein nicht kontinuierliches 
Schreibverhalten der Karte von der datenquelle entkoppeln.

Kann mir jemand genaueres zu den Auswirkung des wear leveling 
hinsichtlich einer nicht kontinuierlichen Beschreibbarkeit von SD Cards 
sagen? Ich habe bislang nur Infos zu Sinn und Prinzip von Wear leveling 
gefunden.

Welche andenen Speichermedien außer SD Card gibt es noch, die relativ 
einfach mit ATMEGAs angesteuert werden können?

Danke für Hilfe,
Dude

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt noch CF-Karten. Das Problem (man kann nicht immer kontinuierlich 
schreiben) besteht aber da auch. SD-Karten lassen sich bis zu 250ms 
Zeit, bis sie wieder "da" sind. Du müßtest also bei 2kByte/s ca. 512 
Byte (einen Sektor) zwischenspeichern, das geht noch im Ram vom AVR. 
Ansonsten macht sich als Puffer ein kleiner SPI-Ram ganz gut (DIP8) - 
einfach anzusteuern, 32kByte sind gängig.

Und - Du solltest Deine "Vermutung" natürlich erstmal bestätigen, z.B. 
rote Lampe leuchten lassen, wenn Programm schreiben will und SD-Karte 
nicht schnell genug antwortet..

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.