Ein einfacher Sender und Empfänger
Verbindung der Calliope mini
Wir gehen hier von der Situation aus, bei der zwei Calliope mini miteinander verbunden sind.
Das Ziel ist es, Sender und Empfänger zu implementieren, mit denen Buchstaben zwischen den beiden Calliope mini bitweise übertragen werden können.
Codierung und Decodierung
Auf der Bitübertragungsschicht spielt es keine Rolle welche Informationen übertragen werden. Wichtig ist nur, dass die geschickten Bytes richtig beim Empfänger ankommen. Wie dieser die Bytes zu interpretieren hat, ist auf dieser Schicht nicht definiert. Um bei unseren Experimenten dennoch nicht nur 0-1-Folgen anzuzeigen, können wir die übertragenen Daten als Text interpretieren, was im Prinzip aber willkürlich festgelegt ist. In einer Code-Tabelle wird jedem Zeichen (Ziffer, Buchstabe oder Sonderzeichen) ein bestimmtes Bit-Muster (binär) bzw. eine bestimmte Ordnungsnummer (dezimal) zugeordnet. Im Folgenden benutzen wir die ASCII-Tabelle, in der beispielsweise der Buchstabe A durch das Bitmuster 01000001 (dezimal: 65) und der Buchstabe P durch das Bitmuster 01010000 (dezimal: 80) dargestellt wird.
Übertragen von Bytes
Acht Bits fasst man meistens zu Paketen von einem Byte zusammen. Auch wir wollen das hier so machen, sodass die kleinsten Datenpakete, die übertragen werden sollen, aus je einem Byte bestehen. Aus den vorherigen Abschnitten weißt Du, dass man das zu verschickende Paket mit einem Startbit markieren muss. Ergänzt man zusätzlich noch ein Stoppbit, hat das zu sendende Datenpaket folgende Form:
Der Empfänger tastet die Leitung dann nach folgendem Schema ab:Aufgabe 1 - Bitübertragungsprotokoll
Beschreibe das Protokoll zur Übertragung eines Byte. Erkläre die Notwendigkeit des Start- und des Stoppbits. (Tipp zur Notwendigkeit des Stoppbits: Was würde auf Empfängerseite passieren, wenn man das Stoppbit wegließe und das nächste Byte sofort geschickt würde? Bedenke, dass es in echten Systemen immer zu kleinen Verschiebungen kommen kann.)
Der Sender (Transmitter)
Ein Sender muss also nach dem oben definierten Protokoll ein Startbit, acht Datenbits und ein Stoppbit senden. Dies wird für jedes zu sendende Byte wiederholt.
Aufgabe 2 - Sender implementieren
Sende ein “A“. Verändere hierzu vorerst nur deinen Sender von Seite ...1.2 oder diesen Sender:
- 1. Schritt: Speichere das Bitmuster zu "A" in einer Variablen ab.
- 2. Schritt: Sende das Startbit.
- 3. Schritt: Sende bitweise mit jeweils anschließender Pause (= Bitzeit). Wähle die Bitzeit nicht zu klein! (Vorschlag: 50 ms)
- 4. Schritt: Sende das Stoppbit.
Der Empfänger (Receiver)
Der Empfänger tastet die Leitung in relativ kurzen Intervallen ab (Polling = maximale Abtastung). Um Anfang und Ende eines Bytes zu erkennen, befindet sich der Empfänger jeweils in einem der beiden folgenden Zustände.
Aufgabe 3 - Empfänger implementieren
Erstelle nun ein Empfänger-Programm. Speichere darin das empfangene Bitmuster (bis nach dem Anzeigen, um danach neue Bitmuster zu empfangen) in einer Variablen und lasse diese Zeichenfolge anschließend anzeigen. Lasse die LED während des Empfangsvorgangs rot leuchten, um das Empfangen zu erkennen.
Wenn Du noch Hilfe benötigst, schaue im Fachkonzept – ein Bitübertragungsprotokoll nach.
Quellen
- [1]: Calliope mini verbunden - Urheber: JK - Lizenz: inf-schule.de
- [2]: Bitmuster - Urheber: MK DJ KB - Lizenz: inf-schule
- [3]: Bitmuster_Abtasten - Urheber: MK DJ KB - Lizenz: inf-schule
- [4]: Empfänger - Urheber: MK DJ KB - Lizenz: inf-schule