Wir wollen nun ein Programm entwickeln, welches einen Zähler permanent inkrementiert und den jeweiligen Zählerstand immer auf die serielle Schnittstelle ausgibt.
Für den Aufbau der Testschaltung benötigen wir nebst dem Experimentierboard mit eingesetztem AVR Controller folgende Bauteile:
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.
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.
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.
|