Terminalfunktionen - Wenn der AVR was zu sagen hat
Materialbedarf
Anz. | Bezeichnung | Datenblatt |
1 | Batterie/Spannungsquelle 9V | |
1 | Spannungsregler 7805 |
![]() |
1 | ATMega8 AVR-Prozessor |
![]() |
2 | Widerstand 220 Ohm | |
1 | Widerstand 10 kOhm | |
1 | Elektrolytkondensator 100 µF/16V | |
1 | Kondensator 100nF | |
2 | Standard-Leuchtdiode 3mm oder 5mm |
![]() ![]() |
Grundfunktion des Terminals
Für die Kommunikation mit einem Terminal besitzt der ATMega alles andere 'On Board'. Die beiden Pins 2 und 3 können für den Anschluss eines entsprechenden Terminals verwendet werden. Etwas komplizierter ist daher die Einrichtung eines Terminals, wozu heutzutage in der Regel der heimische PC verwendet wird. |
Bascom bietet hier aber auch eine eingebaute Lösung an, womit wir auch Terminalausgaben überwachen können.
In der Menüzeile findet man eine Schaltfläche für das Terminal. Klickt man dieses an, öffnet sich ein weiteres kleines Fenster mit einer leeren blauen Fläche.
Unten in der Statuszeile können wir erkennen, mit welchen Übertragungsdaten die RS232-Schnittstelle des PCs arbeitet. Sollte dieses nicht dort stehen, muss die Einstellung geändert werden. Hierfür findet man im Menu des Terminals unter 'Terminal' den Punkt 'Settings'. Rufen wir diesen auf, erscheint folgendes Fenster:
Diese Einstellungen sollten mit der Abbildung übereinstimmen. Ausnahme wäre hier die Einstellung 'COM Port', wenn man den AVR an einer anderen seriellen Schnittstelle als COM1 an den PC angeschlossen hat.
Damit ist nun das Terminal eingerichtet und wir können unser erstes Programm testen:
$regfile "m8def.dat" $crystal = 1000000 $baud = 1200 Print "Hallo. Hier bin ich" Stop |
Übersetzen und übertragen das Programm, können wir daraufhin den Text: 'Hallo. Hier bin ich' im Terminalfenster lesen. Wie man an dem Programm sehen kann, ist nicht sehr viel notwendig, damit es dem ATMega möglich ist, Terminalausgaben zu machen. Dies kommt unter anderem daher, dass die AVR-Controller die komplette Steuerung für die serielle Schnittstelle eingebaut haben. 2 Programmzeilen schauen wir uns aber dennoch an:
$baud = 1200 |
Hier sagen wir dem AVR, dass wir die eingebaute serielle Schnittstelle mit einer Geschwindigkeit von 1200 Baud verwenden wollen. Größere Werte können zwar eingestellt werden, sind aber mit unserer Standardkonfiguration nicht sinnvoll.
Print "Hallo. Hier bin ich" |
Mit dem Befehl 'Print' veranlassen wir eine Ausgabe auf das Terminal, wie es hier auch geschehen ist.
Der ATMega gehorcht
Es ist aber nicht nur möglich, Daten vom Prozessor zum PC zu schicken. Auch vom PC zum ATMega lassen sich Daten schicken und so sogar externe Anweisungen übertragen. Dies soll einmal das folgende Programm verdeutlichen:
$regfile "m8def.dat" $crystal = 1000000 $baud = 1200 Dim Ein As Byte Config Portb = Output Portb.0 = 0 : Portb.1 = 0 Do Input ">" , Ein If Ein = 1 Then Toggle Portb.0 If Ein = 2 Then Toggle Portb.1 Loop |
Neben den uns schon teilweise, bekannten Strukturen, finden wir hier eine besondere Anweisung:
Input ">" , Ein |
Soll der AVR diese Anweisung ausführen, wartet der Controller, bis er von der Schnittstelle eine Eingabe mit anschließendem [Return] bekommt. Die Eingabe wird nun noch überprüft und in der Variable 'Ein' gespeichert.
Mit den nächsten beiden Anweisungen:
If Ein = 1 Then Toggle
Portb.0 If Ein = 2 Then Toggle Portb.1 |
testen wir, ob die Variable den Wert 1 oder 2 enthält. Ist eine '1' eingegeben worden, wird die LED an Port B Pin 0 ein- bzw. ausgeschaltet. Also im Grunde umgeschaltet. Das Gleiche passiert mit der Leuchtdiode an Port B Pin 1 bei der Eingabe von 2.
Hier haben wir also nun ein einfaches System, welches aufgrund von Benutzereingaben reagiert und somit Controllergesteuert z.B. die Kaffeemaschine einschalten kann. Wird das Terminal z.B. im Schlafzimmer untergebracht und die Steuerung mit dem ATMega in der Küche. So kann man, noch bevor man das wohlige Bett verlässt, mit einem Druck auf '1' die Kaffeemaschine starten, 2 startet den Toaster usw.