Rgf (Diskussion | Beiträge) |
Rgf (Diskussion | Beiträge) |
||
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
=LunaAVR= | =LunaAVR= | ||
− | + | [[Bild:r8s01.jpg|thumb|Luna-IDE]] | |
+ | [[Bild:r8s02.jpg|thumb|Disassembler]] | ||
+ | [[Bild:r8s03.jpg|thumb|LCD-Zeichenditor]] | ||
+ | [[Bild:r8s04.jpg|thumb|GLCD-Pictureeditor]] | ||
+ | [[Bild:r8s05.jpg|thumb|GLCD-Fonteditor]] | ||
− | + | Luna ist eine objektbasierte, moderne Basic- oder Pascal-ähnliche Programmiersprache, deren Aufbau und Syntax sich an aktuellen Entwicklungswerkzeugen orientiert. Sie ist mit einer durchdachten und verständlichen Syntax ausgestattet, bietet jedoch im Gegensatz zu einfacheren Basic-Sprachen wie z.Bsp. BASCOM, wesentlich komplexere Möglichkeiten auf technischer Augenhöhe mit Pascal und C/C++. Sie eignet sich damit für die effiziente und zeitsparende Entwicklung von kleinen bis hin zu großen, anspruchsvollen Softwareprojekten für AVR Mikrocontroller. | |
− | + | Luna besteht aus integrierter Entwicklungsumgebung, einem Präprozessor, Compiler und Assembler. Software kann wahlweise in der IDE oder in einem normalen Texteditor geschrieben werden. | |
− | + | Die IDE bietet hierbei zusätzlich zu den allgemein wünschenswerten Funktionen wie Syntaxfärbung, automatischer Einrückung, Strukturierung von Bedingungen inklusive Ein- und Ausklappfunktion, eine direkte Unterstützung der in Luna abgebildeten Hardware und Software-Objekte bzw. -Klassen der einzelnen AVR Controller. Zusätzlich sind ein Bibliothekseditor, Verzeichnis der Controller-Defines und weitere nützliche Werkzeuge vorhanden. | |
− | + | Das erzeugte Binary und die Ausführungsgeschwindigkeit sind von der Größe her vergleichbar mit existierenden Hochsprachen wie z.Bsp. C/C++. Es gibt keine Beschränkung bei der Tiefe von Ausdrücken wie z.Bsp. in BASCOM. Zudem bietet es eine hochoptimierte dynamische Speicherverwaltung (dynamische Strings oder Speicherblöcke), Speicherstrukturen, dynamische Objekte, selbst erstellbare Klassen und Datenstrukturen. | |
− | + | ||
− | + | ||
− | + | Die AVR-spezifischen Code-Teile sind quelloffen und vollständig in Assembler geschrieben. | |
− | + | ||
− | + | ||
− | === | + | ==Status des Projekts== |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Luna bietet eine vollwertige, kostenlose Entwicklungsumgebung mit Compiler, Präprozessor, Assembler und Disassembler. Zusätzlich ist ein Library-Browser/Editor integriert, mit dem man die Standardbbliotheksfunktionen des Compilers einsehen und editieren kann (Assembler). Luna ist zudem für Windows, Linux und Mac-OS verfügbar. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | Es sind sehr umfangreiche Befehle und Funktionen zur Stringmanipulation, Speicherverwaltung, Bitmanipulation, Arithmetik (inklusive einer Fließkommaarithmetik) uvm. implementiert. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | [http://avr.myluna.de/doku.php?id=de:befehlsuebersicht Der Befehlssatz von Luna] | ||
== Aufbau und Struktur == | == Aufbau und Struktur == | ||
− | + | Luna ist eine objektbasierte Programmiersprache. | |
− | + | Im Unterschied zur „normalen“ rein prozeduralen Programmierung, sind bei der objektbasierten/objektorientierten Programmierung sogutwie alle Elemente der Programmiersprache in bestimmte Strukturen zusammengefasst. Diese Struktur beeinflusst auch die Art und Weise der Syntax, also wie man eine gewünschte Funktionalität schriftlich ausdrückt. | |
− | + | Jeder AVR-Mikrocontroller ist intern als eine sogenannte „Klasse“ (die Basisklasse) implementiert. Diese beschreibt, welche Objekte (z.Bsp.: Ports, Timer, Wandler, Schnittstellen, ..) und Eigenschaften (Größe des Arbeitsspeichers, Eeprom-Größe, Taktrate, Baudrate, ..) der Controller besitzt. Die davon abgebildeten Objekte erben die Eigenschaften bzw. Attribute dieser Basisklasse, sodass beispielsweise bestimmte Methoden und Eigenschaften nur dann zugänglich sind, wenn sie in der übergeordneten Klasse (in diesem Fall der Controller) vorhanden sind. | |
− | + | ||
− | Jeder AVR-Mikrocontroller ist intern als eine sogenannte | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | Luna unterstützt [http://de.wikipedia.org/wiki/Klasse_%28Programmierung%29 Klassen], womit Module und in sich geschlossene Codebereiche erstellt werden können. | ||
==Weblinks== | ==Weblinks== | ||
* [http://avr.myluna.de Offizielle Dokumentationsseite vom LunaAVR-Projekt] | * [http://avr.myluna.de Offizielle Dokumentationsseite vom LunaAVR-Projekt] | ||
− | + | * [http://avr.myluna.de/doku.php?id=de:download Download aktuelle Version] | |
− | + | * [http://avr.myluna.de/doku.php?id=de:beispiel-sourcen Beispiel-Sourcen] | |
[[Kategorie:Microcontroller]] | [[Kategorie:Microcontroller]] | ||
Zeile 168: | Zeile 46: | ||
[[Kategorie:Praxis]] | [[Kategorie:Praxis]] | ||
[[Kategorie:Quellcode LunaAVR]] | [[Kategorie:Quellcode LunaAVR]] | ||
+ | |||
+ | '''BeispielSource: helloworld.luna''' | ||
+ | <pre> | ||
+ | avr.device = attiny2313 | ||
+ | avr.clock = 20000000 ' Quarzfrequenz | ||
+ | avr.stack = 16 ' Bytes Programmstack (Vorgabe: 16) | ||
+ | |||
+ | uart.baud = 19200 ' Baudrate | ||
+ | uart.Recv.enable ' Senden aktivieren | ||
+ | uart.Send.enable ' Empfangen aktivieren | ||
+ | |||
+ | print "Hallo Welt" | ||
+ | |||
+ | Do | ||
+ | Loop | ||
+ | </pre> |
Aktuelle Version vom 3. Dezember 2012, 13:32 Uhr
Inhaltsverzeichnis
LunaAVR
Luna ist eine objektbasierte, moderne Basic- oder Pascal-ähnliche Programmiersprache, deren Aufbau und Syntax sich an aktuellen Entwicklungswerkzeugen orientiert. Sie ist mit einer durchdachten und verständlichen Syntax ausgestattet, bietet jedoch im Gegensatz zu einfacheren Basic-Sprachen wie z.Bsp. BASCOM, wesentlich komplexere Möglichkeiten auf technischer Augenhöhe mit Pascal und C/C++. Sie eignet sich damit für die effiziente und zeitsparende Entwicklung von kleinen bis hin zu großen, anspruchsvollen Softwareprojekten für AVR Mikrocontroller.
Luna besteht aus integrierter Entwicklungsumgebung, einem Präprozessor, Compiler und Assembler. Software kann wahlweise in der IDE oder in einem normalen Texteditor geschrieben werden.
Die IDE bietet hierbei zusätzlich zu den allgemein wünschenswerten Funktionen wie Syntaxfärbung, automatischer Einrückung, Strukturierung von Bedingungen inklusive Ein- und Ausklappfunktion, eine direkte Unterstützung der in Luna abgebildeten Hardware und Software-Objekte bzw. -Klassen der einzelnen AVR Controller. Zusätzlich sind ein Bibliothekseditor, Verzeichnis der Controller-Defines und weitere nützliche Werkzeuge vorhanden.
Das erzeugte Binary und die Ausführungsgeschwindigkeit sind von der Größe her vergleichbar mit existierenden Hochsprachen wie z.Bsp. C/C++. Es gibt keine Beschränkung bei der Tiefe von Ausdrücken wie z.Bsp. in BASCOM. Zudem bietet es eine hochoptimierte dynamische Speicherverwaltung (dynamische Strings oder Speicherblöcke), Speicherstrukturen, dynamische Objekte, selbst erstellbare Klassen und Datenstrukturen.
Die AVR-spezifischen Code-Teile sind quelloffen und vollständig in Assembler geschrieben.
Status des Projekts
Luna bietet eine vollwertige, kostenlose Entwicklungsumgebung mit Compiler, Präprozessor, Assembler und Disassembler. Zusätzlich ist ein Library-Browser/Editor integriert, mit dem man die Standardbbliotheksfunktionen des Compilers einsehen und editieren kann (Assembler). Luna ist zudem für Windows, Linux und Mac-OS verfügbar.
Es sind sehr umfangreiche Befehle und Funktionen zur Stringmanipulation, Speicherverwaltung, Bitmanipulation, Arithmetik (inklusive einer Fließkommaarithmetik) uvm. implementiert.
Aufbau und Struktur
Luna ist eine objektbasierte Programmiersprache.
Im Unterschied zur „normalen“ rein prozeduralen Programmierung, sind bei der objektbasierten/objektorientierten Programmierung sogutwie alle Elemente der Programmiersprache in bestimmte Strukturen zusammengefasst. Diese Struktur beeinflusst auch die Art und Weise der Syntax, also wie man eine gewünschte Funktionalität schriftlich ausdrückt.
Jeder AVR-Mikrocontroller ist intern als eine sogenannte „Klasse“ (die Basisklasse) implementiert. Diese beschreibt, welche Objekte (z.Bsp.: Ports, Timer, Wandler, Schnittstellen, ..) und Eigenschaften (Größe des Arbeitsspeichers, Eeprom-Größe, Taktrate, Baudrate, ..) der Controller besitzt. Die davon abgebildeten Objekte erben die Eigenschaften bzw. Attribute dieser Basisklasse, sodass beispielsweise bestimmte Methoden und Eigenschaften nur dann zugänglich sind, wenn sie in der übergeordneten Klasse (in diesem Fall der Controller) vorhanden sind.
Luna unterstützt Klassen, womit Module und in sich geschlossene Codebereiche erstellt werden können.
Weblinks
BeispielSource: helloworld.luna
avr.device = attiny2313 avr.clock = 20000000 ' Quarzfrequenz avr.stack = 16 ' Bytes Programmstack (Vorgabe: 16) uart.baud = 19200 ' Baudrate uart.Recv.enable ' Senden aktivieren uart.Send.enable ' Empfangen aktivieren print "Hallo Welt" Do Loop