Datenlogger, 2000 sps

Gast #236970
Lesenswert?
• ▲
▼
Hi,

ich bastle an einem Datenlogger auf Basis eines Mega16 und bin auf ein
Problem gestossen. Und zwar es müssen ca 2000 Werte pro Sekunde vom ADC
über i2c in den EEPROM geschrieben werden. Der ADC scheint es
hinzukriegen (125 KHz), ein EEPROM-Schreibzufriff dauert aber ca 2,5
ms, was die minimale Log-Periode wesentlich einschränkt. Ich hab
maximal 300 Werte pro Sekunde erreicht.

Hat jemand vielleicht einen Vorschlag, wie man mehr Werte pro Sekunde
trotz der langen EEPROM-Schreibzugriffen realisieren kann?


Danke
anton
Gast #236971
Lesenswert?
• ▲
▼
SRAM oder richtigen Flash verwenden.

Flash Speicher (29Fxx) benötigen meist wenige 10us zum Schreiben eines
Bytes. Konstante 10000 Werte pro Sekunden sind damit kein Problem.
Oder du verwendest mehrer (z.b. 8) I2C EEPROMs und verwendest
Interleaving, beschreibst die ICs also alle der Reihe nach. So
erreichst du schonmal 2400 Werte pro Sekunde.
Gast #236973
Lesenswert?
• ▲
▼
Ich hab mir einen 29Fxx-Baustein angeckukt, tolle Bitraten, nur der wird
mir über 20 Leitungen wegfressen. SRAM genau so, oder?

Zur Zeit verwende ich AT24512, seitenweise zu beschreiben bringt auch
nichts, da pro seite sind es nur 64 AD-Werte, außerdem ein
5ms-Schreibzyklus ermöglicht nur 200 samples pro sekunde.

Sind eigentlich die SPI-EEproms viel schneller?



anton
Gast #236974
Lesenswert?
• ▲
▼
"Zur Zeit verwende ich AT24512, seitenweise zu beschreiben bringt auch
nichts, da pro seite sind es nur 64 AD-Werte, außerdem ein
5ms-Schreibzyklus ermöglicht nur 200 samples pro sekunde."


Hä ???

64 / 5ms = 12800 Sample/s

Du must bloß einen 128Byte FIFO im SRAM einrichten.


Peter
Gast #236978
Lesenswert?
• ▲
▼
ich möchte mir auch einen datenlogger bastelln und dachte an eine
sd-karte als speichermedium.

wie schnell kann man dann dort hin schreiben, hat da jemand schon
erfahrung damit??

Oder ist eine sd-speicherkarte für einen logger nicht geeignet??

besten dank

mfg mathias
Gast #236980
Lesenswert?
• ▲
▼
Ich glaube für meinen Fall (2000 Werte/Sekunde) reicht einen I2C-EEPROM
(AT24C512) aus, um den AD-Wert ohne FIFO zwischendurch abzuspeichern.

ich verstehe nur nicht, warum ein I2C-Schreibzugriff bei mir so lange
dauert (2,5ms). Ich schreibe ja ein einziges Datenbyte, also mit allen
Adressen sind das 4 Byte pro Schreibzugriff. Müssen das nicht einige
mikrosekunden sein (beim Clock 200KHz )?

Hat schon jemand die I2C-Schreibzugriffe mit einem Oszi nachgemessen?



anton
Gast #236983
Lesenswert?
• ▲
▼
"ich verstehe nur nicht, warum ein I2C-Schreibzugriff bei mir so lange
dauert (2,5ms). Ich schreibe ja ein einziges Datenbyte"


Der Schreibzyklus dauert immer gleichlang, egal, ob Du 1 Byte oder 128
Byte schreibst.

128 Byte schreiben:

- start
- 1 Byte Deviceadressse
- 2 Byte EEPROM-Adresse
- 128 Byte Daten
- stop
- warten bis fertig (start + deviceadresse + ACK testen)


Peter
Gast #236985
Lesenswert?
• ▲
▼
Bei mehr als einem Byte muß man natürlich den Pagemodus benutzen, damit
die Schreibzeit gleichbleibt.

D.h. exakt gleich ist nur der reine Schreibzyklus (max 5ms), die
I2C-Übertragungszeit verlängert sich natürlich.

Die dauert bei 400kHz bei einem Byte: 9 * 4 / 400kHz = 9µs
und bei 128 Byte: 131 * 9 / 400kHz = 295µs

Die 128 Byte sind also in insgesamt 5,3ms geschrieben.

Und Du brauchst eine FIFO, der für diese 5,3ms die anfallenden Daten
zwischenspeichert.
Es geht natürlich auch ein zweiter AT24C512 und dann immer im Wechsel
je 128 Bytes reinschreiben.


Peter
Gast #236988
Lesenswert?
• ▲
▼
ein zeiger auf die als nächstes zu lesende stelle, ein zeiger auf die
als nächstes zu schreibende stelle. beim schreiben und lesen jeweils
hochzählen (oder runter wenn's beliebt) und natürlich überprüfen, dass
man nicht weiter liest, als der puffer beschrieben ist, evtl.
überlaufkontrolle,...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.