| Bild 1: XR232- im Metallgehäuse |
![]() |
|
Für jedes einzelne Zufallsbyte, das gelesen werden soll, sendet der UART über die Leitung TxD ein bestimmtes serielles Zeichen, nämlich das "U" (ASCII-Code, 55hex). Dieses Zeichen entspricht in der Übertragungsart 8-N-1 der binären Bitfolge 0-10101010-1. Hier bekommt man also mit jedem Taktschritt einen Pegelwechsel, einschließlich der Übergänge zu den Start- und Stoppbits. Damit steht dem Zufallsgenerator eine genaue "Takt-Schablone" zur Verfügung, mit der er nun seinerseits jedes beliebige serielle (Zufalls-)Zeichen generieren kann!Netter Nebeneffekt: Der Zufallsgenerator antwortet automatisch in derselben Geschwindigkeit, mit der der UART im PC seine Takt-Zeichen gesendet hat. Bis zu einer hardwarebedingten Maximalgeschwindigkeit von etwa 57600 Baud kann man den XR232 in jeder gültigen Baudrate ansprechen, ohne dass am Gerät irgendetwas neu konfiguriert werden müsste. (Welche Controllerlösung wäre so flexibel gewesen?)
Es genügt allerdings nicht, die Zufallsbits einfach nur mit den zurückgewonnenen Taktimpulsen abzutasten und diesen Bitstrom auf RxD zu geben. Dort, wo die serielle Übertragung Start- und Stoppbits verlangt, darf man selbstverständlich nichts dem Zufall überlassen, anderenfalls würde der UART die meisten ankommenden "Zeichen" als ungültig verwerfen. Also müssen wir für die Übertragungsart 8-N-1 auch noch die Taktschritte mitzählen und jeden 1. und 10. Taktschritt feste Startbits und Stoppbits in den laufenden Datenstrom einprägen. Das lässt sich mit einem Dezimalzähler und ein paar logischen Verknüpfungen bewerkstelligen - und fertig ist das normgerechte serielle Datensignal - siehe Timingdiagramm!
Die über RxD zurückgelieferten seriellen Zeichen nimmt der UART dankbar entgegen und legt sie in seinem Empfangspuffer ab. Dort kann die steuernde Software diese Zufallszeichen nun in aller Ruhe auslesen und weiterverarbeiten.

![]() |
![]() |
| Bild 3a: Gut: Unverdächtiges Pixelmuster vom XR232 @ 38400 bps (Pixeldarstellung mit dem XR232-Tool; Ausschnitt 1/4 VGA-Schirm). |
Bild 3b: Weniger gut: Sichtbare EM-Beeinflussung durch 1800MHz-Impulse aus einem GSM-Telefon (in ca. 15 cm Abstand zur nackten Rauschquelle) |

| Stückliste XR232 V2.1 --------------------- Kondensatoren C1-C4 47nF C5, C6 Elko 1000µF / 25V C7, C8 100nF keramisch C9, C10 1nF keramisch C11,C12 100µF/25V Widerstände (alle 1/4W 5%) R1 330 R2-R7 2k2 R8,R9 4k7 R10,R11 220 R12 560 R13,R14 330 R15 4k7 R16 1k0 Halbleiter VR1 7805 IC1 74LS00 IC2 74LS90 IC3 74LS74, 74HC74, 74HCT74 PC1-PC4 CNY17-II PC5 PC817 / LTV817 D1-D4 1N400x D5-D10 BAT42 LED1 Farbe wurscht, "normal current" |
Sonstiges D-SUB-Buchse oder entsprechendes Anschlusskabel (Brücken im Stecker, siehe Stromlaufplan) 6 x 1 mm-Lötstifte für Anschlussleisten X1/X2 Platine 53 x 100 mm nach Layout Gehäuse z.B. TEKO-AL4, BOPLA-E430 Betriebsspannungsbuchse (für Standard-9VAC-Steckernetzteile meist Hohlstiftbuchse Stift 2,5mm) LED-Fassung Rauschquelle Version 1.6 (4/2006) Standardversion, gut erprobt XR1 4k7 (5%) XR2 47k XR3 100k XC1,XC2 100nF (Folie, MKS) XVT1,XVT2 BC547B/C XZD 9V1 / 0.25W-Z-Diode Rauschquelle Version 2.0 (12/2008) Variante für breiteres Spektrum XR1 2k2 (5%) XR2 22k XR3 100k XC1,XC2 10nF (Keramik) XVT1,XVT2 BC547C XZD 9V1 / 0.25 W Z-Diode Abschirmbleche 20x33 mm und 20x20 mm sowie 4 x 1 mm Lötstifte |

| Anschlussvariante 1 Leitung "c" ist eine Anzapfung der DTR-DSR-Brücke(Anschlüsse 4+6). DTR geht zu Beginn einer traditionellen seriellen Kommunikation auf positiven Spannungspegel und verbleibt auch dort (weil der Rechner aufgrund der Brücke davon ausgeht, dass das Gerät permanent empfangsbereit ist). Erst nach dem Schließen der Schnittstelle geht DTR wieder auf negativen Spannungspegel zurück. Auf diese Weise erhält der XR232 eine stabile positive Hilfsspannung für das Opto-Interface (also auch dann, wenn TxD gerade einmal nicht sendet) und der Bitzähler im XR232 wird automatisch initialisiert, sobald der Port geöffnet wird (siehe Erläuterungen zur Funktion der Schaltung und zum Protokoll). Diese Variante funktioniert äußerst zuverlässig in einer reinen DOS-Umgebung und sehr zuverlässig auch in Terminalprogrammen und Programmierumgebungen, bei denen die RS232-Kommunikation einigermaßen konsequent implementiert worden ist. Beim Umweg über Windows-API oder Standard-IO unter Linux kann es aber anscheinend vorkommen, dass DTR nicht sicher zurückgesetzt wird, obwohl das berechtigte Programm die Schnittstelle ordnungsgemäß geschlossen hat. Das Phänomen hängt offensichtlich von mehreren Faktoren ab (Betriebssystem, Treiber, "Vorgeschichte" der Schnittstelle, Interrupt-Zuteilung?). In einigen Fällen funktioniert dann die unten angegebene Anschussvariante 2 besser. |
![]() |
| Anschlussvariante 2 Hier geht die Leitung "c" an die RTS-CTS-Brücke (Anschlüsse 7+8). Auch dieses Leitungspaar liefert die positive Hilfsspannung, sobald die Schnittstelle geöffnet wird. Da RTS/CTS direkt gebrückt ist, wird auch hier der Pegel an RTS normalerweise für die gesamte Dauer der Übertragung auf +12V bleiben, da es keinen Grund gibt, den Datenfluss zeitweilig zu unterbrechen. Eventuell muss man sich als Programmierer explizit darum kümmern, dass auch tatsächlich ein RTS/CTS-Handshake verwendet werden soll. Oft ist die Standardeinstellung, dass beides, also sowohl DTR/DSR wie auch RTS/CTS Handshake benutzt wird. Das macht die Entscheidung nicht gerade einfacher... Gerade in den Fällen, wo eine Schnittstelle merkwürdigerweise kein ordnungsgemäßes DTR-DSR-Signalspiel mitmachen wollte, ging es dann doch mit der RTS-CTS-Variante. In den eher seltenen Fällen, wo auch das nicht funktionierte, war keine eindeutige Ursache erkennbar (Betriebssystem, Treiber, "Vorgeschichte" der Schnittstelle, Interrupt-Zuteilung?), hier wären weitere und systematische Tests erforderlich. |
![]() |
- XR232 anschließen
- Terminalprogramm, z.B. HyperTerminal mit folgenden Einstellungen starten:
- Direktverbindung über COMx
- Bits pro Sekunde: 9600
- Datenbits: 8
- Parität: Keine
- Stoppbits 1 (1.5 und 2 gehen auch!)
- Protokoll: Hardware
- Manuell Taktzeichen senden (Shift-U)
- Das sollte nach zahlreichen Tastendrücken etwa so aussehen:
- Auf jeden Tastendruck muss genau ein Zufallszeichen zurückkommen (wobei HT viele Zeichen nicht darstellen kann und leider auch keinen vernünftigen Hex-Modus anbietet.)
Wenn man beim Testen bemerkt, dass nicht auf jeden Tastendruck ein Zeichen zurückkommt -
"Anruf - Trennen" und wieder "Anruf" - Dadurch wird der Pegel auf der DTR-Leitung einmal runter und wieder hochgesetzt, der XR232 sollte dann sofort wieder bereit sein.