Forum: Mikrocontroller und Digitale Elektronik TTL-Pegel loggen


von Rüdiger (Gast)


Lesenswert?

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.

von Peter K. (peterka2000)


Lesenswert?

Laut meinen Rechnungen:
Wenn du einen 8MHz Quartz hast, führt er einfache befehle 8000000 mal in 
der Sekunde aus.

von Thomas E. (thomase)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

>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

von Rüdiger (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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.

von Thomas (Gast)


Lesenswert?

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

von Rüdiger (Gast)


Lesenswert?

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.

von Rüdiger (Gast)


Lesenswert?

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

von Reinhard Kern (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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

von Reinhard Kern (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.