myavr.CHKRonline.de

Informationen und Projekte Rund um die Mikrocontroller-Programmierung
von myAVR (ATmega8), STM32 (Cortex-M3/4) und Raspberry Pi (ARM11)

Der Autor

Christian KrügerChristian Krüger, ursprünglich aus dem Altenburger Land stammend, wohnt heute in Nürnberg. Nach seinem Studium der Informations­technik an der West­sächsischen Hochschule in Zwickau, ist er heute Software Entwickler für ein­gebettete Systeme. Seine Berufung fand er im Dienst für seine Kollegen als Teamleiter bei ISCUE.

Die größte Leidenschaft Christians ist es, die Schönheit unserer Welt einzufangen und weiter­zuerzählen. Dies gelingt ihm mit Hilfe seiner Kamera. Seine Fotos und Videos sind auf Instagram und seiner Webseite zu betrachten.

Für seine Zukunft freut sich Christian auf erinnerungs­würdige Reisen, begeisterungs­fähige Menschen und viele neue Erfahrungen.

CHKRonline.de

Facebook Profil

Twitter Profil

XING Profil

Meine myAVR Treiber

7-Segment Treiber

Vor einiger Zeit habe ich eine vierfach Sieben-Segment-Anzeige aus einem alten Receiver ausgelötet, um sie am ATmega in Betrieb zu nehmen. Auf dem Bauteil ist lediglich die Bezeichnung "LFD5924V-10/SP8 N" verzeichnet, unter der sich jedoch keine Datenblätter auftreiben lassen. Ohne diese ist die Inbetriebnahme nahezu unmöglich. Durch etwas Glück fand ich jedoch einen Hinweis auf ein baugleiches Produkt mit der Typen-Bezeichnung A-574G der Firma PARA LIGHT ELECTRONICS CO., LTD..

Datenblatt: http://www.paralight.us/uploads/pdf/A-574G.pdf

7-Segment Anzeige

Der Aufbau ist entsprechend dem Datenblatt sehr einfach. Die Anzeige hat 12 Anschlüsse, 4 entfallen auf die Ansteuerung der aktiven 7-Segment-Anzeige, 8 auf die einzelnen Segmente und den Punkt. Dabei dienen die Pins der Segmente an die Kathoden der LEDs angeschlossen. Die Pins der 7-Segment-Anzeigen entsprechen die Anode. Man spricht von einer gemeinsamen Anoden-Anordnung. Es ist somit möglich, auf allen 4 Anzeigen das gleiche Symbol darzustellen.

Pin Element
1 (markiert) Segment E
2 Segment D
3 Segment DP
4 Segment C
5 Segment G
6 Anzeige 4
7 Segment B
8 Anzeige 3
9 Anzeige 2
10 Segment F
11 Segment A
12 Anzeige 1

Um mehrere Anzeigen mit unterschiedlichen Symbolen gleichzeitig zum Leuchten zu bringen, ist es nötig, die Anzeige mit hoher Frequenz umzuschalten. Da das menschliche Auge sehr träge ist, genügt bereits eine Frequenz von 25 bis 100 Hz, um eine permanente Anzeige darzustellen. Dies lässt sich im ATmega am besten durch einen Timer realisieren.

Für den Anschluss an den ATmega habe ich lediglich eine kleine Steckplatine verwendet. Da 12 Pins schon relativ viel sind, werden die ausgeführten Ports B und D des myAVR Board MKII komplett belegt. Für einen permanenten Einsatz ist die Nutzung eines IO-Expanders via SPI ratsam. Für eine ausgewogene Leuchtdichte der LEDs ist es außerdem sinnvoll, diese mit einem Vorwiderstand zu betreiben. Ich habe mich für 550 Ω entschieden (Pins 12, 9, 8, 6 ohne Vorwiderstand).

Umsetzung

Die Bibliothek umfasst grundlegende Funktionen für die Ansteuerung der einzelnen Elemente. Für den Betrieb mehrerer Anzeigen zur selben Zeit ist die Verwendung eines Timers vorgesehen. Dessen Interrupt-Handle ist je nach Einsatzzweck separat zu füllen. Da die Pinbelegung variieren kann, sind die einzelnen Anschlüsse als Defines ausgelegt. So lassen sie sich schnell editieren um an eine andere 7-Segment-Anzeige angepasst zu werden.

Lizenz

Dieses Programm ist freie Software. Du kannst es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach deiner Option) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es dir von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details findest du in der GNU General Public License.

Die Lizenzvereinbarung stehen folgend zur Verfügung: GPL 3.0 Lizenz

Kompilierung

Der Treiber liegt in Form einer statischen Bibliothek vor. Diese kann einfach zusammen mit einem ausführbaren Programm gelinkt werden. Dazu sind der Header der Bibliothek als auch die Bibliothek selbst notwendig. Neben der Bibliothek liegt ein Testprogramm vor, welches alle Anzeigen im Multiplex-Betrieb durchschaltet und verschiedene Zeichen ausgibt.

Die Bibliothek wurde mit Hilfe von AVR-Eclipse entwickelt. Sie sollte sich in einem Hauptprogramm mit Hilfe des myAVR Workpad SE bzw. Plus oder AVR-Ecplise jederzeit kompilieren und auf ein myAVR Board MK2 USB transferieren lassen. Bei der Nutzung des myAVR Workpad ist dazu die Angabe der Bibliothek in den Datei-Kommentaren notwendig:

// LinkerOption   : -v -L"PATH_TO_7SEG_LIBRARY" -l7SegmentDriver

Unter Eclipse ist die Definition des Symbols __ECLIPSE__ für eine korrekte Kompilierung notwendig, außerdem müssen die Pfäde zu der Bibliothek in den Projekt-Eigenschaften hinterlegt werden. Siehe dazu auch das AVR-Eclipse Tutorial Seite 3.

Die Kompilierung der Bibliothek selbst ohne Hauptprogramm ist lediglich mit AVR-Eclipse vorgesehen. Das myAVR Workpad bietet keine mir bekannte Möglichkeit, eine Bibliothek zu kompilieren.

Bei Fragen oder Anregungen stehe ich gerne zur Verfügung: chkr1989@chkronline.de

Changelog

Version 1.4

Test Version 1.4

Version 1.3

Version 1.2

Version 1.1

Version 1.0

Bibliothek ATmega8 @ 3,6864 MHz

Testprogramm ATmega8 @ 3,6864 MHz

Lizenzinformationen