{"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\/pl\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","title":{"rendered":"Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikroprocesory s\u0105 twoim hobby","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikroprocesory s\u0105 twoim hobby\" src=\"\/wp-content\/uploads\/2019\/04\/ae2537b0263d692c4f79e7b5f7bc0797.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mikroelektronika to modna pasja ostatnich lat, dzi\u0119ki magicznemu Arduino. Ale jest problem: przy odpowiednim zainteresowaniu szybko przechodzi si\u0119 do DigitalWrite(), a co dalej \u2013 nie do ko\u0144ca wiadomo. Tw\u00f3rcy Arduino do\u0142o\u017cyli wielu stara\u0144, aby obni\u017cy\u0107 pr\u00f3g wej\u015bcia do swojego ekosystemu, ale poza nim wci\u0105\u017c czai si\u0119 mroczny las surowej elektroniki, niedost\u0119pnej dla amator\u00f3w.<\/p>\n<p><\/p>\n<p>Na przyk\u0142ad, arkusze danych. Wydaje si\u0119, \u017ce zawieraj\u0105 wszystko, bierz i korzystaj. Ale ich autorzy wyra\u017anie nie stawiaj\u0105 przed sob\u0105 celu popularyzacji mikrokontroler\u00f3w; czasami <em>wydaje si\u0119<\/em>, \u017ce celowo nadu\u017cywaj\u0105 niezrozumia\u0142ych termin\u00f3w i skr\u00f3t\u00f3w, opisuj\u0105c proste rzeczy, aby maksymalnie zdezorientowa\u0107 nie\u015bwiadomych. Ale nie wszystko jest takie z\u0142e, przy odrobinie ch\u0119ci mo\u017cna to zrozumie\u0107.<\/p>\n<p><\/p>\n<p>W tym artykule podziel\u0119 si\u0119 do\u015bwiadczeniem humanisty w pracy z arkuszami danych w celach hobbystycznych. Tekst jest przeznaczony dla tych, kt\u00f3rzy wyro\u015bli z zabawy z Arduino i ma na celu zak\u0142adanie pewnej znajomo\u015bci zasad dzia\u0142ania mikrokontroler\u00f3w.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Zaczn\u0119 od tradycyjnego<\/p>\n<p><\/p>\n<h3 id=\"migaem-svetodiodom-na-arduino\">Migania diod\u0105 LED na Arduino<\/h3>\n<p><\/p>\n<p>I od razu kod:<\/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>\u201eCo to jest? \u2013 zapyta do\u015bwiadczony czytelnik. \u2013 Dlaczego piszesz co\u015b do rejestru wej\u015bciowego PINB? Przecie\u017c jest tylko do odczytu!\u201d Rzeczywi\u015bcie, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Reference\/PortManipulation\">dokumentacja Arduino<\/a><\/noindex>, jak i wi\u0119kszo\u015b\u0107 artyku\u0142\u00f3w edukacyjnych w Internecie, twierdzi, \u017ce ten rejestr jest tylko do odczytu. I sam tak my\u015bla\u0142em, dop\u00f3ki nie przeczyta\u0142em <noindex><a rel=\"nofollow\" href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf\">karta danych<\/a><\/noindex> k Atmega328p, przygotowuj\u0105c ten artyku\u0142. A tam:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikroprocesory s\u0105 twoim hobby\" src=\"\/wp-content\/uploads\/2019\/04\/4c754bda59d9f18a38209cc32f0fb3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>To stosunkowo nowa funkcjonalno\u015b\u0107, kt\u00f3rej nie by\u0142o w Atmega8, o kt\u00f3rej nie wszyscy wiedz\u0105 lub nie wspominaj\u0105 ze wzgl\u0119d\u00f3w na zgodno\u015b\u0107 wsteczn\u0105. Ale jest to ca\u0142kiem przydatne do pokazania my\u015bli, \u017ce warto czyta\u0107 arkusze danych, aby wykorzysta\u0107 wszystkie mo\u017cliwo\u015bci uk\u0142adu, w tym te ma\u0142o znane. I to nie jedyny pow\u00f3d.<\/p>\n<p><\/p>\n<h2 id=\"zachem-esche-chitat-datashity\">Dlaczego warto jeszcze czyta\u0107 arkusze danych<\/h2>\n<p><\/p>\n<p>Zazwyczaj entuzja\u015bci Arduino, po zabawie z diodami LED i funkcjami AnalogWrite, zaczynaj\u0105 pod\u0142\u0105cza\u0107 do p\u0142ytki r\u00f3\u017cne modu\u0142y i chipy, dla kt\u00f3rych istniej\u0105 ju\u017c napisane biblioteki. Pr\u0119dzej czy p\u00f3\u017aniej pojawia si\u0119 biblioteka, kt\u00f3ra nie dzia\u0142a tak, jak powinna. Wtedy hobbysta zaczyna j\u0105 rozgryza\u0107, \u017ceby j\u0105 naprawi\u0107, a tam...<\/p>\n<p><\/p>\n<p>A tam dzieje si\u0119 co\u015b ca\u0142kowicie niezrozumia\u0142ego, wi\u0119c trzeba korzysta\u0107 z Google, czyta\u0107 liczne poradniki, czerpa\u0107 odpowiedni kod z r\u00f3\u017cnych \u017ar\u00f3de\u0142 i w ko\u0144cu osi\u0105gn\u0105\u0107 swoje. To daje silne poczucie osi\u0105gni\u0119cia, ale w rzeczywisto\u015bci proces przypomina wynalezienie roweru przez in\u017cynieri\u0119 wsteczn\u0105 motocykla. Przy tym nie zwi\u0119ksza si\u0119 zrozumienie, jak ten rower dzia\u0142a. Wiem, bo sam tym si\u0119 zajmowa\u0142em do\u015b\u0107 d\u0142ugo.<\/p>\n<p><\/p>\n<p>Gdybym zamiast tego ciekawego zaj\u0119cia po\u015bwi\u0119ci\u0142 kilka dni na nauk\u0119 dokumentacji Atmega328, zaoszcz\u0119dzi\u0142bym ogromn\u0105 ilo\u015b\u0107 czasu. W ko\u0144cu to do\u015b\u0107 prosty mikrokontroler.<\/p>\n<p><\/p>\n<p>Tak wi\u0119c, trzeba czyta\u0107 dane techniczne, przynajmniej po to, aby mie\u0107 poj\u0119cie, jak w og\u00f3le dzia\u0142a mikrokontroler i co potrafi robi\u0107. I jeszcze:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>aby sprawdza\u0107 i optymalizowa\u0107 cudze biblioteki. Cz\u0119sto pisz\u0105 je ci sami amatorzy, kt\u00f3rzy wynajduj\u0105 ko\u0142o na nowo; lub, przeciwnie, autorzy celowo wprowadzaj\u0105 w nich nadmiarow\u0105 ochron\u0119 przed g\u0142upot\u0105. Niech b\u0119dzie trzy razy wi\u0119cej i wolniej, ale na pewno zadzia\u0142a;<\/p>\n<p>\n<\/li>\n<li>\n<p>aby m\u00f3c u\u017cywa\u0107 w projekcie uk\u0142ad\u00f3w, do kt\u00f3rych nikt nie napisa\u0142 biblioteki;<\/p>\n<p>\n<\/li>\n<li>\n<p>aby u\u0142atwi\u0107 sobie zadanie migracji z jednej linii mikrokontroler\u00f3w na drug\u0105;<\/p>\n<p>\n<\/li>\n<li>\n<p>aby w ko\u0144cu zoptymalizowa\u0107 sw\u00f3j stary kod, kt\u00f3ry nijak nie mie\u015bci\u0142 si\u0119 w Arduino;<\/p>\n<p>\n<\/li>\n<li>\n<p>aby nauczy\u0107 si\u0119 zarz\u0105dza\u0107 dowolnym uk\u0142adem bezpo\u015brednio przez jego rejestry, nie martwi\u0105c si\u0119 o poznawanie dzia\u0142ania jego bibliotek, je\u015bli w og\u00f3le s\u0105.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"zachem-pisat-v-registry-napryamuyu-kogda-est-hal-i-ll\">Po co pisa\u0107 bezpo\u015brednio do rejestr\u00f3w, gdy s\u0105 HAL i LL?<\/h2>\n<p><\/p>\n<p><em>S\u0142owniczek<\/em><br \/>\n<em><strong>HAL, High Abstraction Layer<\/strong> \u2013 biblioteka do zarz\u0105dzania mikrokontrolerem z wysokim poziomem abstrakcji. Je\u015bli potrzebujesz korzysta\u0107 z interfejsu SPI1, po prostu konfigurujesz i w\u0142\u0105czasz SPI1, nie zastanawiaj\u0105c si\u0119, jakie rejestry za co odpowiadaj\u0105.<br \/>\n<strong>LL, Low Level API<\/strong> \u2013 biblioteka, kt\u00f3ra zawiera makra lub struktury z adresami rejestr\u00f3w, pozwalaj\u0105ca na dost\u0119p do nich po nazwie. DDRx, PORTx, PINx na Atmedze \u2013 to jest LL.<\/em><\/p>\n<p><\/p>\n<p>Dyskusje na temat \u201eHAL, LL czy rejestry\u201d regularnie pojawiaj\u0105 si\u0119 w komentarzach na Habra. Nie roszcz\u0105c sobie dost\u0119pu do astralnej wiedzy, po prostu podziel\u0119 si\u0119 swoim amatorskim do\u015bwiadczeniem i spostrze\u017ceniami.<\/p>\n<p><\/p>\n<p>Z niejakim zrozumieniem Atmegi i przeczytaniu artyku\u0142\u00f3w na temat wspania\u0142o\u015bci STM32, kupi\u0142em p\u00f3\u0142 tuzina r\u00f3\u017cnych p\u0142ytek \u2013 zar\u00f3wno Discovery, jak i \u201eNiebieskie Tabletki\u201d, a nawet kilka chip\u00f3w dla moich w\u0142asnych projekt\u00f3w. Wszystkie przez dwa lata le\u017ca\u0142y w pude\u0142ku. Czasami m\u00f3wi\u0142em sobie: \u201ewszystko, od tych weekend\u00f3w ucz\u0119 si\u0119 STM\u201d, uruchamia\u0142em CubeMX, generowa\u0142em ustawienia dla SPI, patrzy\u0142em na powsta\u0142y mur tekstu, obficie wzbogacony przez copywriting STM, i decydowa\u0142em, \u017ce to jest jako\u015b zbyt skomplikowane.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikroprocesory s\u0105 twoim hobby\" src=\"\/wp-content\/uploads\/2019\/04\/d83be97ba2767121f4be20d524000afe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zrozumie\u0107, co tu napisa\u0142 CubeMX, oczywi\u015bcie mo\u017cna. Ale jednocze\u015bnie jasne jest, \u017ce zapami\u0119tanie wszystkich sformu\u0142owa\u0144, aby p\u00f3\u017aniej pisa\u0107 je r\u0119cznie, jest nierealne. A w przypadku debugowania, je\u015bli przypadkiem zapomn\u0119 zaznaczy\u0107 jak\u0105\u015b opcj\u0119 w Cube, to b\u0119dzie ju\u017c ca\u0142kowity chaos.<\/p>\n<p><\/p>\n<p>Min\u0119\u0142y dwa lata, ja wci\u0105\u017c patrzy\u0142em na <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=fr.appsolute.st&amp;hl=ru\">ST MCU Finder<\/a><\/noindex> jak na r\u00f3\u017cne smaczne, lecz niedost\u0119pne dla mojego zrozumienia chipy, i przypadkowo natkn\u0105\u0142em si\u0119 na <noindex><a rel=\"nofollow\" href=\"https:\/\/lujji.github.io\/blog\/bare-metal-programming-stm8\/\">\u015bwietny artyku\u0142<\/a><\/noindex>, cho\u0107 chodzi\u0142o o STM8. I <em>nagle<\/em> zmog\u0142em, \u017ce przez ca\u0142y ten czas puka\u0142em do otwartych drzwi: rejestry w STM s\u0105 podobnie zorganizowane jak w ka\u017cdym innym MCU, i do pracy z nimi Cube nie jest konieczny. <em>A co, mo\u017cna by\u0142o tak?..<\/em><\/p>\n<p><\/p>\n<p>HAL i konkretnie STM32CubeMX to narz\u0119dzie dla profesjonalnych in\u017cynier\u00f3w, kt\u00f3rzy mocno pracuj\u0105 z chipami STM32. G\u0142\u00f3wn\u0105 zalet\u0105 jest wysoki poziom abstrakcji, mo\u017cliwo\u015b\u0107 szybkiej migracji z jednego MCU na inny, a nawet z jednego rdzenia na inne, pozostaj\u0105c w ramach serii STM32. Amatorzy rzadko si\u0119 z tym spotykaj\u0105 \u2013 nasz wyb\u00f3r MCU jest zazwyczaj ograniczony do asortymentu AliExpress, a my cz\u0119\u015bciej migrujemy mi\u0119dzy radykalnie r\u00f3\u017cnymi chipami \u2013 przechodzimy z Atmegi na STM, ze STM na ESP, lub co tam nowego podrzuc\u0105 nam chi\u0144scy przyjaciele. HAL tutaj nie pomo\u017ce, a nauka poch\u0142onie sporo czasu.<\/p>\n<p><\/p>\n<p>Pozostaje LL \u2013 ale do rejestr\u00f3w jest tylko krok. Osobi\u015bcie uwa\u017cam, \u017ce pisanie w\u0142asnych makr z adresami rejestr\u00f3w jest przydatne: dok\u0142adniej studiuj\u0119 kart\u0119 katalogow\u0105, my\u015bl\u0119, co mi si\u0119 przyda w przysz\u0142o\u015bci, a co na pewno nie, lepiej strukturyzuj\u0119 swoje programy i w og\u00f3le pokonywanie trudno\u015bci sprzyja zapami\u0119tywaniu.<\/p>\n<p><\/p>\n<p>Ponadto istnieje niuans zwi\u0105zany z popularnym STM32F103 \u2013 dla niego istniej\u0105 dwie niekompatybilne wersje LL, jedna oficjalna od STM, druga \u2013 od Leaf Labs, u\u017cywana w projekcie STM32duino. Je\u015bli pisz\u0119 bibliotek\u0119 open-source (a tak\u0105 mia\u0142em w\u0142a\u015bnie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Ontaelio\/DMdriverSTM32F1\">tak\u0105 zadanie<\/a><\/noindex>), trzeba albo zrobi\u0107 dwie wersje, albo zwraca\u0107 si\u0119 bezpo\u015brednio do rejestr\u00f3w.<\/p>\n<p><\/p>\n<p>W ko\u0144cu porzucenie LL w moim odczuciu upraszcza migracj\u0119, zw\u0142aszcza je\u015bli zaczyna si\u0119 j\u0105 planowa\u0107 ju\u017c na etapie prac nad projektem. Przyk\u0142ad skrajny: napiszemy program pokazu b\u0142ysku w Arduino w Atmel Studio bez 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>Aby ten kod m\u00f3g\u0142 miga\u0107 diod\u0105 LED na chi\u0144skiej p\u0142ytce z STM8 (ze ST Visual Desktop), wystarczy zmieni\u0107 dwa adresy:<\/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>Tak, korzystam z mo\u017cliwo\u015bci pod\u0142\u0105czenia diody LED na konkretnej p\u0142ytce, b\u0119dzie miga\u0107 bardzo wolno, ale jednak miga!<\/p>\n<p><\/p>\n<h2 id=\"kakie-byvayut-datashity\">Jakie s\u0105 rodzaje arkuszy danych<\/h2>\n<p><\/p>\n<p>W artyku\u0142ach i na forach, zar\u00f3wno w j\u0119zyku rosyjskim, jak i angielskim, pod \"arkuszami danych\" rozumie si\u0119 ka\u017cd\u0105 dokumentacj\u0119 techniczn\u0105 chip\u00f3w, ja r\u00f3wnie\u017c stosuj\u0119 t\u0105 definicj\u0119 w tym tek\u015bcie. Formalnie s\u0105 one tylko jednym z rodzaj\u00f3w takiej dokumentacji:<\/p>\n<p><\/p>\n<p><strong>Arkusz danych<\/strong> \u2013 TTH, taktyczno-techniczne charakterystyki. Musi by\u0107 dost\u0119pny dla ka\u017cdego komponentu elektronicznego. Informacje referencyjne, warto je mie\u0107 pod r\u0119k\u0105, ale nie ma w nich zbyt wiele do przemy\u015blenia. Niemniej jednak, prostsze chipy cz\u0119sto ograniczaj\u0105 si\u0119 do arkusza danych, aby nie wytwarza\u0107 zb\u0119dnych dokument\u00f3w; w takim przypadku <em>Podr\u0119cznik referencyjny<\/em> w\u0142\u0105cza si\u0119 r\u00f3wnie\u017c tutaj.<\/p>\n<p><\/p>\n<p><strong>Podr\u0119cznik referencyjny<\/strong> \u2013 w\u0142a\u015bciwie instrukcja, obszerny dokument licz\u0105cy ponad 1000 stron. Szczeg\u00f3\u0142owo opisuje dzia\u0142anie wszystkiego, co zosta\u0142o w\u0142o\u017cone w chip. G\u0142\u00f3wny dokument do nauki mikrokontrolera. W przeciwie\u0144stwie do <em>datasheet<\/em>, instrukcje s\u0105 pisane dla szerokiej gamy M\u041a, zawieraj\u0105 wiele informacji o peryferiach, kt\u00f3re nie wyst\u0119puj\u0105 w Twoim konkretnym modelu.<\/p>\n<p><\/p>\n<p><strong>Podr\u0119cznik programowania<\/strong> lub <strong>Podr\u0119cznik zestawu instrukcji<\/strong> \u2013 instrukcja dotycz\u0105ca unikalnych polece\u0144 mikrokontrolera. Przeznaczona dla tych, kt\u00f3rzy programuj\u0105 w Assemblerze. Autorzy kompilator\u00f3w aktywnie z niej korzystaj\u0105 w celu optymalizacji kodu, wi\u0119c w og\u00f3lnym przypadku mo\u017ce nam si\u0119 nie przyda\u0107. Ale warto tu zajrze\u0107, aby og\u00f3lnie zrozumie\u0107 niekt\u00f3re specyficzne polecenia, takie jak wyj\u015bcie z przerwania, zw\u0142aszcza przy aktywnym u\u017cytkowaniu debuggera.<\/p>\n<p><\/p>\n<p><strong>Notatka aplikacyjna<\/strong> \u2013 przydatne wskaz\u00f3wki dotycz\u0105ce rozwi\u0105zywania konkretnych problem\u00f3w, cz\u0119sto z przyk\u0142adami kodu.<\/p>\n<p><\/p>\n<p><strong>Karta erraty<\/strong> \u2013 opis przypadk\u00f3w nienaormalnego zachowania chipa wraz z mo\u017cliwymi obej\u015bciami, je\u015bli s\u0105 dost\u0119pne.<\/p>\n<p><\/p>\n<h2 id=\"chto-est-v-datashitah\">Co znajduje si\u0119 w arkuszach danych<\/h2>\n<p><\/p>\n<p>Bezpo\u015brednio w <em>Arkusz danych<\/em> mog\u0105 by\u0107 potrzebne nam takie sekcje:<\/p>\n<p><\/p>\n<p><strong>Podsumowanie urz\u0105dzenia<\/strong> \u2013 pierwsza strona arkusza danych kr\u00f3tko opisuje urz\u0105dzenie. Bardzo przydatna w sytuacjach, gdy gdzie\u015b znalaz\u0142e\u015b chip (zauwa\u017cy\u0142e\u015b w sklepie, wylutowa\u0142e\u015b, spotka\u0142e\u015b wzmiank\u0119) i chcesz zrozumie\u0107, czym to jest.<\/p>\n<p><\/p>\n<p><strong>Opis og\u00f3lny<\/strong> \u2013 bardziej szczeg\u00f3\u0142owy opis mo\u017cliwo\u015bci uk\u0142ad\u00f3w z serii.<\/p>\n<p><\/p>\n<p><strong>Pinouts<\/strong> \u2013 schematy rozk\u0142ad\u00f3w pin\u00f3w dla wszystkich mo\u017cliwych obud\u00f3w uk\u0142adu (na kt\u00f3rym nodze jaki pin).<\/p>\n<p><\/p>\n<p><strong>Pin Description<\/strong> \u2013 opis przeznaczenia i mo\u017cliwo\u015bci ka\u017cdego pinu.<\/p>\n<p><\/p>\n<p><strong>Memory Map<\/strong> \u2013 mapa adres\u00f3w w pami\u0119ci jest nam raczej niepotrzebna, ale czasami zawiera r\u00f3wnie\u017c tabel\u0119 adres\u00f3w blok\u00f3w rejestr\u00f3w.<\/p>\n<p><\/p>\n<p><strong>Register Map<\/strong> \u2013 tabela adres\u00f3w blok\u00f3w rejestr\u00f3w, zazwyczaj znajduje si\u0119 w karcie danych, a w <em>Ref Manual<\/em> \u2013 tylko przesuni\u0119cia (<em>address offsets<\/em>).<\/p>\n<p><\/p>\n<p><strong>Electrical Characteristics<\/strong> \u2013 w tej sekcji interesuj\u0105 nas w pierwszej kolejno\u015bci <strong>absolute maximum ratings<\/strong>, wymieniaj\u0105ce maksymalne obci\u0105\u017cenia uk\u0142adu. W przeciwie\u0144stwie do niezniszczalnej Atmega328p, wi\u0119kszo\u015b\u0107 mikrokontroler\u00f3w nie pozwala na pod\u0142\u0105czanie powa\u017cnych obci\u0105\u017ce\u0144 do pin\u00f3w, co staje si\u0119 niemi\u0142ym zaskoczeniem dla os\u00f3b korzystaj\u0105cych z Arduino.<\/p>\n<p><\/p>\n<p><strong>Package Information<\/strong> \u2013 rysunki dost\u0119pnych obud\u00f3w, przydatne podczas projektowania w\u0142asnych p\u0142ytek.<\/p>\n<p><\/p>\n<p><em>Podr\u0119cznik referencyjny<\/em> strukturalnie sk\u0142ada si\u0119 z sekcji po\u015bwi\u0119conych konkretnej peryferii, wskazanej w ich nag\u0142\u00f3wku. Ka\u017cd\u0105 rozdzia\u0142 mo\u017cna umownie podzieli\u0107 na trzy cz\u0119\u015bci:<\/p>\n<p><\/p>\n<p><strong>Overview<\/strong>, <strong>Wprowadzenie<\/strong>, <strong>Features<\/strong> \u2013 przegl\u0105d mo\u017cliwo\u015bci peryferii;<\/p>\n<p><\/p>\n<p><strong>Functional Description<\/strong>, <strong>Usage Guide<\/strong> lub po prostu g\u0142\u00f3wny blok sekcji \u2013 szczeg\u00f3\u0142owy opis zasad dzia\u0142ania peryferii i mo\u017cliwo\u015bci jej u\u017cycia;<\/p>\n<p><\/p>\n<p><strong>Registers<\/strong> \u2013 opis rejestr\u00f3w kontrolnych. W prostych przypadkach jak GPIO czy SPI mo\u017ce by\u0107 to wystarczaj\u0105ce, aby zacz\u0105\u0107 korzysta\u0107 z peryferii, ale cz\u0119sto konieczne jest przeczytanie wcze\u015bniejszych cz\u0119\u015bci.<\/p>\n<p><\/p>\n<h2 id=\"kak-chitat-datashity\">Jak czyta\u0107 karty danych<\/h2>\n<p><\/p>\n<p>Karty danych mog\u0105 przera\u017ca\u0107 swoim rozmiarem i obfito\u015bci\u0105 niezrozumia\u0142ych s\u0142\u00f3w. W rzeczywisto\u015bci nie jest tak strasznie, je\u015bli zna si\u0119 kilka trik\u00f3w.<\/p>\n<p><\/p>\n<p>Zainstaluj <strong>dobrego czytnika PDF<\/strong>. Karty danych pisane s\u0105 w znakomitych tradycjach papierowych instrukcji, fajnie jest je wydrukowa\u0107, zaznaczy\u0107 plastikowymi zak\u0142adkami i oprawi\u0107. Hipertekst wyst\u0119puje w nich w \u015bladowych ilo\u015bciach. Na szcz\u0119\u015bcie przynajmniej struktura dokumentu jest oznaczona zak\u0142adkami, wi\u0119c dobry czytnik z wygodn\u0105 nawigacj\u0105 jest bardzo przydatny.<\/p>\n<p><\/p>\n<p>Karta danych to nie podr\u0119cznik Stroustrupa, w nim <strong>nie trzeba czyta\u0107 wszystkiego po kolei<\/strong>. Je\u015bli skorzysta\u0142e\u015b z poprzedniej porady \u2013 po prostu znajd\u017a w panelu zak\u0142adek potrzebny dzia\u0142.<\/p>\n<p><\/p>\n<p>Karty danych, szczeg\u00f3lnie <em>Reference Manuals<\/em>, mog\u0105 opisywa\u0107 mo\u017cliwo\u015bci nie konkretnego uk\u0142adu, ale <strong>ca\u0142ej serii<\/strong>Oznacza to, \u017ce po\u0142owa, a nawet dwie trzecie informacji nie ma zwi\u0105zku z Twoim uk\u0142adem scalonym. Zanim zaczniesz przestudiowa\u0107 rejestry TIM7, upewnij si\u0119, \u017ce <em>Opis og\u00f3lny<\/em>masz go na swoim wyposa\u017ceniu.<\/p>\n<p><\/p>\n<p>Zna\u0107 <strong>angielski<\/strong> na poziomie <strong>podstawowym<\/strong>. Karty katalogowe w po\u0142owie sk\u0142adaj\u0105 si\u0119 z termin\u00f3w, kt\u00f3re s\u0105 obce przeci\u0119tnemu u\u017cytkownikowi, a w po\u0142owie \u2013 z prostych zwrot\u00f3w. Cz\u0119sto mo\u017cna znale\u017a\u0107 doskona\u0142e chi\u0144skie karty katalogowe w angielskim chi\u0144skim, gdzie po\u0142owa r\u00f3wnie\u017c sk\u0142ada si\u0119 z termin\u00f3w, a druga po\u0142owa to losowy zestaw s\u0142\u00f3w.<\/p>\n<p><\/p>\n<p>Je\u015bli napotkasz <strong>nieznane s\u0142owo<\/strong>, nie pr\u00f3buj t\u0142umaczy\u0107 go przy pomocy s\u0142ownika angielsko-rosyjskiego. Je\u015bli nie mo\u017cesz zrozumie\u0107 <em>histerezy<\/em>, to t\u0142umaczenie \u201ehistereza\u201d nie uczyni sprawy ja\u015bniejsz\u0105. Korzystaj z Google'a, Stack Overflow, Wikipedii, for\u00f3w, gdzie potrzebna koncepcja b\u0119dzie <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/5357918\/what-does-hysteresis-mean-and-how-does-it-apply-to-computer-science-or-programmi\">wyja\u015bniona prostymi s\u0142owami z przyk\u0142adami<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Najlepszym sposobem na zrozumienie przeczytanego tekstu jest <strong>sprawdzenie w praktyce<\/strong>. Dlatego miej pod r\u0119k\u0105 p\u0142ytk\u0119 dewelopersk\u0105, z kt\u00f3r\u0105 si\u0119 zapoznajesz, a najlepiej dwie \u2013 na wypadek, gdyby\u015b czego\u015b nie zrozumia\u0142 i zauwa\u017cy\u0142 magiczny dym.<\/p>\n<p><\/p>\n<p>Przydatne jest, aby mie\u0107 pod r\u0119k\u0105 kart\u0119 katalogow\u0105, gdy <strong>czytasz czyj\u015b tutorial<\/strong> lub studiujesz cudz\u0105 bibliotek\u0119. Jest ca\u0142kiem mo\u017cliwe, \u017ce znajdziesz w nim bardziej optymalne rozwi\u0105zanie swojego problemu. I odwrotnie \u2013 je\u015bli nie mo\u017cesz z karty katalogowej zrozumie\u0107, jak dzia\u0142a dany rejestr, poszukaj w Google: najprawdopodobniej kto\u015b ju\u017c opisa\u0142 to prostymi s\u0142owami lub umie\u015bci\u0142 zrozumia\u0142y kod na GitHubie.<\/p>\n<p><\/p>\n<h2 id=\"slovarik\">S\u0142owniczek<\/h2>\n<p><\/p>\n<p>Troch\u0119 przydatnych s\u0142\u00f3w i oznacze\u0144, kt\u00f3re pomog\u0105 szybciej oswoi\u0107 si\u0119 z kartami katalogowymi. To, co przypomnia\u0142o mi si\u0119 w ostatnich dw\u00f3ch dniach, wszelkie dodatki i poprawki s\u0105 mile widziane.<\/p>\n<p><\/p>\n<p><em>Elektryczno\u015b\u0107<\/em><br \/>\n<strong>Vcc<\/strong>, <strong>Vdd<\/strong> \u2013 \u201eplus\u201d, zasilanie<br \/>\n<strong>Vss<\/strong>, <strong>Vee<\/strong> \u2013 \u201eminus\u201d, ziemia<br \/>\n<strong>pr\u0105d<\/strong> \u2013 pr\u0105d<br \/>\n<strong>napi\u0119cie<\/strong> \u2013 napi\u0119cie<br \/>\n<strong>aby \u015bci\u0105gn\u0105\u0107 pr\u0105d<\/strong> \u2013 dzia\u0142a\u0107 jako \u201eziemia\u201d dla zewn\u0119trznego obci\u0105\u017cenia<br \/>\n<strong>aby zasila\u0107 pr\u0105d<\/strong> \u2013 dostarcza\u0107 zasilanie zewn\u0119trznemu obci\u0105\u017ceniu<br \/>\n<strong>wysoka pin zaci\u0105gu\/zasilania<\/strong> \u2013 pin o zwi\u0119kszonej \u201etolerancji\u201d wzgl\u0119dem obci\u0105\u017cenia<\/p>\n<p><\/p>\n<p><em>IO<\/em><br \/>\n<strong>H, Wysoki<\/strong> \u2013 na pinie Vcc<br \/>\n<strong>L, Niski<\/strong> \u2013 na pinie Vss<br \/>\n<strong>Wysoka impedancja<\/strong>, <strong>Hi-Z<\/strong>, <strong>dryfuj\u0105cy<\/strong> \u2013 na pinie nic nie ma, \u201ewysoka impedancja\u201d, jest praktycznie niewidoczny dla \u015bwiata zewn\u0119trznego.<br \/>\n<strong>s\u0142abe podci\u0105ganie<\/strong>, <strong>s\u0142abe \u015bci\u0105ganie<\/strong> \u2013 wbudowany opornik podci\u0105gaj\u0105cy\/\u015bci\u0105gaj\u0105cy, przybli\u017cony odpowiednik 50 k\u03a9 (zobacz kart\u0119 katalogow\u0105). Stosowany, na przyk\u0142ad, aby pin wej\u015bciowy nie unosi\u0142 si\u0119 w powietrzu, powoduj\u0105c fa\u0142szywe wyzwolenia. <em>S\u0142abe<\/em> \u2013 poniewa\u017c \u0142atwo go \u201eprzebi\u0107\u201d.<br \/>\n<strong>push pull<\/strong> \u2013 tryb wyj\u015bciowy pinu, w kt\u00f3rym prze\u0142\u0105cza si\u0119 mi\u0119dzy <em>Wysoki<\/em> i <em>Niski<\/em> \u2013 standard OUTPUT with Arduino.<br \/>\n<strong>open drain<\/strong> \u2013 designation of the output mode in which the pin can be either <em>Niski<\/em>, albo <em>High Impedance \/ Floating<\/em>. In this case, it's almost never a \"true\" open drain; there are protective diodes, resistors, and more. This simply indicates the ground\/nothing mode.<br \/>\n<strong>true open drain<\/strong> \u2013 and this is a true open drain: the pin directly connects to ground when open, or remains in a suspended state when closed. This means it can pass a voltage greater than Vcc if necessary, but the maximum is specified in the datasheet under <em>Absolute Maximum Ratings \/ Voltage<\/em>. <\/p>\n<p><\/p>\n<p><em>Interfejsy<\/em><br \/>\n<strong>in series<\/strong> \u2013 connected in series<br \/>\n<strong>to chain<\/strong> \u2013 assembling chips in a chain through series connection, increasing the number of outputs.<br \/>\n<strong>shift<\/strong> \u2013 shift, usually denotes bit shifting. Accordingly, <strong>to shift in<\/strong> i <strong>to shift out<\/strong> \u2013 receiving and transmitting data bit by bit.<br \/>\n<strong>latch<\/strong> \u2013 a latch that covers the buffer while bits are being shifted. When the transmission is complete, the latch opens, and the bits start working.<br \/>\n<strong>to clock in<\/strong> \u2013 perform bit-wise transmission, shifting all bits to their required positions.<br \/>\n<strong>double buffer<\/strong>, <strong>shadow register<\/strong>, <strong>preload register<\/strong> \u2013 designations of history when the register must be able to accept new data but hold it until a certain moment. For example, for proper PWM operation, its parameters (duty cycle, frequency) should not change until the current cycle is finished, but new parameters can be passed. Accordingly, the current ones are kept in <em>shadow register<\/em>, and the new ones are entered into <em>preload register<\/em>, being recorded in the corresponding chip register.<\/p>\n<p><\/p>\n<p><em>Various<\/em><br \/>\n<strong>prescaler<\/strong> \u2013 frequency divider<br \/>\n<strong>to set a bit<\/strong> \u2013 set the bit to 1<br \/>\n<strong>to clear\/reset a bit<\/strong> \u2013 reset the bit to 0 (<em>reset<\/em> \u2013 a feature of STM datasheets)<\/p>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Co dalej<\/h3>\n<p><\/p>\n<p>In general, a practical part was planned to demonstrate three projects on STM32 and STM8, created specifically for this article using datasheets, with light bulbs, SPI, timers, PWM, and interrupts:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikroprocesory s\u0105 twoim hobby\" src=\"\/wp-content\/uploads\/2019\/04\/8929bad65dad7473a81a221281c43557.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>However, the text is becoming quite lengthy, so the projects are moved to part two.<\/p>\n<p><\/p>\n<p>The skill of reading datasheets will help you with your hobby, but it will hardly replace live communication with fellow enthusiasts on forums and chats. For this, you really need to improve your English first. Therefore, for those who have read to the end \u2013 a special prize: two free lessons at Skyeng with the first payment using the code <code>HABR2<\/code>.<\/p>\n<p>\u0179r\u00f3d\u0142o: <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\/pl\/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=\"pl_PL\" \/>\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\/pl\/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\udd47Jak i dlaczego czyta\u0107 karty katalogowe, je\u015bli mikrocontrolery to twoje hobby | ProHoster","description":"Microelectronics.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/32463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=32463"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/32463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/24267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=32463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=32463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=32463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}