{"id":31101,"date":"2019-10-31T21:39:28","date_gmt":"2019-10-31T18:39:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\/"},"modified":"2019-10-31T21:39:28","modified_gmt":"2019-10-31T18:39:28","slug":"pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWszystko zacz\u0119\u0142o si\u0119 od zakupu przez autora ciekawego urz\u0105dzenia na rynku wt\u00f3rnym \u2014 Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">kr\u00f3tkie opis<\/a><\/noindex>). Jest ono przeznaczone dla szk\u00f3\u0142: ka\u017cdy ucze\u0144 w klasie otrzymuje urz\u0105dzenie przypominaj\u0105ce elektroniczny notes lub translator z lat dziewi\u0119\u0107dziesi\u0105tych, nauczyciel zadaje pytanie, a uczniowie wpisuj\u0105 odpowiedzi na klawiaturach urz\u0105dze\u0144, kt\u00f3re s\u0105 przesy\u0142ane przez radiowy kana\u0142 (802.15.4) do odbiornika pod\u0142\u0105czonego do komputera nauczyciela.<\/p>\n<p>Wsparcie dla tych urz\u0105dze\u0144 zosta\u0142o przerwane kilka lat temu, a to, co szko\u0142y kupowa\u0142y za 100-200 dolar\u00f3w za sztuk\u0119, teraz pojawia si\u0119 na eBayu za 10 lub mniej. \u201eSprz\u0119t\u201d nadaje si\u0119 idealnie do geekowskich eksperyment\u00f3w:<\/p>\n<ul>\n<li>klawiatura z 60 klawiszami<\/li>\n<li>wy\u015bwietlacz o rozdzielczo\u015bci 384&#215;136, 2 bity na piksel \u2014 podobnie jak w BK, CGA, ale nie 4 kolory, a odcienie jasno\u015bci<\/li>\n<li>mikrokontroler ATmega128RFA1 (128 kB pami\u0119ci flash, 4 kB pami\u0119ci EEPROM, 16 kB pami\u0119ci RAM, nadajnik\/odbiornik zgodny ze standardem 802.15.4)<\/li>\n<li>zewn\u0119trzna (w odniesieniu do mikrokontrolera, a nie ca\u0142ego urz\u0105dzenia) pami\u0119\u0107 flash o pojemno\u015bci 1 megabita (128 kilobajt\u00f3w) z interfejsem SPI<\/li>\n<li>komora na 4 elementy AAA.<\/li>\n<\/ul>\n<p>\nZ nazwy mikrokontrolera wynika, \u017ce nale\u017cy on do rodziny AVR, wi\u0119c uczynienie urz\u0105dzenia kompatybilnym z Arduino to zadanie bardziej ni\u017c trywialne\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Z wiadomo\u015bci na <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> autor dowiedzia\u0142 si\u0119, \u017ce to <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">ju\u017c zrobiono<\/a><\/noindex> (w tym samym linku jest opisane, gdzie pod\u0142\u0105czy\u0107), uzyskuj\u0105c mo\u017cliwo\u015b\u0107 uruchamiania gier dla Arduboy:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"6VqPGFtIT8Q\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/6VqPGFtIT8Q\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Ale autora bardziej interesuje mo\u017cliwo\u015bci nauki, a nie grania na urz\u0105dzeniu:<\/p>\n<ul>\n<li>pami\u0119\u0107 flash z interfejsem szeregowym SPI<\/li>\n<li>bootloadery dla AVR<\/li>\n<li>standard 802.15.4<\/li>\n<\/ul>\n<p>\nAutor zacz\u0105\u0142 od napisania <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">biblioteki<\/a><\/noindex> (GPL v3), kt\u00f3ry umo\u017cliwia inicjalizacj\u0119 wy\u015bwietlacza, wy\u015bwietlanie tekstu i prostok\u0105t\u00f3w, a tak\u017ce uzyskiwanie dost\u0119pu do pami\u0119ci flash z interfejsem SPI. Nast\u0119pnie zacz\u0105\u0142 wymy\u015bla\u0107 praktyczne zastosowania urz\u0105dzenia: kieszeniowy terminal zgodny z VT-100, gry wieloosobowe. Przerabiaj\u0105c trzy urz\u0105dzenia, postanowi\u0142<\/p>\n<p><img decoding=\"async\" alt=\"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo upload the Arduino bootloader is enough, but not the sketch \u2014 the serial port is not exposed, and you won't get around opening the case. Also, the TX0 and RX0 lines of the first serial port are combined with the lines for polling the keyboard matrix, specifically those that are used to poll the function keys on either side of the display. But what can you do \u2014 the author constructed this:<\/p>\n<p><img decoding=\"async\" alt=\"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHe routed the JTAG lines there, so now there's no need to open the battery compartment. And to be able to upload sketches as well, he also brought out both serial ports to this same connector, adding a switch because it's physically impossible to turn off the device otherwise with installed batteries.<\/p>\n<p>It took quite a long time to work with a soldering iron, utility knife, and glue gun. In general, uploading sketches \"over the air\" is significantly more convenient, and something must be urgently invented for this.<\/p>\n<p>The Arduino IDE uses the program <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. It interacts with the microcontroller using the <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>protocol, which allows files to be transferred in both directions. It is poorly compatible with channels where variable delays, distortion, and data loss are possible. If something is failing or crackling in the serial channel, you can drive yourself crazy trying to find the cause. Once, the author struggled for half a day before realizing that the issue was a bad cable and a capricious CP2102 interface converter. Even a microcontroller with a built-in interface converter, such as the ATmega32u4, can sometimes act up like this. Every Arduino user has noticed that errors when uploading sketches are not so uncommon. Sometimes the write goes fine, but an error is found during the verification read. This doesn\u2019t mean that there was a mistake during writing \u2014 the failure occurred during reading. And now imagine that when working \"over the air\" this same thing happens, but much more frequently.<\/p>\n<p>After trying various ways to overcome this issue, the author came up with the following. The device has a 128-kilobyte flash memory with an SPI interface \u2014 accepting data via wires (remember, one device with a connector on the side is already available), using this memory as a buffer, and sending data to another device over the radio channel. A greeting from Cybiko.<\/p>\n<p>Po napisaniu kodu do pracy z radiokanalem oraz czcionk\u0105, bootloader wyd\u0142u\u017cy\u0142 si\u0119 do 4 kilobajt\u00f3w. Dlatego warto\u015b\u0107 HFUSE musia\u0142a zosta\u0107 zmieniona z 0xDA na 0xD8. Teraz bootloader mo\u017ce mie\u0107 d\u0142ugo\u015b\u0107 do 8 kilobajt\u00f3w, a pocz\u0105tkowy adres wynosi 0x1E000. Jest to odzwierciedlone w Makefile, ale nale\u017cy to r\u00f3wnie\u017c uwzgl\u0119dni\u0107 podczas wgrywania. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">bootloadera<\/a><\/noindex> z u\u017cyciem avrdude.<\/p>\n<p>Nadajnik-odbiornik standardu 802.15.4 w ATmega128RFA1 zosta\u0142 pierwotnie zaprojektowany do pracy w protokole <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, kt\u00f3ry jest do\u015b\u0107 skomplikowany, dlatego autor postanowi\u0142 zamiast tego po prostu przesy\u0142a\u0107 pakiety. W ATmega128RFA1 jest to realizowane sprz\u0119towo, wi\u0119c wymagana b\u0119dzie ograniczona ilo\u015b\u0107 kodu. Dla uproszczenia autor postanowi\u0142 r\u00f3wnie\u017c u\u017cy\u0107 sta\u0142ego kana\u0142u, nie pozwalaj\u0105c nawet na jego r\u0119czny wyb\u00f3r. Standard 802.15.4 obs\u0142uguje 16 kana\u0142\u00f3w o numerach od 11 do 26. S\u0105 one do\u015b\u0107 zaj\u0119te, niekt\u00f3re r\u00f3wnie\u017c pokrywaj\u0105 kana\u0142y WiFi (czerwonym zaznaczone kana\u0142y ZigBee, niebieskim, zielonym i \u017c\u00f3\u0142tym \u2014 WiFi).<\/p>\n<p><img decoding=\"async\" alt=\"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOkaza\u0142o si\u0119, \u017ce najmniej podatne na zak\u0142\u00f3cenia z WiFi s\u0105 kana\u0142y 15 i 26. Autor wybra\u0142 drugi z nich. Zastrze\u017cenie: t\u0142umacz nie wie, czy tak mo\u017cna upraszcza\u0107 ZigBee. Mo\u017ce warto jeszcze troch\u0119 popracowa\u0107 nad kodem i zrealizowa\u0107 go w pe\u0142ni?<\/p>\n<p>Na pierwszym z urz\u0105dze\u0144 nale\u017cy zrealizowa\u0107 automat sko\u0144czony, przesy\u0142aj\u0105cy dane za pomoc\u0105 protoko\u0142u STK500. W wi\u0119kszo\u015bci przypadk\u00f3w przesy\u0142ane i odbierane wiadomo\u015bci s\u0105 autonomiczne, ale niekt\u00f3re s\u0105 powi\u0105zane z tymi, kt\u00f3re wcze\u015bniej przesz\u0142y przez kana\u0142. Opis dialogu jest podany. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">tutaj<\/a><\/noindex>.<\/p>\n<p>Wa\u017cnym elementem tego dialogu jest przesy\u0142anie pakiet\u00f3w przeznaczonych do zapisu w pami\u0119ci flash urz\u0105dzenia docelowego. W prostych mikrokontrolerach rodziny AVR rozmiar strony wynosi 128 bajt\u00f3w, ale w ATmega128RFA1 wynosi 256. A w tej pami\u0119ci flash, kt\u00f3ra pod\u0142\u0105cza si\u0119 przez protok\u00f3\u0142 SPI, jest taki sam. Program w pierwszym urz\u0105dzeniu podczas wgrywania sketcha nie przesy\u0142a go od razu do drugiego, lecz zapisuje go w tej pami\u0119ci. Kiedy Arduino IDE sprawdza poprawno\u015b\u0107 zapisu, wysy\u0142ane s\u0105 dane, kt\u00f3re tam zapisano. Teraz nale\u017cy przes\u0142a\u0107 otrzymane dane przez kana\u0142 radiowy do drugiego urz\u0105dzenia. Prze\u0142\u0105czanie z odbioru na nadawanie i z powrotem zdarza si\u0119 do\u015b\u0107 cz\u0119sto. Protok\u00f3\u0142 STK500 jest oboj\u0119tny na op\u00f3\u017anienia, ale nie toleruje utraty danych (dziwne, bo wcze\u015bniej powiedziano, \u017ce op\u00f3\u017anienia w przesy\u0142aniu danych r\u00f3wnie\u017c maj\u0105 wp\u0142yw). A utrata danych podczas bezprzewodowej transmisji jest nieunikniona. W ATmega128RFA1 wbudowano sprz\u0119tow\u0105 implementacj\u0119 ponownych \u017c\u0105da\u0144 w przypadku w\u0105tpliwo\u015bci co do poprawno\u015bci przesy\u0142ania, ale autor zdecydowa\u0142 si\u0119 wdro\u017cy\u0107 to samo programowo. Opracowa\u0142 protok\u00f3\u0142, w kt\u00f3rym w jedn\u0105 stron\u0119 przesy\u0142ane jest znacznie wi\u0119cej danych ni\u017c w drug\u0105.<\/p>\n<p>Nie jest idealny, ale wszystko dzia\u0142a. 256-bajtowa strona jest dzielona na cztery segmenty, z kt\u00f3rych ka\u017cdy przesy\u0142any jest przez kana\u0142 radiowy w formie pakietu. Pakiet zawiera do 125 bajt\u00f3w danych oraz jeden bajt - d\u0142ugo\u015b\u0107 i dwa - CRC. Tak wi\u0119c fragmenty o d\u0142ugo\u015bci 64 bajt\u00f3w wraz z numerami stron i segment\u00f3w (od 0 do 3) s\u0105 tam umieszczane. W urz\u0105dzeniu odbiorczym przewidziano zmienn\u0105, kt\u00f3ra pozwala \u015bledzi\u0107, ile segment\u00f3w zosta\u0142o odebranych, a gdy przychodz\u0105 wszystkie cztery, do urz\u0105dzenia nadaj\u0105cego trafia potwierdzenie, \u017ce ca\u0142a strona zosta\u0142a odebrana. Brak potwierdzenia (CRC si\u0119 nie zgadza) - wysy\u0142amy ca\u0142\u0105 stron\u0119 ponownie. Pr\u0119dko\u015b\u0107 w tym przypadku jest nawet wi\u0119ksza ni\u017c podczas przesy\u0142ania przez kabel. Zobacz:<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"d-ObUCnRmQU\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/d-ObUCnRmQU\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nAle w og\u00f3le, nale\u017ca\u0142oby przewidzie\u0107 wygodny spos\u00f3b pod\u0142\u0105czenia do urz\u0105dze\u0144 kabla do wgrywania sketche'\u00f3w. Na przyk\u0142ad umie\u015bci\u0107 wewn\u0105trz taki konwerter interfejs\u00f3w na CP2102, jak na zdj\u0119ciu, i przyklei\u0107 go do p\u0142ytki w taki spos\u00f3b, aby wytrzymywa\u0142 napi\u0119cie podczas pod\u0142\u0105czania i od\u0142\u0105czania kabla Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Pisanie OTA-loadera dla ATmega128RFA1 (w sk\u0142adzie urz\u0105dzenia Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW urz\u0105dzeniu znajduje si\u0119 r\u00f3wnie\u017c stabilizator 3,3-woltowy (a jak wykorzysta\u0107 go w urz\u0105dzeniu z 6-woltowym zasilaniem \u2014 je\u015bli tylko jest tam taki sam stabilizator, mo\u017cna doda\u0107 dwie diody, aby automatycznie wybiera\u0107, z kt\u00f3rego z nich urz\u0105dzenie b\u0119dzie pobiera\u0107 zasilanie). Z p\u0142ytki przetwornika interfejsu nale\u017cy wylutowa\u0107 wszystkie trzy diody LED, w przeciwnym razie b\u0119d\u0105 one dodatkowo obci\u0105\u017ca\u0107 baterie podczas pracy z nimi, a tak\u017ce zak\u0142\u00f3ca\u0107 odczyt klawiatury i prac\u0119 z pami\u0119ci\u0105 flash z interfejsem SPI.<\/p>\n<p>D\u0105\u017cenie do celu okaza\u0142o si\u0119 nawet ciekawsze ni\u017c jego osi\u0105gni\u0119cie (i nie ma potrzeby przytacza\u0107 tamtego dowcipu o autobusie). Autor dowiedzia\u0142 si\u0119 wiele nowego o bootloaderach dla AVR, pami\u0119ciach flash z interfejsem SPI, protokole STK500 i standardzie 802.15.4.<\/p>\n<p>Ca\u0142y pozosta\u0142y kod w dodatku do opisanej powy\u017cej biblioteki \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">tutaj<\/a><\/noindex>, i on r\u00f3wnie\u017c jest na licencji GPL v3. Twitter autora \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">tutaj<\/a><\/noindex>.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/447026\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u2014 Smart Response XE (\u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435). \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u043e\u043d\u043e \u0434\u043b\u044f \u0448\u043a\u043e\u043b: \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0435\u043d\u0438\u043a \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e \u0434\u0435\u0432\u0430\u0439\u0441\u0443, \u043f\u043e\u0445\u043e\u0436\u0435\u043c\u0443 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u043d\u0443\u044e \u043a\u043d\u0438\u0436\u043a\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u044b\u0445, \u0443\u0447\u0438\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0438 \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043e\u0442\u0432\u0435\u0442\u044b, \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0435 \u043f\u043e \u0440\u0430\u0434\u0438\u043e\u043a\u0430\u043d\u0430\u043b\u0443 (802.15.4) \u0432 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 \u043a \u0443\u0447\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u041f\u041a. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.\" \/>\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\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\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\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe\" \/>\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:39:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:39:28+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\udd47Pisanie OTA-loadera dla ATmega128RFA1 (w ramach urz\u0105dzenia Smart Response XE) | ProHoster","description":"Wszystko si\u0119 zacz\u0119\u0142o.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","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\u041f\u0438\u0448\u0435\u043c OTA-\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043b\u044f ATmega128RFA1 (\u0432 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Smart Response XE) | ProHoster","og:description":"\u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","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:39:28+00:00","article:modified_time":"2019-10-31T18:39:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31101","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 04:31:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:22:35","updated":"2026-01-21 04:31:21","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\/31101","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=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}