ATtiny 2313 mit ALPS Drehgeber und µOLED-128-G1 von 4D Systems

Der Aufbau

Hier ein kleiner Test des ATtiny2313 mit dem µOLED-128-G1 von 4D Systems. Man kann das OLED-Display in Deutschland von TinkerSoup für 39 Euro kaufen. Angeschlossen ist ein Drehgeber mit Quadraturausgang von ALPS, Typenbezeichnung EC12E2420404, mit 24 Rasterungen pro Umdrehung.

So sieht das dann in Aktion aus:

Wirkt im Video ein wenig unscharf, da etwas überbelichtet, aber ist in real gestochen scharf, wie auf dem Foto oben zu sehen. Auch das Flackern ist in Wirklichkeit nicht zu sehen, kommt wohl durch die Inteferenz mit den 25 Hz der Videoaufzeichnung. Im Programm ist ein 1 Hz soft-blinking der Zahl implementiert, ist also auch kein Display Fehler.

Am Anfang ist das eingebaute Demo zu sehen, wenn noch keine Daten am seriellen Port anliegen. Sobald man die Auto-Baud Sequenz durchführt, stoppt das Demo und man kann von extern Daten an das Display schicken. Dazu ist laut Datenblatt maximal eine Sekunde nach dem Reset des Displays an Wartezeit erforderlich, aber geht auch schneller, wenn keine SD-Card eingesteckt ist.

Schaltung

Die Schaltung ist recht übersichtlich. Durch den 18.432 MHz Quarz ist es möglich, exakt 115200 Baud für die Kommunikation mit dem Display einzustellen.

Eagle Schematic und Eagle Library (für den ATtiny2313).

Das Display hat eine Firmware, die es erlaubt, per serieller Schnittstelle Befehle zu senden, die es sehr einfach machen, auch von kleinen Microcontrollern Text in verschiedenen Größen auszugeben (es sind mehrere Fonts im Display bereits gespeichert), Rechtecke, Linien und Kreise zu zeichnen usw. Hier die Protokollbeschreibung. Man kann auch eine SD-Card einstecken und das Display selbst in einer herstellereigenen Sprache (4GL) programmieren, womit man einige Funktionen ganz ohne externe CPU implementieren kann, wie Slideshow von der SD-Card abspielen, oder auch über die beiden IO-Pins z.B. eine Joystickabfrage, Chips per 1-Wire Protokoll abfragen oder Soundausgabe.

Die Entwicklungsumgebung unter Windows

Ich habe WinAVR zum Compilieren des Projekts verwendet, ein auf GCC basierender Cross Compiler für AVR Chips. Bei mir ist diese Version auf c:\ installiert. Die beiden Verzeichnisse "C:\WinAVR-20100110\bin" und "C:\WinAVR-20100110\utils\bin" habe ich in den Pfad aufgenommen, um später von der Kommandozeile per "make" compilieren zu können.

Zum Flashen der Anwendung verwende ich den AVR Dragon und AVR Studio 4. Nach Installation von AVR Studio 4 alle Servicepacks installieren und zunächst am besten einmalig per "Tools->AVR Dragon Upgrade" die Firmware auf dem AVR Dragon aktualisieren.

Um das Projekt zu compilieren, eine DOS-Eingabeauffoderung starten, in das firmware-Verzeichnis wechseln und "make" eintippen. Die resultierende attiny.elf-Datei kann folgendermaßen per AVR Studio und AVR Dragon programmiert werden: Zunächst den Dragon mit dem ATtiny verbinden. Dazu den ISP-Header per Pfostenstecker o.ä. verwenden. Die Pinbelegung ist auf der Rückseite des Dragons zu sehen, oder auch auf der Online Hilfeseite. Es müssen alle sechs Leitungen verbunden werden:

MOSI: PB5
MISO: PB6
SCK: PB7
Reset: PA2
VTG: +5 V Versorgungsspannung
GND: GND

Zum flashen des Programms bin ich folgendermaßen vorgegangen:

Nach dem Programmieren wird automatisch ein Reset ausgeführt und das Programm auf dem Microcontroller gestartet.

Das Programm

Der Source Code, Makefile und vorkompilierte attiny.hex-Datei: firmware.zip

Das Programm ist aufgeteilt in drei Dateien, nebst Headern:

Der Quelltext ist gut dokumentiert und selbsterklärend und kann für beliebige eigene Projekte eingesetzt werden, sofern ich als Urherber mit erwähnt werde (BSD-Lizenz).


8. Januar 2011, Frank Buß