Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
framework [2019/07/27 16:38]
huwi [Das Betriebssytem]
framework [2019/07/27 16:39]
huwi [Die Applikation]
Zeile 51: Zeile 51:
 Der //​DigitalPort//​ oder besser GPIO-Port ist eigentlich keine Klasse sondern eine Strukturdefinition (Bitfeld). Das bedeutet, dass diese keine Operationen anbietet, sondern nur öffentliche Attribute enthält. Der Zugriff erfolgt über den Punkt-Operator. Der //​DigitalPort//​ kann für elementare Ein- und Ausgabefunktionen genutzt werden. Der //​DigitalPort//​ oder besser GPIO-Port ist eigentlich keine Klasse sondern eine Strukturdefinition (Bitfeld). Das bedeutet, dass diese keine Operationen anbietet, sondern nur öffentliche Attribute enthält. Der Zugriff erfolgt über den Punkt-Operator. Der //​DigitalPort//​ kann für elementare Ein- und Ausgabefunktionen genutzt werden.
  
->>>>>>>>>>>>>​>​{{:​digitalport.jpg?​300|}}+>​{{:​digitalport.jpg?​300|}}
  
 === 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).
  
->>>>​>​{{:​button.jpg?​650|}}+>​{{:​button.jpg?​650|}}
  
 === 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 "​Auftrag"​ bekommen nur kurz aufzublitzen,​ zu blinken oder sogar eine komplexe Blinkfolge auszusenden. 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 "​Auftrag"​ bekommen nur kurz aufzublitzen,​ zu blinken oder sogar eine komplexe Blinkfolge auszusenden.
  
->>>>>>>>>>>>>>​>​{{:​led.jpg?​300|}}+>​{{:​led.jpg?​300|}}
  
 === 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,​ bei denen beim Senden von numerischen Werten diese in ASCII-Codes umgesetzt werden. 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,​ bei denen beim Senden von numerischen Werten diese in ASCII-Codes umgesetzt werden.
  
->>>>>>>>>>>>​>​{{:​uart.jpg?​350|}}+>​{{:​uart.jpg?​350|}}
  
 === 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.
  
->>>>>>>>>>>>>>​>​{{:​string.jpg?​300|}}+>​{{:​string.jpg?​300|}}
  
 === AnalogDevice und Potentiometer === === AnalogDevice und Potentiometer ===
 Für die einfache Erfassung von analogen Daten sind aus dem Framework für das Tutorial die Klassen //​AnalogDevice//​ und //​Potentiometer//​ interessant. Beide Klassen laufen im Free-Run-Modus und können also jederzeit nach dem aktuellen digitalisierten Analogwert gefragt werden. Die Klasse //​AnalogDevice//​ bietet die Rückgabe von 10bit und 8bit Werten, während die Klasse //​Potentiometer//​ die Stellung des Abgriffs in Prozent (0 bis 100) liefert. Für die einfache Erfassung von analogen Daten sind aus dem Framework für das Tutorial die Klassen //​AnalogDevice//​ und //​Potentiometer//​ interessant. Beide Klassen laufen im Free-Run-Modus und können also jederzeit nach dem aktuellen digitalisierten Analogwert gefragt werden. Die Klasse //​AnalogDevice//​ bietet die Rückgabe von 10bit und 8bit Werten, während die Klasse //​Potentiometer//​ die Stellung des Abgriffs in Prozent (0 bis 100) liefert.
  
->>>>>>>>>>>​>​{{:​adc.jpg?​400|}}+>​{{:​adc.jpg?​400|}}
  
 === 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. ​
  
->>>>>>>>>>>>>>​>​{{:​sound.jpg?​480|}}+>​{{:​sound.jpg?​480|}}
  
 ==== Die Applikation ==== ==== Die Applikation ====
 Mit der oben vorgestellten Auswahl von Klassen aus dem myAVR C++ Framework kann die Struktur einer Applikation wie nachfolgend aufgebaut werden. Vergleichen Sie diese Darstellung mit den oben gezeigten Experimentierboards. Mit der oben vorgestellten Auswahl von Klassen aus dem myAVR C++ Framework kann die Struktur einer Applikation wie nachfolgend aufgebaut werden. Vergleichen Sie diese Darstellung mit den oben gezeigten Experimentierboards.
  
->>​{{:​application.jpg?​750|}}+>​{{:​application.jpg?​750|}}
  
->>>>>​>​{{:​mk2abstarkt.jpg|}}+>​{{:​mk2abstarkt.jpg|}}
 ===== Zusammenfassung ===== ===== Zusammenfassung =====
 Damit soll die Kurzvorstellung des Frameworks abgeschlossen werden. Das Tutorial wird auf diesen Klassen aufbauen und deren Anwendung näher erläutern. Um weitere Klassen aus dem Framework kennenzulernen und anzuwenden bieten sich die internen Hilfen in der Entwicklungsumgebung SiSy an. Für diejenigen, welche aufbauend auf dem Framework dieses erweitern und eigene Klassen entwickeln wollen empfehle ich, sich mit der UML in SiSy zu beschäftigen. Damit soll die Kurzvorstellung des Frameworks abgeschlossen werden. Das Tutorial wird auf diesen Klassen aufbauen und deren Anwendung näher erläutern. Um weitere Klassen aus dem Framework kennenzulernen und anzuwenden bieten sich die internen Hilfen in der Entwicklungsumgebung SiSy an. Für diejenigen, welche aufbauend auf dem Framework dieses erweitern und eigene Klassen entwickeln wollen empfehle ich, sich mit der UML in SiSy zu beschäftigen.