Hallo
ich hab eine allgemeine Frage: Und zwar möchte ich einen Datanlogger
bauen, der TTL-Signale von einer I/O Leitung loggt und
zwischenspeichert. Diese Signale sollen dann per RS232 ausgelesen
werden. Die Datenaufzeichnung soll den Pegel und die Länge (Timestamp)
enthalten.
Das Problem ist jetzt, dass die TTL-Signale auf der I/O Leitung mit bis
zu 200kHz übertragen werden. Ich stelle mir vor, dass das Programm auf
dem Prozessor in einer Schleife ständig den Eingang prüft und bei einer
Änderung des Eingangssignals einen Datensatz anlegt.
Abgesehen von der Datenmenge: Ist ein Prozessor (welcher?) überhaupt in
der Lage den Eingangspin mit dieser Geschwindigkeit abzufragen?
Danke schon mal im vorraus.
Rüdiger schrieb:> Ich stelle mir vor, dass das Programm auf> dem Prozessor in einer Schleife ständig den Eingang prüft und bei einer> Änderung des Eingangssignals einen Datensatz anlegt.
Der macht gar nichts und trampelt auf der Stelle.
Das Signal kommt an den ICP und wenn der einen Interrupt auslöst wird
der Timer Counter weggeschrieben.
mfg.
>Und zwar möchte ich einen Datanlogger>bauen, der TTL-Signale von einer I/O Leitung loggt und>zwischenspeichert.
Warum?
>Das Problem ist jetzt, dass die TTL-Signale auf der I/O Leitung mit bis>zu 200kHz übertragen werden. Ich stelle mir vor, dass das Programm auf>dem Prozessor in einer Schleife ständig den Eingang prüft und bei einer>Änderung des Eingangssignals einen Datensatz anlegt.
Ich stelle mir vor das du keine Ahnung hast.
>Diese Signale sollen dann per RS232 ausgelesen>werden.
Wie lange möchtest du die Signale denn aufzeichnen?
Also Worst case müsstest du so 200kHz mal 10 pro Sekunde speichern
um da was verwertbares zu bekommen.
2MB per RS232 auszulesen ist nicht wirklich lustig.
Wenn du 100s gespeichert hast wirds echt langweilig.
So viel Kaffe kannst du nicht trinken
Hallo,
>Warum?
Weil ich sehen möchte, welche Bits übertragen werden.
>Ich stelle mir vor das du keine Ahnung hast.
Richtig vorgestellt. Aber wie sonst, ausser in einer Schleife oder per
Interrupt?
>Wie lange möchtest du die Signale denn aufzeichnen?>Also Worst case müsstest du so 200kHz mal 10 pro Sekunde speichern>um da was verwertbares zu bekommen.>2MB per RS232 auszulesen ist nicht wirklich lustig.>Wenn du 100s gespeichert hast wirds echt langweilig.>So viel Kaffe kannst du nicht trinken
Maximal 15 Sekunden. Die Daten könnte man ja mit einem Algo packen.
Hey,
im Grunde ist das etwas, was auch ein Logik-Analysator macht - in der
Regel sind jedoch hier die Aufnahmezeiten nicht so lang.
Du musst dir Überlegen, wie viel Speicher du benötigst. Gerade wenn du
nicht einfach nur die Daten Roh speichern möchtest, sondern hier den
Zeitraum, in welcher ein Pegel besteht.
Gibt es denn noch weitere Informationen über das Signal? Ist es nur 1
Bit breit?
Grüße,
Thomas
>2MB per RS232 auszulesen ist nicht wirklich lustig.>Maximal 15 Sekunden. Die Daten könnte man ja mit einem Algo packen.
Dann packen wir die Bits doch mal in ein Byte.
250000 Bytes pro Sekunde. Mal 15s = knapp 4MByte.
Immer noch nichts was ich per RS232 übertragen möchte.
holger schrieb:>>2MB per RS232 auszulesen ist nicht wirklich lustig.>>Maximal 15 Sekunden. Die Daten könnte man ja mit einem Algo packen.>> Dann packen wir die Bits doch mal in ein Byte.> 250000 Bytes pro Sekunde. Mal 15s = knapp 4MByte.> Immer noch nichts was ich per RS232 übertragen möchte.
Wenn ich es noch recht in Erinnerung habe kann man mit den FTDI-Chips
3MBit/s erreichen. Trotz overhead sollten die 4MByte also in relativ
kurzer Zeit übertragen sein.
Wie kommst du eigentlich auf den Wert? Es fallen doch in 1 Sekunde
200kBits an, das sind doch nur 25kByte, und nicht 250kByte. Oder Irre
ich mich da?
Grüße,
Thomas
Hallo,
vielleicht habe ich mich (als Laie) falsch ausgedrückt:
Maximal gehen 200000 Bits pro Sekunde über die I/O Leitung.
>Gibt es denn noch weitere Informationen über das Signal? Ist es nur 1
Bit breit?
Versteh die Frage nicht ganz. Die Signale sind einfache Bitfolgen.
Hallo,
>im Grunde ist das etwas, was auch ein Logik-Analysator macht - in der>Regel sind jedoch hier die Aufnahmezeiten nicht so lang.
Ich denke das wäre anstatt eines Eigenbaus, die einfachste Lösung. Danke
Thomas schrieb:> Es fallen doch in 1 Sekunde> 200kBits an, das sind doch nur 25kByte, und nicht 250kByte. Oder Irre> ich mich da?
Völlig. Er will ja Events mit Timestamps speichern, da braucht er für
die Zeitangabe schon mehr als 24bit.
Gruss Reinhard
Reinhard Kern schrieb:> Völlig. Er will ja Events mit Timestamps speichern, da braucht er für> die Zeitangabe schon mehr als 24bit.
Und was sollen die vielen Timestamps? Wenn man das Signal mit 200kHz
gleichmäßig abtastet und in Bytes verpackt als 25kByte/s Datenstrom
überträgt, reicht es, vorher den Timestamp vom Startzeitpunkt zu
speichern. Die Timestamps für jeden einzelnen Signalwechsel lohnen sich
nur, wenn die Wechsel so selten sind, dass die Datenmenge für die
Timestamps kleiner als die für die "langweiligen" Daten ist, wobei die
natürlich durch RLE [1] kräftig verkleinert werden kann.
http://de.wikipedia.org/wiki/Rle
Wolfgang schrieb:> Und was sollen die vielen Timestamps?
Das hat der TO so gefragt, lies mal von vorne. Und dass je nach Signal
die eine oder andere Methode sinnvoller ist musst du nicht nochmal
erklären, das ist längst bekannt. Schliesslich ist die Datenmenge bei
fester Abtastrate auch nicht einfach zu vernachlässigen.
Gruss Reinhard