Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
framework [2019/01/29 15:33] – Externe Bearbeitung 127.0.0.1 | framework [2019/07/27 16:38] – [Ausgewählte Bausteine] huwi | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
Der Ausgangspunkt für die folgenden Betrachtungen des Frameworks ist das myAVR Board MK2. Es kann natürlich auch das myAVR Board light dafür herangezogen werden. | Der Ausgangspunkt für die folgenden Betrachtungen des Frameworks ist das myAVR Board MK2. Es kann natürlich auch das myAVR Board light dafür herangezogen werden. | ||
- | {{: | + | >{{: |
Das Board verfügt über einen ATmega8 mit 3,6864 Mhz und über folgende für die Programmierung relevante externe Bausteine: | Das Board verfügt über einen ATmega8 mit 3,6864 Mhz und über folgende für die Programmierung relevante externe Bausteine: | ||
Zeile 25: | Zeile 25: | ||
===== Abstraktion vom myAVR Board MK2 zur Klassenbibliothek ===== | ===== Abstraktion vom myAVR Board MK2 zur Klassenbibliothek ===== | ||
- | >>>>> | + | > |
Von der Gegenständlichkeit loslösen heißt, den Dingen Namen zu geben. In den folgenden Übersichten orientieren wir uns an dem Darstellungsstandard der UML. Das ist weniger schwierig, als es klingt. Wer ein Viereck zeichnen kann, kann auch UML. Die Dinge sind Vierecke und die Beziehungen zwischen den Dingen werden als Verbindungen gezeichnet. Die Namen, welche wir den Dingen geben, schreiben wir in das betreffende Viereck. Wohin sonst? Damit bestimmte Verbindungen dem Betrachter verständlicher werden, erlaubt, ja bittet die UML, diese zu beschriften. | Von der Gegenständlichkeit loslösen heißt, den Dingen Namen zu geben. In den folgenden Übersichten orientieren wir uns an dem Darstellungsstandard der UML. Das ist weniger schwierig, als es klingt. Wer ein Viereck zeichnen kann, kann auch UML. Die Dinge sind Vierecke und die Beziehungen zwischen den Dingen werden als Verbindungen gezeichnet. Die Namen, welche wir den Dingen geben, schreiben wir in das betreffende Viereck. Wohin sonst? Damit bestimmte Verbindungen dem Betrachter verständlicher werden, erlaubt, ja bittet die UML, diese zu beschriften. | ||
Zeile 32: | Zeile 32: | ||
Im Zentrum unserer Betrachtung steht der Controller. OK, da ist er. Ein Rechteck mit dem Namen Controller. Ganz nebenbei wissen wir, dass auf unserem Board ein ATmega8 verbaut wurde. Der Controller ist also ein ATmega8. | Im Zentrum unserer Betrachtung steht der Controller. OK, da ist er. Ein Rechteck mit dem Namen Controller. Ganz nebenbei wissen wir, dass auf unserem Board ein ATmega8 verbaut wurde. Der Controller ist also ein ATmega8. | ||
- | >>>>>>> | + | > |
==== Das Betriebssytem ==== | ==== Das Betriebssytem ==== | ||
Betriebssystem ist natürlich übertrieben, | Betriebssystem ist natürlich übertrieben, | ||
- | >>>>>>>>>>>>>>>>>>>> | + | > |
Von besonderem Interesse sind für uns die Operationen **onStart** und **onWork**. Der UML Spezialist erkennt scharfen Auges an der kursiven Schrift der beiden Operationen sofort, dass diese virtuell sind, also vom Anwendungsentwickler (das sind Sie) überschrieben werden können. Das bedeutet nichts weiter, als dass Sie diese beiden Operationen in ihrer Applikation selbst noch mal hinschreiben können und das Framework diese automatisch zum richtigen Zeitpunkt aufruft. Das sind sogenannte Ereignishandler. Davon werden wir noch einige sehen. Wie wir diese richtig nutzen, wird im Tutorial beschrieben. Um diesen Aspekt noch etwas näher zu beleuchten, schauen wir uns noch an wie es möglich ist, dass bestimmte Bausteine selbstständig (parallel) ihre Aufgaben erfüllen können. Selbstständig arbeitende Bausteine sind von der Klasse // | Von besonderem Interesse sind für uns die Operationen **onStart** und **onWork**. Der UML Spezialist erkennt scharfen Auges an der kursiven Schrift der beiden Operationen sofort, dass diese virtuell sind, also vom Anwendungsentwickler (das sind Sie) überschrieben werden können. Das bedeutet nichts weiter, als dass Sie diese beiden Operationen in ihrer Applikation selbst noch mal hinschreiben können und das Framework diese automatisch zum richtigen Zeitpunkt aufruft. Das sind sogenannte Ereignishandler. Davon werden wir noch einige sehen. Wie wir diese richtig nutzen, wird im Tutorial beschrieben. Um diesen Aspekt noch etwas näher zu beleuchten, schauen wir uns noch an wie es möglich ist, dass bestimmte Bausteine selbstständig (parallel) ihre Aufgaben erfüllen können. Selbstständig arbeitende Bausteine sind von der Klasse // | ||
- | >>>>>>>>>> | + | > |
Auffällig ist hier zum einen, dass der Controller jetzt einen Timer hat und zum anderen die widerum virtuellen Operationen // | Auffällig ist hier zum einen, dass der Controller jetzt einen Timer hat und zum anderen die widerum virtuellen Operationen // | ||
Zeile 51: | Zeile 51: | ||
Der // | Der // | ||
- | >>>>>>>>>>>>> | + | > |
=== Button === | === Button === | ||
Die Klasse //Button// ist spezialisiert auf das Handling von Tastern. Eine Benutzerinteraktion über Taster kann effizient und vielfältig geführt werden. Dabei ist die Klasse in der Lage zwischen kurzem Klicken und halten der Taste zu unterscheiden. Die entsprechenden Ereignisse werden an die Applikation gesendet (onEvent). | Die Klasse //Button// ist spezialisiert auf das Handling von Tastern. Eine Benutzerinteraktion über Taster kann effizient und vielfältig geführt werden. Dabei ist die Klasse in der Lage zwischen kurzem Klicken und halten der Taste zu unterscheiden. Die entsprechenden Ereignisse werden an die Applikation gesendet (onEvent). | ||
- | >>>> | + | > |
=== Led === | === Led === | ||
Die Klasse //Led// ist für typische Anwendungen einfacher LEDs konzipiert. Dabei können diese nicht nur ein-, aus- und umgeschaltet werden, sondern vom Programmierer den " | Die Klasse //Led// ist für typische Anwendungen einfacher LEDs konzipiert. Dabei können diese nicht nur ein-, aus- und umgeschaltet werden, sondern vom Programmierer den " | ||
- | >>>>>>>>>>>>>> | + | > |
=== Uart === | === Uart === | ||
Zur Klasse //Uart// ist eigentlich nicht viel zu sagen. Diese bietet neben der üblichen Funktionalität zusätzlich die Möglichkeit SRAM-schonend konstante Zeichenketten aus dem FLASH zu senden. Außerdem auch kleinere Konvertierungsfunktionen, | Zur Klasse //Uart// ist eigentlich nicht viel zu sagen. Diese bietet neben der üblichen Funktionalität zusätzlich die Möglichkeit SRAM-schonend konstante Zeichenketten aus dem FLASH zu senden. Außerdem auch kleinere Konvertierungsfunktionen, | ||
- | >>>>>>>>>>>> | + | > |
=== String === | === String === | ||
Eine besondere Erleichterung im Umgang mit Zeichenketten stellt die Klasse //String// dar. Diese erlaubt einen modernen Umgang mit Zeichenketten. Der Komfort ist jedoch nicht umsonst zu haben. Diese Klasse benötigt natürlich auch entsprechenden Programmspeicher für die gebotene Funktionalität. | Eine besondere Erleichterung im Umgang mit Zeichenketten stellt die Klasse //String// dar. Diese erlaubt einen modernen Umgang mit Zeichenketten. Der Komfort ist jedoch nicht umsonst zu haben. Diese Klasse benötigt natürlich auch entsprechenden Programmspeicher für die gebotene Funktionalität. | ||
- | >>>>>>>>>>>>>> | + | > |
=== AnalogDevice und Potentiometer === | === AnalogDevice und Potentiometer === | ||
Für die einfache Erfassung von analogen Daten sind aus dem Framework für das Tutorial die Klassen // | Für die einfache Erfassung von analogen Daten sind aus dem Framework für das Tutorial die Klassen // | ||
- | >>>>>>>>>>> | + | > |
=== Sound === | === Sound === | ||
Für die komfortable Anwendung des Piezoschallwandlers oder mit entsprechender Treiberstufe auch eines Lautsprechers bietet das Framework die Klasse //Sound//. Von der einfachen Tonausgabe über Tonfolgen bis hin zu kleinen Melodien ist der Programmierer mit dieser Klasse in der Lage die Mensch-Maschine-Schnittstelle mit einer akustischen Ausgabe zu versehen. | Für die komfortable Anwendung des Piezoschallwandlers oder mit entsprechender Treiberstufe auch eines Lautsprechers bietet das Framework die Klasse //Sound//. Von der einfachen Tonausgabe über Tonfolgen bis hin zu kleinen Melodien ist der Programmierer mit dieser Klasse in der Lage die Mensch-Maschine-Schnittstelle mit einer akustischen Ausgabe zu versehen. | ||
- | >>>>>>>>>>>>>> | + | > |
==== Die Applikation ==== | ==== Die Applikation ==== |