{"id":32463,"date":"2019-10-31T21:47:12","date_gmt":"2019-10-31T18:47:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi\/"},"modified":"2019-10-31T21:47:12","modified_gmt":"2019-10-31T18:47:12","slug":"kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","title":{"rendered":"Wie und warum man Datenbl\u00e4tter lesen sollte, wenn Mikrocontroller Ihr Hobby sind","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Wie und warum man Datenbl\u00e4tter lesen sollte, wenn Mikrocontroller Ihr Hobby sind\" src=\"\/wp-content\/uploads\/2019\/04\/ae2537b0263d692c4f79e7b5f7bc0797.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mikroelektronik ist ein angesagtes Hobby der letzten Jahre dank des zauberhaften Arduino. Doch das Problem ist: Bei entsprechendem Interesse w\u00e4chst man schnell \u00fcber DigitalWrite() hinaus, und was danach zu tun ist, ist nicht ganz klar. Die Entwickler von Arduino haben viel Aufwand betrieben, um die Einstiegsh\u00fcrde in ihr \u00d6kosystem zu senken, aber au\u00dferhalb davon liegt nach wie vor der dunkle Wald des rauen Schaltungsdesigns, der f\u00fcr den Amateur schwer zug\u00e4nglich ist.<\/p>\n<p><\/p>\n<p>Zum Beispiel Datenbl\u00e4tter. Man denkt, sie enthalten alles, was man braucht. Aber die Autoren verfolgen offensichtlich nicht das Ziel, Mikrocontroller popul\u00e4r zu machen; manchmal <em>scheint es<\/em>, dass sie absichtlich mit unverst\u00e4ndlichen Begriffen und Abk\u00fcrzungen bei der Beschreibung einfacher Dinge \u00fcbertreiben, um den Unwissenden maximal zu verwirren. Aber nicht alles ist so schlecht, wenn man es m\u00f6chte, \u00f6ffnet sich das Geheimnis.<\/p>\n<p><\/p>\n<p>In diesem Artikel m\u00f6chte ich meine Erfahrungen im Umgang eines Geisteswissenschaftlers mit Datenbl\u00e4ttern zu Hobbyzwecken teilen. Der Text richtet sich an Arduino-Enthusiasten, die aus ihren Kinderschuhen herausgewachsen sind, und setzt ein gewisses Verst\u00e4ndnis f\u00fcr die Funktionsweise von Mikrocontrollern voraus.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ich beginne mit dem traditionellen<\/p>\n<p><\/p>\n<h3 id=\"migaem-svetodiodom-na-arduino\">LED blinken lassen mit Arduino<\/h3>\n<p><\/p>\n<p>Und gleich der Code:<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">void setup() {\nDDRB |= (1&lt;&lt;5);\n}\n\nvoid loop() {\nPINB = (1&lt;&lt;5);\nfor (volatile uint32_t k=0; k&lt;100000; k++);\n}<\/code><\/pre>\n<p><\/p>\n<p>\u201eWas ist das? \u2013 Wird der erfahrene Leser fragen. \u2013 Warum schreibst du etwas in das Eingangsregister PINB? Das ist doch nur zum Lesen!\u201c In der Tat, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Reference\/PortManipulation\">die Dokumentation von Arduino<\/a><\/noindex>, wie die meisten Lehrartikel im Internet, behauptet, dass dieses Register schreibgesch\u00fctzt ist. Ich dachte das auch, bis ich <noindex><a rel=\"nofollow\" href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf\">Datenblatt<\/a><\/noindex> der Atmega328p gelesen habe, w\u00e4hrend ich diesen Artikel vorbereitete. Und dort steht:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie und warum man Datenbl\u00e4tter lesen sollte, wenn Mikrocontroller Ihr Hobby sind\" src=\"\/wp-content\/uploads\/2019\/04\/4c754bda59d9f18a38209cc32f0fb3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das ist eine relativ neue Funktionalit\u00e4t, die es bei der Atmega8 nicht gab, und nicht jeder wei\u00df davon oder erw\u00e4hnt sie aus Gr\u00fcnden der Abw\u00e4rtskompatibilit\u00e4t. Aber sie ist durchaus geeignet, um zu zeigen, dass man Datenbl\u00e4tter lesen sollte, um alle Eigenschaften des Chips zu nutzen, auch die weniger bekannten. Und das ist nicht der einzige Grund.<\/p>\n<p><\/p>\n<h2 id=\"zachem-esche-chitat-datashity\">Warum man sonst noch Datenbl\u00e4tter lesen sollte<\/h2>\n<p><\/p>\n<p>In der Regel beginnen Arduino-Enthusiasten, nachdem sie mit LEDs und AnalogWrite experimentiert haben, verschiedene Module und Chips anzuschlie\u00dfen, f\u00fcr die bereits Bibliotheken existieren. Fr\u00fcher oder sp\u00e4ter tritt jedoch eine Bibliothek auf, die nicht so funktioniert, wie sie sollte. Dann f\u00e4ngt der Hobbyist an, diese zu untersuchen, um sie zu reparieren, und dann...<\/p>\n<p><\/p>\n<p>Dort passiert etwas kategorisch Unverst\u00e4ndliches, weshalb man gezwungen ist, zu Google zu gehen, zahlreiche Tutorials zu lesen, irgendeinen passenden Code St\u00fcck f\u00fcr St\u00fcck zu entnehmen und schlie\u00dflich doch ans Ziel zu kommen. Das gibt ein starkes Gef\u00fchl des Erfolgs, aber eigentlich erinnert der Prozess daran, ein Fahrrad durch Reverse Engineering eines Motorrads zu erfinden. Dabei versteht man nicht besser, wie dieses Fahrrad funktioniert. Ich wei\u00df das, weil ich selbst eine ganze Zeit lang damit besch\u00e4ftigt war.<\/p>\n<p><\/p>\n<p>H\u00e4tte ich anstelle dieses spannenden Hobbys ein paar Tage damit verbracht, die Dokumentation zur Atmega328 zu studieren, h\u00e4tte ich eine Menge Zeit gespart. Schlie\u00dflich ist es ein ziemlich einfacher Mikrocontroller.<\/p>\n<p><\/p>\n<p>Daher sollte man Datenbl\u00e4tter lesen, um sich wenigstens vorzustellen, wie ein Mikrocontroller aufgebaut ist und was er alles kann. Und au\u00dferdem:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>um fremde Bibliotheken zu \u00fcberpr\u00fcfen und zu optimieren. Diese werden oft von anderen Hobbyisten geschrieben, die das Fahrrad neu erfinden; oder umgekehrt, die Autoren f\u00fcgen absichtlich \u00fcberfl\u00fcssige Schutzmechanismen gegen Dummheit hinzu. Lass es dreimal langsamer und umfangreicher sein, Hauptsache es funktioniert sicher.<\/p>\n<p>\n<\/li>\n<li>\n<p>um in einem Projekt Chips verwenden zu k\u00f6nnen, f\u00fcr die niemand eine Bibliothek geschrieben hat;<\/p>\n<p>\n<\/li>\n<li>\n<p>um den Umstieg von einem Mikrocontroller-Typ auf einen anderen zu erleichtern;<\/p>\n<p>\n<\/li>\n<li>\n<p>um schlie\u00dflich meinen alten Code zu optimieren, der einfach nicht in die Arduino-Umgebung passte;<\/p>\n<p>\n<\/li>\n<li>\n<p>um zu lernen, wie man jeden Chip direkt \u00fcber seine Register steuert, ohne sich mit der Funktionsweise seiner Bibliotheken, falls vorhanden, auseinanderzusetzen.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"zachem-pisat-v-registry-napryamuyu-kogda-est-hal-i-ll\">Warum direkt in die Register schreiben, wenn es HAL und LL gibt?<\/h2>\n<p><\/p>\n<p><em>Glossar<\/em><br \/>\n<em><strong>HAL, High Abstraction Layer<\/strong> \u2013 eine Bibliothek zur Steuerung eines Mikrocontrollers auf hoher Abstraktionsstufe. Wenn man die Schnittstelle SPI1 verwenden m\u00f6chte, konfiguriert und aktiviert man einfach SPI1, ohne sich Gedanken dar\u00fcber zu machen, welche Register welche Funktion haben.<br \/>\n<strong>LL, Low Level API<\/strong> \u2013 eine Bibliothek, die Makros oder Strukturen mit den Adressen der Register enth\u00e4lt und den Zugriff auf diese durch ihren Namen erm\u00f6glicht. DDRx, PORTx, PINx auf dem Atmega \u2013 das ist LL.<\/em><\/p>\n<p><\/p>\n<p>Diskussionen \u00fcber die Themen \u201eHAL, LL oder Register\u201c kommen regelm\u00e4\u00dfig in den Kommentaren auf Habrahabr vor. Ohne Anspruch auf astrales Wissen m\u00f6chte ich einfach meine Amateur-Erfahrungen und \u00dcberlegungen teilen.<\/p>\n<p><\/p>\n<p>Nachdem ich mich mehr oder weniger mit der Atmega und den wunderbaren M\u00f6glichkeiten von STM32 vertraut gemacht hatte, kaufte ich mir ein halbes Dutzend verschiedener Platinen \u2013 sowohl Discovery als auch \u201eBlaue Tablets\u201c und sogar einfach nur Chips f\u00fcr meine eigenen Projekte. Sie lagen zwei Jahre lang in einer Kiste. Manchmal sagte ich mir: \u201eAb diesem Wochenende lerne ich STM\u201c, startete CubeMX, generierte ein Setup f\u00fcr SPI, sah mir die entstandene Textwand an, die reichlich mit Copyright-Hinweisen von STM versehen war, und entschied, dass das einfach zu viel war.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie und warum man Datenbl\u00e4tter lesen sollte, wenn Mikrocontroller Ihr Hobby sind\" src=\"\/wp-content\/uploads\/2019\/04\/d83be97ba2767121f4be20d524000afe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es ist nat\u00fcrlich m\u00f6glich, herauszufinden, was CubeMX hier geschrieben hat. Aber gleichzeitig ist es klar, dass es unrealistisch ist, sich alle Formulierungen zu merken, um sie sp\u00e4ter von Hand zu schreiben. Und das Debuggen ist eine ganz andere Herausforderung, wenn ich zuf\u00e4llig vergesse, in Cube ein H\u00e4kchen zu setzen.<\/p>\n<p><\/p>\n<p>Zwei Jahre sind vergangen, ich schaute weiterhin hungrig auf <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=fr.appsolute.st&amp;hl=ru\">ST MCU Finder<\/a><\/noindex> nach allerlei leckeren, aber meinem Verst\u00e4ndnis unzug\u00e4nglichen Chips und stie\u00df zuf\u00e4llig auf <noindex><a rel=\"nofollow\" href=\"https:\/\/lujji.github.io\/blog\/bare-metal-programming-stm8\/\">einen wunderbaren Artikel<\/a><\/noindex>, auch wenn er \u00fcber STM8 ist. Und <em>pl\u00f6tzlich<\/em> verstand ich, dass ich die ganze Zeit an einer offenen T\u00fcr geklopft hatte: Die Register von STM sind genauso aufgebaut wie die von jedem anderen Mikrocontroller, und f\u00fcr die Arbeit mit ihnen ist Cube nicht zwingend erforderlich. <em>Ach, das h\u00e4tte man also auch so machen k\u00f6nnen?<\/em><\/p>\n<p><\/p>\n<p>HAL und speziell STM32CubeMX sind Werkzeuge f\u00fcr professionelle Ingenieure, die intensiv mit STM32-Chips arbeiten. Das Hauptmerkmal ist der hohe Abstraktionsgrad, die M\u00f6glichkeit, schnell von einem Mikrocontroller auf einen anderen zu migrieren und sogar von einem Kern auf einen anderen, w\u00e4hrend man innerhalb der STM32-Familie bleibt. Liebhaber begegnen solchen Aufgaben selten \u2013 unsere Auswahl an Mikrocontrollern ist in der Regel durch das Angebot bei AliExpress begrenzt, und wir migrieren oft zwischen grundlegend unterschiedlichen Chips \u2013 wir wechseln von Atmega zu STM, von STM zu ESP oder was uns die chinesischen Freunde Neues anbieten.<\/p>\n<p><\/p>\n<p>Bleibt LL \u2013 aber von ihm zu den Registern ist es nur ein kleiner Schritt. Pers\u00f6nlich finde ich es n\u00fctzlich, meine eigenen Makros mit Registeradressen zu schreiben: Ich studiere das Datenblatt genauer, denke dar\u00fcber nach, was ich in Zukunft brauchen werde und was bestimmt nicht, strukturiere meine Programme besser und insgesamt hilft das \u00dcberwinden dabei, sich besser zu erinnern.<\/p>\n<p><\/p>\n<p>Au\u00dferdem gibt es eine Besonderheit beim beliebten STM32F103 \u2013 f\u00fcr ihn existieren zwei inkompatible Versionen von LL, eine offizielle von STM und die andere von Leaf Labs, die im Projekt STM32duino verwendet wird. Wenn man eine Open-Source-Bibliothek schreiben m\u00f6chte (und genau das war <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Ontaelio\/DMdriverSTM32F1\">mein Ziel<\/a><\/noindex>), muss man entweder zwei Versionen erstellen oder direkt auf die Register zugreifen.<\/p>\n<p><\/p>\n<p>Schlie\u00dflich vereinfacht der Verzicht auf LL meiner Meinung nach die Migration, insbesondere wenn man von Anfang an an das Projekt denkt. Ein \u00fcbertriebenes Beispiel: Wir schreiben einen Arduino-Blink in Atmel Studio ohne LL:<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">#include &lt;stdint.h&gt;\n\n#define _REG(addr) (*(volatile uint8_t*)(addr))\n\n#define DDR_B 0x24\n#define OUT_B 0x25\n\nint main(void)\n{\n    volatile uint32_t k;\n\n    _REG(DDR_B) |= (1&lt;&lt;5);\n\n    while(1)\n    {\n        _REG(OUT_B) |= (1&lt;&lt;5);\n        for (k=0; k&lt;50000; k++);\n        _REG(OUT_B) &amp;= ~(1&lt;&lt;5);\n        for (k=0; k&lt;50000; k++);\n    } \n}<\/code><\/pre>\n<p><\/p>\n<p>Um diesen Code die LED auf einer chinesischen Platine mit STM8 (aus ST Visual Desktop) blinken zu lassen, reicht es aus, zwei Adressen zu \u00e4ndern:<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">#define DDR_B 0x5007\n#define OUT_B 0x5005<\/code><\/pre>\n<p><\/p>\n<p>Ja, ich nutze die Besonderheit der LED-Verbindung auf dieser spezifischen Platine, es wird sehr langsam blinken, aber es wird blinken!<\/p>\n<p><\/p>\n<h2 id=\"kakie-byvayut-datashity\">Was gibt es f\u00fcr Datenbl\u00e4tter<\/h2>\n<p><\/p>\n<p>In Artikeln und in Foren, sowohl in russischen als auch in englischen, versteht man unter \u201eDatenbl\u00e4ttern\u201c jede technische Dokumentation zu Chips, das mache ich in diesem Text auch so. Formal sind sie nur eine Art solcher Dokumentation:<\/p>\n<p><\/p>\n<p><strong>Datenblatt<\/strong> \u2013 technische Daten, taktisch-technische Eigenschaften. Muss bei jedem elektronischen Bauteil vorhanden sein. N\u00fctzliche Informationsquelle, die man griffbereit haben sollte, aber es gibt nicht viel, was man darin aufmerksam lesen k\u00f6nnte. Allerdings beschr\u00e4nken sich einfachere Chips oft auf das Datenblatt, um nicht unn\u00f6tige Dokumente zu schaffen; in diesem Fall <em>Handbuch<\/em> wird hiermit ebenfalls einbezogen.<\/p>\n<p><\/p>\n<p><strong>Handbuch<\/strong> \u2013 die eigentliche Anleitung, ein umfangreiches Buch von \u00fcber 1000 Seiten. Beschreibt detailliert die Funktion aller Komponenten, die im Chip integriert sind. Das Hauptdokument zum Verst\u00e4ndnis des Mikrocontrollers. Im Gegensatz zu <em>Datenblatt<\/em>, werden Anleitungen f\u00fcr eine breite Palette von MK geschrieben, sie enthalten viele Informationen \u00fcber die Peripherie, die in Ihrem spezifischen Modell fehlt.<\/p>\n<p><\/p>\n<p><strong>Programmiertutorial<\/strong> oder <strong>Befehlshandbuch<\/strong> \u2013 Anleitung zu den speziellen Befehlen des Mikrocontrollers. Bestimmt f\u00fcr diejenigen, die in Assembler programmieren. Compiler-Autoren verwenden es aktiv zur Codeoptimierung, daher wird es im Allgemeinen nicht ben\u00f6tigt. Aber es ist n\u00fctzlich, hier f\u00fcr ein allgemeines Verst\u00e4ndnis nachzuschlagen, besonders bei bestimmten speziellen Befehlen wie dem Verlassen von Interrupts sowie bei aktivem Gebrauch des Debuggers.<\/p>\n<p><\/p>\n<p><strong>Anwendungshinweis<\/strong> \u2013 n\u00fctzliche Tipps zur L\u00f6sung spezifischer Probleme, oft mit Codebeispielen.<\/p>\n<p><\/p>\n<p><strong>Errata<\/strong> \u2013 Beschreibung von F\u00e4llen, in denen der Chip ein nicht standardm\u00e4\u00dfiges Verhalten zeigt, mit Umgehungsm\u00f6glichkeiten, falls vorhanden.<\/p>\n<p><\/p>\n<h2 id=\"chto-est-v-datashitah\">Was ist in den Datenbl\u00e4ttern enthalten<\/h2>\n<p><\/p>\n<p>Direkt im <em>Datenblatt<\/em> ben\u00f6tigen wir m\u00f6glicherweise folgende Abschnitte:<\/p>\n<p><\/p>\n<p><strong>Ger\u00e4te\u00fcbersicht<\/strong> \u2013 die erste Seite des Datenblatts gibt einen kurzen \u00dcberblick \u00fcber das Ger\u00e4t. Sehr n\u00fctzlich in Situationen, wenn Sie irgendwo einen Chip gefunden haben (im Gesch\u00e4ft gesehen, herausgel\u00f6tet, irgendwo erw\u00e4hnt) und verstehen m\u00f6chten, um was es sich handelt.<\/p>\n<p><\/p>\n<p><strong>Allgemeine Beschreibung<\/strong> \u2013 eine detailliertere Beschreibung der Funktionen der Chips aus der Reihe.<\/p>\n<p><\/p>\n<p><strong>Pinouts<\/strong> \u2013 Anschlussdiagramme f\u00fcr alle m\u00f6glichen Geh\u00e4use des Chips (an welchem Pin welcher Anschluss).<\/p>\n<p><\/p>\n<p><strong>Pin-Beschreibung<\/strong> \u2013 Beschreibung der Funktion und der M\u00f6glichkeiten jedes Pins.<\/p>\n<p><\/p>\n<p><strong>Speicherkarte<\/strong> \u2013 die Adresskarte im Speicher ben\u00f6tigen wir wahrscheinlich nicht, aber manchmal enth\u00e4lt sie auch eine Tabelle der Adressbl\u00f6cke der Register.<\/p>\n<p><\/p>\n<p><strong>Registerkarte<\/strong> \u2013 eine Tabelle der Adressen der Registerbl\u00f6cke, die normalerweise im Datenblatt zu finden ist, sowie in <em>Ref-Handbuch<\/em> \u2013 nur die Verschiebungen (<em>Adressverschiebungen<\/em>).<\/p>\n<p><\/p>\n<p><strong>Elektrische Eigenschaften<\/strong> \u2013 in diesem Abschnitt interessieren uns in erster Linie <strong>absoluten H\u00f6chstwerte<\/strong>, die die maximalen Belastungen f\u00fcr den Chip auflisten. Im Gegensatz zum unverw\u00fcstlichen Atmega328p erlauben die meisten Mikrocontroller nicht, ernsthafte Lasten an die Pins anzuschlie\u00dfen, was f\u00fcr Arduino-Anwender eine unangenehme \u00dcberraschung sein kann.<\/p>\n<p><\/p>\n<p><strong>Paketinformationen<\/strong> \u2013 Zeichnungen der verf\u00fcgbaren Geh\u00e4use, die bei der Planung eigener Platinen hilfreich sind.<\/p>\n<p><\/p>\n<p><em>Handbuch<\/em> besteht strukturell aus Abschnitten, die einem bestimmten Peripherieger\u00e4t gewidmet sind, wie in ihren \u00dcberschriften angegeben. Jedes Kapitel kann grob in drei Teile unterteilt werden:<\/p>\n<p><\/p>\n<p><strong>\u00dcbersicht<\/strong>, <strong>Einf\u00fchrung<\/strong>, <strong>Eigenschaften<\/strong> \u2013 \u00dcbersicht \u00fcber die Funktionen der Peripherie;<\/p>\n<p><\/p>\n<p><strong>Funktionsbeschreibung<\/strong>, <strong>Benutzerhandbuch<\/strong> oder einfach der Hauptblock des Abschnitts \u2013 eine ausf\u00fchrliche textliche Beschreibung der Funktionsweise der Peripherie und der Wege ihrer Nutzung;<\/p>\n<p><\/p>\n<p><strong>Register<\/strong> \u2013 Beschreibung der Steuerregister. In einfachen F\u00e4llen wie GPIO oder SPI reicht das oft aus, um mit der Peripherie zu beginnen, aber oft muss man trotzdem die vorherigen Teile lesen.<\/p>\n<p><\/p>\n<h2 id=\"kak-chitat-datashity\">Wie man Datenbl\u00e4tter liest<\/h2>\n<p><\/p>\n<p>Datenbl\u00e4tter wirken auf den ersten Blick durch ihr Volumen und die Vielzahl unbekannter Begriffe abschreckend. In Wirklichkeit ist es nicht so schlimm, wenn man ein paar Tipps kennt.<\/p>\n<p><\/p>\n<p>Installieren Sie <strong>einen guten PDF-Reader<\/strong>. Datenbl\u00e4tter werden in der sch\u00f6nen Tradition von Papieranleitungen verfasst, es macht Spa\u00df, sie auszudrucken, mit Plastikkarten zu markieren und zu binden. Hypertext gibt es nur in sp\u00e4rlichen Mengen. Gl\u00fccklicherweise ist zumindest die Struktur des Dokuments in Gliederungen organisiert, sodass ein geeigneter Reader mit komfortabler Navigation sehr n\u00fctzlich ist.<\/p>\n<p><\/p>\n<p>Ein Datenblatt ist kein Lehrbuch von Stroustrup, man muss <strong>nicht alles am St\u00fcck lesen<\/strong>. Wenn Sie den vorherigen Rat befolgt haben \u2013 suchen Sie einfach den ben\u00f6tigten Abschnitt in dem Gliederungsbereich.<\/p>\n<p><\/p>\n<p>Datenbl\u00e4tter, insbesondere <em>Referenzhandb\u00fccher<\/em>, k\u00f6nnen die M\u00f6glichkeiten nicht eines bestimmten Chips, sondern <strong>der gesamten Reihe beschreiben.<\/strong>. Das bedeutet, dass die H\u00e4lfte oder sogar zwei Drittel der Informationen nichts mit Ihrem Chip zu tun haben. Bevor Sie sich mit den Registern von TIM7 befassen, \u00fcberpr\u00fcfen Sie, <em>Allgemeine Beschreibung<\/em>, ob Sie ihn haben.<\/p>\n<p><\/p>\n<p>Englisch zu wissen <strong>ist ausreichend auf<\/strong> grundlegendem Niveau <strong>. Die Datenbl\u00e4tter bestehen zur H\u00e4lfte aus Begriffen, die einem durchschnittlichen Muttersprachler unbekannt sind, und zur anderen H\u00e4lfte aus einfachen Satzstrukturen. Es gibt auch hervorragende chinesische Datenbl\u00e4tter in \u201echinesischem Englisch\u201c, wo ebenfalls die H\u00e4lfte aus Begriffen und die andere H\u00e4lfte aus zuf\u00e4lligen W\u00f6rtern besteht.<\/strong>Wenn Sie ein<\/p>\n<p><\/p>\n<p>unbekanntes Wort <strong>begegnen, versuchen Sie nicht, es mit einem Englisch-Russisch-W\u00f6rterbuch zu \u00fcbersetzen. Wenn Sie \u00fcber das Wort<\/strong>hysteresis <em>stolpern, wird Ihnen die \u00dcbersetzung \u201eHysterese\u201c kein besseres Gef\u00fchl geben. Nutzen Sie Google, Stack Overflow, Wikipedia, Foren, in denen der relevante Begriff<\/em>einfach erkl\u00e4rt wird, mit Beispielen. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/5357918\/what-does-hysteresis-mean-and-how-does-it-apply-to-computer-science-or-programmi\">Der beste Weg, um das Gelesene zu verstehen, ist es,<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>es in der Praxis zu \u00fcberpr\u00fcfen. <strong>Halten Sie also das Debugging-Board bereit, mit dem Sie sich vertraut machen, noch besser zwei \u2013 f\u00fcr den Fall, dass Sie doch etwas nicht verstanden haben und den magischen Rauch sehen.<\/strong>Es ist hilfreich, ein Datenblatt zur Hand zu haben, wenn Sie<\/p>\n<p><\/p>\n<p>jemanden Tutorial lesen <strong>oder eine andere Bibliothek studieren. Es ist durchaus m\u00f6glich, dass Sie darin eine bessere L\u00f6sung f\u00fcr Ihr Problem finden. Umgekehrt gilt: Wenn Sie aus dem Datenblatt nicht verstehen k\u00f6nnen, wie das Register funktioniert, googeln Sie es: h\u00f6chstwahrscheinlich hat es jemand bereits einfach erkl\u00e4rt oder einen verst\u00e4ndlichen Code auf GitHub hinterlassen.<\/strong> Einige n\u00fctzliche Begriffe und Bezeichnungen, die Ihnen helfen, sich schneller mit Datenbl\u00e4ttern vertraut zu machen. Alles, was mir in den letzten Tagen eingefallen ist, Erg\u00e4nzungen und Korrekturen sind willkommen.<\/p>\n<p><\/p>\n<h2 id=\"slovarik\">Glossar<\/h2>\n<p><\/p>\n<p>Elektrizit\u00e4t<\/p>\n<p><\/p>\n<p><em>Vcc<\/em><br \/>\n<strong>Vdd<\/strong>, <strong>\u2013 \u201eplus\u201c, Stromversorgung<\/strong> Vss<br \/>\n<strong>Vee<\/strong>, <strong>\u2013 \u201eminus\u201c, Erde<\/strong> current<br \/>\n<strong>\u2013 Strom<\/strong> voltage<br \/>\n<strong>\u2013 Spannung<\/strong> to sink current<br \/>\n<strong>\u2013 als \u201eErde\u201c f\u00fcr die externe Last arbeiten<\/strong> to source current<br \/>\n<strong>\u2013 externe Last versorgen<\/strong> high sink\/source pin<br \/>\n<strong>\u2013 Pin mit erh\u00f6hter \u201eToleranz\u201c gegen\u00fcber der Last<\/strong> IO<\/p>\n<p><\/p>\n<p><em>H, High<\/em><br \/>\n<strong>\u2013 am Pin Vcc<\/strong> L, Low<br \/>\n<strong>\u2013 am Pin Vss<\/strong> High Impedance<br \/>\n<strong>Hi-Z<\/strong>, <strong>floating<\/strong>, <strong>\u2013 am Pin ist nichts, \u201ehoher Widerstand\u201c, er ist f\u00fcr die Au\u00dfenwelt praktisch unsichtbar.<\/strong> weak pull up<br \/>\n<strong>weak pull down<\/strong>, <strong>\u2013 integrierter Pull-Up\/Pull-Down-Widerstand, ca. 50 kOhm (siehe Datenblatt). Wird verwendet, um zum Beispiel zu verhindern, dass der Eingangspin im Leeren schwebt und Fehlalarme ausl\u00f6st.<\/strong> Weak <em>\u2013 weil er leicht \"\u00fcbersteuert\" werden kann.<\/em> push pull<br \/>\n<strong>\u2013 Ausgabemodus des Pins, in dem er zwischen<\/strong> \u2013 Ausgangsmodus des Pins, in dem er zwischen <em>Hoch<\/em> und <em>Niedrig<\/em> \u2013 gew\u00f6hnlicher OUTPUT mit Arduino.<br \/>\n<strong>open drain<\/strong> \u2013 Bezeichnung f\u00fcr den Ausgangszustand, in dem der Pin entweder <em>Niedrig<\/em>, oder <em>Hochohmig \/ Floating<\/em>. Dabei handelt es sich fast immer nicht um einen \u201eechten\u201c Open Drain, es gibt Schutzdioden, Widerst\u00e4nde und so weiter. Es ist einfach eine Bezeichnung f\u00fcr den Zustand Erdung \/ nichts.<br \/>\n<strong>echter Open Drain<\/strong> \u2013 und das ist nun ein echter Open Drain: Der Pin f\u00fchrt direkt zur Erde, wenn er offen ist, oder befindet sich im schwebenden Zustand, wenn er geschlossen ist. Das bedeutet, dass durch ihn, falls n\u00f6tig, eine Spannung gr\u00f6\u00dfer als Vcc flie\u00dfen kann, aber das Maximum wird trotzdem im Datenblatt im Abschnitt <em>Absolute Maximum Ratings \/ Voltage<\/em>. <\/p>\n<p><\/p>\n<p><em>Schnittstellen<\/em><br \/>\n<strong>in Serie<\/strong> \u2013 in Serie verbunden<br \/>\n<strong>zu einer Kette<\/strong> \u2013 Chips in einer Kette verbinden, indem man sie seriell anschlie\u00dft und die Anzahl der Ausg\u00e4nge erh\u00f6ht.<br \/>\n<strong>Shift<\/strong> \u2013 Verschiebung, bedeutet normalerweise die Bits zu verschieben. Deshalb, <strong>to shift in<\/strong> und <strong>to shift out<\/strong> \u2013 Daten bitweise empfangen und senden.<br \/>\n<strong>latch<\/strong> \u2013 Riegel, der den Puffer zudeckt, w\u00e4hrend die Bits verschoben werden. Wenn die \u00dcbertragung abgeschlossen ist, \u00f6ffnet sich der Riegel und die Bits beginnen zu arbeiten.<br \/>\n<strong>to clock in<\/strong> \u2013 eine bitweise \u00dcbertragung durchf\u00fchren, alle Bits an die gew\u00fcnschten Stellen verschieben.<br \/>\n<strong>double buffer<\/strong>, <strong>Shadow-Register<\/strong>, <strong>Preload-Register<\/strong> \u2013 Bezeichnungen f\u00fcr die Historie, wenn ein Register in der Lage sein muss, neue Daten zu empfangen, sie aber bis zu einem bestimmten Zeitpunkt zu halten. Zum Beispiel sollten f\u00fcr einen korrekten PWM-Betrieb seine Parameter (Duty Cycle, Frequenz) nicht ge\u00e4ndert werden, bis der aktuelle Zyklus abgeschlossen ist, aber neue Parameter k\u00f6nnen bereits \u00fcbergeben werden. Daher werden die aktuellen in <em>Shadow-Register<\/em>, und die neuen gelangen in <em>Preload-Register<\/em>, indem sie in das entsprechende Register des Chips geschrieben werden.<\/p>\n<p><\/p>\n<p><em>Alles m\u00f6gliche<\/em><br \/>\n<strong>Prescaler<\/strong> \u2013 Frequenzteiler<br \/>\n<strong>einen Bit setzen<\/strong> \u2013 ein Bit auf 1 setzen<br \/>\n<strong>einen Bit zur\u00fccksetzen<\/strong> \u2013 ein Bit auf 0 zur\u00fccksetzen (<em>reset<\/em> \u2013 Merkmal der STM-Datenbl\u00e4tter)<\/p>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Was kommt als n\u00e4chstes<\/h3>\n<p><\/p>\n<p>Eigentlich war hier ein praktischer Teil mit der Demonstration von drei Projekten auf STM32 und STM8 geplant, die speziell f\u00fcr diesen Artikel mit Hilfe von Datenbl\u00e4ttern, Lampen, SPI, Timern, PWM und Interrupts erstellt wurden:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie und warum man Datenbl\u00e4tter lesen sollte, wenn Mikrocontroller Ihr Hobby sind\" src=\"\/wp-content\/uploads\/2019\/04\/8929bad65dad7473a81a221281c43557.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aber der Text wird ein wenig zu umfangreich, daher werden die Projekte in den zweiten Teil verschoben.<\/p>\n<p><\/p>\n<p>Die F\u00e4higkeit, Datenbl\u00e4tter zu lesen, wird Ihnen bei Ihrem Hobby helfen, d\u00fcrfte aber das pers\u00f6nliche Gespr\u00e4ch mit Gleichgesinnten in Foren und Chats kaum ersetzen. Daf\u00fcr muss man in erster Linie die Englischkenntnisse verbessern. Und deshalb gibt es f\u00fcr die, die bis hierher gelesen haben \u2013 einen besonderen Preis: zwei kostenlose Lektionen bei Skyeng bei der ersten Zahlung mit dem Code <code>HABR2<\/code>.<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skyeng\/blog\/449624\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0438\u043a\u0440\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u2013 \u043c\u043e\u0434\u043d\u043e\u0435 \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043b\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u043c\u0443 Arduino. \u041d\u043e \u0432\u043e\u0442 \u0431\u0435\u0434\u0430: \u043f\u0440\u0438 \u0434\u043e\u043b\u0436\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u0442\u0438 DigitalWrite() \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e, \u0430 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u2013 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u044f\u0441\u043d\u043e. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Arduino \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u043b\u0438 \u043d\u0435\u043c\u0430\u043b\u043e \u0443\u0441\u0438\u043b\u0438\u0439 \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0440\u043e\u0433\u0430 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u043e\u044e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043d\u043e \u0437\u0430 \u0435\u0435 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043a\u043e\u043b\u044b\u0448\u0435\u0442\u0441\u044f \u0442\u0435\u043c\u043d\u044b\u0439 \u043b\u0435\u0441 \u0441\u0443\u0440\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u043a\u0438, \u043c\u0430\u043b\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u044b. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-32463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0438\u043a\u0440\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u044b, \u0435\u0441\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u2013 \u0432\u0430\u0448\u0435 \u0445\u043e\u0431\u0431\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0438\u043a\u0440\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:47:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:47:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wie und warum man Datenbl\u00e4tter liest, wenn Mikrocontroller Ihr Hobby sind | ProHoster","description":"Mikroelektronik.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u044b, \u0435\u0441\u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u2013 \u0432\u0430\u0448\u0435 \u0445\u043e\u0431\u0431\u0438 | ProHoster","og:description":"\u041c\u0438\u043a\u0440\u043e\u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430.","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:47:12+00:00","article:modified_time":"2019-10-31T18:47:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32463","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:00:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:24","updated":"2026-01-21 11:00:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=32463"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/32463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/24267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=32463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=32463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=32463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}