Aufgaben - G. Heinrichs´ Homepage
Aufgaben - G. Heinrichs´ Homepage
Aufgaben - G. Heinrichs´ Homepage
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Das Attiny-Projekt <strong>Aufgaben</strong> zur zweiten MINT-KT-Veranstaltung 1<br />
<strong>Aufgaben</strong><br />
A<br />
Bearbeiten Sie zwei der folgenden drei <strong>Aufgaben</strong>:<br />
1. Addiersklave<br />
Der Attiny2313 soll zwei Zahlen (zwischen 0 und 255) vom Terminalprogramm empfangen<br />
und deren Summe wieder an das Terminalprogramm senden.<br />
Wenn Sie sich nicht ganz sicher fühlen, können Sie folgendermaßen vorgehen:<br />
1.1 Öffnen Sie BASCOM, laden Sie die Vorlage-Datei und speichern Sie sie in einem neuen<br />
Verzeichnis unter einem neuen Namen ab. Denken Sie auch daran, in einem Kommentar<br />
am Anfang des Programms eine kurze Beschreibung des Programms zu geben.<br />
1.2 Schreiben Sie nun das Programm; es muss folgendes leisten:<br />
<br />
<br />
<br />
<br />
<br />
<br />
COM-Schnittstelle initialisieren und auf 9600 baud einstellen<br />
Drei Variablen deklarieren<br />
Ersten Summanden von der seriellen Schnittstelle empfangen und einer Variablen<br />
zuordnen<br />
Zweiten Summanden...<br />
Summanden addieren und der dritten Variablen zuordnen<br />
Inhalt der dritten Variablen über die serielle Schnittstelle ausgeben<br />
1.3 Programm auf PC sichern, kompilieren und auf den Attiny übertragen (ggf. Kurzanleitung<br />
zu Rate ziehen!)<br />
1.4 Zuerst Uploader-Programm öff<br />
nen (falls nicht noch von der<br />
letzten Übertragung geöffnet)<br />
und die Lasche “Terminal” anklicken.<br />
Dann “Zahl” bei “Empfangene<br />
Daten anzeigen als...”<br />
aktivieren und Empfangsschaltfläche<br />
betätigen. Ggf. erscheint<br />
schon eine “empfangene” Zahl<br />
im Eingangsfeld; dann war der<br />
Empfangspuffer des Terminals<br />
nicht leer. Sie können sie bei<br />
Bedarf löschen.<br />
Abbildung 1<br />
Mikrocontroller-Fortbildungsveranstaltung 30.11.2010 - Copyright by E. Eube N G. Heinrichs N U. Ihlefeldt
Das Attiny-Projekt <strong>Aufgaben</strong> zur zweiten MINT-KT-Veranstaltung 2<br />
1.5 Geben Sie nun Ihren ersten Summanden, zum Beispiel die Zahl 9 ein. Benutzen Sie dabei<br />
unbedingt die zweite Eingabezeile. Senden Sie diese Zahl an den Attiny. Verfahren Sie<br />
ebenso mir dem zweiten Summanden. Unmittelbar nach dem Abschicken des zweiten<br />
Summanden müssten Sie das Ergebnis erhalten.<br />
Sollten Sie bei Ihrem Programm keine Schleife benutzt haben, müssen Sie für jede<br />
Rechenaufgabe den Attiny neu einschalten.<br />
1.6 Für Freaks: Ergänzen Sie Ihren Rechensklaven so, dass er addieren und subtrahieren<br />
kann. Das Rechenzeichen soll nach den beiden Operanden als Zeichen gesendet werden.<br />
2. Zahlen vom Terminal am Port B ausgeben<br />
Zahlen, welche vom Terminal gesendet werden (zweite Eingabezeile benutzen!), sollen<br />
durch LEDs am Port B binär angezeigt werden.<br />
Diese Aufgabe ist etwas leichter als die Aufgabe 1; dafür gibt es aber keine weiteren<br />
Hinweise. Ggf. können die Erläuterungen bei Aufg. 1 aber hilfreich sein!<br />
3. Cäsarkodierung<br />
Gibt man in der ersten Zeile des Terminals einen Text ein und betätigt<br />
anschließend die daneben liegende Sende-Schaltfläche, so wird dieser<br />
Text über die COM-Schnittstelle an die Attiny-Platine geschickt. Dazu<br />
ersetzt das Terminalprogramm der Reihe nach jeden einzelnen Buchstaben<br />
durch seinen zugehörigen ASCII-Code; dieser Code wird dann<br />
an die Attiny-Platine geschickt und kann dort mit inputbin empfangen<br />
werden. Umgekehrt kann man das Terminal auch jede empfangene Zahl<br />
als ASCII-Code deuten und durch das entsprechendes Zeichen anzeigen<br />
lassen. Dazu muss man vor dem Betätigen der Empfang-starten-Schaltfläche<br />
die Option “Text” aktivieren.<br />
3.1 Schreiben Sie ein Programm mit folgender Schleife im Hauptprogrammteil:<br />
Do<br />
Inputbin Asciicode<br />
Asciicode = Asciicode + 1<br />
Printbin Asciicode<br />
Loop<br />
Ergänzen Sie das Programm, compilieren Sie es und laden Sie es auf<br />
Abbildung 2<br />
Mikrocontroller-Fortbildungsveranstaltung 30.11.2010 - Copyright by E. Eube N G. Heinrichs N U. Ihlefeldt
Das Attiny-Projekt <strong>Aufgaben</strong> zur zweiten MINT-KT-Veranstaltung 3<br />
den Attiny. Klicken Sie dann im Uploaderprogramm auf die Terminallasche. Geben Sie nun den<br />
Text “HALLO” in der oberen Zeile ein. Aktivieren Sie die Option “Text”. Betätigen Sie die<br />
Empfang-Starten-Schaltfläche und schicken den Text ab. Erklären Sie die empfangene Zeichenkette.<br />
3.2 Ändern Sie das Programm so ab, dass eine Verschiebung um 3 Buchstaben erfolgt.<br />
3.3 Ergänzen Sie Ihr Programm derart, dass ein Leerzeichen nicht(!) übertragen wird.<br />
Warum ist das sinnvoll<br />
Tipp: Benutzen Sie eine if ... then ... - Struktur.<br />
3.4 Für Freaks: Ändern Sie Ihr Programm so ab, dass die Cäsarkodierung zyklisch erfolgt;<br />
Sie können dies z. B. mit einer Verzweigungsstruktur erreichen.<br />
B<br />
Bearbeiten Sie zwei der folgenden drei <strong>Aufgaben</strong>:<br />
1. Temperaturen messen<br />
1.1 Setzen Sie zuerst die beiden Jumper für den I2C-Betrieb und schließen Sie dann den<br />
Temperatursensor an. Schreiben Sie ein Programm, welches im Sekundentakt die Temperatur<br />
ermittelt und über PORTB ausgibt. Testen Sie das Programm; erwärmen Sie dabei<br />
den Sensor mit dem Finger.<br />
1.2 Falls noch nicht geschehen: Verlagern Sie alle Befehle zur Temperaturerfassung in ein<br />
Unterprogramm “messen”.<br />
1.3 Ändern Sie das Programm nun so ab, dass die Temperaturwerte über die COM-Schnittstelle<br />
an das Terminal geschickt werden.<br />
2. Hitzefrei-Alarm<br />
2.1 Der Attiny soll einen optischen Alarm (Dauerlicht) auslösen, wenn die Raumtemperatur<br />
25 °C überschreitet. Der Alarm soll erst wieder ausgehen, wenn die Temperatur entsprechend<br />
abgesunken ist.<br />
Hinweise: Denken Sie daran, die Jumper für den I2C-Bus zu setzen. Das Datenrichtungsbits<br />
für die I2C-Pins PortB.5 und PortB.7 werden automatisch von BASCOM gesetzt.<br />
2.2 Neben dem optischen soll auch ein kurzer akustischer Alarm ausgelöst werden. Schließen<br />
Sie dazu an PortB.1 den Beeper an und benutzen Sie das folgende Unterprogramm:<br />
Mikrocontroller-Fortbildungsveranstaltung 30.11.2010 - Copyright by E. Eube N G. Heinrichs N U. Ihlefeldt
Das Attiny-Projekt <strong>Aufgaben</strong> zur zweiten MINT-KT-Veranstaltung 4<br />
sub alarm(x as byte, y as byte)<br />
for i = 1 to x<br />
Portb.1 = 1<br />
Waitms y<br />
Portb.1 = 0<br />
Waitms y<br />
Next i<br />
End sub<br />
Erklären Sie auch die Funktionsweise dieses Unterprogramms. Wie kann man die Tonhöhe,<br />
wie die Länge des Tons beeinflussen<br />
3. Reaktionstester (nur für Freaks!)<br />
Der Reaktionstester soll folgendermaßen funktionieren:<br />
<br />
<br />
<br />
<br />
<br />
Zunächst gehen alle LEDs an PortB an.<br />
Dann wartet der Mikrokontroller ein Zeit zwischen 2 und 5 Sekunden.<br />
Nun gehen die LEDs aus; der Mikrokontroller beginnt mit der Zeitmessung und<br />
der Probant muss möglichst rasch die Taste Ta0 betätigen.<br />
Wird Ta0 betätigt, hört die Zeitmessung auf, soll die Zeit (z. B. in 10 ms-Einheiten)<br />
an PortB angezeigt werden.<br />
Nach 5 Sekunden erfolgt ein kurzes Beep-Signal und der Messvorgang beginnt<br />
von Neuem.<br />
Hinweise:<br />
1. Die Zeitmessung kann mithilfe der im Attiny eingebauten Timer-Komponente<br />
erfolgen. Wie das geht, erfahren Sie in der nächsten Veranstaltung. Hier kann<br />
man sich für die Zeitmessung folgendermaßen behelfen: Wenn die Zeitmessung<br />
beginnt, dann wird eine Do - Loop until - Schleife gestartet. In der Schleife wird<br />
ein Zähler jeweils um 1 erhöht und 10 ms gewartet. Die Schleife wird über einen<br />
Interrupt abgebrochen.<br />
2. Eine Zufallszahl kann man mit der rnd-Prozedur erzeugen. Weitere Einzelheiten<br />
zu dieser Prozedur können Sie in der Hilfe von BASCOM erfahren.<br />
3. Die Reihe von Pseudozufallszahlen beginnt nach dem Einschalten immer mit<br />
demselben Wert. Wundern Sie sich also nicht, wenn die Folge der Zufallszeiten<br />
gleich bleibt. Es gibt Möglichkeiten, diesen Mangel zu beseitigen.<br />
Mikrocontroller-Fortbildungsveranstaltung 30.11.2010 - Copyright by E. Eube N G. Heinrichs N U. Ihlefeldt