|
|
Dieses Dokument ist verfübar auf: English Deutsch Francais Turkce |
von Bob Smith <bob(Q)linuxtoys.org> Über den Autor: Bob ist ein Elektronik-Bastler und Linuxprogrammierer. Sie können sein neuestes Projekt auf www.linuxappliancedesign.com finden und seine Homepage auf www.linuxtoys.org. Übersetzt ins Deutsche von: Hubert Kaißer (homepage) Inhalt: |
Ein 1-Bit-DatenoszilloskopZusammenfassung:
Das 1-Bit-Datenoszilloskop (Logic-analyser) erfaßt ein Bit an Daten mit einer Rate
von 46080 (oder 92160) Impulsen pro Sekunde und kodiert die Daten in
einen Strom von RS-232-Zeichen, die mit 57.6 (oder 115.2) Kilobaud
gelesen werden können. Das Datenoszilloskop ist ein ziemlich einfacher
Projektaufbau, der weniger als sechs billige ICs braucht.
|
Das Problem ist, daß wir die Eingabemuster zwischenspreichern müssen während wir
die Start- und Stopbits versenden. Die folgende Zeichnung zeigt das
Problem.
Während den Bits 0, 1, 2 und 3 wollen wir, daß die Daten um zwei Datentakte
verzögert werden, damit wir Q(B) vom Schieberegister des 4015 holen können.
Während den Bits 4, 5, 6 und 7 wollen wir die Daten verzögert um
einen Datentakt, damit wir Q(A) vom Schieberegister holen können. Während
den Stop- und Startbits (Bit 8 und 9) wollen wir eine Null und eine Eins,
damit wir Q(0) vom Bitzähler holen können.
Der Schaltplan wurde mit einem sehr netten Softwarepaket namens "EAGLE" gemacht, erhältlich bei Cadsoft. Die Schemadatei für obigen Schaltkreis ist erhältlich als 1bitla.sch.gz (hier klicken).
Um den Schaltkreis bei 115.2 kHz laufen zu lassen, benutzt man die Ausgänge des 4024 anstatt der Ausgänge von Q(2) und Q(5). Andere Baudraten sind möglich, wenn man andere Werte für den Kristall nimmt oder indem man den Kristalloszillator durch einen RC-Oszillator ersetzt.
Es wird sich wahrscheinlich herausstellen, daß der Kristalloszillator bei der gleichen Frequenz weniger Strom verbraucht als ein RC-Schaltkreis. Um Strom zu sparen, sollte man sichergehen, daß die unbenutzten Eingänge des 4049-Hex-Inverters auf Masse liegen.
Ein besserer Eingabepuffer könnte der zweite Operationsverstärker im TL082 sein. Man kann einen Widerstandsteiler benutzen, den man an einen Operationsverstärkereingang klemmt und den anderen Eingang für die Eingabedaten benutzen. Dadurch kann man den Schwellwert sehr genau kontrollieren und es ergibt eine hohe Impedanz gegenüber dem Meßobjekt.
RTS stellt Strom (Vcc) für den Rest der Schaltung bereit. Im Prototypen war Vcc ungefähr 7 Volt stark. Ihre Spannung Vcc kann anders sein, das hängt von der RS-232-Schnittstelle ab. Die Software, die das Datenoszilloskop nutzt, muß sowohl DTR und RTS hochsetzen.
Hier sind ein paar Fotos, um Ihnen eine mögliche Bauweise zu zeigen.
|
||
---|---|---|
-r | -c | -t |
03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 ff 03 e3 |
0, 0 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 0, 6 1, 5 0, 3 1, 10 |
0, 0.000000 1, 0.000065 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 0, 0.000130 1, 0.000109 0, 0.000065 1, 0.000217 |
Das einfache Programm 1bitla.c verarbeitet die seriellen Daten und kann die Daten in drei Formaten ausgeben. Das erste Format sind die Rohdaten, die ein Byte pro Zeile durch zwei Hex-Zeichen darstellen. Beachten Sie, daß das Programm die Daten invertiert und daß die Daten mit MSB zuerst verschickt werden. Rohdatenausgabe wird mit der Option -r aufgerufen. Das zweite Format ist ein Wert (0 oder 1) gefolgt von der Anzahl der 1-Bit-Muster, die der Wert hatte. Die Wert-/ Anzahlausgabe wird mit der Option -c aufgerufen. Die Auflösung bei 46080 kHz ist 21.7 Mikrosekunden. Die Wert-/Zeitausgabe wird mit der Option -t aufgerufen.
Das Programm wird mit
1bitla [option] serial_port
aufgerufen, wobei die Optionen -r, -c, oder -t sein können. Der
bei Weglassen der Option wird Wert/Anzahl (-c) genommen.
Der Aufbau des Programms ist recht einfach. Wir verarbeiten die Kommandozeilenoptionen, öffnen die serielle Schnittstelle und machen eine unendliche Schleife und zeigen die Bytes an. Da wir keine Verarbeitung im Hintergrund laufen haben, benutzen wir ein blockierendes read.
Vielleicht sind Sie zufrieden damit, nur die Bitmuster auf Konsole
auszugeben oder sie in eine Datei zur späteren Bearbeitung umzuleiten
oder Sie können auch eine echte "Logik-Analyse" mit den Daten durchführen,
indem Sie einen Automaten basteln der die Bitmuster verarbeitet.
Beispielautomaten können Dekoderbefehle haben, die ihnen von einer
Infrarotfernsteuerung geschickt werden oder können die Position
eines funkgesteuerten Takts mit modulierter Ausgabe dekodieren.
|
Der LinuxFocus Redaktion schreiben
© Bob Smith, FDL LinuxFocus.org |
Autoren und Übersetzer:
|
2003-07-01, generated by lfparser version 2.38