{"id":551,"date":"2014-11-21T10:57:08","date_gmt":"2014-11-21T09:57:08","guid":{"rendered":"http:\/\/www.leinders.de\/harald\/?p=551"},"modified":"2015-01-03T13:06:01","modified_gmt":"2015-01-03T12:06:01","slug":"speicher-aufraeumen-ist-sinnlos","status":"publish","type":"post","link":"https:\/\/www.leinders.de\/harald\/2014\/11\/21\/speicher-aufraeumen-ist-sinnlos\/","title":{"rendered":"Speicher aufr\u00e4umen ist sinnlos&#8230;"},"content":{"rendered":"<p><a class=\"boxersandswipers\" title=\"grundigCR_small\" href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/grundigCR_small.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-555\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/grundigCR_small-300x166.jpg\" alt=\"grundigCR_small\" width=\"300\" height=\"166\" srcset=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/grundigCR_small-300x166.jpg 300w, https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/grundigCR_small.jpg 320w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a>Mit irgendetwas muss man sich ja die Zeit vertreiben. Beim Aufr\u00e4umen des Speichers fiel mir ein altes Autoradio in die H\u00e4nde &#8211; noch mit Kassettenteil, um das Wort \u201calt\u201d zu unterstreichen. Immerhin schon mit LCD-Display, was meine Neugier weckte. Was macht man da? Ok, das war eine rhetorische Frage. Ich habe also schweren Herzens das Aufr\u00e4umen ein wenig aufgeschoben und einen Schraubenzieher geholt. Im Inneren fand sich neben ziemlich viel Luft dann auch das Display mit einer angeschlossenen kleinen Platine, die sehr nach Steuerung aussah. Da diese nur mit insgesamt 6 Leitungen mit dem restlichen Autoradio verbunden war, wirkte das ganze doch ziemlich \u00fcberschaubar. Die n\u00e4chste und, wie sich herausstellte, gar nicht so rhetorische Frage war dann: Ob man mit dem Teil wohl noch reden kann? \ud83d\ude42<\/p>\n<p><!--more--><\/p>\n<p><a class=\"boxersandswipers\" title=\"IMG_0460\" href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0460.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-556\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0460-300x225.jpg\" alt=\"IMG_0460\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0460-300x225.jpg 300w, https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0460.jpg 320w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a>Na gut, das Aufr\u00e4umen kann warten. Mit Multimeter und Feinwerkzeug bewaffnet wurde zun\u00e4chst das Display nebst Steuerplatine aus dem Gef\u00e4ngnis befreit. Dabei fiel dann noch ein Schrittmotor und anderer diverser Kleinkram ab, das kann man immer gebrauchen. Auf der Steuerplatine entdeckte ich dann einen einzelnen Chip, einen PCF8576T. Wozu gibt es das Internet, das Datenblatt war schnell gefunden. \u201cUniversal LCD driver for low multiplex rates\u201d stand da, also gar nicht mal so schlecht geraten. \ud83d\ude09<\/p>\n<p><a class=\"boxersandswipers\" title=\"PCF8576T\" href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/PCF8576T.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-557\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/PCF8576T-300x228.png\" alt=\"PCF8576T\" width=\"300\" height=\"228\" srcset=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/PCF8576T-300x228.png 300w, https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/PCF8576T.png 650w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a>Laut Datenblatt wird er mit I2C angesteuert (eine Art USB f\u00fcr IC&#8217;s), das erkl\u00e4rte schon mal 4 der 6 Dr\u00e4hte (SDA, SCL, Vss und Gnd). Da im Datenblatt auch das Pinout abgebildet war, waren diese vier auch recht schnell zugeordnet. Die restlichen zwei haben sich \u00fcbrigens im Nachhinein als Anschl\u00fcsse f\u00fcr die Hintergrundbeleuchtung herausgestellt. Bei 5V ist die aber so gut wie unsichtbar, und 12V lasse ich nicht in die N\u00e4he von TTL. <img decoding=\"async\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/plugins\/wp-edit\/plugins\/emoticons\/img\/smiley-sealed.gif\" alt=\"\" \/><\/p>\n<p>Tja, an der Stelle braucht man dann jemand, der die gleiche Sprache spricht, und heutzutage fallen dann schnell die Worte \u201cRaspberry\u201d oder \u201cArduino\u201d. Da der Raspberry sehr fimschig auf 5V auf den I2C-Pins reagiert (*fumpp*), war der Arduino eindeutig der Kandidat der Wahl. Also schnell Steckverbinder an die Platine gel\u00f6tet und das Ganze mal zusammen gesteckt. Und, was soll ich sagen: Genau nichts passiert. Alles dunkel, nichts leuchtet. Hm, es ist ein Nano, der hat keine eingebauten Pull-Up-Widerst\u00e4nde. Dem kann man ja abhelfen, also Widerst\u00e4nde suchen gehen. Der Wohnzimmertisch sieht mittlerweile aus wie eine E-Werkstatt, aber es macht Spa\u00df. \ud83d\ude42<\/p>\n<p>Beim n\u00e4chsten Versuch meldet sich der Controller-Chip dann auch tats\u00e4chlich auf dem Bus bei 0x38. Hurra, \u201ces lebt!\u201d, wenn er auch nach wie vor ansonsten genau nichts tat. Normalerweise hei\u00dft es ja: &#8222;Wer Handb\u00fccher liest, ist feige!&#8220;, aber hier sollte man vielleicht mal eine Ausnahme machen. Das Datenblatt beschreibt eigentlich ziemlich detailliert, wie man die Aufmerksamkeit des kleinen Quaders erregen k\u00f6nnte, aber leider mit ziemlich vielen Variationen, die alle von den m\u00f6glichen Beschaltungen der vielen kleinen Pins abh\u00e4ngt. Da ich nur das Multimeter zur Verf\u00fcgung hatte, wollte ich nicht zu viel an den Pinnen rummessen, immerhin arbeitet der Durchgangspr\u00fcfer mit 9V. Also einfach mal ausprobieren. Und siehe da: Das Display leuchtet auf! Naja. Eigentlich leuchtet das Display fast immer auf, egal, was man ihm schickt&#8230; aber was er darstellt, ist entweder klingonisch oder Pixelm\u00fcll. Der Baustein hat laut Datenblatt 40 Adressen mit je 4 Bit Tiefe, aber v\u00f6llig egal, was man da reinschreibt, es tut sich nix bei der Anzeige. Mittlerweile war es relativ sp\u00e4t, die Konzentration lie\u00df nach, was meistens dazu f\u00fchrt, dass man gelegentlich nicht so genau hinschaut, was man da zusammenprogrammiert. Nach einem erwartungslosen Blick auf das Display war die M\u00fcdigkeit dann auf einmal weg: Es hatte sich was getan! Es war zwar immer noch klingonisch, aber wenigstens anders. \ud83d\ude42<\/p>\n<p>Der Chip hat drei Adressleitungen, die als &#8222;Device Register&#8220; bezeichnet werden. Das ist so etwas wie eine Unteradressierung des Chips, wenn man mehr als einen im System hat. Die drei Pinne waren aber auf der Platine mit L\u00f6tzinn hart miteinander verdrahtet, sollten also immer alle zugleich auf LOW (0) oder HIGH (1) stehen. Das erg\u00e4be also die Device-Adresse 0x00 oder 0x07. Mein Programmierfehler oben f\u00fchrte aber dazu, dass ich weit \u00fcber den erlaubten Adressbereich geschrieben hatte, was laut Datenblatt zu einem \u00dcbertrag auf das n\u00e4chste Device-Register f\u00fchrte. Wie die es also geschafft haben, bei drei kurzgeschlossenen Beinchen <em>eines<\/em> davon auf HIGH zu setzen, ist mir bis heute schleierhaft &#8211; aber egal. \ud83d\ude42<\/p>\n<p>Mit der Device-Adresse 0x01 klappte auf einmal alles irgendwie so, wie&#8217;s im Datenblatt stand. Also musste man jetzt nur noch rausfinden, welches Bit f\u00fcr welches Segment der insgesamt 8 16-Segment-Ziffern verantwortlich ist, dann kann man auch etwas nicht-klingonisches schreiben. \ud83d\ude42<\/p>\n<p><a class=\"boxersandswipers\" href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0482_large.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-560 size-full\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0482.png\" alt=\"IMG_0482\" width=\"640\" height=\"480\" srcset=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0482.png 640w, https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0482-300x225.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a>Das Endergebnis kann man sich weiter unten anschauen &#8211; wenn man mag. Ich gebe auch gern und v\u00f6llig offen zu, dass das Ganze vollkommen sinnlos ist &#8211; fertige LCD&#8217;s f\u00fcr den Arduino gibt&#8217;s f\u00fcr \u20ac5 bei Amazon &#8211; aber darum ging&#8217;s ja nicht. Das war einfach wie Puzzlen ohne Randst\u00fccke, ein wenig Bit-Schieben und irgendwo leuchtet zum Schluss was. Es hat einfach Spa\u00df gemacht. \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0488.mp4\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-562 size-full\" src=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0488.jpg\" alt=\"IMG_0488\" width=\"320\" height=\"180\" srcset=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0488.jpg 320w, https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/IMG_0488-300x168.jpg 300w\" sizes=\"auto, (max-width: 320px) 85vw, 320px\" \/><\/a>P.S.: Die Reste des Autoradios habe ich \u00fcbrigens wertstoffgerecht entsorgt. Insofern ist der Speicher jetzt auch aufger\u00e4umter als vorher. \ud83d\ude42<\/p>\n<p>P.P.S.: Falls sich wider Erwarten jemand f\u00fcr den Arduino-Quellcode interessiert:<\/p>\n<p><a href=\"https:\/\/www.leinders.de\/harald\/wp-content\/uploads\/2014\/11\/PCF8576T.zip\">PCF8576T Source Code<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit irgendetwas muss man sich ja die Zeit vertreiben. Beim Aufr\u00e4umen des Speichers fiel mir ein altes Autoradio in die H\u00e4nde &#8211; noch mit Kassettenteil, um das Wort \u201calt\u201d zu unterstreichen. Immerhin schon mit LCD-Display, was meine Neugier weckte. Was macht man da? Ok, das war eine rhetorische Frage. Ich habe also schweren Herzens das &hellip; <a href=\"https:\/\/www.leinders.de\/harald\/2014\/11\/21\/speicher-aufraeumen-ist-sinnlos\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eSpeicher aufr\u00e4umen ist sinnlos&#8230;\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1,9],"tags":[],"class_list":["post-551","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-arduino"],"_links":{"self":[{"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/posts\/551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":18,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":578,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/posts\/551\/revisions\/578"}],"wp:attachment":[{"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leinders.de\/harald\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}