Rgf (Diskussion | Beiträge) |
Rgf (Diskussion | Beiträge) |
||
Zeile 77: | Zeile 77: | ||
** Eingabe | ** Eingabe | ||
** Ausgabe | ** Ausgabe | ||
+ | |||
+ | * uvm. | ||
* '''Standardfunktionen''' | * '''Standardfunktionen''' | ||
Zeile 87: | Zeile 89: | ||
Sie unterstützt mit Einschränkungen: | Sie unterstützt mit Einschränkungen: | ||
− | + | * Vererbung | |
− | + | * Datenkapselung | |
− | + | * Polymorphie | |
In der Programmierung gibt es verschiedene Begriffe, deren Bedeutung im Allgemeinen geläufig sind. Die objektorientierte Programmierung besitzt zudem weiterführende Begriffe und Bezeichnungen. Oft verwendete Begriffe sind: | In der Programmierung gibt es verschiedene Begriffe, deren Bedeutung im Allgemeinen geläufig sind. Die objektorientierte Programmierung besitzt zudem weiterführende Begriffe und Bezeichnungen. Oft verwendete Begriffe sind: | ||
− | + | * Variable | |
− | + | * Methode | |
− | + | * Objekt | |
− | + | * Klasse | |
Aufbau und Struktur | Aufbau und Struktur | ||
Zeile 180: | Zeile 182: | ||
==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 | + | * [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 204: | Zeile 206: | ||
Do | Do | ||
Loop | Loop | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> |
Version vom 16. April 2012, 21:44 Uhr
Inhaltsverzeichnis
LunaAVR
Luna ist eine objektbasierte, moderne Basic-ähnliche Programmiersprache, deren Aufbau und Syntax sich an aktuellen Entwicklungswerkzeugen wie z.Bsp. RealStudio® orientiert. Sie ist mit einer einfach zu erlernenden Syntax ausgestattet und eignet sich für die effiziente und zeitsparende Entwicklung von kleinen bis großen Softwareprojekten für AVR Mikrocontroller.
Luna erhebt nicht den Anspruch andere Programmiersprachen zu ersetzen. Vielmehr soll das Angebot an freien Entwicklungswerkzeugen bereichert werden. Luna ist ein privat initiiertes Projekt und kostenlos.
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.
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.
Status des Projekts
Programme
Bibliotheken
- Typkonvertierungen
- Integer<>Single
- Integer<>String
- Single<>String
- Speicherverwaltung
- dynamische Objekte
- Strukturen
- Variablen
- Arrays
- Eeprom
- Strukturen
- Variablen
- Arrays
- Flash (Data)
- Strukturen
- Konstanten
- Math
- Integer 8-32 Bit
- Addition
- Subtraktion
- Multiplikation
- Division
- Fast Increment
- Fast Decrement
- Integer 8-32 Bit
- Floating Point (Single)
- Addition
- Subtraktion
- Multiplikation
- Division
- Fast Increment
- Fast Decrement
- Floating Point (Single)
- String
- Instr()
- Left()
- Right()
- Mid()
- Upper()
- Lower()
- Spc()
- StrFill()
- Chr()
- Mkb()
- Mki()
- Mkw()
- Mkl()
- Mks()
- Bin()
- Hex()
- Str()
- UART
- Konfiguration
- Eingabe
- Ausgabe
- uvm.
- Standardfunktionen
Aufbau und Struktur
Luna ist eine objektbasierte Programmiersprache.
Sie unterstützt mit Einschränkungen:
- Vererbung
- Datenkapselung
- Polymorphie
In der Programmierung gibt es verschiedene Begriffe, deren Bedeutung im Allgemeinen geläufig sind. Die objektorientierte Programmierung besitzt zudem weiterführende Begriffe und Bezeichnungen. Oft verwendete Begriffe sind:
- Variable
- Methode
- Objekt
- Klasse
Aufbau und Struktur
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.
Hinweis: In Luna sind die gebräuchlichsten Hardware-Controllerfunktionen bzw. -Schnittstellen als Objekte abgebildet. Nicht implementierte Abbildungen als Objekt sind normal über den Direktzugriff auf die Konfigurations- und Datenports des Controllers erreichbar. Die Konfiguration z.Bsp. einer Schnittstelle erfolgt dann anhand der Portnamen und Konfigurationsbits laut Datasheet.
Avr | +-- Eigenschaften | | | + Controller-Typ | + Stack-Size | + Größe Arbeitsspeicher | + Größe Eeprom | + Taktrate | + .. +-- Objekte | | | + UART | | | | | + Eigenschaften | | | | | | | + Baudrate | | | + Daten bereit zum empfangen | | | + Daten bereit zum senden | | + Methoden | | | | | | | + Senden | | | + Empfangen | | + Events | | | | | + Daten empfangen | | + Daten gesendet | + Ports | | | | | + Eigenschaften | | | | | + Wert | | + PortBit | | | | | + Eigenschaften | | | | | + Wert | + Arbeitsspeicher | | | | | + Objekte | | | | | + Variablen | | | | | | | + .. | | + MemoryBlock | | | | | + Methoden | | | | | + ByteValue | | + IntegerValue | | + WordValue | | + LongValue | | + SingleValue | | + StringValue | + .. + Methoden | + ..
Man kann nun auf die Eigenschaften und Methoden der Objekte zugreifen um die gewünschten Ziele zu erreichen. Dies vereinfacht den Zugriff auf die Hardware, minimiert die Fehlerrate, dient der Übersichtlichkeit im Programmcode. Dies erleichtert den Weg zur effizienten und zügigen Softwareentwicklung.
Die grundlegende Programmstruktur ist im Allgemeinen Folgende:
- Controllerdefinition
- Konfiguration
- Deklarationen
- Hauptprogramm
- Unterprogramme
- Datenstrukturen
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