Diese Seite enthält ein Java-Script zur Generierung eines oder mehrerer softwarebasierender serieller Ein- und Ausgänge, die auf beliebige Weise kombiniert werden können. Zur Ausführung dieses Programmes ist die Aktivierung von Java-Script unbedingt erforderlich! | |
"Wozu eine serielle Schnittstelle per Software realisieren? Mein Lieblingscontroller hat doch schon eine?" - Und genau das ist der Knackpunkt: _eine_. Und diese eine belegt zudem einen Timer und ist nicht sonderlich gut auf Baudraten einzustellen, die kein Teiler der Quarzfrequenz bzw. Maschinenzyklen sind. Möchte man mehrere Geräte an diese Schnittstelle anschließen, muss man mit zusätzlicher Hardware wie einem Bustreiber oder ähnlichem die Schnittstellenpins umschalten. Sollen diese Geräte dann auch noch mit unterschiedlicher Baudrate bedient werden, wird das Programm eine kleine Herausforderung. Zu allem Übel verliert man mit der Hardwareschnittstelle gleich zwei I/O-Pins, wenn einer gereicht hätte, weil die serielle Kommunikation ohnehin nicht gleichzeitig sendet und empfängt. |
Diesen Nachteilen kann ein geeigneter Softwaretreiber abhelfen. Er ist in der
Lage, Baudraten auf den Maschinenzyklus genau einzuhalten, es ist kein Problem,
beliebig viele serielle Ein- oder Ausgänge mit unterschiedlichen
Baudraten zu betreiben, und es lässt sich jeder beliebige Pin dafür verwenden.
Als kleinen Bonus kann man die Schnittstellensoftware auch so einsetzen, dass
sie mit invertierten Signalen zurechtkommt. Dadurch läßt sich eine lesende
Verbindung zur mit +/- 12V arbeitenden, gegenüber TTL-Pegeln invertierten
PC-Schnittstelle mit nur einem Widerstand und einer Zener-Diode aufbauen. |
Zur Ganggenauigkeit der Schnittstelle: diese hängt allein von der
verwendeten Warteschleife ab. Daher ist unbedingt das Verhältnis der ganzzahligen
Maschinenzyklen zu den nicht realisierbaren Nachkommastellen der Warteschleifen zu beachten.
Hat die Warteschleife eine Länge von 100,5 Maschinenzyklen, spielt die 0,5
Abweichung vom Ideal keine Rolle, bei einer Länge von 10,5 dagegen ist die Abweichung
beträchtlich!
Bei der Kopplung von mehreren Microcontrollern spielt der Fehler der Schnittstelle natürlich
keine Rolle, wenn beide die selbe Abweichung vom Soll besitzen. Zur Funktion 'Stopbit abwarten': damit wird gewartet, bis dass Stopbit erfolgreich versandt wurde. Benötigt wird dies nur, wenn mehrere Bytes fortlaufend gesendet werden sollen. Hat der uC zwischenzeitlich genug zu rechnen (mindestens 2x die Angabe der Maschinenzyklen der Warteschleife), so erledigt sich diese benötigte Verzögerung von selbst. |