Praktikum Mikrocontrollertechnik SS 2015 Versuch 1

Ähnliche Dokumente
Praktikum Mikrocontrollertechnik SS 2014 Versuch 1

Praktikum Mikrocontrollertechnik SS 2014 Versuch 2

Aufgaben zur Attiny-Platine

Ampelsteuerung Merkblatt 2 Wie wird der Arduino programmiert?

Einführung in die Mikrocontrollerprogrammierung

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

Hard- und Software-Engineering SS 2006 Praktikumsaufgaben

Praktikum Automatisierungstechnik AP1

BOOTLOADER für AVR-Entwicklungsmodule

Mikrocontroller: Einführung

Rechnerarchitektur, Einführung in die Laborübungen

Mikrocontroller: Einführung

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Einführung in Automation Studio

myavr Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg für myavr Board MK3

Rechnerarchitektur, Einführung in die Laborübungen

Eingaben. Themen heute. Taster. Eingaben Zuweisungen Zeitmessung. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Installation & Usage. Version 1.0. estickflashtool

Wichtige Befehle bei der Programmierung von. FISCHER-Technik

Bedienungsanleitung Beamersteuerung

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

C++ mit dem Arduino (Uno und Mega2560)

Animationen anzeigen und erstellen

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Installieren von Bluetooth-Geräten in custo diagnostic 3.8

M I K R O P R O Z E SS O R P R A K T I K U M SS2018. Termin1. C-Programmierung für eingebettete Systeme

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

< UNTERRICHTSMATERIAL /> Calliope mini. Schere-Stein-Papier

Klassendiagramm der UML mit SiSy-AVR Schnelleinstieg am Beispiel myethernet-projekt

Der CodeBug. A) Erste Schritte. 1) Einleitung

Lösung Versuch Nr. 4

Druckdienst für PDF-Druck einrichten

Selbstgebauter, kompakter, Strom sparender, Mehrkanal- Datenlogger mit PICs

D i g i t a l l a b o r

Programmentwurf Prof. Metzler

Snake Projekt. Jan Scholz. 16. März 2013

< UNTERRICHTSMATERIAL /> Calliope mini. Maulwurfspiel

Mikrocontrollertechnik. F5 Erstes Programm. AVR Studio 4

Programmieren des NXT-Roboters mit LabView 2010

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Bedienungsanleitung. Abb. 1 Abb. 2

UART-Kommunikation mit dem Atmel AVR

Erstellen und Verwalten von Karteikarten für imcards am iphone / ipod touch

Projekt 3 Variablen und Operatoren

C++ mit dem Arduino (Uno und Mega2560)

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Microsoft Access Arbeiten mit Tabellen. Anja Aue

Bedienung Escort Temperaturlogger

Linux-Einführung Übung

Dokumentation IBIS Master Version 1.5.6

Schnelleinstieg. Copyright Automation Dr. Nix GmbH und Co. KG

Bedienungsanleitung. Name:Programmierbarer LED Controller Model:TC420

Desktop Schultz Informatik 1

Sie können das Datum im Feld < Option > abändern. Klicken Sie dazu einfach in das Feld, Sie können dann ein Datum eingeben.

Erste Schritte der Programmierung in C

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Einrichten einer Toolchain zur Programmierung des Nibo 2 Roboters mit Atmel Studio 6

DS Teach-Programm Bedienungsanleitung. DST Version 2000/06 DS Keyboard Technic GmbH

Starten Sie die Arduino IDE und geben Sie den folgenden Programmcode ein:

Codegenerierung für C167

Anleitung DGTV Fernbedienung

Programmierübungen in Assembler

Mitarbeiter-Alarm Version 4.3.1

CPLD-Lehrgerät 12 Kurzbeschreibung Stand:

Trainingsmanagement Gutschein Management. Beschreibung

Richtig einsteigen: Access 2007 VBA-Programmierung

32.4 Anpassen von Menüs und Symbolleisten 795i

Hex Datei mit Atmel Studio 6 erstellen

1. Inhaltsverzeichnis

BASIC-Tiger Starter Kit. Tel: +49 (241) Fax: +49 (241)

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Handout CMS Pimcore. Bedienung der Webseite für Sektionen

Installation von sonogdt

Im Falle der Neueingabe müssen Sie in dem nachfolgendem Formular die Datenquelle auswählen und die Art der Prüfung festlegen.

Bedienungsanleitung Folientastatur & Controller

Befehlstabelle awapswitch Anwendung

< UNTERRICHTSMATERIAL /> Calliope mini. Schere-Stein-Papier

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

LEHRSTUHL FÜR DATENBANKEN

ANT-5 Software Upgrade - Installationshinweise

3. Anweisungen und Kontrollstrukturen

Adventskalender. Best Practice. Schritt für Schritt Dokumentation. Wie Sie einen Adventskalender einrichten. Stand:

Informatik Enlightened. Station 0 - Einstieg

Version 0.3. Installation von MinGW und Eclipse CDT

Parallel-IO. Ports am ATmega128

einfache PIC-Übungsprogramme

Programmierung Nibo 2 Teil 1 ATmel AVR Studio 6. * by nicaisystems. Programmierung Nibo 2 Teil 1 - AVR Studio 6 1

Einrichten und Verwenden der Z1 Schnittstelle mit PA-Konzepte

Für schnelle und bequeme Entwicklungen wird gern Basic eingesetzt.

Mobile Datenerfassung mit dem Barcode-Hand-Terminal BHT 50xx/70xx/300

Arbeiten mit der Software STEP 7 und den Laborarbeitsplätzen SIMATIC S7-313C

Java: Eine kurze Einführung an Beispielen

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

4 Formelsammlung C/C++

Schleifen: Immer wieder dasselbe tun

Musterlösungen. zu den Übungsaufgaben vom

Einführung in NI LabVIEW

Transkript:

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 1 Praktikum Mikrocontrollertechnik SS 2015 Versuch 1 Stand: 13. 4. 2015 Einführung in die C-Programmierung Atmel AVR. Die Programmiersprache C ist alt und von Grund auf häßlich. Es ist aber die am meisten verwendete Programmiersprache. Aufgaben: 1. Kennenlernen des grundsätzlichen Entwicklungsgangs. 2. Darstellen von Zeit mittels Software. 3. Elementare Anwendungsprogrammierung. Ausrüstung: AVR Studio 4 (4.19), WinAVR C-Compiler (AVR GCC), Starterkit AVR STK 500, Siebensegmentanzeige 09/13. Zu den Geräten siehe die jeweilige Kurzbeschreibung, zum Starterkit auch die Originaldokumentation der Fa. Atmel. Aufgabe 1: Den Entwicklungsgang kennenlernen Jedes Vorhaben ist ein Projekt. Wenn Sie etwas Neues beginnen wollen, müssen Sie im AVR Studio ein neues Projekt einrichten. 1. Software starten. Die Anwendung heißt AVR Studio 4.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 2 Abb. 1 Das AVR Studio wurde gestartet. Wir wollen eine neues Projekt einrichten. 2. Ein neues Projekt anlegen. Abb. 2 Das Projekt benennen und anlegen. 1 - es soll in C geschrieben werden. 2 - Namen eintragen. 3 - diese Kontrollkästchen müssen beide aktiv sein. 4 - bitte ein vernünftiges Verzeichnis auswählen. Das Projekt nicht auf dem Desktop oder auf der Netzfestplatte ablegen... 5 - weiter.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 3 3. Den Mikrocontroller auswählen. Abb. 3 Fehlersuchplattform und Mikrocontroller auswählen. 1 - wir wählen den AVR Simulator zum Verfolgen der Programmabläufe (obwohl wir ihn nicht brauchen und unsere Fehler zu Fuß suchen wollen). 2 - unser Mikrocontroller ist der Atmega 16. Er ist leistungsfähig genug und ausreichend ausgestattet, aber nicht zu kompliziert. 3 - Projekterstellung beenden. 4. Ein Musterprogramm übernehmen und übersetzen. Abb. 4 Das Projekt ist geöffnet. Der Pfeil zeigt auf das (leere) Eingabefenster des Programmeditors.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 4 Abb. 5 Wir wollen ein Musterprogramm übernehmen. Abb. 6 Das Musterprogramm auswählen und öffnen. Es heißt V1_15_template.c. Abb. 7 Das Musterprogramm wird ins Projekt übernommen. 1 - Musterprogramm; 2 - Projektprogramm. In 1 alles markieren. Kopieren. in 2 einfügen. 1 schließen.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 5 Abb. 8 Jetzt wird das Programm übersetzt. Auswahl Build Build. Abb. 9 Diese Nachricht (Pfeil) ist entscheidend. Jetzt kann der Mikrocontroller programmiert werden. 5. Den Mikrocontroller programmieren. Abb. 10 Der Programmer wird ausgewählt und aktiviert. 1 - mit dem Programmer verbinden. 2 - der Auswahldialog. 3 - es ist das Starterkit STK 500. Es ist an eine serielle Schnittstelle angeschlossen. 4 - wir lassen das Programm die Schnittstelle selbst finden.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 6 Abb. 11 So meldet sich der Programmer. 1 - wir sollten aber nicht gleich programmieren, sondern erst einmal hier nachschauen, ob auch alles stimmt. Abb. 12 Vertrauen ist gut, Kontrolle ist besser... 1 - ist der richtige Controllertyp ausgewählt? 2 - zur Kontrolle die Signatur auslesen. 3 - diese Aussage ist entscheidend. Der Schaltkreis auf dem Starterkit ist tatsächlich vom ausgewählten Typ. 4 - zurück zum Programmieren.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 7 Abb. 13 Das Programm muß in den Flash. Hierzu müssen wir zunächst die Programmdatei auswählen. Der Programmer hat keinen automatischen Datenverbund mit der Programmentwicklung. Abb. 14 Programmierdateiauswahl. 1 - das Verzeichnis des Projekts öffnen. 2 - das Unterverzeichns default öffnen. 3 - wir brauchen die Datei mit der Endung.hex. Auswählen.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 8 Abb. 15 Programmieren. 1 - diese beiden Kontrollkästchen müssen aktiv sein. 2 - die Programmierdatei ist ausgewählt. 3 -Programmieren auslösen. 4 - die Erfolgsmeldungen. Fertig. 5 - Programmierdialog nicht schließen, sondern minimieren (um ihn später wieder aufrufen zu können). Abb. 16 Programmerauswahl. 1 - mit dem ausgewählten Programmer verbinden. 2 - den Flash gemäß den aktuellen Einstellungen neu programmieren.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 9 Aufgabe 2: Den Aufbau eines C-Programms verstehen. Abb. 17 Die grundsätzliche Struktur eines C-Programms. Aufgabe 3: Programmlaufzeiten messen. Eine beliebige Bitposition von Port A mit dem Oszilloskop verbinden (Tastkopf). Wir lassen das Musterprogramm laufen. In der Endlosschleife wird der Port A zyklisch umgeschaltet. Es müssen symmetrische Rechteckimpulse angezeigt werden. Damit kann die Durchlaufzeit der Schleife gemessen werden. Eine Halbperiode = ein Schleifendurchlauf. Zeit messen. Abb. 18 Zeitmessung mit Oszilloskop.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 10 Die Durchlaufzeit hängt vom Compiler ab. Die Konfigurationseinstellungen des Projekts aufrufen. Welchen Maschinencode hat der Compiler erzeugt? Das ist aus dem sog. List File ersichtlich (Dateiendung.lss). Der Maschinencode hängt von der gewählten Optimierungsstufe ab. O0 = keine Optimierung. Os = höchste Optimierung. Mit beiden Einstellungen probieren. List Files ansehen. Abb. 19 Die Konfigurationseinstellungen des Projekts. 1 - Optimierung; 2 - List File erzeugen / nicht erzeugen. Selbst programmieren Um die folgenden Aufgaben zu lösen, müssen Sie selbst programmieren. Die Programmabläufe fügen Sie in mit dem Editor des AVR Studio in die geöffnete C-Quelldatei ein. Achtung: Der Compiler achtet auf die Groß- und Kleinschreibung. Die Atmel-AVR-Definitionen (Ports, Steuerbits usw.) werden stets groß geschrieben, reservierte Bezeichner der Programmiersprache hingegen klein. Korrekt geschriebene reservierte Bezeichner werden blau wiedergegeben, Kommentare grün. Kommentarzeichen: // (zeilenweise) oder /* */ (ganze Blöcke). Die Semikolons nach den Anweisungen nicht vergessen! Richtig Falsch while (1) WHILE (1) PORTA porta RXEN Rxen

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 11 Programmbeispiele Programmbeispiele finden Sie auf der C-Quelldatei V1_15.examples.c. Sie steht im selben Verzeichnis wie das Musterprogramm. Sie können diese Datei im Editor öffnen, und Programmstücke in die C- Quelldatei Ihres Projekts übernehmen. Manchmal sind zudem noch Änderungen erforderlich, beispielsweise in der Initialisierung der E-A-Ports. Es versteht sich von selbst, daß Sie auch alternative eigene Lösungen ausprobieren dürfen. Aufgabe 4: Zeit darstellen. Wir stellen die Projektkonfiguration auf O0 = keine Optimierung. Das Ziel ist eine Funktion millisecs(), der ein 16-Bit-Wert als Parameter übergeben wird. Die Funktion wartet so viele Millisekunden ab, wie dieser Wert angibt (Warteschleife). Hierzu schreiben wir zunächst eine Funktion milli(), die genau eine Millisekunde wartet. Erprobung: durch Einfügen in die Endlosschleife. Die Durchlaufanzahl (eine Konstante) in der Funktion so lange ändern, bis der Schleifendurchlauf näherungsweise eine Millisekunde dauert. Mit dieser Funktion die Funktion millisecs() schreiben und erproben. millisecs (n) ist einfach ein n- maliges Aufrufen von milli(). Wenn alles klappt, ausprobieren, was sich ergibt, wenn die Optimierung auf Volldampf (Os) geschaltet wird. Dann aber wieder zurück zu O0 (jetzt wissen wir nämlich, warum...). Programmbeispiel 01. Aufgabe 5: Lauflicht in eine Richtung. Die LEDs des Starterkits mit Port C verbinden. Zyklische aufeinanderfolgende Erregung in eine Richtung. Die LEDs sind aktiv Low. Abb. 20 Die LEDs an Port C. Programmbeispiel: 02. Aufgabe 6: Lauflicht in beide Richtungen (hin und her). Zyklische aufeinanderfolgende Erregung der LEDs, zunächst in die eine Richtung, dann zurück. Programmbeispiel: 03. Aufgabe 7: Gebäudesystemtechnik (1). Das elektrische Licht ein- und ausschalten. Tasten an Port D anschließen. Port D auf Eingang. Mit einer der Tasten (z. B. Taste 7) soll die gesamte LED-Reihe ein- und ausgeschaltet werden (erste Betätigung: ein, zweite Betätigung: aus usw.). Die Tasten sind aktiv Low.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 12 Abb. 21 LEDs an Port C, Tasten an Port D. Programmbeispiel: 04. Aufgabe 8: Gebäudesystemtechnik (2). Das Ein- und Ausschalten funktioniert nicht vollkommen sicher. Mal klappt s, mal nicht. Das liegt daran, daß die Taste prellt. Jetzt Entprellung (durch Zeitverzögerung) einbauen. Programmbeispiel: 05. Aufgabe 9: Gebäudesystemtechnik (3). Das elektrische Licht nacheinander ein- und ausschalten (Power Sequencer). Am Anfang sind alle LEDs dunkel. Mit einer der Tasten eine Einschaltsequenz auslösen. Zunächst schaltet nur die erste LED, nach etwa 300... 500 ms kommt die zweite hinzu usw., bis schließlich alle acht eingeschaltet haben. Wird dieselbe Taste erneut betätigt, sollen die LEDs in umgekehrter Reihenfolge nacheinander ausschalten. Programmbeispiel: 06. Aufgabe 10: Zweistellige Siebensegmentanzeige. Die Siebensegmentanzeige 09/13 anschließen. Wir verwenden zwei Anzeigemodule, die wir mit den Ports B und C verbinden. Abb. 22 Starterkit mit Siebensegmentanzeige. LEDs und Tasten sind aktiv Low.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 13 Jeder der Ports: 7 6 5 4 3 2 1 0 KEY# G# F# E# D# C# B# A# Es sind vier Teilaufgaben zu bearbeiten: 10.1. Zyklisch von 0 bis 99 zählen. Genügend Zeitverzögerung zwischen den Zählschritten vorsehen (z. B. 200 ms), so daß der Zählvorgang visuell verfolgt werden kann. Worauf es besonders ankommt, ist die Wandlung vom Binären (der Zählvariablen in der Schleife) ins Dezimale und von da aus in die Segmentbitmuster. Wir können hierzu die Grundrechenarten ausnutzen; Tricksen müssen wir nicht. Ein deutliches Beispiel für die Vorteile einer höheren Programmiersprache... Programmbeispiel: 07. 10.2. Handzähler (zum Zählen von Autos, Schafen, BVB-Fans usw.). Rechte Taste zum Zählen (+ 1), linke Taste zum Löschen. Bei 99 mit Zählen aufhören. Probeweise die Entprellung weglassen (auskommentieren). Die Tasten auf den LED-Anzeigen prellen typischerweise gut und lassen so den Prelleffekt deutlich erkennen. Programmbeispiel: 08. 10.3. Zyklisch von 1 bis 49 zählen (Lottozahlen). Genügend Zeitverzögerung zwischen den Zählschritten vorsehen (z. B. 200 ms), so daß der Zählvorgang visuell verfolgt werden kann. Programmbeispiel: 09. 10.4. Lottozahlen ziehen. Schnell zählen, solange die rechte Taste gedrückt ist. Bei losgelassener Taste hält der Zähler an. Programmbeispiel: 10. Aufgabe 11: Tageszeituhr mit vierstelliger Siebensegmentanzeige. Alle vier Siebensegment-Anzeigemodule an das Starterkit anschließen. Abb. 23 So werden die Anzeigemodule angeschlossen.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 14 Auch hier sind vier Teilaufgaben zu bearbeiten: 11.1. Tageszeituhr (1). Elementare Zeitzählung von 00:00 bis 23:59. Erst einmal das Zählen an sich ausprobieren. Die Uhrzeit hat es in sich... Wir wollen hier binär zählen und zwecks Anzeige ins Dezimale wandeln. Eine solche Uhr schaltet alle Minute weiter. Der Zähltakt ist also die Minute. Der Tag hat 1440 Minuten. Also modulo 1440 zählen. 16 Bits genügen. Wenn wir einen Minutenwert durch 60 teilen, erhalten wir als Quotienten die Stunde und als Rest die verbleibenden Minuten. Beide Werte sind in jeweils zweistellige Dezimalzahlen zu wandeln. Hierzu werden sie durch 10 geteilt. Der Quotient ergibt die höherwertige Dezimalstelle, der Rest die niederwertige. Nun können wir nicht wirklich mit einem Minutentakt arbeiten, denn dann würde es viel zu lange dauern, den Zählablauf zu beobachten. Deshalb verwenden wir zunächst einen Takt von 100 ms. Programmbeispiel: 11. 11.2. Tageszeituhr (2). Wählbarer Zähltakt. Jetzt soll der Zähltakt über die Tasten unter den Siebensegmentanzeigen ausgewählt werden. Um jeweilige Taste nicht dauernd niederhalten zu müssen, übernehmen wir die Zähltaktauswahl in eine Merkvariable status, die wir neu definieren. Zudem müssen die Bits 7 der E-A-Ports Eingänge werden. Taste 1: Zählen mit 1 ms. Taste 2: Zählen mit 10 ms. Taste 3: Zählen mit 100 ms. Taste 4: Zählen mit 1 s. Die Statusvariable wird auf einfache und schmucklose Weise gesetzt und dann mit einer switch- Anweisung ausgewertet. Sehen Sie nach, wie lang das Maschinenprogramm ist. Programmbeispiel: 12. 11.3. Stoppuhr (1). Überprüfen der Zählfunktion. Die Stoppuhr soll von 00.00 bis 99.99 Sekunden zählen, und zwar mit einer Auflösung von 1/100 s. Um die Zählabläufe überprüfen zu können, behalten wir die Zähltaktauswahl der vorigen Aufgabe bei, stellen aber die Anzeige auf reine Dezimalzählung um (alle Stellen von 0...9). Programmbeispiel: 13. 11.4. Stoppuhr (2). Taste 1 dient als Löschtaste, Taste 4 als Start- und Stoptaste. Der Zähltakt dauert jetzt 1/100 s = 10 ms. Das Programm muß alles allein leisten: den Zähltakt herstellen, zählen, wandeln, die Tasten abfragen und die Grundfunktionen einer Stoppuhr erledigen (laufen, anhalten, löschen). Der Zustandsautomat ist ein bewährtes Prinzip, eine solche Aufgabenvielfalt zu beherrschen. Wir verwenden folgende Zustandscodierung: 0 = Grundzustand. Ruhe 1 = Taste 4 wurde betätigt. Uhr zählt. 2 = Uhr zählt. Taste 4 wurde losgelassen. 3 = Uhr steht. Taste 4 wurde betätigt. Übergang nach 0, wenn Taste wieder losgelassen.

PRAKTIKUM MIKROCONTROLLERTECHNIK SS 2015 VERSUCH 1 15 9 = Zählerstand 99.99 = Zählende. Wenn Taste 1 betätigt (Löschen), dann Übergang nach 10. 10 = Löschtaste betätigt. Löschen. Wenn beide Tasten losgelassen, Übergang nach 0. Programmbeispiel: 14. Das Programmbeispiel veranschaulicht, daß ein solcher Zustandsautomat auf überschaubare, reguläre Weise mit einer switch-anweisung ausprogrammiert werden kann.