{"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\/es\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","title":{"rendered":"C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo\" src=\"\/wp-content\/uploads\/2019\/04\/ae2537b0263d692c4f79e7b5f7bc0797.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La microelectr\u00f3nica se ha convertido en una moda en los \u00faltimos a\u00f1os gracias al m\u00e1gico Arduino. Pero hay un problema: con el inter\u00e9s adecuado, uno puede r\u00e1pidamente dejar atr\u00e1s DigitalWrite(), y no est\u00e1 claro qu\u00e9 hacer despu\u00e9s. Los desarrolladores de Arduino han realizado importantes esfuerzos para reducir la barrera de entrada en su ecosistema, pero fuera de \u00e9l todav\u00eda existe un bosque oscuro de complicada electr\u00f3nica, poco accesible para el aficionado.<\/p>\n<p><\/p>\n<p>Por ejemplo, las hojas de datos. Aparentemente, all\u00ed hay todo lo que necesitas; simplemente agarra y usa. Pero sus autores claramente no tienen como objetivo popularizar los microcontroladores; a veces <em>parece<\/em>, que abusan intencionadamente de t\u00e9rminos y acr\u00f3nimos confusos al describir cosas simples, para confundir al profano al m\u00e1ximo. Sin embargo, no todo est\u00e1 tan mal, con un poco de deseo se puede abrir el caparaz\u00f3n.<\/p>\n<p><\/p>\n<p>En este art\u00edculo compartir\u00e9 mi experiencia como humanista interactuando con hojas de datos con fines de hobby. El texto est\u00e1 destinado a quienes han evolucionado m\u00e1s all\u00e1 de Arduino, presuponiendo cierto conocimiento sobre los principios de funcionamiento de los microcontroladores.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Empezar\u00e9 con lo tradicional<\/p>\n<p><\/p>\n<h3 id=\"migaem-svetodiodom-na-arduino\">Haciendo parpadear un LED en Arduino<\/h3>\n<p><\/p>\n<p>Y aqu\u00ed est\u00e1 el c\u00f3digo:<\/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>\u00ab\u00bfQu\u00e9 es esto? \u2013 Preguntar\u00e1 el lector experimentado. \u2013 \u00bfPor qu\u00e9 escribes algo en el registro de entrada PINB? \u00a1S\u00f3lo se puede leer!\u00bb En efecto, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Reference\/PortManipulation\">la documentaci\u00f3n de Arduino<\/a><\/noindex>, al igual que la mayor\u00eda de los art\u00edculos educativos en internet, afirma que este registro es de solo lectura. Yo tambi\u00e9n lo pens\u00e9, hasta que volv\u00ed a leer <noindex><a rel=\"nofollow\" href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf\">hoja de datos<\/a><\/noindex> el Atmega328p, preparando este art\u00edculo. Y all\u00ed dice:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo\" src=\"\/wp-content\/uploads\/2019\/04\/4c754bda59d9f18a38209cc32f0fb3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Es una funcionalidad relativamente nueva, no estaba en el Atmega8; no todos la conocen o la mencionan por razones de compatibilidad hacia atr\u00e1s. Pero es sin duda \u00fatil para demostrar la idea de que se deben leer las hojas de datos para aprovechar todas las capacidades del chip, incluidas las menos conocidas. Y esta no es la \u00fanica raz\u00f3n.<\/p>\n<p><\/p>\n<h2 id=\"zachem-esche-chitat-datashity\">\u00bfPor qu\u00e9 leer m\u00e1s hojas de datos?<\/h2>\n<p><\/p>\n<p>Normalmente, los aficionados a Arduino, despu\u00e9s de jugar con los LEDs y los AnalogWrite, comienzan a conectar a la placa varios m\u00f3dulos y chips para los cuales ya existen bibliotecas escritas. Tarde o temprano aparece una biblioteca que no funciona como deber\u00eda. Entonces, el entusiasta comienza a investigar para arreglarla, y ah\u00ed es donde...<\/p>\n<p><\/p>\n<p>All\u00ed sucede algo completamente incomprensible, por lo que es necesario recurrir a Google, leer numerosos tutoriales, extraer fragmentos de c\u00f3digo de alguien que lo haya hecho antes y finalmente lograrlo. Esto da una poderosa sensaci\u00f3n de logro, pero en realidad el proceso se asemeja a inventar una bicicleta mediante la ingenier\u00eda inversa de una motocicleta. Y, adem\u00e1s, no se aumenta el entendimiento de c\u00f3mo funciona esta bicicleta. Lo s\u00e9 porque yo mismo me he dedicado a ello durante bastante tiempo.<\/p>\n<p><\/p>\n<p>Si en lugar de esta fascinante tarea hubiera pasado un par de d\u00edas estudiando la documentaci\u00f3n de Atmega328, habr\u00eda ahorrado una enorme cantidad de tiempo. Al fin y al cabo, es un microcontrolador bastante simple.<\/p>\n<p><\/p>\n<p>Por lo tanto, es necesario leer las hojas de datos al menos para hacerse una idea de c\u00f3mo est\u00e1 construido el microcontrolador y qu\u00e9 puede hacer. Y adem\u00e1s:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>para verificar y optimizar las bibliotecas de otros. A menudo son escritas por aficionados similares que inventan la bicicleta; o, por el contrario, los autores intencionadamente a\u00f1aden una protecci\u00f3n excesiva contra errores. Que sea tres veces m\u00e1s grande y lento, pero que funcione seguro;<\/p>\n<p>\n<\/li>\n<li>\n<p>para poder utilizar en el proyecto chips para los cuales nadie ha escrito una biblioteca;<\/p>\n<p>\n<\/li>\n<li>\n<p>para facilitar la tarea de migrar de una serie de MC a otra;<\/p>\n<p>\n<\/li>\n<li>\n<p>para finalmente optimizar mi viejo c\u00f3digo que no encajaba en Arduino;<\/p>\n<p>\n<\/li>\n<li>\n<p>para aprender a manejar cualquier chip directamente a trav\u00e9s de sus registros, sin complicarse con el estudio de la estructura de sus bibliotecas, si es que existen.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"zachem-pisat-v-registry-napryamuyu-kogda-est-hal-i-ll\">\u00bfPor qu\u00e9 escribir directamente en los registros cuando hay HAL y LL?<\/h2>\n<p><\/p>\n<p><em>Glosario<\/em><br \/>\n<em><strong>HAL, Capa de Alta Abstracci\u00f3n<\/strong> \u2013 biblioteca para controlar el microcontrolador con un alto nivel de abstracci\u00f3n. Si se necesita utilizar la interfaz SPI1, solo hay que configurarla y activarla, sin pensar en qu\u00e9 registros responden a qu\u00e9.<br \/>\n<strong>LL, API de Bajo Nivel<\/strong> \u2013 biblioteca que contiene macros o estructuras con direcciones de registros, lo que permite acceder a ellos por nombre. DDRx, PORTx, PINx en Atmega son LL.<\/em><\/p>\n<p><\/p>\n<p>Las disputas sobre \"HAL, LL o registros\" ocurren regularmente en los comentarios de Habr. Sin pretender tener acceso a conocimiento astral, simplemente compartir\u00e9 mi experiencia y reflexiones de aficionado.<\/p>\n<p><\/p>\n<p>Despu\u00e9s de entender m\u00e1s o menos c\u00f3mo funciona el ATmega y leer art\u00edculos sobre las maravillas del STM32, compr\u00e9 media docena de placas diferentes: tanto la Discovery como las 'Tabletas Azules', e incluso simplemente chips para mis propios proyectos. Todas han estado acumulando polvo en una caja durante dos a\u00f1os. A veces me dec\u00eda: 'bueno, a partir de este fin de semana voy a aprender STM', abr\u00eda CubeMX, generaba una configuraci\u00f3n para SPI, miraba la pared de texto resultante, abundantemente cargada de copyright de STM, y decid\u00eda que todo eso era un poco demasiado.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo\" src=\"\/wp-content\/uploads\/2019\/04\/d83be97ba2767121f4be20d524000afe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por supuesto, se puede entender lo que CubeMX ha producido. Pero al mismo tiempo es evidente que recordar todas las formulaciones para poder escribirlas de memoria es irreal. Y depurarlo, si por casualidad olvido activar alguna opci\u00f3n en Cube, es un verdadero desaf\u00edo.<\/p>\n<p><\/p>\n<p>Han pasado dos a\u00f1os y sigo deseando los <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=fr.appsolute.st&amp;hl=ru\">ST MCU Finder<\/a><\/noindex> chips sabrosos, pero que no entiendo, y de repente me top\u00e9 con un <noindex><a rel=\"nofollow\" href=\"https:\/\/lujji.github.io\/blog\/bare-metal-programming-stm8\/\">art\u00edculo maravilloso<\/a><\/noindex>, aunque sea sobre STM8. Y <em>sorpresivamente<\/em> me di cuenta de que todo este tiempo estaba llamando a una puerta abierta: los registros del STM est\u00e1n organizados de la misma manera que los de cualquier otro microcontrolador, y no es necesario usar Cube para trabajar con ellos. <em>\u00bfY qu\u00e9, se pod\u00eda hacer as\u00ed?<\/em><\/p>\n<p><\/p>\n<p>HAL y, espec\u00edficamente, STM32CubeMX son herramientas para ingenieros profesionales que trabajan intensamente con los chips STM32. La caracter\u00edstica principal es el alto nivel de abstracci\u00f3n, la posibilidad de migrar r\u00e1pidamente de un microcontrolador a otro e incluso de un n\u00facleo a otro, permaneciendo dentro de la familia STM32. Los aficionados rara vez se enfrentan a tales tareas; nuestra elecci\u00f3n de microcontroladores generalmente est\u00e1 limitada a lo que hay disponible en AliExpress, y m\u00e1s a menudo migramos entre chips completamente diferentes: pasamos del ATmega al STM, del STM al ESP, o lo que sea que nos traigan los amigos chinos. HAL aqu\u00ed no ayuda, y el tiempo que toma aprenderlo es considerable.<\/p>\n<p><\/p>\n<p>Nos queda LL, pero est\u00e1 a un paso de los registros. Personalmente, encuentro \u00fatil escribir mis propios macros con las direcciones de los registros: estudio el datasheet m\u00e1s detenidamente, pienso en lo que podr\u00eda necesitar en el futuro y lo que definitivamente no, estructuro mejor mis programas, y en general el esfuerzo de hacerlo contribuye a la memorizaci\u00f3n.<\/p>\n<p><\/p>\n<p>Adem\u00e1s, hay un matiz con el popular STM32F103: existen dos versiones de LL incompatibles, una oficial de STM y otra de Leaf Labs, utilizada en el proyecto STM32duino. Si se va a escribir una biblioteca de c\u00f3digo abierto (y ese era exactamente <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Ontaelio\/DMdriverSTM32F1\">mi tarea<\/a><\/noindex>), hay que hacer dos versiones o dirigirse directamente a los registros.<\/p>\n<p><\/p>\n<p>Finalmente, la renuncia a LL, en mi opini\u00f3n, simplifica la migraci\u00f3n, especialmente si se contempla desde el inicio del proyecto. Un ejemplo exagerado: escribiremos un blink de Arduino en Atmel Studio sin 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>Para que este c\u00f3digo haga parpadear un LED en una placa china con STM8 (de ST Visual Desktop), es suficiente con cambiar dos direcciones:<\/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>S\u00ed, estoy utilizando una caracter\u00edstica de conexi\u00f3n del LED en una placa espec\u00edfica, parpadear\u00e1 muy lentamente, \u00a1pero lo har\u00e1!<\/p>\n<p><\/p>\n<h2 id=\"kakie-byvayut-datashity\">Tipos de hojas de datos<\/h2>\n<p><\/p>\n<p>En art\u00edculos y foros, tanto en ruso como en ingl\u00e9s, bajo 'hojas de datos' se entiende cualquier documentaci\u00f3n t\u00e9cnica sobre chips, y as\u00ed lo hago yo en este texto. Formalmente, son solo uno de los tipos de dicha documentaci\u00f3n:<\/p>\n<p><\/p>\n<p><strong>Datasheet<\/strong> \u2013 TTX, caracter\u00edsticas t\u00e1cticas y t\u00e9cnicas. Siempre est\u00e1 disponible para cualquier componente electr\u00f3nico. Informaci\u00f3n de referencia, \u00fatil tener a mano, pero no hay mucho que leer detenidamente. Sin embargo, los chips m\u00e1s simples a menudo se limitan a la hoja de datos para no generar documentos adicionales; en este caso <em>Manual de referencia<\/em> se incluye aqu\u00ed tambi\u00e9n.<\/p>\n<p><\/p>\n<p><strong>Manual de referencia<\/strong> \u2013 la propia gu\u00eda, un libro extenso de m\u00e1s de 1000 p\u00e1ginas. Detalla el funcionamiento de todo lo que se ha colocado en el chip. Es el documento principal para dominar el microcontrolador. A diferencia de <em>datasheet<\/em>, las gu\u00edas se escriben para una amplia gama de MC, contienen mucha informaci\u00f3n sobre perif\u00e9ricos que faltan en su modelo espec\u00edfico.<\/p>\n<p><\/p>\n<p><strong>Manual de Programaci\u00f3n<\/strong> o <strong>Manual del Conjunto de Instrucciones<\/strong> \u2013 instrucciones para comandos \u00fanicos del microcontrolador. Est\u00e1 destinada a quienes programan en ensamblador. Los autores de compiladores la utilizan activamente para optimizar el c\u00f3digo, por lo que, en general, no la necesitaremos. Pero es \u00fatil echarle un vistazo para una comprensi\u00f3n general, sobre algunos comandos espec\u00edficos como la salida de interrupciones, as\u00ed como al utilizar activamente el depurador.<\/p>\n<p><\/p>\n<p><strong>Nota de Aplicaci\u00f3n<\/strong> \u2013 consejos \u00fatiles para resolver tareas espec\u00edficas, a menudo con ejemplos de c\u00f3digo.<\/p>\n<p><\/p>\n<p><strong>Hoja de Erratas<\/strong> \u2013 descripci\u00f3n de casos de comportamiento no est\u00e1ndar del chip con opciones de soluci\u00f3n, si las hay.<\/p>\n<p><\/p>\n<h2 id=\"chto-est-v-datashitah\">Qu\u00e9 hay en las hojas de datos<\/h2>\n<p><\/p>\n<p>Directamente en <em>Datasheet<\/em> podemos necesitar secciones como:<\/p>\n<p><\/p>\n<p><strong>Resumen del Dispositivo<\/strong> \u2013 la primera p\u00e1gina de la hoja de datos describe brevemente el dispositivo. Muy \u00fatil en situaciones cuando has encontrado un chip (lo viste en la tienda, lo desoldaste, te encontraste con una menci\u00f3n) y quieres entender qu\u00e9 es.<\/p>\n<p><\/p>\n<p><strong>Descripci\u00f3n General<\/strong> \u2013 una descripci\u00f3n m\u00e1s detallada de las capacidades de los chips de la serie.<\/p>\n<p><\/p>\n<p><strong>Pinouts<\/strong> \u2013 diagramas de conexi\u00f3n para todos los posibles encapsulados del chip (qu\u00e9 pin est\u00e1 en qu\u00e9 pata).<\/p>\n<p><\/p>\n<p><strong>Descripci\u00f3n de pines<\/strong> \u2013 descripci\u00f3n de la funci\u00f3n y capacidades de cada pin.<\/p>\n<p><\/p>\n<p><strong>Memory Map<\/strong> \u2013 el mapa de direcciones en la memoria probablemente no lo necesitemos, pero a veces incluye tambi\u00e9n una tabla de direcciones de bloques de registros.<\/p>\n<p><\/p>\n<p><strong>Register Map<\/strong> \u2013 la tabla de direcciones de bloques de registros generalmente se encuentra en la hoja de datos, y en <em>Ref Manual<\/em> \u2013 solo desplazamientos (<em>address offsets<\/em>).<\/p>\n<p><\/p>\n<p><strong>Electrical Characteristics<\/strong> \u2013 en esta secci\u00f3n nos interesa principalmente <strong>valores m\u00e1ximos absolutos<\/strong>, que enumeran las cargas m\u00e1ximas en el chip. A diferencia de la indestructible Atmega328p, la mayor\u00eda de los microcontroladores no permiten conectar cargas significativas a los pines, lo que puede resultar una sorpresa desagradable para los usuarios de Arduino.<\/p>\n<p><\/p>\n<p><strong>Package Information<\/strong> \u2013 diagramas de los encapsulados disponibles, \u00fatiles al dise\u00f1ar tus propias placas.<\/p>\n<p><\/p>\n<p><em>Manual de referencia<\/em> se compone estructuralmente de secciones dedicadas a la periferia espec\u00edfica indicada en sus encabezados. Cada cap\u00edtulo se puede dividir en tres partes:<\/p>\n<p><\/p>\n<p><strong>Resumen<\/strong>, <strong>Introducci\u00f3n<\/strong>, <strong>Features<\/strong> \u2013 una visi\u00f3n general de las capacidades de la periferia;<\/p>\n<p><\/p>\n<p><strong>Functional Description<\/strong>, <strong>Usage Guide<\/strong> o simplemente el bloque principal de la secci\u00f3n \u2013 una descripci\u00f3n textual detallada de los principios de funcionamiento de la periferia y c\u00f3mo utilizarla;<\/p>\n<p><\/p>\n<p><strong>Registers<\/strong> \u2013 descripci\u00f3n de los registros de control. En casos sencillos como GPIO o SPI, esto puede ser suficiente para comenzar a usar la periferia, pero a menudo es necesario leer las partes anteriores.<\/p>\n<p><\/p>\n<h2 id=\"kak-chitat-datashity\">C\u00f3mo leer hojas de datos<\/h2>\n<p><\/p>\n<p>Las hojas de datos pueden asustar con su volumen y la abundancia de t\u00e9rminos desconocidos. En realidad, no es tan complicado si conoces algunos trucos.<\/p>\n<p><\/p>\n<p>Instala <strong>un buen lector de PDF<\/strong>. Las hojas de datos se redactan en las gloriosas tradiciones de las instrucciones en papel, es genial imprimirlas, marcarlas con separadores de pl\u00e1stico y encuadernarlas. El hipertexto se presenta en cantidades m\u00ednimas. Afortunadamente, al menos la estructura del documento est\u00e1 organizada con marcadores, por lo que un lector adecuado con buena navegaci\u00f3n es muy \u00fatil.<\/p>\n<p><\/p>\n<p>Una hoja de datos no es un libro de texto de Stroustrup, en ella <strong>no es necesario leerlo todo de una vez<\/strong>. Si seguiste el consejo anterior, simplemente busca en el panel de marcadores la secci\u00f3n que necesitas.<\/p>\n<p><\/p>\n<p>Las hojas de datos, especialmente <em>Reference Manuals<\/em>, pueden describir las capacidades no de un chip espec\u00edfico, sino de <strong>toda la serie<\/strong>. Esto significa que la mitad, si no dos tercios de la informaci\u00f3n, no tiene relaci\u00f3n con tu chip. Antes de estudiar los registros del TIM7, verifica en <em>Descripci\u00f3n General<\/em>, \u00bflo tienen ustedes?<\/p>\n<p><\/p>\n<p>Saber <strong>ingl\u00e9s<\/strong> es suficiente en <strong>un nivel b\u00e1sico<\/strong>. Las hojas de datos constan a partes iguales de t\u00e9rminos desconocidos para el hablante medio y de frases simples de conexi\u00f3n. Tambi\u00e9n hay excelentes hojas de datos chinas en ingl\u00e9s chino, donde la mitad son t\u00e9rminos y la otra mitad son una mezcla aleatoria de palabras.<\/p>\n<p><\/p>\n<p>Si encuentras <strong>una palabra desconocida<\/strong>, no intentes traducirla con un diccionario ingl\u00e9s-ruso. Si te confunde <em>histeresis<\/em>, la traducci\u00f3n de \u00abhisteresis\u00bb no te har\u00e1 sentir mejor. Usa Google, Stack Overflow, Wikipedia, foros donde el concepto necesario est\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/5357918\/what-does-hysteresis-mean-and-how-does-it-apply-to-computer-science-or-programmi\">explicado de manera sencilla con ejemplos<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>La mejor manera de entender lo que has le\u00eddo es <strong>probarlo en la pr\u00e1ctica<\/strong>. Por lo tanto, mant\u00e9n a mano la placa de depuraci\u00f3n con la que te est\u00e1s familiarizando, o mejor a\u00fan, dos, por si acaso no entiendes algo y ves un humo m\u00e1gico.<\/p>\n<p><\/p>\n<p>Es \u00fatil tener a mano la hoja de datos cuando <strong>lees el tutorial de alguien<\/strong> o estudias una biblioteca ajena. Es muy posible que encuentres una soluci\u00f3n m\u00e1s \u00f3ptima a tu problema en ella. Y viceversa, si no puedes entender c\u00f3mo funciona el registro a partir de la hoja de datos, b\u00fascalo en Google: probablemente alguien ya lo haya explicado con palabras sencillas o dejado un c\u00f3digo claro en GitHub.<\/p>\n<p><\/p>\n<h2 id=\"slovarik\">Glosario<\/h2>\n<p><\/p>\n<p>Unos pocos t\u00e9rminos y notaciones \u00fatiles que ayudan a familiarizarse m\u00e1s r\u00e1pidamente con las hojas de datos. Lo que recuerda de los \u00faltimos d\u00edas, se agradecen adiciones y correcciones.<\/p>\n<p><\/p>\n<p><em>Electricidad<\/em><br \/>\n<strong>Vcc<\/strong>, <strong>Vdd<\/strong> \u2013 \u00abm\u00e1s\u00bb, alimentaci\u00f3n<br \/>\n<strong>Vss<\/strong>, <strong>Vee<\/strong> \u2013 \u00abmenos\u00bb, tierra<br \/>\n<strong>corriente<\/strong> \u2013 corriente<br \/>\n<strong>voltaje<\/strong> \u2013 voltaje<br \/>\n<strong>sacar corriente<\/strong> \u2013 funcionar como \u00abtierra\u00bb para una carga externa<br \/>\n<strong>proveer corriente<\/strong> \u2013 alimentar una carga externa<br \/>\n<strong>punto de conexi\u00f3n de alta tensi\u00f3n\/fuente<\/strong> \u2013 pin con \u00abtolerancia\u00bb elevada a la carga<\/p>\n<p><\/p>\n<p><em>IO<\/em><br \/>\n<strong>H, Alto<\/strong> \u2013 en el pin Vcc<br \/>\n<strong>L, Bajo<\/strong> \u2013 en el pin Vss<br \/>\n<strong>Alta Impedancia<\/strong>, <strong>Hi-Z<\/strong>, <strong>flotante<\/strong> \u2013 en el pin no hay nada, \u00abalta resistencia\u00bb, es pr\u00e1cticamente invisible para el mundo exterior.<br \/>\n<strong>d\u00e9bil pull up<\/strong>, <strong>d\u00e9bil pull down<\/strong> \u2013 resistor pull-up\/down incorporado, aproximadamente equivalente a 50 kOhm (ver la hoja de datos). Se utiliza, por ejemplo, para que el pin de entrada no se quede en el aire, provocando activaciones err\u00f3neas. <em>D\u00e9bil<\/em> \u2013 porque es f\u00e1cil de \u00abanular\u00bb.<br \/>\n<strong>empuje tirar<\/strong> \u2013 modo de salida del pin donde se alterna entre <em>Alto<\/em> y <em>Bajo<\/em> \u2013 OUTPUT normal con Arduino.<br \/>\n<strong>drenaje abierto<\/strong> \u2013 designaci\u00f3n del modo de salida donde el pin puede ser o bien <em>Bajo<\/em>, o <em>Alta Impedancia\/Flojo<\/em>. Sin embargo, casi siempre esto no es un \"verdadero\" drenaje abierto, hay diodos de protecci\u00f3n, resistencias y otras cosas. Simplemente es una indicaci\u00f3n de que est\u00e1 en modo tierra\/nada.<br \/>\n<strong>drenaje abierto verdadero<\/strong> \u2013 y este ya es un verdadero drenaje abierto: el pin va directamente a tierra si est\u00e1 abierto, o permanece en un estado flotante si est\u00e1 cerrado. Esto significa que a trav\u00e9s de \u00e9l se puede aplicar un voltaje mayor que Vcc, pero el m\u00e1ximo sigue estando especificado en la hoja de datos en la secci\u00f3n <em>Clasificaciones m\u00e1ximas absolutas \/ Voltaje<\/em>. <\/p>\n<p><\/p>\n<p><em>Interfaces<\/em><br \/>\n<strong>en serie<\/strong> \u2013 conectados en serie<br \/>\n<strong>a cadena<\/strong> \u2013 ensamblar chips en cadena conect\u00e1ndolos en serie, aumentando el n\u00famero de salidas.<br \/>\n<strong>shift<\/strong> \u2013 desplazamiento, normalmente indica desplazamiento de bits. Por consiguiente, <strong>para desplazar dentro<\/strong> y <strong>para desplazar fuera<\/strong> \u2013 recibir y transmitir datos bit a bit.<br \/>\n<strong>latch<\/strong> \u2013 v\u00e1lvula que cubre el b\u00fafer mientras se desplazan los bits a trav\u00e9s de \u00e9l. Cuando la transmisi\u00f3n ha terminado, la v\u00e1lvula se abre y los bits comienzan a funcionar.<br \/>\n<strong>para hacer un clock in<\/strong> \u2013 ejecutar una transmisi\u00f3n bit a bit, desplazar todos los bits a sus lugares adecuados.<br \/>\n<strong>doble b\u00fafer<\/strong>, <strong>registro sombra<\/strong>, <strong>registro de carga previa<\/strong> \u2013 indicaciones de historia, cuando un registro debe poder aceptar nuevos datos, pero retenerlos hasta cierto momento. Por ejemplo, para un funcionamiento correcto del PWM, sus par\u00e1metros (ciclo de trabajo, frecuencia) no deben cambiar hasta que termine el ciclo actual, pero ya se pueden haber transmitido nuevos par\u00e1metros. Por consiguiente, los actuales se mantienen en <em>registro sombra<\/em>, mientras que los nuevos llegan a <em>registro de carga previa<\/em>, siendo escritos en el registro correspondiente del chip.<\/p>\n<p><\/p>\n<p><em>Cualquier cosa<\/em><br \/>\n<strong>prescaler<\/strong> \u2013 divisor de frecuencia<br \/>\n<strong>para establecer un bit<\/strong> \u2013 establecer el bit en 1<br \/>\n<strong>para borrar\/restablecer un bit<\/strong> \u2013 restablecer el bit a 0 (<em>reset<\/em> \u2013 funci\u00f3n de las hojas de datos STM)<\/p>\n<p><\/p>\n<h3 id=\"chto-dalshe\">\u00bfQu\u00e9 sigue?<\/h3>\n<p><\/p>\n<p>En realidad, se plane\u00f3 una parte pr\u00e1ctica con la demostraci\u00f3n de tres proyectos en STM32 y STM8, realizados espec\u00edficamente para este art\u00edculo utilizando hojas de datos, con luces, SPI, temporizadores, PWM e interrupciones:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo\" src=\"\/wp-content\/uploads\/2019\/04\/8929bad65dad7473a81a221281c43557.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pero el texto es demasiado extenso, as\u00ed que los proyectos se enviar\u00e1n a la segunda parte.<\/p>\n<p><\/p>\n<p>La habilidad de leer hojas de datos te ayudar\u00e1 con tu pasatiempo, pero apenas reemplazar\u00e1 la comunicaci\u00f3n cara a cara con colegas entusiastas en foros y chats. Para eso, primero hay que mejorar el ingl\u00e9s. As\u00ed que para los que han llegado hasta aqu\u00ed, hay un premio especial: dos lecciones gratuitas en Skyeng con el primer pago utilizando el c\u00f3digo <code>HABR2<\/code>.<\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi\" \/>\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\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\/es\/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\udd47C\u00f3mo y por qu\u00e9 leer hojas de datos, si los microcontroladores son tu pasatiempo | ProHoster","description":"Microelectr\u00f3nica.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","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\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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/32463","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=32463"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/32463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/24267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=32463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=32463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=32463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}