{"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\/es\/blog\/administrirovanie\/pishem-ota-zagruzchik-dlya-atmega128rfa1-v-sostave-ustrojstva-smart-response-xe","title":{"rendered":"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/c3c47048a601bcd0a79b44535de2f36f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTodo comenz\u00f3 con la adquisici\u00f3n por parte del autor de un dispositivo interesante en el mercado secundario: Smart Response XE (<noindex><a rel=\"nofollow\" href=\"http:\/\/downloads.smarttech.com\/media\/sitecore\/en\/support\/product\/smartresponse\/smartresponsexe\/specsheets\/specsresponsexev18mar13.pdf\">descripci\u00f3n breve<\/a><\/noindex>). Est\u00e1 destinado a escuelas: cada alumno en la clase recibe un dispositivo que se asemeja a un cuaderno electr\u00f3nico o un traductor de los noventa, el maestro formula una pregunta y los alumnos escriben las respuestas en los teclados de los dispositivos, que se env\u00edan a trav\u00e9s de un canal de radio (802.15.4) a un receptor conectado a la PC del maestro.<\/p>\n<p>El soporte para estos dispositivos se interrumpi\u00f3 hace varios a\u00f1os, y lo que las escuelas compraban por 100-200 d\u00f3lares cada uno ahora aparece en eBay por 10 o menos. El 'hardware' es realmente adecuado para experimentos geeks:<\/p>\n<ul>\n<li>teclado de 60 teclas<\/li>\n<li>pantalla con resoluci\u00f3n de 384&#215;136, 2 bits por p\u00edxel \u2014 similar a BK, CGA, pero 4 no son colores, sino graduaciones de brillo<\/li>\n<li>microcontrolador ATmega128RFA1 (128 kB de memoria flash, 4 kB de EEPROM, 16 kB de RAM, transceptor est\u00e1ndar 802.15.4)<\/li>\n<li>memoria flash externa (en relaci\u00f3n al microcontrolador, no a todo el dispositivo) de 1 megabit (128 kilobytes) con interfaz SPI<\/li>\n<li>compartimento para 4 elementos AAA.<\/li>\n<\/ul>\n<p>\nPor el nombre del microp controladora, est\u00e1 claro que pertenece a la familia AVR, lo que hace que la tarea de hacer un dispositivo compatible con Arduino sea m\u00e1s que trivial\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>De una noticia en <noindex><a rel=\"nofollow\" href=\"https:\/\/hackaday.com\/2018\/07\/22\/classroom-gadget-turned-arduino-compatible\/\">Hackaday<\/a><\/noindex> el autor se enter\u00f3 de que esto <noindex><a rel=\"nofollow\" href=\"https:\/\/community.arduboy.com\/t\/smart-response-xe-re-purposed-into-arduboy\/6094\/\">ya se hizo<\/a><\/noindex> (en este mismo enlace se explica c\u00f3mo conectar cada cosa), obteniendo la posibilidad de ejecutar juegos para 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=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\n Pero al autor le interesa m\u00e1s la posibilidad de no solo jugar en el dispositivo, sino de estudiar:<\/p>\n<ul>\n<li>memoria flash con interfaz SPI en serie<\/li>\n<li>bootloaders para AVR<\/li>\n<li>est\u00e1ndar 802.15.4<\/li>\n<\/ul>\n<p>\nEl autor comenz\u00f3 escribiendo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SmartResponseXE\">de la biblioteca<\/a><\/noindex> (GPL v3), que permite inicializar la pantalla, mostrar texto y rect\u00e1ngulos, as\u00ed como acceder a la memoria flash con interfaz SPI. Luego comenz\u00f3 a idear ideas para el uso pr\u00e1ctico del dispositivo: un terminal compatible con VT-100 de bolsillo, juegos multijugador. Despu\u00e9s de modificar tres dispositivos, decidi\u00f3 'ense\u00f1arlos' a recibir sketches 'por aire'. Lo que ser\u00eda no solo interesante, sino tambi\u00e9n muy conveniente: abrir el cuerpo del dispositivo cada vez es complicado, y debajo de la tapa del compartimento de la bater\u00eda solo hay orificios que permiten conectar un programador JTAG a la placa.<\/p>\n<p><img decoding=\"async\" alt=\"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/eb928013737c34e50e6a49e7d41d5bd7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsto es suficiente para cargar el cargador de Arduino, pero no el sketch; el puerto serie no est\u00e1 habilitado, por lo que es inevitable abrir la carcasa. Adem\u00e1s, las l\u00edneas TX0 y RX0 del primer puerto serie est\u00e1n combinadas con las l\u00edneas de lectura de la matriz del teclado, es decir, aquellas que se utilizan para escanear las teclas de funci\u00f3n a los lados de la pantalla. Pero qu\u00e9 se le va a hacer: el autor ha creado lo siguiente:<\/p>\n<p><img decoding=\"async\" alt=\"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/8989f4057806b83ff2eb11b6f1ed2d57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAh\u00ed ha conectado las l\u00edneas JTAG, y ahora no es necesario abrir el compartimento de la bater\u00eda. Y para poder cargar tambi\u00e9n los sketches, ha conectado en este mismo conector ambos puertos serie, a\u00f1adiendo tambi\u00e9n un interruptor, ya que con las bater\u00edas instaladas, el dispositivo no se puede apagar f\u00edsicamente de otra manera.<\/p>\n<p>Se requiri\u00f3 bastante tiempo trabajar con un soldador, un c\u00fater y una pistola de pegamento. En general, cargar sketches \"por aire\" es significativamente m\u00e1s conveniente; hay que inventar urgentemente algo para esto.<\/p>\n<p>La Arduino IDE utiliza el programa para cargar sketches <noindex><a rel=\"nofollow\" href=\"http:\/\/www.ladyada.net\/learn\/avr\/avrdude.html\">avrdude<\/a><\/noindex>. Se comunica con el microcontrolador a trav\u00e9s del protocolo <noindex><a rel=\"nofollow\" href=\"http:\/\/www.tuxgraphics.org\/common\/src2\/article05101\/stk500_spec_AVR068.pdf\">STK500<\/a><\/noindex>, que permite la transferencia de archivos en ambas direcciones. Es poco compatible con los canales donde pueden existir retrasos variables, distorsiones y p\u00e9rdidas de datos. Si hay algo que se mueve o cruje en el canal serie, puede volverse loco buscando la causa. Una vez, el autor estuvo lidiando durante medio d\u00eda hasta que se dio cuenta de que todo se deb\u00eda a un mal cable, as\u00ed como a un caprichoso convertidor de interfaz CP2102. Incluso un microcontrolador con un convertidor de interfaz integrado, como el ATmega32u4, puede comportarse as\u00ed a veces. Cada usuario de Arduino ha notado que los errores al cargar sketches no son tan raros. A veces la escritura se realiza correctamente, pero al leer para verificar se descubre un error. Eso no significa que hubo un fallo en la escritura, el fallo fue en la lectura. Y ahora imagina que al trabajar \"por aire\" ocurrir\u00e1 lo mismo, pero mucho m\u00e1s a menudo.<\/p>\n<p>Despu\u00e9s de probar diferentes maneras de superar este problema, el autor ide\u00f3 lo siguiente. El dispositivo tiene 128KB de memoria flash con interfaz SPI: recibimos los datos por cables (recordemos que uno de los dispositivos con un conector lateral ya lo tiene el autor), usamos esta memoria como b\u00fafer y enviamos los datos a otro dispositivo a trav\u00e9s del canal de radio. Un saludo de Cybiko.<\/p>\n<p>Despu\u00e9s de escribir el c\u00f3digo para trabajar con el canal de radio, as\u00ed como la fuente, el cargador se alarg\u00f3 a m\u00e1s de 4 kilobytes. Por lo tanto, el valor de HFUSE tuvo que cambiar de 0xDA a 0xD8. Ahora el cargador puede tener una longitud de hasta 8 kilobytes, y la direcci\u00f3n inicial se estableci\u00f3 en 0x1E000. Esto se refleja en el Makefile, pero tambi\u00e9n debe tenerse en cuenta al cargar. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Hacking\/Bootloader?from=Tutorial.Bootloader\">cargador<\/a><\/noindex> con avrdude.<\/p>\n<p>El transceptor est\u00e1ndar 802.15.4 en el ATmega128RFA1 se dise\u00f1\u00f3 originalmente para operar bajo el protocolo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.zigbee.org\/what-is-zigbee\/\">ZigBee<\/a><\/noindex>, que es bastante complejo, por lo que el autor decidi\u00f3 simplemente transmitir paquetes en su lugar. Esto est\u00e1 implementado de forma hardware en el ATmega128RFA1, por lo que se necesitar\u00e1 poco c\u00f3digo. Adem\u00e1s, para simplificar, el autor decidi\u00f3 usar un canal fijo, sin permitir que se seleccionara manualmente. El est\u00e1ndar 802.15.4 admite 16 canales numerados del 11 al 26. Est\u00e1n bastante saturados, algunos tambi\u00e9n superponen canales WiFi (los canales ZigBee est\u00e1n marcados en rojo, y los de WiFi en azul, verde y amarillo).<\/p>\n<p><img decoding=\"async\" alt=\"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/650166fdb8e1d0361d015e4c2e85d7f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nResult\u00f3 que los canales 15 y 26 son los menos susceptibles a interferencias de WiFi. El segundo de ellos fue el que eligi\u00f3 el autor. Descargo de responsabilidad: el traductor no sabe si est\u00e1 permitido simplificar as\u00ed ZigBee. \u00bfQuiz\u00e1s deber\u00eda programarse un poco m\u00e1s y realizarlo completamente?<\/p>\n<p>En el primero de los dispositivos, se debe implementar una m\u00e1quina de estados que transmita datos bajo el protocolo STK500. En su mayor\u00eda, los mensajes enviados y recibidos son autosuficientes, pero algunos est\u00e1n vinculados a los que pasaron por el canal anteriormente. La descripci\u00f3n del di\u00e1logo se proporciona. <noindex><a rel=\"nofollow\" href=\"http:\/\/baldwisdom.com\/bootloading\/\">aqu\u00ed<\/a><\/noindex>.<\/p>\n<p>Una parte crucial de este di\u00e1logo es la transmisi\u00f3n de paquetes destinados a ser grabados en la memoria flash del dispositivo de destino. En los microcontroladores simples de la familia AVR, el tama\u00f1o de la p\u00e1gina es de 128 bytes, pero en el ATmega128RFA1 es de 256. Y en la memoria flash que se conecta a trav\u00e9s del protocolo SPI, tambi\u00e9n es el mismo. El programa en el primer dispositivo al cargar el sketch no lo env\u00eda directamente al segundo, sino que lo escribe en esta memoria. Cuando el Arduino IDE verifica la correcta escritura, se le env\u00eda lo que se ha grabado. Ahora es necesario transmitir los datos obtenidos a trav\u00e9s del canal de radio al segundo dispositivo. Durante este proceso, el cambio de recepci\u00f3n a transmisi\u00f3n y viceversa ocurre con bastante frecuencia. El protocolo STK500 es indiferente a las demoras, pero no tolera la p\u00e9rdida de datos (es extra\u00f1o, ya que se mencion\u00f3 anteriormente que las demoras en la transmisi\u00f3n de datos tambi\u00e9n afectan). Y las p\u00e9rdidas en la transmisi\u00f3n inal\u00e1mbrica son inevitables. El ATmega128RFA1 tiene una implementaci\u00f3n de hardware para solicitudes de reenv\u00edo en caso de dudas sobre la precisi\u00f3n de la transmisi\u00f3n, pero el autor decidi\u00f3 implementar lo mismo program\u00e1ticamente por s\u00ed mismo. Desarroll\u00f3 un protocolo en el que se transmiten muchos m\u00e1s datos en una direcci\u00f3n que en la otra.<\/p>\n<p>No es perfecto, pero todo funciona. La p\u00e1gina de 256 bytes se divide en cuatro segmentos, cada uno de los cuales se transmite a trav\u00e9s del canal de radio en forma de paquete. Un paquete puede contener hasta 125 bytes de datos m\u00e1s un byte para la longitud y dos para el CRC. As\u00ed que fragmentos de 64 bytes junto con los n\u00fameros de p\u00e1gina y segmento (del 0 al 3) se colocan all\u00ed. En el dispositivo receptor hay una variable que permite rastrear cu\u00e1ntos segmentos han sido recibidos, y cuando llegan los cuatro, se env\u00eda una confirmaci\u00f3n al dispositivo transmisor de que toda la p\u00e1gina ha sido recibida. Si no hay confirmaci\u00f3n (CRC no coincide), se env\u00eda toda la p\u00e1gina de nuevo. La velocidad resultante incluso es mayor que al transmitir por cable. Vea:<\/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=\"Reproducir video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nPero en realidad, ser\u00eda conveniente prever un m\u00e9todo f\u00e1cil de conexi\u00f3n a los dispositivos mediante un cable para cargar los sketches a trav\u00e9s de \u00e9l. Por ejemplo, colocar dentro un convertidor de interfaz como el CP2102, como en la foto, y pegarlo a la placa de forma que soporte el esfuerzo al conectar y desconectar el cable Micro USB.<\/p>\n<p><img decoding=\"async\" alt=\"Escribiendo un cargador OTA para ATmega128RFA1 (como parte del dispositivo Smart Response XE)\" src=\"\/wp-content\/uploads\/2019\/04\/e03563fcd985467abb236475cbbf9e3f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTambi\u00e9n cuenta con un regulador de 3,3 voltios (y c\u00f3mo aplicarlo en un dispositivo con alimentaci\u00f3n de 6 voltios \u2014 siempre que haya un regulador igual, se pueden agregar dos diodos para elegir autom\u00e1ticamente de cu\u00e1l de ellos se alimentar\u00e1 el dispositivo). Es necesario desoldar los tres LED de la placa del convertidor de interfaz, de lo contrario, sobrecargar\u00e1n las bater\u00edas al funcionar con ellas y tambi\u00e9n interferir\u00e1n en la lectura del teclado y en el funcionamiento de la memoria flash con interfaz SPI.<\/p>\n<p>Perseguir el objetivo result\u00f3 ser incluso m\u00e1s interesante que alcanzarlo (y no necesito el chiste sobre el autob\u00fas). El autor aprendi\u00f3 muchas cosas nuevas sobre los cargadores para AVR, la memoria flash con interfaz SPI, el protocolo STK500 y el est\u00e1ndar 802.15.4.<\/p>\n<p>Todo el resto del c\u00f3digo adem\u00e1s de la biblioteca mencionada anteriormente \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitbank2\/SMART_bootloader\">aqu\u00ed<\/a><\/noindex>, y tambi\u00e9n est\u00e1 bajo GPL v3. El Twitter del autor es \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/fast_code_r_us\">aqu\u00ed<\/a><\/noindex>.<br \/>\n<br \/>Fuente: <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.2 - 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\/es\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Creando un cargador OTA para ATmega128RFA1 (dentro del dispositivo Smart Response XE) | ProHoster","description":"Todo comenz\u00f3.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/31101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=31101"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/31101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/23069"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=31101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=31101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=31101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}