{"id":2495,"date":"2013-05-27T20:31:27","date_gmt":"2013-05-27T18:31:27","guid":{"rendered":"http:\/\/www.brennecke.org\/?page_id=2495"},"modified":"2013-05-30T13:30:32","modified_gmt":"2013-05-30T11:30:32","slug":"erklarung-der-betriebssoftware","status":"publish","type":"page","link":"https:\/\/www.brennecke.org\/?page_id=2495","title":{"rendered":"Erkl\u00e4rung der Betriebssoftware"},"content":{"rendered":"<h2>\u00dcbersicht<\/h2>\n<p>Die Software des Mikrocontroller Labs besteht aus drei Teilen:<\/p>\n<ul>\n<li>Der Grafikcontroller bietet eine High-Level-Schnittstelle, um verschiedene Grafiktypen auf den Bildschirm zu bringen. Diese kann vom Hauptcontroller mittels serieller Befehle angesprochen werden.<\/li>\n<li>Der Touchscreen- und Tastaturcontroller sendet Informationen \u00fcber die Eingaben an den Hauptcontroller. Der Touchscreen meldet sich dazu per Hardware-Interrupt, die Tastatur wird durch einfaches Polling abgefragt. Die Tasten werden softwareseitig entprellt.<\/li>\n<li>Um beide Informationen zu brauchbaren Funktionen zu verkn\u00fcpfen, ben\u00f6tigt ein Programm auf dem Hauptcontroller Bibliotheken, die diese Funktionen bereitstellen. Damit wird das Entwickeln f\u00fcr das Lab \u00e4hnlich einfach wie f\u00fcr den Arduino &#8211; mit der Zugabe einer intelligenten, schnellen grafischen Schnittstelle, die man nicht mehr selbst bauen muss.<\/li>\n<\/ul>\n<h2>Die einzelnen Modi<\/h2>\n<p>Der Grafikcontroller bietet insgesamt 14 verschiedene Funktionen:<\/p>\n<ul>\n<li><strong>Terminalmodus<\/strong> &#8211; Zeichen werden hintereinander am Bildschirm ausgegeben. Farbe und Hintergrundfarbe k\u00f6nnen festgelegt werden, ebenso die Ausgabeposition. Zur Wahl stehen drei Fonts, von denen der mittlere der zum Lesen angenehmste ist. Mit ihm k\u00f6nnen 16 Zeilen a 40 Zeichen ausgegeben werden. Durch die Wahl der Ausgabeposition k\u00f6nnen auch einfache Textbildschirme umgesetzt werden.<\/li>\n<li><strong>Balkengrafik<\/strong> &#8211; hier k\u00f6nnen ein bis acht Balken in zweihundert Stufen dargestellt werden. Die Farben der Balken k\u00f6nnen insgesamt oder einzeln festgelegt werden. Die Zeichengeschwindigkeit ist lediglich durch die serielle Schnittstelle (19.200 Bit\/s = maximal 300 Aktualisierungen aller acht Balken pro Sekunde) limitiert.<\/li>\n<li><strong>Messwerte<\/strong> &#8211; hier wird ein Raster auf den Bildschirm gezeichnet, das von links nach rehts durch \u00fcbergebene Werte \u00fcberschrieben wird (Wertebereich 0..200). Wenn die Zeichnung ganz rechts angekommen ist, beginnt sie links wieder. Auch das Raster wird eimmal neu gezeichnet, so dass man die aktuelle Zeichenposition leicht erkennen kann. Die Farbe des Verlaufs ist einstellbar, au\u00dferdem kann unterhalb der Grafik ein Text dargestellt werden. Diese Funktion ist damit f\u00fcr Langzeitmessungen gut geeignet, da sie 256 Messwerte speichern kann. Die maximale Aktualisierung liegt bei 2400 Hz \/ 2400 Werte pro Sekunde, womit man schon ein einfaches Oszilloskop bauen kann.<\/li>\n<li><strong>Menue<\/strong> &#8211; eine typische Men\u00fcdarstellung mit \u00dcberschrift (schwarz auf wei\u00dfem Grund) und maximal f\u00fcnf Auswahlwerten, die per Touchscreen oder Tastatur (Rechts-Links-OK) ausgew\u00e4hlt werden k\u00f6nnen. Der ausgew\u00e4hlte Eintrag wird hervorgehoben dargestellt. Hierzu wurde in der Bibliothek eine spezielle Funktion &#8222;Show_Menu&#8220; geschaffen, die nach ihrem Aufruf mit dem Wert des ausgew\u00e4hlten Eintrags zur\u00fcckkehrt.<\/li>\n<li><strong> Bildschirmtastatur f\u00fcr Texteingabe<\/strong> &#8211; ein Tastenfeld mit 26 Zeichen und 10 Ziffern, dazu zwei Schaltern f\u00fcr &#8222;OK&#8220; und &#8222;Abbrechen&#8220;. Wozu auch immer man Text eingeben mag &#8211; hier ist die M\u00f6glichkeit dazu. Ungel\u00f6st ist bisher noch die Frage mach Gro\u00df-Kleinschreibung und dem Leerzeichen. Hierzu wurde in der Bibliothek eine spezielle Funktion &#8222;Show_Keyboard&#8220; geschaffen, die nach ihrem Aufruf mit dem eingegebenen Wert zur\u00fcckkehrt. Der 3D-Effekt entsteht \u00fcbrigens einfach dadurch, dass zwei Seiten der Kn\u00f6pfe wei\u00df und zwei schwarz gezeichnet werden &#8211; beim gedr\u00fcckten Knopf sind es genau die jeweils entgegen gesetzen Seiten.<\/li>\n<li><strong>Bildschirmtastatur f\u00fcr Zahleneingabe<\/strong> &#8211; wie oben, aber nur zur Eingabe von Zahlen. Zus\u00e4tzlich kann man angeben, in welchem Bereich die Zahlen liegen sollen. Eine Pr\u00fcfung findet noch innerhalb der Funktion statt. Hierzu wurde in der Bibliothek eine spezielle Funktion &#8222;Show_Keyboard&#8220; geschaffen, die nach ihrem Aufruf mit dem eingegebenen Wert &#8211; innerhalb der zul\u00e4ssigen Grenzen &#8211; zur\u00fcckkehrt.<\/li>\n<li><strong>Bildschirmtastatur<\/strong>\u00a0<strong>ohne Beschriftungen<\/strong> &#8211; man kann das Keyboard auch selbst beschriften und dann auswerten. Dazu sind in der Bibliothek Funktionen zur Reaktion der Kn\u00f6pfe beim Dr\u00fccken und Loslassen vorhanden. Ich habe in die Beispielanwendung einen einfachen Taschenrechner eingebaut, der das Prinzip zeigt: Die Kn\u00f6pfe werden von der Grafikbibliothek und dem Touchscreen gesteuert, aber Beschriftungen und die ganze Arbeit dahinter muss das Hauptprogramm selbst besorgen. Dank ein paar guter String-Float-Konverterfunktionen, die zum AVR-Standard geh\u00f6ren, gelingt das aber mit wenig Aufwand.<\/li>\n<li><strong>Messagebox<\/strong> &#8211; eine Dialogbox, die ein Fenster darstellt mit \u00dcberschrift (in doppelter Schrifth\u00f6he) und drei Zeilen. Man kann au\u00dferdem aus den folgenden Schaltfl\u00e4chen w\u00e4hlen: OK\/Abbrechen, Ja\/Nein, Zur\u00fcck\/OK\/Weiter, Zur\u00fcck\/Weiter, OK. Hierzu wurde in der Bibliothek eine spezielle Funktion &#8222;Messagebox&#8220; geschaffen, die nach ihrem Aufruf mit dem Wert des ausgew\u00e4hlten Eintrags zur\u00fcckkehrt.<br \/>\n<strong><\/strong><\/li>\n<li><strong>8fach-LED-Bildschirm<\/strong> &#8211; ein Bildschirm, der acht farbige Rechtecke horizontal anordnet und dazu die Ausgabe eines Textes oberhalb erlaubt. Dieser Modus orientiert sich an den 8 LEDs des MC6400-Originals. Die &#8222;LED&#8220; k\u00f6nnen aber in rot, gelb, gr\u00fcn, blau und wei\u00df oder in Kombination oder Regenbogenfarbe leuchten.<\/li>\n<li><strong>3fach-LED<\/strong> &#8211; ein Bildschirm in Ampelanordnung und -farbe, der drei farbige Rechtecke vertikal anordnet. Dieser Modus orientiert sich an den 3 farbigen LEDs des MC6400-Originals.<\/li>\n<li><strong>Farbpalette<\/strong> &#8211; zeichnet Rechtecke mit Farbwerten absteigend von 255..0. Der Touchscreen liefert in diesem Fall Koordinaten, so dass die angetippte Farbe leicht bestimmt werden kann.<br \/>\n<strong><\/strong><\/li>\n<li><strong>Freie Grafiken zeichnen<\/strong> &#8211; ein schwarzer Bildschirm, auf dem wahlweise (auch gef\u00fcllte) Rechtecke, Linien und Punkte dargestellt werden k\u00f6nnen. Um Texte ausgeben zu k\u00f6nnen, kann zwischendurch in einen Terminalmodus geschaltet werden (siehe oben). Farben k\u00f6nnen festgelegt oder \u00fcber die eingebaute Farbpalette (siehe oben) ausgew\u00e4hlt werden.<\/li>\n<li><strong>Schieberegler<\/strong> &#8211; ein Modus, in dem ein Regler mit dem Wertebereich 0..199 gezeichnet wird und wahlweise durch die Kn\u00f6pfe links und rechts, die Tastatur oder durch Antippen verschoben werden kann. Hierzu wurde in der Bibliothek eine spezielle Funktion &#8222;Slider&#8220; geschaffen, die nach ihrem Aufruf mit dem Wert des ausgew\u00e4hlten Eintrags zur\u00fcckkehrt. Diese Funktion akzeptiert beliebige Bereiche und rechnet das Ergebnis des Schiebereglers automatisch um.<\/li>\n<li><strong>Touchscreen-Kalibrierung<\/strong> &#8211; dieser Modus dient einzig zur Kalibrierung des Touchscreens. In der Bibliothek findet sich dazu eine Funktion &#8222;Calibrate&#8220;, die &#8211; einmal aufgerufen &#8211; vier rote Ecken und Hinweise auf den Bildschirm zeichnet. Die Ecken m\u00fcssen nacheinander angetippt werden und werden bei Erfolg gr\u00fcn dargestellt. Die Funktion pr\u00fcft sehr genau auf Korrektheit der Ergebnisse, damit eine Fehlkalibrierung vermieden wird. Trotzdem Vorsicht! Die ermittelten Werte werden im EEPROM des Touchscreen-Controllers gespeichert, damit sie beim n\u00e4chsten Einschalten wieder zur Verf\u00fcgung stehen.<\/li>\n<\/ul>\n<h2>\u00a0Warum nicht noch mehr Grafik?<\/h2>\n<p>Die Frage, wie viele Grafikelemente man im Grafikcontroller ablegt, ist weniger eine Frage der Ideen oder der Kunst, sondern vielmehr eine des Platzes. Der benutzte Controller besitzt nur 8kByte Speicher zur Ablage von Programmen. Mit den jetzt implementierten Funktionen ist er zu 99% voll &#8211; ein paar Bytes habe ich noch \u00fcbrig f\u00fcr Fehlerbehebungen. Ein paar weitere Bemerkungen dazu\u00a0:<\/p>\n<ul>\n<li>Das Original bot eine Funktion zur Darstellung von Bitmaps &#8211; darauf habe ich hier zun\u00e4chst verzichtet. Die Funktion ist aber noch vorhanden.<\/li>\n<li>Ebenso vorhanden, aber abgeschaltet sind ein paar Terminalfunktionen wie das L\u00f6schen des aktuellen Zeichens, der aktuellen Zeile usw.<\/li>\n<li>Farben k\u00f6nnen nur mit einem Byte-Wert ge\u00e4ndert werden. Es sind aber ausgeklammerte Funktionen vorhanden, mit denen Farben auch als RGB-Wert \u00fcbergeben werden k\u00f6nnen.<\/li>\n<li>Der benutzte Font ist stark reduziert &#8211; alle Sonderzeichen bis #32 ab #127 sind weggelassen, die deutschen Sonderzeichen sind an un\u00fcblichen Pl\u00e4tzen (was die Schriftroutine intern korrigiert). Allein das brachte eine Ersparnis von einem halben kByte.<\/li>\n<\/ul>\n<p>Der Einsatz eines anderen, gr\u00f6\u00dferen Mikrocontrollers w\u00e4re wahrscheinlich m\u00f6glich. Man ist dabei aber auf jene beschr\u00e4nkt, die ein externes RAM ansteuern k\u00f6nnen. Und zudem muss die Gr\u00f6\u00dfe des internen Speichers (RAM) vom externen abgezogen werden, da insgesamt nur 64 kByte gleichzeitig adressiert werden k\u00f6nnen. Das ist auch der Grund, warum die Grafikaufl\u00f6sung nicht 256&#215;256, sondern nur 256&#215;252 Pixel betr\u00e4gt &#8211; das interne TAM mit 1 kByte muss abgezogen werden.<\/p>\n<h2>Beispiele<\/h2>\n<p>Die folgenden Grafiken zeigen einige der m\u00f6glichen Funktionen<\/p>\n<p><a href=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-1.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"Modus 1\" src=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-1.png\" width=\"958\" height=\"546\" \/><\/a> <a href=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-2.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"Modus 2\" src=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-2.png\" width=\"958\" height=\"541\" \/><\/a> <a href=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-3.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"Modus 3\" src=\"http:\/\/www.brennecke.org\/wp-content\/uploads\/2013\/05\/Modus-3.png\" width=\"957\" height=\"538\" \/><\/a><\/p>\n<p>(Wird fortgesetzt)<\/p>\n<p><a title=\"Mikrocontroller-Lab 2.0\" href=\"http:\/\/www.brennecke.org\/?page_id=2396\">Zur\u00fcck zur Hauptseite<\/a><\/p>\n<div class=\"twoclick_social_bookmarks_post_2495 social_share_privacy clearfix 1.6.4 locale-de_DE sprite-de_DE\"><\/div><div class=\"twoclick-js\"><script type=\"text\/javascript\">\/* <![CDATA[ *\/\njQuery(document).ready(function($){if($('.twoclick_social_bookmarks_post_2495')){$('.twoclick_social_bookmarks_post_2495').socialSharePrivacy({\"services\":{\"facebook\":{\"status\":\"on\",\"txt_info\":\"2 Klicks f\\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \\u00fcbertragen - siehe <em>i<\\\/em>.\",\"perma_option\":\"off\",\"action\":\"recommend\",\"language\":\"de_DE\"},\"twitter\":{\"reply_to\":\"\",\"tweet_text\":\"Erkl%C3%A4rung%20der%20Betriebssoftware%20%C2%BB%2053%20Cent\",\"status\":\"on\",\"txt_info\":\"2 Klicks f\\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \\u00fcbertragen - siehe <em>i<\\\/em>.\",\"perma_option\":\"off\",\"language\":\"de\",\"referrer_track\":\"\"},\"gplus\":{\"status\":\"on\",\"txt_info\":\"2 Klicks f\\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \\u00fcbertragen - siehe <em>i<\\\/em>.\",\"perma_option\":\"off\",\"referrer_track\":\"\"},\"flattr\":{\"uid\":\"\",\"status\":\"on\",\"the_title\":\"Erkl%C3%A4rung%20der%20Betriebssoftware\",\"the_excerpt\":\"%C3%9Cbersicht%0D%0ADie%20Software%20des%20Mikrocontroller%20Labs%20besteht%20aus%20drei%20Teilen%3A%0D%0A%0D%0A%09Der%20Grafikcontroller%20bietet%20eine%20High-Level-Schnittstelle%2C%20um%20verschiedene%20Grafiktypen%20auf%20den%20Bildschirm%20zu%20bringen.%20Diese%20kann%20vom%20Hauptcontroller%20mittels%20serieller%20Befehle%20angesprochen%20werden.%0D%0A%09Der%20Touchscreen-%20und%20Tastaturcontroller%20sendet%20Informationen%20%C3%BCber%20die%20Eingaben%20an%20den%20Hauptcontroller.%20Der%20Touchscreen%20m%20...\",\"txt_info\":\"2 Klicks f\\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\\u00f6nnen Ihre Empfehlung an Flattr senden. Schon beim Aktivieren werden Daten an Dritte \\u00fcbertragen - siehe <em>i<\\\/em>.\",\"perma_option\":\"off\"}},\"txt_help\":\"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter, Flattr, Xing, t3n, LinkedIn, Pinterest oder Google eventuell ins Ausland \\u00fcbertragen und unter Umst\\u00e4nden auch dort gespeichert. N\\u00e4heres erfahren Sie durch einen Klick auf das <em>i<\\\/em>.\",\"settings_perma\":\"Dauerhaft aktivieren und Daten\\u00fcber-tragung zustimmen:\",\"info_link\":\"http:\\\/\\\/www.heise.de\\\/ct\\\/artikel\\\/2-Klicks-fuer-mehr-Datenschutz-1333879.html\",\"uri\":\"https:\\\/\\\/www.brennecke.org\\\/?page_id=2495\",\"post_id\":2495,\"post_title_referrer_track\":\"Erkl%C3%A4rung+der+Betriebssoftware\",\"display_infobox\":\"on\"});}});\n\/* ]]> *\/<\/script><\/div>","protected":false},"excerpt":{"rendered":"<p>\u00dcbersicht Die Software des Mikrocontroller Labs besteht aus drei Teilen: Der Grafikcontroller bietet eine High-Level-Schnittstelle, um verschiedene Grafiktypen auf den Bildschirm zu bringen. Diese kann vom Hauptcontroller mittels serieller Befehle angesprochen werden. Der Touchscreen- und Tastaturcontroller sendet Informationen \u00fcber die &hellip; <a href=\"https:\/\/www.brennecke.org\/?page_id=2495\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2444,"parent":2396,"menu_order":4,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/pages\/2495"}],"collection":[{"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2495"}],"version-history":[{"count":6,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/pages\/2495\/revisions"}],"predecessor-version":[{"id":2506,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/pages\/2495\/revisions\/2506"}],"up":[{"embeddable":true,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/pages\/2396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.brennecke.org\/index.php?rest_route=\/wp\/v2\/media\/2444"}],"wp:attachment":[{"href":"https:\/\/www.brennecke.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}