COM-Schnittstellen und Triggeroszilloskop
Elektronik-Labor Mikrocontroller PicoBasic TestLab
Mit dem TestLab sollten serielle Signale einer RS232-Schnittstele
untersucht werden. Weil hier Signalpegel von -10 V und +10 V verwendet
werden, musste zwischen dem Ausgang TXD und den analogen Eingang A0 ein
Schutzwiderstad von 10 k eingefügt werden. Zum Senden der Signale wurde
mein Teminal.exe eingesetzt. Die glücklicherweise an meinem PC noch
vorhandene RS232 belegt COM1. Es wurde die kleinste mögliche
Übertragungsgeschwindigkeit von 50 Baud eingestellt. Die Parameter sind
COM1:50,N,8,1, also kein Paritätsbit, acht Datenbits und ein Stoppbit.
TXD und RXD wurden verbunden, sodass alle gesendeten Zeichen auch
wieder empfangen werden. Gesendet wurde ein großes U. Im
Byte-Empfangsfenster sieht man, dass das U als ASCII-Zeichen 85
übertragen wird.
Im TestLab-Oszilloskop konnte die Übertragung aufgezeichnet werden.
Man sieht fünf Impulse mit jeweils 20 ms. Der erste ist das Stoppbit.
Es folgen die acht Datenbits 01010101 = 85 = U. Die Bits werden hier
invertiert übertragen, und das Bit 0 kommt zuerst. Die Aufnahme ist
nicht ganz einfach, weil man das Zeichen genau im richtigen Augenblick
absenden muss. Zur Vereinfachung wurde ein kleines Trigger-Oszilloskop
programmiert.
Rem Trigger+
0x0280 B = 128
L1:
0x3C00 A = AD0
0x2401 If A<B Goto L1:
0x0200 B = 0
0x03FF C = 255
L2:
0x3C00 A = AD0
0x3B00 [B+] = A
0x1901 Delay ms = 1
0x2505 C*Goto L2:
L3:
0x0200 B = 0
0x03F9 C = 249
L4:
0x3A00 A = [B+]
0x4200 Print A
0x1901 Delay ms = 1
0x250B C*Goto L4:
L5:
0x1A01 Delay s = 1
0x0280 B = 128
0x3C00 A = AD0
0x230F If A>B Goto L5:
0x2001 Goto L1:
Zum Test wurde der Eingang berührt und damit ein 50-Hz-Signal
eingekoppelt. Man sieht deutlich, dass die Messung bei einer positiven
Flanke knapp über der Mitte der y-Achse beginnt. Das seriell gesendete U sieht nun so
aus, und man erkennt, dass jedes Bit bei 50 Baud genau die Zeit braucht
wie eine volle 50-Hz-Schwingung.
So sieht ein Byte 0 aus, die Bits werden offensichtlich invertiert:
Ein Byte 255 sendet entsprechend nur noch das Startbit:
Nun kann man bequem alle Daten und Parameter der seriellen Übertragung
austesten. Bis 300 Baud lassen sich die Zeichen noch gut abbilden.
Die echte RS232 wird nicht mehr oft verwendet. Stattdessen kommen meist
USB/Seriell-Wandler zum Einsatz, die direkt an einen Mikrocontroller
angeschlossen werden. In diesem Fall werden die Bits nicht invertiert.
Der Ruhezustand ist dann high und liegt bei + 5 V oder +3,3 V. Für die
Darstellung wird deshalb eine Triggerung auf die negative Flanke
gebraucht.
Rem Trigger-
0x0280 B = 128
L1:
0x3C00 A = AD0
0x2301 If A>B Goto L1:
0x0200 B = 0
0x03FF C = 255
L2:
0x3C00 A = AD0
0x3B00 [B+] = A
0x1901 Delay ms = 1
0x2505 C*Goto L2:
L3:
0x0200 B = 0
0x03F9 C = 249
L4:
0x3A00 A = [B+]
0x4200 Print A
0x1901 Delay ms = 1
0x250B C*Goto L4:
L5:
0x1A01 Delay s = 1
0x0280 B = 128
0x3C00 A = AD0
0x240F If A<B Goto L5:
0x2001 Goto L1:
Hier sieht man ein mit einem FT232 bei 300 Baud empfangenes kleines u.
Der Ruhepegel liegt nahe 5 V, und das Startbit ist ein Nullpegel. Der
verwendete USB-Chip kommt nicht herunter bis 50 Baud. Die Grenze kann
von Chip zu Chip unterschiedlich sein.
Elektronik-Labor Mikrocontroller PicoBasic TestLab