Übung 2, Senden mit dem UART

Wir wollen nun ein Programm entwickeln, welches einen Zähler permanent inkrementiert und den jeweiligen Zählerstand immer auf die serielle Schnittstelle ausgibt.

Benötigte Bauteile

Für den Aufbau der Testschaltung benötigen wir nebst dem Experimentierboard mit eingesetztem AVR Controller folgende Bauteile:

Die Schaltung

Da wir uns den Einsatz eines Pegelwandlers mit Inverters (MAX232 o.ä.) sparen wollen müssen wir das Signal des UART Ausgangspins invertieren. Dazu dient der Transistor, dessen Basis über den 10kW Vorwiderstand angesteuert wird. Am Kollektor greifen wir das invertierte Signal ab und leiten es zum Eingang der seriellen Schnittstelle am PC. Die meisten (eigentlich alle) PC's kommen mit 0 und 5V auf der RS232-Schnittstelle problemlos zurecht. Wer es ganz genau haben will kann aber natürlich auch einen integrierten Baustein wie den MAX232 einsetzen.

Die Drahtbrücken in der Sub-D Buchse dienen der Simulation der Hardware-Handshake Signale.

Aufgabe

Das zu entwickelnde Programm soll eine Variable einfach immer um den Wert 1 hochzählen und dann den aktuellen Zählerwert als Ganzzahl mit und ohne Vorzeichen, als Hexzahl und als Oktale Zahl in einer Zeile ausgeben.
Die Bildschirmausgabe auf dem Terminalprogramm am PC könnte dann z.B. so aussehen.

Dez:     1 Uns:    1 Hex:   1 Oct:     1
Dez:     2 Uns:    2 Hex:   2 Oct:     2
Dez:     3 Uns:    3 Hex:   3 Oct:     3
Dez:     4 Uns:    4 Hex:   4 Oct:     4
...
...
Dez:-25536 Uns:40000 Hex:9c40 Oct:116100
Dez:-25535 Uns:40001 Hex:9c41 Oct:116101
usw.

Die Baudrate sollte auf 9600 Baud eingestellt werden. Die Einstellungen am Terminalprogramm sind 8 Datenbits, 1 Stopbit, Keine Parität.

Hilfestellung

Für die Ausgabe von formatierten Zahlenwerten habe ich euch eine kleine Funktion UartPrintF geschrieben, deren Code und Headerdatei hier zu finden sind.

So, und jetzt bitte schön an die Arbeit.

Wenn es gar nicht klappen sollte, dann habt ihr hier den C-Quellcode und das Makefile meiner Musterlösung.