21
Mikrocomputertechnik I & II Laborübungen Ausgabe 0.2, 15.03.2014 Autoren: David Grafberger, Michael Buchalik, Johannes Huning, Stephan Rupp Mikrocomputertechnik - Laborübungen D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 1/21

Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Embed Size (px)

Citation preview

Page 1: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Mikrocomputertechnik I & II

Laborübungen

Ausgabe 0.2, 15.03.2014Autoren: David Grafberger, Michael Buchalik, Johannes Huning, Stephan Rupp

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 1/21

Page 2: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 2/21

Page 3: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Inhaltsverzeichnis1. Einführung! 4

2. Einarbeitung als Hausaufgabe! 4

2.1. Grundlagen! 4

2.2. Atmel Studio und Testboard! 6

3. Testboard aufbauen und programmieren! 13

3.1. Programmierbeispiel: LED blinken lassen! 13

3.2. Programmieraufgabe: Lauflicht! 14

3.3. Programmieraufgabe: Alle LED´s leuchten lassen! 14

4. Lichtwürfel aufbauen und programmieren! 15

4.1. Einführung und Bauanleitung! 15

4.2. Programmbeispiel: “Rahmen Ebene 1 blinken lassen”! 19

4.3. Programmieraufgabe (Hochzählen)! 19

4.4. Programmieraufgabe (Schleifendurchläufe)! 19

4.5. Programmieraufgabe (Speicher füllen)! 20

4.6. Freiwillige Programmieraufgabe (Abstraktion)! 20

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 3/21

Page 4: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

1. EinführungIm folgenden Laborversuch geht es darum, ein Verständnis für die Handhabung und die

Funktionsweise von Mikrocontrollern zu erlernen. Ziel ist es, einen dreidimensionalen Würfel aus LEDs zu entwerfen und diesen mit Hilfe eines Mikrocontrollers anzusteuern. Zu Beginn des Laborversuchs werden die nötigen Grundlagen im Umgang mit Mikrocontrollern und mit der Laborumgebung geschaffen. Es wird der verwendete Mikrocontroller und der Aufbau des Schaltplans für die Steuerplatine vorgestellt.

Um ein erstes Gefühl dafür zu bekommen wie man mit einem Mikrocontroller arbeitet, steht ein Testboard zur Verfügung, mit dem sich kleine Programmieraufgaben lösen und testen lassen. Im Anschluss werden ein eigener LED-Würfel und eine passende Steuerplatine aufgebaut. Mit Hilfe von vorgegebenen Programmbeispielen können eigene Programme geschrieben und der LED-Würfel individuell angesteuert werden.

Voraussetzung für diesen Laborversuch sind Kenntnisse der Programmierung mit C++ oder C, der Umgang mit elektronischen Bauteilen, das binäre Rechensystem und der richtige Umgang mit Laborutensilien wie Lötkolben, Messgeräten etc.

Der Versuch gliedert sich in drei Teile. Der erste Teil betrifft die Einarbeitung. Dieses Kapitel enthält alle wichtigen Informationen die für die Durchführung des Laborversuches benötigt werden. Die Einarbeitung ist als Hausaufgabe vorzubereiten.

Die Teile zwei und drei sind Versuchsteile, von denen der erste der beiden mit dem Testboard durchgeführt wird. Im letzten Teil des Laborversuchs soll ein LED-Cube gelötet werden und dieser anschließend mit Programmen bespielt werden.

2. Einarbeitung als Hausaufgabe

2.1. GrundlagenDas Herzstück des Laborversuchs ist der Mikrocontroller. Mit diesem ist es möglich, den LED-

Cube anzusteuern. Ein weit verbreiteter Mikrocontroller für kleinere Anwendungen ist der ATtiny2313 von Atmel. Er verfügt über einen 2k Speicher und 18 IO´s. Der Speicher dient im Laborversuch ausschließlich als Programmspeicher. Über die IO´s kann der Mikrocontroller angesprochen werden und nach außen kommunizieren. Die folgende Abbildung zeigt die Pinbelegung des ATtiny2313.

Da es für den LED- Cube genügt, lediglich alle Pins als Ausgänge zu definieren, wird an dieser Stelle nicht weiter auf die Bezeichnung der einzelnen Pins eingegangen. Bei Interesse können die Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. Wie die Pins des Mikrocontrollers als Ausgänge definiert werden können, wird in späteren Programmierbeispielen erklärt.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 4/21

Page 5: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Bild 2.1 Pinbelegung des ATtiny2313

Um eine Verbindung zwischen dem Mikrocontroller und dem Rechner aufzubauen, wird zunächst eine sogenannte ISP-Schnittstelle benötigt. Mit Hilfe eines ISP-Programmers können dann über die ISP-Schnittstelle die Programme vom Rechner auf den Mikrocontroller gespielt werden. Für den Schaltungsentwurf ist es nützlich, immer mit dem Mikrocontroller zu beginnen, da dieser das Zentrum der Schaltung darstellt.

ISP steht für In-System-Programming und ermöglicht das Programmieren einer Schaltung direkt am Einsatzort. Für den Laborversuch bedeutet das, dass der Mikrocontroller fest auf der Leiterplatine platziert wird und dann nachträglich problemlos über die ISP - Schnittstelle und den ISP-Programmer mit Programmen bespielt werden kann. Es ist nicht mehr notwendig, den Mikrocontroller bei jedem Bespiel aus dem System zu nehmen. Dadurch entlastet man den Mikrocontroller und die Schaltung mechanisch. Zudem lassen sich Programme so schneller testen und umändern.

Um die ISP-Schnittstelle nutzen zu können, muss ein sogenannter Programmer zwischen dem PC und der Schnittstelle eine Verbindung herstellen. Folgende Abbildung zeigt die Anordnung.

Bild 2.2 ISP Schematisch dargestellt

Im Laborversuch wird mit dem Programmer “MySmartUSB light” gearbeitet, der über eine USB Schnittstelle am Laptop problemlos den Mikrocontroller bespielen kann.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 5/21

Page 6: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Bevor es an die Ausarbeitung des LED-Cubes und der Schaltplatine geht, soll zunächst mit Hilfe eines Testboards der Mikrocontroller kennengelernt werden und verstanden werden, wie dieser arbeitet. Außerdem wird die Handhabung mit der ISP-Schnittstelle erklärt, die im späteren Verlauf sehr wichtig ist.

2.2. Atmel Studio und TestboardMit dem AVR Studio können Mikrocontroller in Assembler sowie in C/C++ programmiert werden.

Das AVR Studio bietet einen eigenen Compiler, der den Quellcode in Maschinencode umwandelt. Zu Beginn der Programmierung muss lediglich der verwendete Mikrocontroller ausgewählt werden, bevor es losgehen kann. Anhand eines Beispiels soll der Umgang mit dem AVR Studio erläutert werden.

Erstellen eines Projektes mit dem AVR Studio

Falls das AVR Studio nicht bereits auf dem Rechner installiert ist, kann das Programm kostenlos von der Atmel Webseite heruntergeladen werden. Nach der Installation erscheint nach dem Starten des Programms ein Willkommens-Bildschirm. Um ein neues Projekt anzulegen, wird auf “New Projekt” geklickt. Folgende Bildschirmoberfläche ist zu sehen:

Bild 2.3 Projektbildschirm des Atmel Studios

Es wird nun das Feld “GCC C++ Executable Project” ausgewählt, und dem Projekt ein passender Name gegeben. Nach der Bestätigung des Projektnamens, wird der verwendete Mikrocontroller ausgewählt. In diesem Fall ist das der ATtiny2313.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 6/21

Page 7: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Bild 2.4 Startbildschirm eines neuen Projekts

Nun kann mit der Programmierung in C oder C++ begonnen werden. Zu den benötigten Befehlen folgen später noch Erläuterungen.

Ein Programm auf den Controller übertragenBevor ein Programm auf den Controller übertragen werden kann, muss der Quellcode zunächst

mit Hilfe des Compilers auf Fehler überprüft werden. Mit der F7 Taste kann dieser ausgeführt werden.

Folgendes Bild erscheint nach dem Ausführen des Compilers:

Bild 2.5 Information des Compilers

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 7/21

Page 8: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Wenn das Programm fehlerfrei ist, wird in der letzten Zeile folgender Text angezeigt:

Build succeeded.===== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ======

Das Programm kann nun mit Hilfe des Programmiertools ,,mySmartAVR Programmer‘‘ auf den Mikrocontroller übertragen werden. Sollte der AVR-Programmer nicht auf dem Rechner zu finden sein, kann dieser auch problemlos im Internet unter www.myavr.de heruntergeladen werden

Um nun das fertige Programm auf den Controller zu übertragen, wird das ProgTool von MyAVR benötigt. Dieses wird unter www.myavr.de zum Download angeboten (Achtung: wird nicht der mySmartAVR Programmer der Hochschule verwendet, wird das Programm benötigt, das der Hersteller der Schnittstelle anbietet).

Wird das ProgTool zum ersten Mal verwendet, muss dieses erst konfiguriert werden. Unter dem Menüpunkt „Hardware“ muss „mySmart AVR light“ sowie der verwendete Controller ausgewählt werden(hier: ATtiny2313). Des Weiteren muss der COM Port herausgefunden werden, an dem der Programmer hängt. Dies geht wie folgt:

1. ! Gerätemanager öffnen

2. ! Den Reiter Anschlüsse öffnen

3. ! “Silicon Labs 210x USB to UART Bridge” suchen

4. ! In der Klammer hinter dem Namen steht der COM Port. Diesen müsst ihr in das vorgegebene Feld eintragen.

Damit ist die Schnittstelle fertig konfiguriert und kann verwendet werden.

Um nun ein Programm auf den Controller zu übertragen, wird der Programmer über das Kabel an die 6-polige ISP Schnittstelle auf der Platine angeschlossen. Anschließend muss im Programmiertool unter dem Menüpunkt “Brennen” das Fenster “Flash Brennen” aktiviert werden.

Das Vorgehen um Programme auf den Controller zu übertragen läuft wie folgt ab:• Kompilieren des Codes im Atmel Studio (dadurch wird die HEX Datei für den Controller

erzeugt und im Projektverzeichnis abgelegt)• HEX Code mit dem ProgTool unter “Flash brennen” auswählen• Auf den Controller brennen

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 8/21

Page 9: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Bild 2.6 Übertragen des Programms in das Flash (Brennen)

Die Übertragung des Programms auf den Mikrocontroller wird gestartet, indem auf den Button „brennen“ geklickt wird. Nach kurzer Zeit kommt die Rückmeldung, dass der Vorgang erfolgreich war.

Das TestboardFolgende Abbildung zeigt den Schaltplan des Testboards.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 9/21

Page 10: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

28.0

2.20

14 1

3:37

:45

f=1.

40 Z

:\DHB

W\S

tudi

enar

beite

n 20

14\A

tiny-

Test

boar

d_V2

\AT-

V13\

AT-V

13.s

ch (S

heet

: 1/1

)

TLLG4400

TLLG4400

TLLG4400

TLLG4400

TLLG4400

TLLG4400

TLLG4400

TLLG4400

IC2

100n

100n

1uF

10k

CON1

CON2

TLLG4400

TLLG4400

TLLG4400

TLLG4400

AB9V

1N41

48

1K5

1K5

1K5

1K5

2K7

1K5

1K5

1K5

1K5

1K5

1K5

1K5

F1

78L0

5

GND

GND

GND

CON4

CON5

CON3

L17

L16

L15

L14

L13

L12

L11

L10

ATTI

NY23

1312345678910

11 12 13 14 15 16 17 18 19 20

C1C2

C3

R1

3PO

L 123IS

P

1 3 5

2 4 6

L20

L21

L22

L23

9VANSCHLUSS+ -

D1VE

RPO

LUNG

SSCH

UTZ

R17

R16

R15

R14

R13

R12

R11

R10

R20

R21

R22

R23

FUSE

-0.2

A

IC1

GND

INO

UT

SV1

1 2 3 4 5 6 7 8 9 10

SV2

1 2 3 4 5 6 7 8 9 10

SV3

1234

Q1

+ -

Bild 2.7 Schaltplan des Testboards

Das Testboard bietet die nötige Hardware für die Programmierung des ATTiny. Es müssen sich zunächst keine Gedanken gemacht werden, wie die LEDs möglichst IO-sparend anzuschließen sind. Die folgenden Abbildung zeigen den Bestückungsplan des Testboards, sowie das Layout der Bestückungsseite.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 10/21

Page 11: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

28.02.2014 13:30:58 f=2.00 Z:\DHBW\Studienarbeiten 2014\Atiny-Testboard_V2\AT-V13\AT-V13.brd

1

6

9V

1

10

1

10

1 4

L17

L16

L15

L14

L13

L12

L11

L10

ATTI

NY23

13

C1C2

C3

R1

ISP

L20

L21

L22

L23

9VANSCHLUSS

D1VE

RPO

LUNG

SSCH

UTZ

R17

R16

R15

R14

R13

R12

R11

R10

R20

R21

R22

R23

FUSE

-0.2

A

IC1

SV1

SV2

SV3

Q1

Bild 2.9 Bestückungsplan des Testboards

28.02.2014 13:36:11 f=2.00 Z:\DHBW\Studienarbeiten 2014\Atiny-Testboard_V2\AT-V13\AT-V13.brd

1

6

9V

1

10

1

10

1 4

Bild 2.9 Layout der Bestückungsseite

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 11/21

Page 12: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Zur Stückliste gehören folgende Komponenten:

Nach dem Aufbau kann das Programmieren und der Mikrocontroller mit den ersten Programm bespielt werden. Dafür bietet Atmel mit dem AVR Studio 6 eine eigene Entwicklungsumgebung an.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 12/21

Page 13: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

3. Testboard aufbauen und programmieren

3.1. Programmierbeispiel: LED blinken lassenIm Folgenden wird ein einfaches Codebeispiel gezeigt, in dem es darum geht, eine LED auf

dem Testboard blinken zu lassen. Das gewonnene Verständnis des Codebeispiels dient als Grundlage für die folgenden Programmieraufgaben.123456789101112131415161718192021222324

#include <avr/io.h> //include beinhaltet //Standardparameter //der Atmel Prozessoren #define F_CPU 8000000UL //Geschwindigkeit des //Prozessors#include <util/delay.h> //Eine Erweiterung um //den Befehl //_delay_us() //nutzen zu können. int main(void){ DDRB = 255; //Port B wird als //Ausgang definiert while(1) { PORTB = 1; //PD0 ist HIGH _delay_us(500); PORTB = 0; //PD0 ist LOW _delay_us(500); } return 0;}

Der Code Schritt für Schritt erklärt:123

#include <avr/io.h> #define F_CPU 8000000UL #include <util/delay.h>

Diese drei Codezeilen sind in nahezu jedem Programm vorhanden, da sie die Standard-definitionen enthalten. “avr/io.h” enthält alle Portnamen und Speicheradressen, die für die Programmierung nötig sind. “define F_CPU” legt fest, wie schnell der CPU laufen soll, was in diesem Fall 8 MHz sind. Die 8 MHz kommen von dem nachfolgendem include “util/delay.h”, welches die Möglichkeit einer „Warten“-Funktion bringt. Damit die angegebenen Zeiten in den Funktionen stimmen, muss der Prozessor auf 8MHz getaktet werden.

1 int main(void){

Hier beginnt die Hauptschleife des Programms1 DDRB = 255;

Dieser Befehlt sorgt dafür, das Port D (oder auch PD0-PD7) als Ausgänge geschaltet sind. Das bedeutet, dass sie vom Programm auf HIGH oder LOW gesetzt werden können. Für die Ports A und B gilt diese Regel übrigens auch.1 while(1)

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 13/21

Page 14: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Diese Schleife sorgt dafür, dass das Programm immer wieder ausgeführt wird. Die Bedingung “while(1)” ist immer erfüllt und somit läuft die Schleife endlos weiter.! ! ! !1 PORTB = 1;

Diese Variablenzuweisung sorgt dafür, dass der Port D neu beschrieben wird. Die Zahl, die dort geschrieben wird, ist jedoch im dezimalen System geschrieben und muss immer ins Binäre umgewandelt werden. Soll beispielsweise PD0 zum Leuchten gebracht werden, ist dies der binäre Wert 1, soll PD1 zum Leuchten gebracht werden, ist dies der binäre Wert 2. Die nachfolgende Tabelle zeigt, welcher Pin bei welchem Dezimalwert angesteuert wird.

PB0 1 00000001

PB1 2 00000010

PB2 4 00000100

PB3 8 00001000

PB4 16 00010000

PB5 32 00100000

PB6 64 01000000

PB7 128 10000000

Tabelle 31: Binäre Umrechnung

Sollen nun mehrere LEDs zum Leuchten gebracht werden, so müssen die dezimalen Werte lediglich addiert werden. Für die Ports A und B gilt diese Regel auch.

3.2. Programmieraufgabe: LauflichtAus dem oben verwendeten Befehlen lässt sich ein Lauflicht ableiten. Programmieren sie ein

Lauflicht, welches den Port D herabläuft und am Ende wieder umkehrt.

Hinweise:• Bedenken sie die binären Eigenschaften von Port D• Es soll immer nur eine LED leuchten• Die Wartezeit zwischen den LED Wechseln können Sie frei wählen

3.3. Programmieraufgabe: Alle LED´s leuchten lassenLassen Sie alle LEDs leuchten. Allerdings soll immer nur eine LED tatsächlich Leuchten. Dies

erreichen Sie durch sehr schnelles hin und her schalten zwischen den LEDs.

Tipp: Ohne _delay_ms() arbeiten! Alle LEDs hintereinander aufleuchten lassen!

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 14/21

Page 15: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

4. Lichtwürfel aufbauen und programmieren

4.1. Einführung und Bauanleitung

Einführung

Im zweiten Teil des Laborversuchs geht es um die Zusammenstellung des LED-Cubes und der Steuerplatine. Zunächst wird der Aufbau des LED-Cubes vorgestellt und eine Methode erläutert, mit der man mit nur wenigen IO´s trotzdem jede LED separat ansteuern kann. Anschließend wird der Aufbau der Steuerplatine und die verwendeten Komponenten vorgestellt. Sowohl der LED-Cube als auch die Steuerplatine werden in Eigenarbeit in kleinen Gruppen zusammengesetzt. Es folgt ein Programmbeispiel, welches das Verständnis des LED-Cubes festigt und anschließend die eigenständige Programmierung.

AufbauDer LED-Cube soll aus drei Ebenen zu je 9 LEDs aufgebaut werden. Um jede LED einzeln über

einen eigenen Port anzusteuern, wie es beim Testboard der Fall war, wären folglich 27 IOs nötig. Es gibt Mikrocontroller mit so vielen IO Schnittstellen, jedoch gibt es auch Methoden, durch eine geschickte Verdrahtung der LEDs Anschlussports zu sparen. Eine dieser Methoden ist das Multiplexing.

MultiplexingLED-Multiplexing wird verwendet, um Anschlusspins einzusparen und den Verdrahtungs-

aufwand auf einer Platine so gering wie möglich zu halten. Dabei werden die Anoden einer LED in Zeilen und die Kathoden einer LED in Ebenen verbunden. Durch Ansteuerung jeweils einer Ebene und einer Zeile lässt sich gezielt genau eine LED an bzw. ausschalten. Im Beispiel eines 3x3x3 LED-Würfels, werden nicht mehr 27 sondern nur noch 12 IOs benötigt. Drei IOs für die jeweiligen Ebenen und neun für die Zeilen. Deutlicher wird der Effekt bei größeren Dimensionen. Ein 8x8x8 Cube besteht aus 512 LEDs, über das Multiplexing werden jedoch nur 72 IOs benötigt, um jede LED separat ansteuern zu können. Sollen mehrere LEDs gleichzeitig leuchten, müssen die einzelnen LEDs schnell hintereinander geschaltet werden. Durch die Trägheit des menschlichen Auges ergibt sich für den Beobachter ab einer Frequenz von ungefähr 100 Hz ein einziges, zusammenhängendes Bild. .

Bauanleitung

Um wie beschrieben die Kathoden der LEDs zu Ebenen und die Anoden der LEDs zu Spalten zusammenzufassen, bietet es sich an, vor dem Zusammenlöten die LEDs einheitlich vorzubereiten.

Schritt 1: LEDs vorbereiten

Bereitet alle 27 LEDs wie im Bild gezeigt vor. Die Kathode zeigt nach unten, die Anode wird zweimal geknickt.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 15/21

Page 16: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Bild 4.1 Vorbereitete LED

Schritt 2: Ebene löten

Nun werden jeweils neun LEDs zu einer Ebene zusammengelötet. Es ist darauf zu achten, die LEDs zügig miteinander zu verlöten, da bei zu langer Hitzebelastung die LEDs zerstört werden können. Die Anoden zeigen nach oben, die Kathoden werden miteinander verbunden. Insgesamt ergeben sich drei Ebenen.

Bild 4.2 Verlötete Ebene

Schritt 3: Ebenen zusammenlöten

Im nächsten Schritt, werden die 3 Ebenen zu einem Würfel zusammengesetzt. Dafür werden die Anoden der einzelnen Ebenen miteinander verlötet. Es empfiehlt sich, die oberste Ebene auf den Tisch zu legen, die zweite Ebene darüber zu halten und mit dem Verlöten einer Eck-LED zu beginnen.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 16/21

Page 17: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Ist die erste Ecke gelötet, haben die LEDs eine gewisse Stabilität und auch der Rest lässt sich einfach verlöten.

Bild 4.3 Zusammengefügte Ebenen

Schritt 4: Einzelne Ebenen kontaktieren

Die Zeilen des LED-Cubes werden direkt an die IOs des Mikrocontrollers geführt. Um die Ebenen zu kontaktieren, müssen Kontakte von jeder Ebene auf die Platine geführt werden. Es ist von jeder Ebene mit Hilfe eines Drahtes einen Kontakt runter zur Platine zu führen und darauf zu achten, einen Kurzschluss zwischen den Ebenen zu vermeiden.

Bild 4.4 Anschlüsse an den Cube

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 17/21

Page 18: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Schritt 5: Funktion testen

Nachdem der LED-Cube fertig gelötet ist, empfiehlt es sich, zunächst zu testen, ob auch wirklich alle LEDs unbeschädigt sind. Dafür wird jeweils eine Ebene mit dem Minuspol und eine Spalte mit dem Pluspol des Spannungsgenerators verbunden. Um die LEDs zum Leuchten zu bringen, ist eine Spannung von ca. 2V und ein Strom von 20mA notwendig.

Schritt 6: Steuerplatine

Anhand des vorliegenden Schaltplans, soll im nächsten Schritt die Steuerplatine gelötet werden. Es empfiehlt sich zunächst den Sockel für den Mikrocontroller auf der Platine aufzubringen. Hinter die Ports PB0 bis PB7 wird jeweils ein 390 Ohm Widerstand gelötet. Dieser dient als Vorwiderstand für die LEDs. Anschließend werden die Kontakte für die 9 Säulen mit den Widerständen verbunden.

Die Säulen können direkt über die IOs des Mikrocontrollers angesteuert werden. Um die Ebenen anzusprechen, werden drei Transistoren verwendet. Hinter die Ports P4 bis P6 werden jeweils die 2,2 KOhm Vorwiderstände für die Transistoren gelötet. Die Basis wird mit dem Widerstand verbunden, der Emitter auf Masse gelegt und der Kollektor jeweils mit einer Ebene verbunden. Zum Schluss fehlt noch der Spannungsbegrenzer.

Bild 4.5 - Schaltplan für den LED-Würfel

Der 7805 wird auf der Platine befestigt und der mittlere Pin auf Masse gelegt. Links vom 7805 wird ein 100nF Keramikkondensator angebracht, rechts davon ein 1000mF Elektrolytkondensator. Hier ist darauf zu achten, dass der Elko richtig herum angeschlossen wird. Bei Verpolung des Elkos besteht Explosionsgefahr. Die beiden Kondensatoren dienen dazu, die Spannung zu glätten. Es wird ein Vorwiderstand vor den Reset PIN gelötet und die Kontakte für die Batterieclips angebracht.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 18/21

Page 19: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

4.2. Programmbeispiel: “Rahmen Ebene 1 blinken lassen”

1234567891011121314151617181920212223242526272829303132333435363738

#include <avr/io.h>#define F_CPU 8000000UL#include <util/delay.h>int main(void){DDRB = 255; //Die Ports B und D werden //als Ausgänge deklariertDDRD = 127;while(1){for (int i = 30; i >= 0; i--) //das erste bild wird //angezeigt { PORTB = 0; PORTD = 16; _delay_us(500); PORTB = 0; PORTD = 32; _delay_us(500); PORTB = 239; PORTD = 65; _delay_us(500); }for (int i = 30; i >= 0; i--) //das zweite bild wird //angezeigt { PORTB = 0; PORTD = 16; _delay_us(500); PORTB = 0; PORTD = 32; _delay_us(500); PORTB = 0; PORTD = 64; _delay_us(500);}}return 0;}

4.3. Programmieraufgabe (Hochzählen)Programmieren Sie den Cube so, dass jede LED einzeln nacheinander eingeschaltet wird. Die

Reihenfolge ist in diesem Fall egal. Sie werden dafür 28 Bilder benötigen. Zu Beginn sollen alle LEDs ausgeschaltet sein, zum Schluss sollen alle LEDs angeschaltet sein.

4.4. Programmieraufgabe (Schleifendurchläufe)Lassen Sie zwei beliebige Bilder nacheinander anzeigen und variieren Sie die Anzeigedauer.

Hinweis: Die Anzeigedauer hängt von den Schleifendurchläufen ab!

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 19/21

Page 20: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

4.5. Programmieraufgabe (Speicher füllen)Probieren Sie aus, wie viele Bilder Sie mit „for“-Schleifen in Ihren Cube einspeichern können.

Überlegen Sie anschließend, wie die Anzahl der Bilder erhöht werden könnte und warum?

4.6. Freiwillige Programmieraufgabe (Abstraktion)Abstrahieren Sie die Anzeigefunktion des Würfels, sodass es nur noch eine Funktionsanzeige

gibt, die aufgerufen werden muss. Implementieren Sie anschließend einige Funktionen, die Figuren anzeigen.

Hinweis:

Für jede LED muss ein Zustand gespeichert werden, der anschließend in binäre Zahlen umgewandelt werden muss. Dies ist Aufgabe der Anzeigefunktion. Die Funktionen mit den Figuren setzen lediglich die Variablen der LEDs auf verschiedene Zustände.

Tipp:

Es reicht, boolsche Variablen zu verwenden, da diese wie die LEDs nur die Zustände „an“ und „aus“ kennen.

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 20/21

Page 21: Mikrocomputertechnik I & II - Duale Hochschule Baden …srupp/MCT/MCT_T2ELG2… ·  · 2014-03-13Bezeichnungen im Datenblatt des ATtiny2313 im Anhang nachgeschlagen werden. ... (dadurch

Literatur(1) D. Grafberger, M. Buchalik, Konstruktion und Ansteuerung eines LED-Cubes, Studienarbeit an

der DHBW-Stuttgart, Mai 2013

(2) AVR Webseite (MyAVR) mit Informationen zur USB-Programmierumgebung sowie über AVR Mikrocontroller: www.myavr.de

(3) ATMEL Webseite mit Datenblättern zu den Mikrocontrollern: www.atmel.com

(4) Günter Schmitt, Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie: Program-mierung in Assembler und C - Schaltungen und Anwendungen, Oldenbourg Wissen-schaftsverlag, 2010, ISBN-13: 978-3486589887

Mikrocomputertechnik - Laborübungen

D. Grafberger, M. Buchalik, J. Huning, S. Rupp, 2014 T2ELG2006.2 21/21