{"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\/fr\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","title":{"rendered":"Comment et pourquoi lire des fiches techniques si les microcontr\u00f4leurs sont votre hobby","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Comment et pourquoi lire des fiches techniques si les microcontr\u00f4leurs sont votre hobby\" src=\"\/wp-content\/uploads\/2019\/04\/ae2537b0263d692c4f79e7b5f7bc0797.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La micro\u00e9lectronique est une passion tendance ces derni\u00e8res ann\u00e9es gr\u00e2ce \u00e0 la magie d'Arduino. Mais voil\u00e0 le probl\u00e8me : avec un int\u00e9r\u00eat suffisant, il est facile de d\u00e9passer DigitalWrite(), mais que faire ensuite ? Ce n'est pas tout \u00e0 fait clair. Les d\u00e9veloppeurs d'Arduino ont mis en \u0153uvre de nombreux efforts pour abaisser le seuil d'entr\u00e9e dans leur \u00e9cosyst\u00e8me, mais au-del\u00e0 se trouve encore la for\u00eat sombre de la rude \u00e9lectronique, difficile d'acc\u00e8s pour l'amateur.<\/p>\n<p><\/p>\n<p>Prenons par exemple les fiches techniques. En th\u00e9orie, elles contiennent tout ce qu'il faut, il suffit de les utiliser. Mais leurs auteurs ne semblent pas vraiment chercher \u00e0 populariser les microcontr\u00f4leurs ; parfois, <em>on a l'impression<\/em>, qu'ils abusent d\u00e9lib\u00e9r\u00e9ment de termes et d'abr\u00e9viations obscures pour d\u00e9crire des choses simples, afin de troubler au maximum le n\u00e9ophyte. Mais tout n'est pas si mauvais, avec un peu de bonne volont\u00e9, on peut s'y retrouver.<\/p>\n<p><\/p>\n<p>Dans cet article, je partagerai mon exp\u00e9rience de l'interaction d'un non-initi\u00e9 avec les fiches techniques pour des objectifs de loisirs. Le texte est destin\u00e9 aux amateurs ayant d\u00e9pass\u00e9 le stade des premiers pas avec Arduino, et suppose une certaine connaissance des principes de fonctionnement des microcontr\u00f4leurs.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Je commencerai par un classique<\/p>\n<p><\/p>\n<h3 id=\"migaem-svetodiodom-na-arduino\">Faire clignoter une LED sur Arduino<\/h3>\n<p><\/p>\n<p>Et voici le code :<\/p>\n<p><\/p>\n<pre><code class=\"cpp\">void setup() {\nDDRB |= (1&lt;&lt;5);\n}\n\nvoid loop() {\nPINB = (1&lt;&lt;5);\nfor (volatile uint32_t k=0; k&lt;100000; k++);\n}<\/code><\/pre>\n<p><\/p>\n<p>\u00ab Qu'est-ce que c'est ? \u2013 demandera un lecteur averti. \u2013 Pourquoi \u00e9cris-tu quelque chose dans le registre d'entr\u00e9e PINB ? Il est suppos\u00e9 \u00eatre en lecture seule ! \u00bb Effectivement, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.arduino.cc\/en\/Reference\/PortManipulation\">la documentation Arduino<\/a><\/noindex>, comme la plupart des articles p\u00e9dagogiques sur Internet, affirme que ce registre est en lecture seule. Je le pensais moi-m\u00eame jusqu'\u00e0 ce que je relise <noindex><a rel=\"nofollow\" href=\"http:\/\/ww1.microchip.com\/downloads\/en\/DeviceDoc\/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf\">la fiche technique<\/a><\/noindex> du Atmega328p en pr\u00e9parant cet article. Et l\u00e0 :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment et pourquoi lire des fiches techniques si les microcontr\u00f4leurs sont votre hobby\" src=\"\/wp-content\/uploads\/2019\/04\/4c754bda59d9f18a38209cc32f0fb3a3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>C'est une fonctionnalit\u00e9 relativement nouvelle, elle n'existait pas sur le Atmega8, et tout le monde n'est pas au courant ou ne la mentionne pas pour des raisons de r\u00e9trocompatibilit\u00e9. Pourtant, elle est parfaitement ad\u00e9quate pour d\u00e9montrer que les fiches techniques doivent \u00eatre lues pour utiliser toutes les capacit\u00e9s de la puce, y compris celles peu connues. Et ce n'est pas la seule raison.<\/p>\n<p><\/p>\n<h2 id=\"zachem-esche-chitat-datashity\">Pourquoi lire les fiches techniques<\/h2>\n<p><\/p>\n<p>G\u00e9n\u00e9ralement, les passionn\u00e9s d'Arduino, apr\u00e8s avoir jou\u00e9 avec des LED et des AnalogWrite, commencent \u00e0 connecter \u00e0 la carte divers modules et puces pour lesquels des biblioth\u00e8ques ont d\u00e9j\u00e0 \u00e9t\u00e9 \u00e9crites. T\u00f4t ou tard, une biblioth\u00e8que appara\u00eet qui ne fonctionne pas comme pr\u00e9vu. L'amateur commence alors \u00e0 l'explorer pour la r\u00e9parer, et l\u00e0...<\/p>\n<p><\/p>\n<p>Il se passe quelque chose de totalement incompr\u00e9hensible, donc il faut aller sur Google, lire de nombreux tutoriels, arracher par morceaux le code de quelqu'un d'autre qui convient et enfin parvenir \u00e0 ses fins. Cela donne un puissant sentiment d'accomplissement, mais en r\u00e9alit\u00e9, le processus ressemble \u00e0 l'invention du v\u00e9lo par le reverse engineering d'une moto. Cela dit, on ne comprend pas mieux comment fonctionne ce v\u00e9lo. Je sais, car j'y ai consacr\u00e9 pas mal de temps.<\/p>\n<p><\/p>\n<p>Si au lieu de cette occupation passionnante, j'avais pass\u00e9 quelques jours \u00e0 \u00e9tudier la documentation de l'Atmega328, j'aurais \u00e9conomis\u00e9 \u00e9norm\u00e9ment de temps. Apr\u00e8s tout, c'est un microcontr\u00f4leur assez simple.<\/p>\n<p><\/p>\n<p>Ainsi, il faut lire les datasheets ne serait-ce que pour avoir une id\u00e9e de la fa\u00e7on dont un microcontr\u00f4leur est structur\u00e9 et de ce qu'il peut faire. Et aussi :<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>pour v\u00e9rifier et optimiser les biblioth\u00e8ques des autres. Elles sont souvent \u00e9crites par des amateurs qui r\u00e9inventent la roue ; ou, au contraire, les auteurs ajoutent intentionnellement une protection excessive contre la b\u00eatise. Qu'il y ait trois fois plus de lignes et que ce soit plus lent, tant que cela fonctionne.<\/p>\n<p>\n<\/li>\n<li>\n<p>pour avoir la possibilit\u00e9 d'utiliser dans le projet des puces pour lesquelles personne n'a \u00e9crit de biblioth\u00e8que ;<\/p>\n<p>\n<\/li>\n<li>\n<p>pour se faciliter la t\u00e2che de migration d'une gamme de microcontr\u00f4leurs \u00e0 une autre ;<\/p>\n<p>\n<\/li>\n<li>\n<p>pour enfin optimiser mon ancien code qui ne rentrait pas dans l'Arduino ;<\/p>\n<p>\n<\/li>\n<li>\n<p>pour apprendre \u00e0 contr\u00f4ler n'importe quelle puce directement via ses registres, sans se soucier d'\u00e9tudier le fonctionnement de ses biblioth\u00e8ques, s'il y en a.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"zachem-pisat-v-registry-napryamuyu-kogda-est-hal-i-ll\">Pourquoi \u00e9crire directement dans les registres alors qu'il existe des HAL et des LL ?<\/h2>\n<p><\/p>\n<p><em>Glossaire<\/em><br \/>\n<em><strong>HAL, High Abstraction Layer<\/strong> \u2013 biblioth\u00e8que pour g\u00e9rer un microcontr\u00f4leur \u00e0 un niveau d'abstraction \u00e9lev\u00e9. Si vous devez utiliser l'interface SPI1, vous configurez et activez simplement SPI1, sans vous soucier des registres et de leurs fonctions.<br \/>\n<strong>LL, Low Level API<\/strong> \u2013 biblioth\u00e8que contenant des macros ou des structures avec les adresses des registres, permettant d'y acc\u00e9der par leur nom. DDRx, PORTx, PINx sur l'Atmega \u2013 c'est du LL.<\/em><\/p>\n<p><\/p>\n<p>Des d\u00e9bats sur le th\u00e8me \u00ab HAL, LL ou registres \u00bb se produisent r\u00e9guli\u00e8rement dans les commentaires sur Habr\u00e9. Sans pr\u00e9tendre avoir acc\u00e8s \u00e0 un savoir astral, je vais simplement partager mon exp\u00e9rience et mes r\u00e9flexions d'amateur.<\/p>\n<p><\/p>\n<p>Apr\u00e8s m'\u00eatre \u00e0 peu pr\u00e8s familiaris\u00e9 avec l'Atmega et avoir lu des articles sur les merveilles du STM32, j'ai achet\u00e9 une demi-douzaine de cartes diff\u00e9rentes \u2013 tant des Discovery que des \u00ab Tablettes Bleues \u00bb, et m\u00eame des puces pour mes propres cr\u00e9ations. Elles sont rest\u00e9es deux ans dans une bo\u00eete. Parfois, je me disais : \u00ab c'est bon, ce week-end j'apprends le STM \u00bb, je lan\u00e7ais CubeMX, g\u00e9n\u00e9rer un setup pour SPI, regardais ce mur de texte, abondamment agr\u00e9ment\u00e9 des copyright de STM, et d\u00e9cidais que c'\u00e9tait un peu trop.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment et pourquoi lire des fiches techniques si les microcontr\u00f4leurs sont votre hobby\" src=\"\/wp-content\/uploads\/2019\/04\/d83be97ba2767121f4be20d524000afe.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il est bien s\u00fbr possible de comprendre ce que CubeMX a \u00e9crit ici. Mais il est \u00e9galement clair qu'il est irr\u00e9aliste de m\u00e9moriser toutes les formulations pour les r\u00e9\u00e9crire manuellement par la suite. Et d\u00e9boguer cela, si je oublie par hasard de cocher une case dans Cube, c'est une tout autre histoire.<\/p>\n<p><\/p>\n<p>Deux ans ont pass\u00e9, et je reste toujours fascin\u00e9 par <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=fr.appsolute.st&amp;hl=ru\">ST MCU Finder<\/a><\/noindex> des puces d\u00e9licieuses mais incompr\u00e9hensibles pour moi, et je suis tomb\u00e9 par hasard sur <noindex><a rel=\"nofollow\" href=\"https:\/\/lujji.github.io\/blog\/bare-metal-programming-stm8\/\">un excellent article<\/a><\/noindex>, bien qu'il s'agisse de STM8. Et <em>soudainement<\/em> j'ai compris que pendant tout ce temps, je frappais \u00e0 une porte ouverte : les registres des STM sont agenc\u00e9s comme ceux de n'importe quel autre microcontr\u00f4leur, et leur gestion ne n\u00e9cessite pas Cube. <em>Quoi, c'\u00e9tait possible comme \u00e7a ?<\/em><\/p>\n<p><\/p>\n<p>HAL et sp\u00e9cifiquement STM32CubeMX sont des outils pour les ing\u00e9nieurs professionnels qui travaillent \u00e9troitement avec les puces STM32. Leur caract\u00e9ristique principale est un haut niveau d'abstraction, permettant de migrer rapidement d'un microcontr\u00f4leur \u00e0 un autre, voire d'un c\u0153ur \u00e0 un autre, tout en restant dans la gamme STM32. Les amateurs rencontrent rarement de telles t\u00e2ches \u2013 notre s\u00e9lection de microcontr\u00f4leurs est g\u00e9n\u00e9ralement limit\u00e9e \u00e0 l'assortiment d'AliExpress, et nous migrons plus souvent entre des puces radicalement diff\u00e9rentes \u2013 passant d'Atmega \u00e0 STM, de STM \u00e0 ESP, ou quoi que nos amis chinois nous proposent de nouveau.<\/p>\n<p><\/p>\n<p>Il reste LL \u2013 mais il n'y a qu'un pas \u00e0 faire pour arriver aux registres. Personnellement, je trouve utile d'\u00e9crire mes propres macros avec les adresses des registres : cela m'oblige \u00e0 \u00e9tudier attentivement la fiche technique, \u00e0 r\u00e9fl\u00e9chir \u00e0 ce dont j'aurai besoin \u00e0 l'avenir, \u00e0 structurer mieux mes programmes, et en g\u00e9n\u00e9ral, cela contribue \u00e0 la m\u00e9morisation.<\/p>\n<p><\/p>\n<p>De plus, il y a un d\u00e9tail avec le populaire STM32F103 \u2013 il existe deux versions incompatibles de LL, l'une officielle de STM, l'autre de Leaf Labs, utilis\u00e9e dans le projet STM32duino. Si l'on doit \u00e9crire une biblioth\u00e8que open-source (et c'\u00e9tait pr\u00e9cis\u00e9ment <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Ontaelio\/DMdriverSTM32F1\">mon objectif<\/a><\/noindex>), il faut soit cr\u00e9er deux versions, soit acc\u00e9der directement aux registres.<\/p>\n<p><\/p>\n<p>Enfin, abandonner le LL simplifie, \u00e0 mon avis, la migration, surtout si l'on se pr\u00e9pare d\u00e8s le d\u00e9but du projet. Un exemple exag\u00e9r\u00e9 : \u00e9crivons un blink Arduino dans Atmel Studio sans 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>Pour que ce code fasse clignoter la LED sur une carte chinoise avec STM8 (\u00e0 partir de ST Visual Desktop), il suffit de changer deux adresses :<\/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>Oui, j'utilise la particularit\u00e9 de connexion de la LED sur cette carte sp\u00e9cifique, elle clignotera tr\u00e8s lentement, mais elle clignotera !<\/p>\n<p><\/p>\n<h2 id=\"kakie-byvayut-datashity\">Quels types de fiches techniques existent ?<\/h2>\n<p><\/p>\n<p>Dans les articles et sur les forums, tant en russe qu'en anglais, les \u00ab fiches techniques \u00bb d\u00e9signent toute documentation technique sur des puces, et c'est ainsi que je proc\u00e8de dans ce texte. Techniquement, elles ne sont qu'un des types de cette documentation :<\/p>\n<p><\/p>\n<p><strong>Fiche technique<\/strong> \u2013 sp\u00e9cifications techniques, caract\u00e9ristiques tactiques et techniques. Pr\u00e9sent chez tout composant \u00e9lectronique. Informations de r\u00e9f\u00e9rence, il est utile de les avoir \u00e0 port\u00e9e de main, mais il n'y a pas grand-chose \u00e0 y lire attentivement. Cependant, les puces plus simples se contentent souvent d'une fiche technique pour \u00e9viter de multiplier les documents ; dans ce cas, <em>Manuel de r\u00e9f\u00e9rence<\/em> est inclus ici \u00e9galement.<\/p>\n<p><\/p>\n<p><strong>Manuel de r\u00e9f\u00e9rence<\/strong> \u2013 la v\u00e9ritable instruction, un gros livre de 1000+ pages. Elle d\u00e9crit en d\u00e9tail le fonctionnement de tout ce qui est int\u00e9gr\u00e9 dans la puce. Le principal document pour ma\u00eetriser le microcontr\u00f4leur. Contrairement \u00e0 <em>la fiche technique<\/em>, les instructions sont r\u00e9dig\u00e9es pour une large gamme de microcontr\u00f4leurs, contenant beaucoup d'informations sur la p\u00e9riph\u00e9rie absente de votre mod\u00e8le sp\u00e9cifique.<\/p>\n<p><\/p>\n<p><strong>Manuel de programmation<\/strong> ou <strong>Manuel de l'ensemble d'instructions<\/strong> \u2013 instructions sur les commandes uniques du microcontr\u00f4leur. Destin\u00e9e \u00e0 ceux qui programment en Assembleur. Les auteurs de compilateurs l'utilisent activement pour optimiser le code, donc en g\u00e9n\u00e9ral, nous n'en aurons pas besoin. Cependant, il est utile d'y jeter un \u0153il pour une compr\u00e9hension g\u00e9n\u00e9rale, pour certaines commandes sp\u00e9cifiques comme la sortie d'interruption, ainsi que lors d'une utilisation active du d\u00e9bogueur.<\/p>\n<p><\/p>\n<p><strong>Note d'application<\/strong> \u2013 conseils utiles pour r\u00e9soudre des t\u00e2ches sp\u00e9cifiques, souvent avec des exemples de code.<\/p>\n<p><\/p>\n<p><strong>Feuille d'errata<\/strong> \u2013 description des cas de comportement non standard de la puce avec des solutions, s'il y en a.<\/p>\n<p><\/p>\n<h2 id=\"chto-est-v-datashitah\">Que contient les fiches techniques ?<\/h2>\n<p><\/p>\n<p>Directement dans <em>Fiche technique<\/em> nous pourrions avoir besoin des sections suivantes :<\/p>\n<p><\/p>\n<p><strong>R\u00e9sum\u00e9 du dispositif<\/strong> \u2013 la premi\u00e8re page de la fiche technique donne un aper\u00e7u de l'appareil. Tr\u00e8s utile dans les situations o\u00f9 vous avez trouv\u00e9 une puce quelque part (vue en magasin, dess soud\u00e9e, mention rencontr\u00e9e) et que vous voulez comprendre ce que c'est.<\/p>\n<p><\/p>\n<p><strong>Description g\u00e9n\u00e9rale<\/strong> \u2013 une description plus d\u00e9taill\u00e9e des capacit\u00e9s des puces de la s\u00e9rie.<\/p>\n<p><\/p>\n<p><strong>Pinouts<\/strong> \u2013 sch\u00e9mas de brochage pour tous les bo\u00eetiers de puce possibles (la pince correspondante sur quelle patte).<\/p>\n<p><\/p>\n<p><strong>Pin Description<\/strong> \u2013 description de l'attribution et des capacit\u00e9s de chaque broche.<\/p>\n<p><\/p>\n<p><strong>Memory Map<\/strong> \u2013 la carte d'adresses en m\u00e9moire ne sera probablement pas n\u00e9cessaire, mais elle inclut parfois un tableau des adresses des blocs de registres.<\/p>\n<p><\/p>\n<p><strong>Register Map<\/strong> \u2013 le tableau d'adresses des blocs de registres se trouve g\u00e9n\u00e9ralement dans la fiche technique, tandis que le <em>Ref Manual<\/em> \u2013 ne mentionne que les d\u00e9calages (<em>address offsets<\/em>).<\/p>\n<p><\/p>\n<p><strong>Electrical Characteristics<\/strong> \u2013 dans cette section, nous nous int\u00e9ressons d'abord aux <strong>absolute maximum ratings<\/strong>, \u00e9num\u00e9rant les charges maximales sur la puce. Contrairement \u00e0 l'Atmega328p indestructible, la plupart des MC ne permettent pas de connecter des charges importantes aux broches, ce qui devient une surprise d\u00e9sagr\u00e9able pour les utilisateurs d'Arduino.<\/p>\n<p><\/p>\n<p><strong>Package Information<\/strong> \u2013 dessins des bo\u00eetiers disponibles, utiles lors de la conception de vos cartes.<\/p>\n<p><\/p>\n<p><em>Manuel de r\u00e9f\u00e9rence<\/em> se compose structurellement de sections d\u00e9di\u00e9es \u00e0 des p\u00e9riph\u00e9riques sp\u00e9cifiques mentionn\u00e9s dans leur titre. Chaque chapitre peut \u00eatre divis\u00e9 en trois parties :<\/p>\n<p><\/p>\n<p><strong>Vue d'ensemble<\/strong>, <strong>Introduction<\/strong>, <strong>Features<\/strong> \u2013 aper\u00e7u des capacit\u00e9s du p\u00e9riph\u00e9rique;<\/p>\n<p><\/p>\n<p><strong>Functional Description<\/strong>, <strong>Usage Guide<\/strong> ou simplement le bloc principal de la section \u2013 une description textuelle d\u00e9taill\u00e9e des principes de fonctionnement du p\u00e9riph\u00e9rique et des fa\u00e7ons de l'utiliser ;<\/p>\n<p><\/p>\n<p><strong>Registers<\/strong> \u2013 description des registres de contr\u00f4le. Dans des cas simples type GPIO ou SPI, cela peut suffire pour commencer \u00e0 utiliser le p\u00e9riph\u00e9rique, mais il est souvent n\u00e9cessaire de lire \u00e9galement les parties pr\u00e9c\u00e9dentes.<\/p>\n<p><\/p>\n<h2 id=\"kak-chitat-datashity\">Comment lire les fiches techniques<\/h2>\n<p><\/p>\n<p>Les fiches techniques peuvent effrayer par leur volume et leur jargon. En r\u00e9alit\u00e9, tout n'est pas si terrible si l'on conna\u00eet quelques astuces.<\/p>\n<p><\/p>\n<p>Installez <strong>un bon lecteur PDF<\/strong>. Les fiches techniques sont r\u00e9dig\u00e9es dans la grande tradition des manuels papier, il est agr\u00e9able de les imprimer, de les marquer avec des onglets en plastique et de les relier. Les hyperliens y sont tr\u00e8s rares. Heureusement, au moins la structure du document est formalis\u00e9e par des signets, donc un bon lecteur avec une navigation pratique est essentiel.<\/p>\n<p><\/p>\n<p>Une fiche technique n'est pas un manuel de Stroustrup, vous n'avez <strong>pas besoin de tout lire<\/strong>. Si vous avez suivi le conseil pr\u00e9c\u00e9dent, il suffit de trouver la section souhait\u00e9e dans le panneau des signets.<\/p>\n<p><\/p>\n<p>Les fiches techniques, en particulier <em>les manuels de r\u00e9f\u00e9rence<\/em>, peuvent d\u00e9crire les capacit\u00e9s non d'une puce sp\u00e9cifique, mais de <strong>toute la s\u00e9rie<\/strong>. Cela signifie que la moiti\u00e9, voire deux tiers de l'information, n'a rien \u00e0 voir avec votre puce. Avant d'\u00e9tudier les registres TIM7, v\u00e9rifiez si <em>Description g\u00e9n\u00e9rale<\/em>, vous en avez un.<\/p>\n<p><\/p>\n<p>Savoir <strong>l'anglais<\/strong> suffit au <strong>niveau de base<\/strong>. Les fiches techniques sont \u00e0 moiti\u00e9 compos\u00e9es de termes inconnus pour un locuteur moyen de la langue, et \u00e0 moiti\u00e9 de constructions simples. Il existe \u00e9galement de belles fiches techniques en anglais chinois, o\u00f9 la moiti\u00e9 contient \u00e9galement des termes, et l'autre moiti\u00e9 est un ensemble al\u00e9atoire de mots.<\/p>\n<p><\/p>\n<p>Si vous rencontrez <strong>un mot inconnu<\/strong>, ne tentez pas de le traduire \u00e0 l'aide d'un dictionnaire anglais-russe. Si \u00e7a vous laisse perplexe, <em>hyst\u00e9r\u00e9sis<\/em>, le mot \u00ab hyst\u00e9r\u00e9sis \u00bb ne vous apportera pas de chaleur. Utilisez Google, Stack Overflow, Wikip\u00e9dia, des forums o\u00f9 le concept n\u00e9cessaire sera <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/5357918\/what-does-hysteresis-mean-and-how-does-it-apply-to-computer-science-or-programmi\">expliqu\u00e9 en des termes simples avec des exemples.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>La meilleure fa\u00e7on de comprendre ce que vous lisez est de <strong>tester en pratique.<\/strong>Donc, gardez \u00e0 port\u00e9e de main la carte de d\u00e9veloppement avec laquelle vous vous familiarisez, voire deux, au cas o\u00f9 vous ne comprendriez pas quelque chose et verriez de la fum\u00e9e magique.<\/p>\n<p><\/p>\n<p>C'est une bonne habitude de garder une fiche technique \u00e0 port\u00e9e de main lorsque vous <strong>lisez un tutoriel de quelqu'un<\/strong> ou \u00e9tudiez une biblioth\u00e8que \u00e9trang\u00e8re. Il est tout \u00e0 fait possible que vous y trouviez une solution plus optimale \u00e0 votre probl\u00e8me. Et inversement, si vous ne parvenez pas \u00e0 comprendre comment fonctionne le registre \u00e0 partir de la fiche technique, faites-en une recherche sur Google : il est probable que quelqu'un ait d\u00e9j\u00e0 tout d\u00e9crit en des termes simples ou a laiss\u00e9 du code compr\u00e9hensible sur GitHub.<\/p>\n<p><\/p>\n<h2 id=\"slovarik\">Glossaire<\/h2>\n<p><\/p>\n<p>Quelques mots et abr\u00e9viations utiles pour vous aider \u00e0 vous familiariser plus rapidement avec les fiches techniques. Ce qui m'est venu \u00e0 l'esprit ces derniers jours, les ajouts et corrections sont les bienvenus.<\/p>\n<p><\/p>\n<p><em>\u00c9lectricit\u00e9<\/em><br \/>\n<strong>Vcc<\/strong>, <strong>Vdd<\/strong> \u2013 \u00ab plus \u00bb, alimentation<br \/>\n<strong>Vss<\/strong>, <strong>Vee<\/strong> \u2013 \u00ab moins \u00bb, terre<br \/>\n<strong>courant<\/strong> \u2013 courant<br \/>\n<strong>tension<\/strong> \u2013 tension<br \/>\n<strong>\u00e0 la terre du courant<\/strong> \u2013 travailler comme \u00ab terre \u00bb pour une charge externe<br \/>\n<strong>pour alimenter le courant<\/strong> \u2013 alimenter une charge externe<br \/>\n<strong>broche \u00e0 forte capacit\u00e9 d'absorption\/fourniture<\/strong> \u2013 broche avec une haute \u00ab tol\u00e9rance \u00bb \u00e0 la charge<\/p>\n<p><\/p>\n<p><em>IO<\/em><br \/>\n<strong>H, Haut<\/strong> \u2013 sur la broche Vcc<br \/>\n<strong>L, Bas<\/strong> \u2013 sur la broche Vss<br \/>\n<strong>Haute Imp\u00e9dance<\/strong>, <strong>Hi-Z<\/strong>, <strong>flottant<\/strong> \u2013 sur la broche, il n'y a rien, \u00ab haute r\u00e9sistance \u00bb, il est en fait invisible au monde ext\u00e9rieur.<br \/>\n<strong>faible tirage vers le haut<\/strong>, <strong>faible tirage vers le bas<\/strong> \u2013 r\u00e9sistance de tirage\/stigmatique int\u00e9gr\u00e9e, \u00e9quivalent approximatif de 50 k\u03a9 (voir la fiche technique). Utilis\u00e9 par exemple pour emp\u00eacher la broche d'entr\u00e9e de flotter dans l'air, provoquant des d\u00e9clenchements ind\u00e9sirables. <em>Faible<\/em> \u2013 car il est facile \u00e0 \u00ab \u00e9craser \u00bb.<br \/>\n<strong>push pull<\/strong> \u2013 mode de sortie de la broche, dans lequel elle commute entre <em>Couverture d'ombre du soleil<\/em> et <em>Faible<\/em> \u2013 sortie normale avec Arduino.<br \/>\n<strong>drain ouvert<\/strong> \u2013 d\u00e9signation du mode de sortie o\u00f9 la broche peut \u00eatre soit <em>Faible<\/em>, ou bien <em>haute imp\u00e9dance \/ flottante<\/em>. Dans ce cas, ce n'est presque jamais un v\u00e9ritable drain ouvert, il y a des diodes de protection, des r\u00e9sistances, etc. C'est simplement une d\u00e9signation du mode terre \/ rien.<br \/>\n<strong>vrai drain ouvert<\/strong> \u2013 et voici le vrai drain ouvert : la broche conduit directement \u00e0 la terre si elle est ouverte, ou reste en suspension si elle est ferm\u00e9e. Cela signifie qu'il est possible de faire passer une tension sup\u00e9rieure \u00e0 Vcc, mais le maximum est tout de m\u00eame stipul\u00e9 dans la fiche technique au chapitre <em>Donn\u00e9es maximales absolues \/ Tension<\/em>. <\/p>\n<p><\/p>\n<p><em>Interfaces<\/em><br \/>\n<strong>en s\u00e9rie<\/strong> \u2013 connect\u00e9s en s\u00e9rie<br \/>\n<strong>pour cha\u00eener<\/strong> \u2013 assembler des puces en cha\u00eene par connexion s\u00e9rie, augmentant le nombre de sorties.<br \/>\n<strong>d\u00e9calage<\/strong> \u2013 d\u00e9calage, d\u00e9signe g\u00e9n\u00e9ralement un d\u00e9calage de bits. Par cons\u00e9quent, <strong>pour d\u00e9caler \u00e0 l'int\u00e9rieur<\/strong> et <strong>pour d\u00e9caler \u00e0 l'ext\u00e9rieur<\/strong> \u2013 recevoir et transmettre des donn\u00e9es bit \u00e0 bit.<br \/>\n<strong>verrou<\/strong> \u2013 un verrou qui couvre le tampon lorsque des bits sont d\u00e9cal\u00e9s \u00e0 travers lui. Une fois la transmission termin\u00e9e, le verrou s'ouvre et les bits commencent \u00e0 travailler.<br \/>\n<strong>pour chronom\u00e9trer l'entr\u00e9e<\/strong> \u2013 effectuer une transmission bit \u00e0 bit, d\u00e9caler tous les bits aux emplacements requis.<br \/>\n<strong>double tampon<\/strong>, <strong>registre d'ombre<\/strong>, <strong>registre de pr\u00e9chargement<\/strong> \u2013 d\u00e9signations qui indiquent qu'un registre doit pouvoir accepter de nouvelles donn\u00e9es, mais les retenir jusqu'\u00e0 un certain moment. Par exemple, pour un fonctionnement correct du PWM, ses param\u00e8tres (cycle de travail, fr\u00e9quence) ne doivent pas changer tant que le cycle actuel n'est pas termin\u00e9, mais de nouveaux param\u00e8tres peuvent d\u00e9j\u00e0 \u00eatre transmis. Ainsi, les param\u00e8tres actuels sont maintenus dans <em>registre d'ombre<\/em>, tandis que les nouveaux vont dans <em>registre de pr\u00e9chargement<\/em>, \u00e9tant enregistr\u00e9s dans le registre correspondant de la puce.<\/p>\n<p><\/p>\n<p><em>Divers<\/em><br \/>\n<strong>diviseur de fr\u00e9quence<\/strong> \u2013 pr\u00e9diviseur de fr\u00e9quence<br \/>\n<strong>pour d\u00e9finir un bit<\/strong> \u2013 mettre un bit \u00e0 1<br \/>\n<strong>pour effacer \/ r\u00e9initialiser un bit<\/strong> \u2013 r\u00e9initialiser un bit \u00e0 0 (<em>r\u00e9initialisation<\/em> \u2013 fonctionnalit\u00e9 des fiches techniques STM)<\/p>\n<p><\/p>\n<h3 id=\"chto-dalshe\">Que faire ensuite<\/h3>\n<p><\/p>\n<p>En r\u00e9alit\u00e9, une partie pratique \u00e9tait pr\u00e9vue avec la d\u00e9monstration de trois projets sur STM32 et STM8, sp\u00e9cialement r\u00e9alis\u00e9s pour cet article \u00e0 l'aide des fiches techniques, avec des ampoules, SPI, minuteries, PWM et interruptions :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment et pourquoi lire des fiches techniques si les microcontr\u00f4leurs sont votre hobby\" src=\"\/wp-content\/uploads\/2019\/04\/8929bad65dad7473a81a221281c43557.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mais le texte est trop long, donc les projets seront envoy\u00e9s dans une deuxi\u00e8me partie.<\/p>\n<p><\/p>\n<p>La comp\u00e9tence en lecture des fiches techniques vous aidera avec votre hobby, mais elle ne remplacera gu\u00e8re les \u00e9changes en direct avec des coll\u00e8gues passionn\u00e9s sur des forums et des chats. Il est n\u00e9cessaire, en premier lieu, d'am\u00e9liorer son anglais. Donc, pour ceux qui ont lu jusqu'au bout \u2013 un prix sp\u00e9cial : deux le\u00e7ons gratuites sur Skyeng lors du premier paiement avec le code <code>HABR2<\/code>.<\/p>\n<p>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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\udd47Comment et pourquoi lire les fiches techniques, si les microcontr\u00f4leurs sont votre hobby | ProHoster","description":"Micro\u00e9lectronique.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/kak-i-zachem-chitat-datashity-esli-mikrokontrollery-vashe-hobbi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/32463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=32463"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/32463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/24267"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=32463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=32463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=32463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}