{"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\/nl\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","title":{"rendered":"Hoe en waarom datasheets te lezen als microcontrollers jouw hobby zijn","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Hoe en waarom datasheets te lezen als microcontrollers jouw hobby zijn\" src=\"\/wp-content\/uploads\/2019\/04\/ae2537b0263d692c4f79e7b5f7bc0797.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Micro-elektronica is een trendy bezigheid van de laatste jaren, dankzij de magie van Arduino. Maar er is een probleem: bij voldoende interesse groeit men snel uit DigitalWrite(), en wat daarna te doen is niet helemaal duidelijk. De ontwikkelaars van Arduino hebben veel moeite gestoken in het verlagen van de instapdrempel voor hun ecosysteem, maar daarbuiten blijft er een donkere wildernis van strenge schakelingen, moeilijk toegankelijk voor de liefhebber.<\/p>\n<p><\/p>\n<p>Bijvoorbeeld, datasheets. Het lijkt alsof ze alles bevatten, gewoon pakken en gebruiken. Maar de auteurs hebben duidelijk niet de doelstelling om microcontrollers populair te maken; soms <em>lijkt het<\/em>, dat ze opzettelijk misbruik maken van onduidelijke termen en afkortingen bij het beschrijven van eenvoudige dingen, om de leek zo goed mogelijk te verwarren. Maar het is niet allemaal slecht, als je wilt opent het zich.<\/p>\n<p><\/p>\n<p>In dit artikel deel ik mijn ervaring als geesteswetenschapper met datasheets voor hobbydoeleinden. De tekst is bedoeld voor degenen die zijn gegroeid uit hun Arduino-broekjes; hij veronderstelt enige kennis van de werkprincipes van microcontrollers.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ik begin met de traditionele<\/p>\n<p><\/p>\n<h3 id=\"migaem-svetodiodom-na-arduino\">Knipperen met een LED op Arduino<\/h3>\n<p><\/p>\n<p>En meteen de 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>\u00abWat is dit? \u2013 vraagt de doorgewinterde lezer. \u2013 Waarom schrijf je iets naar de invoerregister PINB? Die is toch alleen voor lezen!\u00bb Dat klopt, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Reference\/PortManipulation\">de documentatie van Arduino<\/a><\/noindex>, zoals de meeste educatieve artikelen op het internet, stelt dat dit register alleen-lezen is. Ik dacht dat ook, totdat ik het opnieuw las <noindex><a rel=\"nofollow\" href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf\">datasheet<\/a><\/noindex> over de Atmega328p, terwijl ik dit artikel voorbereid. En daar staat:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hoe en waarom datasheets te lezen als microcontrollers jouw hobby zijn\" src=\"\/wp-content\/uploads\/2019\/04\/4c754bda59d9f18a38209cc32f0fb3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dit is een relatief nieuwe functionaliteit, het was er niet op de Atmega8, niet iedereen weet ervan of noemt het om redenen van achterwaartse compatibiliteit. Maar het is zeker nuttig om de gedachte te demonstreren dat het lezen van datasheets de moeite waard is om alle mogelijkheden van de chip te benutten, inclusief de minder bekende. En dit is niet de enige reden.<\/p>\n<p><\/p>\n<h2 id=\"zachem-esche-chitat-datashity\">Waarom nog meer datasheets lezen<\/h2>\n<p><\/p>\n<p>Gewoonlijk beginnen Arduino-enthousiasten, nadat ze hebben ge\u00ebxperimenteerd met LED's en AnalogWrite's, verschillende modules en chips aan de board te koppelen waarvoor al geschreven bibliotheken bestaan. Vroeg of laat verschijnt er een bibliotheek die niet werkt zoals bedoeld. Dan begint de hobbyist deze te onderzoeken om het te repareren, en daar...<\/p>\n<p><\/p>\n<p>Daar gebeurt iets volstrekt onbegrijpelijk, waardoor je weer naar Google moet, talloze tutorials moet lezen, stukjes van iemands geschikte code moet trekken en uiteindelijk je doel moet bereiken. Dit geeft een krachtig gevoel van prestatie, maar het proces lijkt eigenlijk op het uitvinden van een fiets door reverse engineering van een motorfiets. En het begrip van hoe deze fiets werkt, neemt niet toe. Ik weet het, want ik heb hier zelf behoorlijk lang mee geknoeid.<\/p>\n<p><\/p>\n<p>Als ik in plaats van deze fascinerende bezigheid een paar dagen had besteed aan het bestuderen van de documentatie van de Atmega328, had ik een hoop tijd bespaard. Uiteindelijk is het een vrij eenvoudige microcontroller.<\/p>\n<p><\/p>\n<p>Dus, je moet datasheets lezen, om in ieder geval een idee te hebben van hoe de microcontroller is opgebouwd en wat hij kan doen. En verder:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>om de bibliotheken van anderen te controleren en te optimaliseren. Deze worden vaak geschreven door dezelfde amateur die de fiets opnieuw uitvindt, of omgekeerd, de auteurs maken opzettelijk overbodige beveiligingen tegen domheid. Laat het maar drie keer zoveel gecompliceerd en langzamer zijn, als het maar gegarandeerd werkt;<\/p>\n<p>\n<\/li>\n<li>\n<p>om in staat te zijn chips te gebruiken in je project waarvoor niemand een bibliotheek heeft geschreven;<\/p>\n<p>\n<\/li>\n<li>\n<p>om het je gemakkelijker te maken om van de ene serie microcontrollers naar de andere te migreren;<\/p>\n<p>\n<\/li>\n<li>\n<p>om eindelijk je oude code te optimaliseren die helemaal niet in de Arduino paste;<\/p>\n<p>\n<\/li>\n<li>\n<p>om te leren elk chip rechtstreeks aan te sturen via zijn registers, zonder je te bekommeren om het bestuderen van de werking van zijn bibliotheken, als die er al zijn.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"zachem-pisat-v-registry-napryamuyu-kogda-est-hal-i-ll\">Waarom direct naar de registers schrijven, als er HAL en LL zijn?<\/h2>\n<p><\/p>\n<p><em>Woordenlijst<\/em><br \/>\n<em><strong>HAL, High Abstraction Layer<\/strong> \u2013 een bibliotheek voor het aansturen van een microcontroller met een hoog abstractieniveau. Als je de SPI1-interface moet gebruiken, stel je gewoon SPI1 in en schakel je het in, zonder je af te vragen welke registers waarvoor verantwoordelijk zijn.<br \/>\n<strong>LL, Low Level API<\/strong> \u2013 een bibliotheek die macro's of structuren met registeradressen bevat, waardoor je er bij naam naar kunt verwijzen. DDRx, PORTx, PINx op de Atmega \u2013 dat is LL.<\/em><\/p>\n<p><\/p>\n<p>Discussies over \"HAL, LL of registers\" komen regelmatig voor in de reacties op Habr. Zonder aanspraak te maken op toegang tot astrale kennis, wil ik gewoon mijn amateurervaring en overpeinzing delen.<\/p>\n<p><\/p>\n<p>Na het verkennen van de Atmega en het lezen van artikelen over de voordelen van de STM32, kocht ik een half dozijn verschillende borden \u2013 zowel Discovery als de \u2018Blauwe Tablets\u2019, en zelfs gewoon chips voor mijn eigen projecten. Ze hebben twee jaar in een doos stof liggen verzamelen. Soms zei ik tegen mezelf: \u2018Dit is het, dit weekend ga ik STM leren\u2019, opende CubeMX, genereerde de set-up voor SPI, keek naar de resulterende muur van tekst, rijkelijk versierd met copyrightvermeldingen van STM, en besloot dat het toch wel een beetje te veel was.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hoe en waarom datasheets te lezen als microcontrollers jouw hobby zijn\" src=\"\/wp-content\/uploads\/2019\/04\/d83be97ba2767121f4be20d524000afe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Het is natuurlijk mogelijk om te begrijpen wat CubeMX heeft geschreven. Maar tegelijkertijd is het duidelijk dat het onrealistisch is om alle formuleringen te onthouden, zodat ik ze later met de hand kan schrijven. En als ik per ongeluk vergeet om in Cube een vinkje te zetten, wordt het helemaal een gedoe.<\/p>\n<p><\/p>\n<p>Twee jaar zijn verstreken, en ik kijk nog steeds verlangend naar <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=fr.appsolute.st&amp;hl=ru\">ST MCU Finder<\/a><\/noindex> allerlei lekkere chips die voor mijn begrip onbereikbaar zijn, en stuitte per toeval op <noindex><a rel=\"nofollow\" href=\"https:\/\/lujji.github.io\/blog\/bare-metal-programming-stm8\/\">een geweldig artikel<\/a><\/noindex>, ook al gaat het over STM8. En <em>plotseling<\/em> realiseerde ik me dat ik de hele tijd tegen een open deur aan het kloppen was: de registers van STM zijn hetzelfde ingericht als die van elke andere microcontroller, en voor het werken ermee is Cube niet noodzakelijk. <em>En wat, dat kon zo? ..<\/em><\/p>\n<p><\/p>\n<p>HAL en specifiek STM32CubeMX zijn tools voor professionele ingenieurs die nauw samenwerken met STM32-chips. Het belangrijkste kenmerk is het hoge abstractieniveau, de mogelijkheid om snel te migreren van de ene microcontroller naar de andere en zelfs van de ene kern naar de andere, terwijl je binnen de STM32 lijn blijft. Hobbyisten komen zelden met zulke taken in aanraking \u2013 onze keuze aan microcontrollers is meestal beperkt tot het assortiment van AliExpress, en we migreren vaker tussen radicaal verschillende chips \u2013 we schakelen over van de Atmega naar de STM, van de STM naar de ESP, of wat onze Chinese vrienden ons ook maar nieuw aanbieden. HAL zal hier niet helpen, en het leren ervan kost veel tijd.<\/p>\n<p><\/p>\n<p>Dat laat LL over \u2013 maar daar is het maar een klein stapje naar de registers. Persoonlijk vind ik het nuttig om mijn eigen macro's met de adressen van de registers te schrijven: ik bestudeer de datasheet beter, denk na over wat ik in de toekomst nodig zal hebben, en wat absoluut niet, en ik structureer mijn programma's beter; en bovendien helpt de overwinning bij het onthouden.<\/p>\n<p><\/p>\n<p>Bovendien is er een nuance met de populaire STM32F103 \u2013 voor deze microcontroller zijn er twee incompatibele versies van LL, \u00e9\u00e9n offici\u00eble van STM, de andere van Leaf Labs, gebruikt in het STM32duino-project. Als je een open-source bibliotheek schrijft (en dat was precies <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Ontaelio\/DMdriverSTM32F1\">mijn taak<\/a><\/noindex>), dan moet je ofwel twee versies maken, of rechtstreeks naar de registers verwijzen.<\/p>\n<p><\/p>\n<p>Uiteindelijk maakt het afzien van LL, naar mijn mening, de migratie gemakkelijker, vooral als men vanaf het begin van het project daarop rekent. Een overdrijven voorbeeld: laten we een Arduino-blink schrijven in Atmel Studio zonder 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>Om deze code de LED op een Chinese bord met STM8 (uit ST Visual Desktop) te laten knipperen, hoeft u slechts twee adressen te wijzigen:<\/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, ik maak gebruik van de eigenschap van de LED-aansluiting op het specifieke bord; het zal heel langzaam knipperen, maar het zal knipperen!<\/p>\n<p><\/p>\n<h2 id=\"kakie-byvayut-datashity\">Wat zijn datasheets<\/h2>\n<p><\/p>\n<p>In artikelen en op forums, zowel in het Russisch als in het Engels, wordt met \"datasheets\" elke technische documentatie voor chips bedoeld; zo doe ik het ook in deze tekst. Formeel zijn ze slechts een van de soorten dergelijke documentatie:<\/p>\n<p><\/p>\n<p><strong>Datasheet<\/strong> \u2013 TTX, tactisch-technische specificaties. Moet aanwezig zijn bij elk elektronisch component. Handige referentieinformatie, goed om bij de hand te houden, maar er is niet veel bijzonder te lezen. Maar simpelere chips beperken zich vaak tot de datasheet om onnodige documenten te vermijden; in dat geval <em>Referentiemanual<\/em> wordt dit hier ook bijgevoegd.<\/p>\n<p><\/p>\n<p><strong>Referentiemanual<\/strong> \u2013 de eigenlijke handleiding, een dikke boek met 1000+ pagina's. Beschrijft gedetailleerd de werking van alles wat in de chip is gestopt. Het belangrijkste document voor het leren van de microcontroller. In tegenstelling tot <em>datasheet<\/em>, worden handleidingen geschreven voor een brede reeks MCs en bevatten ze veel informatie over de peripherie die afwezig is in uw specifieke model.<\/p>\n<p><\/p>\n<p><strong>Programming Manual<\/strong> of <strong>Instruction Set Manual<\/strong> \u2013 handleiding voor unieke instructies van de microcontroller. Bestemd voor degenen die in Assembly programmeren. De auteurs van compilers gebruiken deze actief voor code-optimalisatie, dus in de meeste gevallen hebben we het niet nodig. Maar het is nuttig om hier een blik op te werpen voor een algemeen begrip, voor enkele specifieke instructies zoals het verlaten van een interrupt, evenals bij actief gebruik van de debugger.<\/p>\n<p><\/p>\n<p><strong>Application Note<\/strong> \u2013 nuttige tips voor het oplossen van specifieke problemen, vaak met codevoorbeelden.<\/p>\n<p><\/p>\n<p><strong>Errata Sheet<\/strong> \u2013 een beschrijving van gevallen van ongebruikelijk gedrag van de chip met mogelijke oplossingen, indien beschikbaar.<\/p>\n<p><\/p>\n<h2 id=\"chto-est-v-datashitah\">Wat staat er in de datasheets<\/h2>\n<p><\/p>\n<p>Direct in <em>Datasheet<\/em> hebben we mogelijk de volgende secties nodig:<\/p>\n<p><\/p>\n<p><strong>Device Summary<\/strong> \u2013 de eerste pagina van de datasheet vertelt kort over het apparaat. Zeer nuttig in situaties waarin u ergens een chip vindt (gezien in een winkel, eruit gesoldeerd, een vermelding tegenkomt) en wilt begrijpen wat het is.<\/p>\n<p><\/p>\n<p><strong>General Description<\/strong> \u2013 meer gedetailleerde beschrijving van de mogelijkheden van de chips uit de serie.<\/p>\n<p><\/p>\n<p><strong>Pinouts<\/strong> \u2013 pin-schema's voor alle mogelijke behuizingen van de chip (op welke pin welke aansluiting).<\/p>\n<p><\/p>\n<p><strong>Pinbeschrijving<\/strong> \u2013 beschrijving van de functie en mogelijkheden van elke pin.<\/p>\n<p><\/p>\n<p><strong>Geheugenkaart<\/strong> \u2013 een adreskaart in het geheugen is waarschijnlijk niet nodig, maar soms bevat deze ook de tabel met adressen van registerblokken.<\/p>\n<p><\/p>\n<p><strong>Registerkaart<\/strong> \u2013 de tabel met adressen van registerblokken staat meestal in het datasheet, en in <em>Referentiemanual<\/em> \u2013 alleen verschuivingen (<em>adresverschuivingen<\/em>).<\/p>\n<p><\/p>\n<p><strong>Elektrische specificaties<\/strong> \u2013 in dit gedeelte zijn we vooral ge\u00efnteresseerd in <strong>absolute maximum ratings<\/strong>, waarin de maximale belastingen voor de chip worden opgesomd. In tegenstelling tot de onverwoestbare Atmega328p, staat de meeste microcontrollers niet toe om zware belastingen op de pinnen aan te sluiten, wat een onaangename verrassing kan zijn voor Arduino-gebruikers.<\/p>\n<p><\/p>\n<p><strong>Package-informatie<\/strong> \u2013 tekeningen van beschikbare behuizingen, nuttig bij het ontwerpen van eigen printplaten.<\/p>\n<p><\/p>\n<p><em>Referentiemanual<\/em> is doorgaans opgebouwd uit secties die aan specifieke periferie zijn gewijd, zoals in de titel staat aangegeven. Elke hoofdstuk kan ruwweg in drie delen worden verdeeld:<\/p>\n<p><\/p>\n<p><strong>Overzicht<\/strong>, <strong>Inleiding<\/strong>, <strong>Functies<\/strong> \u2013 overzicht van de mogelijkheden van de periferie;<\/p>\n<p><\/p>\n<p><strong>Functionele beschrijving<\/strong>, <strong>Gebruikershandleiding<\/strong> of simpelweg de hoofdsectie \u2013 een gedetailleerde tekstuele beschrijving van de werking van de periferie en de manieren van gebruik;<\/p>\n<p><\/p>\n<p><strong>Registers<\/strong> \u2013 beschrijving van de controle registers. In eenvoudige gevallen zoals GPIO of SPI kan dit genoeg zijn om met de periferie aan de slag te gaan, maar vaak moet je toch de voorgaande delen lezen.<\/p>\n<p><\/p>\n<h2 id=\"kak-chitat-datashity\">Hoe datasheets te lezen<\/h2>\n<p><\/p>\n<p>Datasheets kunnen je in het begin afschrikken door hun omvang en overvloed aan onbekende woorden. In werkelijkheid is het echter niet zo eng, als je een paar handige tips kent.<\/p>\n<p><\/p>\n<p>Installeer <strong>een goede PDF-lezer<\/strong>. Datasheets worden in de fijne tradities van papieren instructies geschreven, ze zijn geweldig om af te drukken, met plastic bladwijzers te markeren en in te binden. Hypertext komt in zeer kleine hoeveelheden voor. Gelukkig, tenminste de structuur van het document heeft bladwijzers, dus een goede lezer met handige navigatie is erg nuttig.<\/p>\n<p><\/p>\n<p>Een datasheet is geen boek van Stroustrup, je hoeft <strong>niet alles van begin tot eind te lezen<\/strong>. Als je de vorige tip hebt opgevolgd \u2013 zoek gewoon het juiste gedeelte in de bladwijzerpanelen.<\/p>\n<p><\/p>\n<p>Datasheets, vooral <em>Referentiemanuals<\/em>, kunnen de mogelijkheden van niet een specifieke chip beschrijven, maar van <strong>een hele serie<\/strong>Dat betekent dat de helft, of zelfs twee derde, van de informatie niet gerelateerd is aan uw chip. Voordat u de TIM7-registers bestudeert, controleer of <em>General Description<\/em>u deze heeft.<\/p>\n<p><\/p>\n<p>Weten <strong>Engels<\/strong> is voldoende op <strong>basisniveau.<\/strong>Datasheets bestaan voor de helft uit termen die onbekend zijn voor een gemiddelde spreker, en voor de andere helft uit eenvoudige verbindingsconstructies. Er zijn ook uitstekende Chinese datasheets in Chinglish, waar de helft ook uit termen bestaat en de andere helft uit een willekeurige verzameling woorden.<\/p>\n<p><\/p>\n<p>Als je een <strong>onbekend woord<\/strong>tegenkomt, probeer het dan niet te vertalen met een Engels-Russisch woordenboek. Als het je in de war brengt <em>hysteresis<\/em>, dan wordt je niet warmer van de vertaling 'hysterese'. Gebruik Google, Stack Overflow, Wikipedia, forums, waar het benodigde concept <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/5357918\/what-does-hysteresis-mean-and-how-does-it-apply-to-computer-science-or-programmi\">in eenvoudige woorden met voorbeelden wordt uitgelegd.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>De beste manier om te begrijpen wat je leest, is <strong>het in de praktijk te controleren.<\/strong>Houd daarom een ontwikkelbord bij de hand waarmee je vertrouwd raakt, of nog beter, twee - voor het geval je iets niet goed begreep en de magische rook zag.<\/p>\n<p><\/p>\n<p>Het is nuttig om een datasheet bij de hand te houden wanneer je <strong>iemand zijn tutorial leest<\/strong> of een externe bibliotheek bestudeert. Het is heel goed mogelijk dat je er een betere oplossing voor je probleem vindt. En omgekeerd - als je in de datasheet niet kunt begrijpen hoe het register werkt, zoek het dan op: waarschijnlijk heeft iemand het al in eenvoudige woorden beschreven of begrijpelijke code op GitHub achtergelaten.<\/p>\n<p><\/p>\n<h2 id=\"slovarik\">Woordenlijst<\/h2>\n<p><\/p>\n<p>Een paar nuttige woorden en termen die helpen om sneller aan datasheets te wennen. Wat ik de afgelopen paar dagen heb bedacht, aanvullingen en correcties zijn welkom.<\/p>\n<p><\/p>\n<p><em>Elektriciteit<\/em><br \/>\n<strong>Vcc<\/strong>, <strong>Vdd<\/strong> \u2013 'plus', voeding.<br \/>\n<strong>Vss<\/strong>, <strong>Vee<\/strong> \u2013 'min', aarde.<br \/>\n<strong>current<\/strong> \u2013 stroom.<br \/>\n<strong>voltage<\/strong> \u2013 spanning.<br \/>\n<strong>to sink current<\/strong> \u2013 werken als 'aarde' voor een externe belasting.<br \/>\n<strong>to source current<\/strong> \u2013 een externe belasting van stroom voorzien.<br \/>\n<strong>high sink\/source pin<\/strong> \u2013 pin met hogere 'tolerantie' voor belasting.<\/p>\n<p><\/p>\n<p><em>IO<\/em><br \/>\n<strong>H, High<\/strong> \u2013 op pin Vcc.<br \/>\n<strong>L, Low<\/strong> \u2013 op pin Vss.<br \/>\n<strong>High Impedance<\/strong>, <strong>Hi-Z<\/strong>, <strong>floating<\/strong> \u2013 op de pin is niets, 'hoge weerstand', hij is feitelijk onzichtbaar voor de externe wereld.<br \/>\n<strong>weak pull up<\/strong>, <strong>weak pull down<\/strong> \u2013 ingebouwde pull-up\/pull-down weerstand, ongeveer gelijk aan 50 k\u03a9 (zie datasheet). Wordt gebruikt om ervoor te zorgen dat de ingangspinnen niet in de lucht zweven, wat valse triggers kan veroorzaken. <em>Weak<\/em> \u2013 omdat hij gemakkelijk te 'overschrijden' is.<br \/>\n<strong>push pull<\/strong> \u2013 uitgangsmodus van de pin, waarin hij schakelt tussen <em>High<\/em> en <em>Laag<\/em> \u2013 gewone OUTPUT met Arduino.<br \/>\n<strong>open drain<\/strong> \u2013 aanduiding van de uitgangsmodus waarin de pin ofwel <em>Laag<\/em>, ofwel <em>Hoge Impedantie \/ Drijvend<\/em>. Dit is bijna altijd geen \u00abechte\u00bb open drain, er zijn beschermdiodes, weerstanden, enzovoorts. Het is gewoon een aanduiding van de modus aarde \/ niets.<br \/>\n<strong>echte open drain<\/strong> \u2013 en dit is al een echte open drain: de pin leidt rechtstreeks naar de aarde als deze open is, of is in een zwevende toestand als deze gesloten is. Dit betekent dat je indien nodig een spanning groter dan Vcc kunt toepassen, maar de maximale waarde wordt nog steeds vastgelegd in de datasheet in de sectie <em>Absolute Maximum Ratings \/ Voltage<\/em>. <\/p>\n<p><\/p>\n<p><em>Interfaces<\/em><br \/>\n<strong>in serie<\/strong> \u2013 in serie verbonden<br \/>\n<strong>om chips in een keten te plaatsen door sequentieel te verbinden, waardoor het aantal uitgangen toeneemt.<\/strong> \u2013 verschuiving, meestal aangeduid als bitverschuiving. Bijgevolg,<br \/>\n<strong>verschuiven<\/strong> om in te verschuiven <strong>om uit te verschuiven<\/strong> en <strong>\u2013 gegevens bit voor bit ontvangen en verzenden.<\/strong> \u2013 klep die de buffer bedekt terwijl de bits worden verschoven. Wanneer de overdracht voltooid is, opent de klep, en de bits beginnen te functioneren.<br \/>\n<strong>sluiting<\/strong> om in te klokken<br \/>\n<strong>\u2013 voer bit voor bit overdracht uit, verschuif alle bits naar de juiste posities.<\/strong> dubbele buffer<br \/>\n<strong>schaduwregister<\/strong>, <strong>vooraf laadregister<\/strong>, <strong>\u2013 aanduidingen van de situatie waarin het register nieuwe gegevens moet kunnen ontvangen, maar deze moet vasthouden tot een bepaald moment. Bijvoorbeeld, om PWM correct te laten werken, mogen de parameters (dutycycle, frequentie) niet veranderen totdat de huidige cyclus is voltooid, maar nieuwe parameters kunnen al worden overgedragen. Bijgevolg worden de huidige in<\/strong> , en de nieuwe belanden in <em>vooraf laadregister<\/em>, terwijl ze in het overeenkomstige register van de chip worden geschreven. <em>\u2013 aanduidingen van de situatie waarin het register nieuwe gegevens moet kunnen ontvangen, maar deze moet vasthouden tot een bepaald moment. Bijvoorbeeld, om PWM correct te laten werken, mogen de parameters (dutycycle, frequentie) niet veranderen totdat de huidige cyclus is voltooid, maar nieuwe parameters kunnen al worden overgedragen. Bijgevolg worden de huidige in<\/em>Van alles<\/p>\n<p><\/p>\n<p><em>prescaler<\/em><br \/>\n<strong>\u2013 frequentievoorverdeling<\/strong> om een bit in te stellen<br \/>\n<strong>\u2013 zet het bit op 1<\/strong> om een bit te wissen \/ resetten<br \/>\n<strong>\u2013 zet het bit op 0 (<\/strong> reset<em>\u2013 functie van de STM datasheets)<\/em> Wat daarna<\/p>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Hier was eigenlijk een praktische sectie gepland met demonstratie van drie projecten op STM32 en STM8, speciaal voor dit artikel gemaakt met behulp van datasheets, met lampen, SPI, timers, PWM en interrupts:<\/h3>\n<p><\/p>\n<p>Maar de tekst wordt behoorlijk veel, daarom worden de projecten naar het tweede deel verplaatst.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Hoe en waarom datasheets te lezen als microcontrollers jouw hobby zijn\" src=\"\/wp-content\/uploads\/2019\/04\/8929bad65dad7473a81a221281c43557.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>De vaardigheid om datasheets te lezen zal je helpen met je hobby, maar zal waarschijnlijk niet het persoonlijke contact met collega's op forums en in chats vervangen. Voor dit moet je toch in de eerste plaats je Engelse taalvaardigheden verbeteren. En daarom, voor degenen die alles hebben gelezen \u2013 een speciale prijs: twee gratis lessen bij Skyeng bij de eerste betaling met de code<\/p>\n<p><\/p>\n<p>HABR2 <code>Uitgave van versie 1.12.0 van het versiebeheersysteem Apache Subversion<\/code>.<\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47Hoe en waarom datasheets te lezen, als microcontrollers uw hobby zijn | ProHoster","description":"Micro-elektronica.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/32463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=32463"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/32463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/24267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=32463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=32463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=32463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}