30.12.2014 Aufrufe

Aufgaben - G. Heinrichs´ Homepage

Aufgaben - G. Heinrichs´ Homepage

Aufgaben - G. Heinrichs´ Homepage

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!