Développement d'une carte de débogage pour K1986BE1QI (air)

Debug Board MDB1986

Il y a quelques années, j'ai rencontré les microcontrôleurs russes de Milander. C'était en 2013, lorsque les ingénieurs ont discuté vigoureusement des premiers résultats du programme cible fédéral «Développement de la base de composants électroniques et de l'électronique radio» pour 2008-2015. À cette époque, le contrôleur K1986BE9x (noyau Cortex-M3) était déjà sorti et le contrôleur 1986BE1T (noyau Cortex-M1) venait d'apparaître. Il dans le boîtier en plastique LQFP-144 avait la désignation K1986BE1QI (aviation), et sur la puce elle-même la désignation MDR32F1QI. Sur le site Internet du constructeur, il porte le suffixe «avia», car il possède des interfaces spécifiques à l'industrie aéronautique (ARINC 429, MIL_STD_1553).

Étonnamment, au moment de la distribution de ces contrôleurs, la société Milander a préparé des kits de débogage et une bibliothèque de sous-programmes pour travailler avec les périphériques ", mais sans aucune garantie ni obligation supplémentaire concernant l'exactitude de la bibliothèque". La bibliothèque est similaire à la bibliothèque périphérique standard STMicroelectronics. En général, tous les contrôleurs ARM construits sur le noyau Cortex-M ont beaucoup en commun. Pour cette raison, la connaissance des nouveaux contrôleurs russes est allée rapidement. Et pour ceux qui ont acheté des kits de débogage de marque, un support technique a été fourni pendant l'utilisation.


Kit de débogage pour le microcontrôleur 1986BE1T, © Milander

Cependant, au fil du temps, des «maladies infantiles» de nouveaux microcircuits et bibliothèques ont commencé à apparaître. Des exemples de test de firmware ont fonctionné sans problèmes visibles, mais avec une modification importante, des plantages et des erreurs ont plu. La première "déglutition" dans ma pratique a été des défaillances inexpliquées dans le fonctionnement du contrôleur CAN. Un an plus tard, sur le contrôleur d'audit précoce 1986BE1T (air), un problème a été détecté avec le module MKIO (canal d'échange d'informations multiplexé) . En général, toutes les révisions de ces microcontrôleurs jusqu'en 2016 étaient d'une utilité limitée. Il a fallu beaucoup de temps et de nerfs pour identifier ces problèmes, dont la confirmation se trouve désormais dans les listes d'erreurs (Errata) .

Une caractéristique désagréable était qu'il était nécessaire de travailler et de traiter les erreurs non pas sur les cartes de débogage, mais sur les cartes prototypes des appareils prévus pour la production en série. À part le connecteur JTAG, il n'y avait généralement rien là-bas. La connexion avec un analyseur logique était difficile et peu pratique, et il n'y avait généralement ni LED ni écran. Pour cette raison, j'ai pensé à créer mon propre tableau de débogage.

D'une part, il y avait des kits de débogage de marque sur le marché, ainsi que de magnifiques cartes de LDM-Systems de Zelenograd. D'un autre côté, les prix de ces produits sont plongés dans la stupeur et les fonctionnalités de base sans cartes d'extension ne répondent pas aux attentes. Une carte avec un contrôleur soudé et un connecteur à broches ne m'intéresse pas. Et les planches plus intéressantes coûtent cher.


Carte de débogage MILANDR LDM-HELPER-K1986BE1QI-FULL, © LDM Systems

La tarification et la commercialisation de la société "Milander" sont particulières. Ainsi, il est possible d'obtenir des échantillons gratuits de certains microcircuits, mais cela n'est disponible que pour les personnes morales et est associé à une quête bureaucratique. En général, les microcircuits dans un boîtier métal-céramique sont de l'or au sens direct et figuré. Par exemple, le contrôleur 1986BE1T coûte de 14 à 24 mille roubles à Moscou. La puce de mémoire statique 1645RU6U coûte à partir de 15 000 roubles. Et un tel ordre de prix pour tous les produits. En conséquence, même les instituts de recherche spécialisés avec des commandes de l'État économisent et évitent ces prix. Les microcircuits dans un boîtier en plastique à usage civil sont nettement moins chers, mais ils ne sont pas disponibles auprès de fournisseurs populaires. De plus, la qualité des microcircuits dans un boîtier plastique, me semble-t-il, est pire que celle des «or». Par exemple, je n'ai pas pu démarrer le contrôleur K1986BE1QI à une fréquence de 128 MHz sans augmenter le paramètre de latence du flash. Dans le même temps, la température de ce contrôleur est montée à 40-50C. Mais le contrôleur 1986BE1T ("gold") a été lancé à 128 MHz sans réglages supplémentaires et est resté froid. Il est vraiment bon.


Microcontrôleur "Golden" 1986BE1T, (c) Milander

J'ai eu la chance qu'un microcontrôleur dans un boîtier en plastique puisse encore être acheté au détail chez LDM Systems, et toutes les cartes de circuits imprimés sont disponibles gratuitement. La mauvaise chose est que sur le site sur la photo du contrôleur il y a un marquage qui indique qu'il s'agit de la 4ème révision de 2014, c'est-à-dire avec des défauts. J'ai longtemps pensé - acheter ou ne pas acheter. Alors plusieurs années se sont écoulées ...


L'idée de créer un tableau de débogage n'a pas disparu. Peu à peu, j'ai formé toutes les exigences et j'ai pensé comment mettre tout cela sur une seule planche, pour qu'elle soit compacte et pas chère. En parallèle, j'ai commandé les composants manquants aux Chinois. Je n'étais pas pressé - j'ai tout fait pour moi. Les fournisseurs chinois sont réputés pour leur négligence - j'ai dû commander la même chose à différents endroits afin d'obtenir tout ce dont j'avais besoin. De plus, certains des microcircuits de mémoire se sont avérés être utilisés - manifestement évaporés des appareils cassés. Cela m'est revenu plus tard.

Acheter un microcontrôleur Milander K1986BE1QI (avia) n'est pas une tâche facile. Dans le même magasin Chip and Dip, dans la section "Commander des articles", je n'ai trouvé que le K1986BE92QI pour 740 roubles, mais cela ne me convenait pas. La seule option est d'acheter chez LDM-Systems pour 2000 roubles, pas une nouvelle révision. Comme je ne pouvais pas trouver de remplaçant ailleurs, j'ai décidé d'acheter ce qui était. À ma grande surprise, ils m'ont vendu un tout nouveau contrôleur de version de décembre 2018, révision 6+ (1820). Et le site a toujours une vieille photo, et au moment de la rédaction, le contrôleur n'est pas disponible ...


Microcontrôleur K1986be1qi (avia) dans un emballage technologique, (c) - Image de

Les principales caractéristiques techniques de ma carte de débogage MDB1986 sont les suivantes:

  • débogueur-programmateur intégré compatible avec J-Link et CMSIS-DAP;
  • Mémoire statique 4Mbit (256k x 16, 10 ns);
  • Puce de mémoire flash 64Mbit, Winbond 25Q64FVSIG;
  • Émetteur-récepteur d'interface RS-232 avec lignes RTS et CTS;
  • interfaces et connecteurs pour Ethernet, USB, CAN;
  • Contrôleur d'affichage à 7 segments MAX7221
  • connecteur à broches pour travailler avec MKIO (MIL_STD_1553) et ARINC429;
  • Phototransistor Everlight PT17-21C;
  • cinq LED de couleur, un bouton de réinitialisation et deux boutons d'utilisateur;
  • alimenté par port USB 5 volts;
  • Dimensions du PCB 100 x 80 mm

J'ai aimé les cartes de la série STM-Discovery car il y a un programmeur de débogueur intégré - ST-Link. Le ST-Link de marque ne fonctionne qu'avec les contrôleurs STMicroelectronics, mais il y a quelques années, il est devenu possible de mettre à jour le firmware dans ST-Link et d'obtenir un débogueur SEGGER J-Link OB (embarqué). Légalement, l'utilisation d'un tel débogueur est limitée uniquement avec les cartes STMicroelectronics, mais en fait le potentiel n'est pas limité. Ainsi, ayant un OB J-Link, vous pouvez avoir un débogueur intégré sur la carte de débogage. Je note que dans les produits de "LDM-Systems" on utilise le convertisseur CP2102 (Usb2Uart), qui ne peut que flasher.


Microcontrôleurs STM32F103C8T6, réels et non, (c) Photo de

Il était donc nécessaire d'acheter le STM32F103C8T6 d'origine, car le micrologiciel propriétaire ne fonctionnera pas correctement avec le clone. J'ai douté de cette thèse et j'ai décidé d'essayer le contrôleur CS32F103C8T6 de la société chinoise CKS en fonctionnement. Je n'ai rien à redire sur le contrôleur lui-même, mais le firmware ST-Link ne fonctionnait pas. J-Link a fonctionné partiellement - le périphérique USB a été détecté, mais le programmeur n'a pas rempli ses fonctions et a constamment rappelé qu'il était "défectueux".


Erreur lors de l'utilisation du débogueur sur un contrôleur non d'origine

Je ne me suis pas calmé et j'ai d'abord écrit le firmware pour que la LED clignote, puis j'ai réalisé la requête IDCODE en utilisant le protocole JTAG. Le programmeur ST-Link que j'avais sur la carte Discovery et le programme utilitaire ST-Link clignotaient sans problème CS32F103C8T6. Par conséquent, je me suis assuré que ma carte fonctionnait. À ma grande joie, le contrôleur cible K1986BE1QI (avia) a joyeusement émis son IDCODE via la ligne TDO.


Oscillogramme de ligne de signal tdo avec réponse codée idcode, (c) - Image de


Le port SWD s'est donc avéré utile pour déboguer le débogueur lui-même et vérifier l'IDCODE

Il y avait une variante avec le débogueur CMSIS-DAP (Debug Access Port) . Construire un projet à partir du code source d'ARM n'est pas une tâche facile, j'ai pris le projet à partir de X893 , puis j'ai essayé DAP42. Malheureusement, Keil uVision a raccroché et n'a pas voulu travailler avec eux. En conséquence, j'ai remplacé la puce du débogueur par la STM32F103C8T6 propriétaire et je ne suis plus revenu à ce problème.


Débogueur J-Link STLink V2 réussi

Lorsque tous les composants clés de la future carte de débogage étaient en stock, je suis monté dans Eagle CAD et j'ai découvert qu'ils n'étaient pas dans la bibliothèque d'éléments. Nulle part où aller - ils devaient se dessiner. Dans le même temps, j'ai fait des empreintes pour la mémoire, le connecteur HanRun pour Ethernet et ajouté des trames pour les résistances et les condensateurs. Le fichier de projet et la bibliothèque de composants se trouvent sur mon GitHub .

Schéma de principe de la carte de débogage MDB1986


La carte est alimentée par une source CC de 5 volts, obtenue à partir du port USB. Il y a deux ports USB Type-B sur la carte. L'un est pour le programmeur, le second est pour le contrôleur K1986BE1QI. La carte peut fonctionner à partir de n'importe laquelle de ces sources ou avec les deux en même temps. Le contrôle de charge et la protection des lignes électriques les plus simples sont mis en œuvre sur les diodes Schottky, sur les circuits D2 et D3 (SS24). Sur le schéma, vous pouvez également voir les fusibles auto-réparateurs F1 et F2 à 500mA. Les lignes de signal du port USB sont protégées par un ensemble de diodes USBLC6-2SC6.

Le circuit du débogueur-programmeur ST-Link est connu de beaucoup, il peut être trouvé dans la documentation des cartes STM32-Discovery et d'autres sources. Pour le firmware initial du clone ST-Link / J-Link-OB / DAP (en option), j'ai sorti les lignes SWDIO (PA13), SWCLK (PA14), GND. Beaucoup de gens utilisent UART pour le firmware et sont obligés de tirer les cavaliers BOOT. Mais SWD est plus pratique pour moi, d'ailleurs, ce protocole permet le débogage.

Presque tous les composants de la carte sont alimentés par 3,3 volts, qui proviennent du régulateur de tension AMS1117-3.3. Pour supprimer les interférences électromagnétiques et les courants d'appel, des filtres LC des condensateurs et selfs de la série BLM31PG sont utilisés.

Il convient également de mentionner le pilote de l'écran 7 segments MAX7221. Selon les spécifications, l'alimentation recommandée est de 4 à 5,5 volts et le niveau de signal élevé (unité logique) est d'au moins 3,5 V (0,7 x VCC), avec une alimentation de 5 V. Pour le contrôleur K1986BE1QI (avia), la sortie d'une unité logique correspond à une tension de 2,8 à 3,3V. De toute évidence, il existe une inadéquation des niveaux de signal qui peut interférer avec le fonctionnement normal. J'ai décidé d'alimenter le MAX7221 à partir de 4V et d'abaisser les niveaux de signal à 2,8V (0,7 x 4 = 2,8). Pour ce faire, la diode D4 (RS1A ou FR103) est installée en série avec le circuit d'alimentation du driver. La chute de tension totale est de 0,9 V (diode Schottky 0,3 V et diode 0,6 V), et tout fonctionne.

La plupart des ports du microcontrôleur K1986BE1QI (avia) sont compatibles avec des signaux jusqu'à 5V. Par conséquent, l'utilisation de l'émetteur-récepteur CAN MCP2551, qui fonctionne également sur 5 V, ne pose aucun problème. La puce MAX3232 est indiquée sur le schéma comme un émetteur-récepteur RS-232, mais en fait j'ai utilisé SN65C3232D de Texas Instruments, car Il fonctionne à partir de 3,3 V et fournit des vitesses allant jusqu'à 1 Mbit / s.

Il y a 4 résonateurs à quartz sur la carte - un pour le débogueur (8 MHz) et trois pour le microcontrôleur cible K1986BE1QI (avia) avec des valeurs de 32,768 kHz, 16 MHz, 25 MHz. Ce sont des composants nécessaires, comme Les paramètres du générateur RC intégré sont dans une large plage de 6 à 10 MHz. Une fréquence de 25 MHz est nécessaire pour le fonctionnement du contrôleur Ethernet intégré. Sur le site de Milander (peut-être par erreur) pour une raison quelconque, il est indiqué qu'il n'y a pas d'Ethernet dans le boîtier en plastique. Mais nous nous appuierons sur les spécifications et les faits.

Une incitation importante pour créer votre propre carte de débogage était la possibilité de travailler avec le bus système externe EBC (contrôleur de bus externe), qui est essentiellement un port parallèle. Le microcontrôleur K1986BE1QI (avia) vous permet de vous connecter et de travailler avec des puces de mémoire externes et des périphériques, par exemple, ADC, FPGA, etc. Les capacités du bus système externe sont assez grandes - vous pouvez travailler avec de la RAM statique 8 bits, 16 bits et 32 ​​bits, une ROM et une mémoire flash NAND. Pour lire / écrire des données 32 bits, le contrôleur peut effectuer automatiquement 2 opérations correspondantes pour les circuits 16 bits et pour les opérations 8 bits - 4. De toute évidence, une opération d'E / S 32 bits sera la plus rapide avec le bus de données 32 bits. Les inconvénients incluent la nécessité pour le programme de fonctionner avec des données 32 bits, et 32 ​​pistes doivent être posées sur la carte.


Puces RAM statiques utilisées (devinez laquelle est défectueuse)

Une solution équilibrée consiste à utiliser des puces de mémoire 16 bits. J'ai Integrated Silicon Solutions Inc. (ISSI IS61LV25616AL, 16 x 256k, 10 ns, 3,3 V). Bien sûr, la société Milander possède sa propre série de puces de mémoire statique 1645RU , mais elles sont trop chères et inaccessibles. Alternativement, il existe des broches compatibles Samsung K6R4016V1D. Plus tôt, j'ai mentionné que les microcircuits se sont avérés être utilisés et que l'instance que j'ai installée initialement a donné des échecs et des valeurs chaotiques dans la 15e ligne de données. Il a fallu plusieurs jours pour rechercher des erreurs matérielles, et le plus grand était le sentiment de satisfaction lorsque j'ai remplacé la puce endommagée par une puce fonctionnelle. Quoi qu'il en soit, la vitesse de travail avec la mémoire externe laisse beaucoup à désirer.

Bus externe et mode autonome
Le microcontrôleur K1986BE1QI (aviation) dispose d'un mode StandAlone unique, conçu pour un accès externe direct aux contrôleurs Ethernet et MKIO (MIL_STD_1553) via un bus externe, et le cœur est dans un état de réinitialisation, c'est-à-dire non utilisé. Ce mode est pratique pour les processeurs et FPGA dans lesquels il n'y a pas d'Ethernet et / ou MKIO.

Le schéma de connexion est le suivant:

  • Bus de données MCU (D0-D15) => SRAM (I / O0-I / O15),
  • bus d'adresse MCU (A1-A18) => SRAM (A0-A17),
  • Contrôle MCU (nWR, nRD, PortC2) => SRAM (WE, OE, CE),
  • SRAM (UB, LB) connecté ou tiré à la masse via une résistance.

La ligne CE est alimentée via une résistance; les broches pour la sélection d'octets MCU (BE0-BE3) ne sont pas utilisées. Sous le spoiler, je cite le code d'initialisation du port et le contrôleur de bus externe.

Initialisation des ports et contrôleur EBC (contrôleur de bus externe)
void SRAM_Init (void) { EBC_InitTypeDef EBC_InitStruct = { 0 }; EBC_MemRegionInitTypeDef EBC_MemRegionInitStruct = { 0 }; PORT_InitTypeDef initStruct = { 0 }; RST_CLK_PCLKcmd (RST_CLK_PCLK_EBC, ENABLE); PORT_StructInit (&initStruct); //--------------------------------------------// // DATA PA0..PA15 (D0..D15) // //--------------------------------------------// initStruct.PORT_MODE = PORT_MODE_DIGITAL; initStruct.PORT_PD_SHM = PORT_PD_SHM_ON; initStruct.PORT_SPEED = PORT_SPEED_FAST; initStruct.PORT_FUNC = PORT_FUNC_MAIN; initStruct.PORT_Pin = PORT_Pin_All; PORT_Init (MDR_PORTA, &initStruct); //--------------------------------------------// // Address PF3-PF15 (A0..A12), A0 - not used. // //--------------------------------------------// initStruct.PORT_FUNC = PORT_FUNC_ALTER; initStruct.PORT_Pin = PORT_Pin_4 | PORT_Pin_5 | PORT_Pin_6 | PORT_Pin_7 | PORT_Pin_8 | PORT_Pin_9 | PORT_Pin_10 | PORT_Pin_11 | PORT_Pin_12 | PORT_Pin_13 | PORT_Pin_14 | PORT_Pin_15; PORT_Init (MDR_PORTF, &initStruct); //--------------------------------------------// // Address PD3..PD0 (A13..A16) // //--------------------------------------------// initStruct.PORT_FUNC = PORT_FUNC_OVERRID; initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1 | PORT_Pin_2 | PORT_Pin_3; PORT_Init (MDR_PORTD, &initStruct); //--------------------------------------------// // Address PE3, PE4 (A17, A18) // //--------------------------------------------// initStruct.PORT_FUNC = PORT_FUNC_ALTER; initStruct.PORT_Pin = PORT_Pin_3 | PORT_Pin_4; PORT_Init (MDR_PORTE, &initStruct); //--------------------------------------------// // Control PC0,PC1 (nWE,nOE) // //--------------------------------------------// initStruct.PORT_FUNC = PORT_FUNC_MAIN; initStruct.PORT_Pin = PORT_Pin_0 | PORT_Pin_1; PORT_Init (MDR_PORTC, &initStruct); //--------------------------------------------// // Control PC2 (nCE) // //--------------------------------------------// initStruct.PORT_PD = PORT_PD_DRIVER; initStruct.PORT_OE = PORT_OE_OUT; initStruct.PORT_FUNC = PORT_FUNC_PORT; initStruct.PORT_Pin = MDB_SRAM_CE; PORT_Init (MDR_PORTC, &initStruct); //--------------------------------------------// // Initialize EBC controler // //--------------------------------------------// EBC_DeInit(); EBC_StructInit(&EBC_InitStruct); EBC_InitStruct.EBC_Mode = EBC_MODE_RAM; EBC_InitStruct.EBC_WaitState = EBC_WAIT_STATE_3HCLK; EBC_InitStruct.EBC_DataAlignment = EBC_EBC_DATA_ALIGNMENT_16; EBC_Init(&EBC_InitStruct); EBC_MemRegionStructInit(&EBC_MemRegionInitStruct); EBC_MemRegionInitStruct.WS_Active = 2; EBC_MemRegionInitStruct.WS_Setup = EBC_WS_SETUP_CYCLE_1HCLK; EBC_MemRegionInitStruct.WS_Hold = EBC_WS_HOLD_CYCLE_1HCLK; EBC_MemRegionInitStruct.Enable_Tune = ENABLE; EBC_MemRegionInit (&EBC_MemRegionInitStruct, EBC_MEM_REGION_60000000); EBC_MemRegionCMD(EBC_MEM_REGION_60000000, ENABLE); // Turn ON RAM (nCE) PORT_ResetBits (MDR_PORTC, MDB_SRAM_CE); } 

Le microcontrôleur du boîtier LQFP-144 et la mémoire du boîtier TSOP-44 ont de nombreuses broches connectées et occupent beaucoup d'espace sur la carte de circuit imprimé. Ayant une expérience dans la résolution de problèmes d'optimisation dans le domaine de l'économie, il était évident pour moi qu'il était nécessaire de placer ces microcircuits sur la carte en premier lieu. Dans diverses sources, j'ai vu des éloges pour TopoR CAD (Topological Router) . J'ai téléchargé la version d'essai et j'ai pu exporter mon projet depuis Eagle CAD uniquement lorsque j'ai supprimé presque tous les composants. Malheureusement, même 10 éléments du programme TopoR ne m'ont pas aidé à placer sur le tableau. Tout d'abord, tous les composants ont été placés dans un coin, puis placés le long du bord. Cette option ne m'a pas satisfait, et pendant longtemps j'ai tracé la carte en mode manuel dans l'environnement de CAO Eagle familier.

Un élément important de la carte de circuit imprimé est la sérigraphie. La carte de débogage doit non seulement avoir des signatures pour les composants électroniques, mais tous les connecteurs doivent être signés. Au dos de la carte, j'ai placé des tableaux de mémo avec les fonctions des ports du contrôleur (principal, alternatif, redéfini, réel). J'ai commandé la fabrication de circuits imprimés en Chine dans le bureau bien connu de PCBWay. Je ne louerai pas, car la qualité est bonne. Ils peuvent faire mieux, avec moins de tolérances, mais moyennant des frais .


Cartes de circuits imprimés manufacturés MDB1986, (c) Photo par l'auteur

J'ai dû souder les composants «sur mon genou» avec un fer à souder de 40 watts et une soudure POS-61, car je la soudais rarement, 1 à 2 fois par an, et la pâte à souder était sèche. J'ai dû changer le contrôleur chinois CS32F103 en STM32F103 d'origine, puis remplacer la mémoire. En général, maintenant le résultat me convient parfaitement, même si je n'ai pas encore vérifié le fonctionnement de RS-232 et CAN.


Conseil de débogage MDB1986 au travail - brille et chauffe, (c) Photo de

Vous pouvez trouver suffisamment de matériel de formation sur le site Web de Milander pour étudier les contrôleurs de la série 1986BE9 (noyau Cortex-M3), mais je ne vois rien pour le microcontrôleur K1986BE1QI (avia). Après avoir examiné les documents publiés là-bas, les manuels et les travaux de laboratoire pour les universités, je suis heureux que le personnel soit formé à travers le pays pour travailler avec des contrôleurs russes. La plupart des supports de formation sont préparés pour fonctionner avec les ports d'E / S, les minuteries, les ADC, les DAC, SPI, UART. Différents environnements de développement IDE sont utilisés (Keil, IAR, CodeMaster). Quelque part ils programment en utilisant les registres CMSIS, et quelque part ils utilisent la bibliothèque MDR. Il est nécessaire de mentionner la ressource Start Milandr , qui contient de nombreux articles de programmeurs pratiques. Et, bien sûr, il ne faut pas oublier le forum Milander .

La pensée de Milander
La microélectronique se développe en Russie et Milander joue un rôle de premier plan dans ce processus. Il existe de nouveaux microcontrôleurs intéressants, par exemple, 198681 et "Power" avec les interfaces SpaceWire et MKIO (les mêmes qu'en 1986BE1 et, éventuellement, avec les mêmes problèmes), etc. Mais les étudiants ordinaires, les enseignants et les ingénieurs civils pour acheter de telles puces ne sont pas réalistes. Ainsi, la communauté des ingénieurs ne sera pas en mesure d'identifier rapidement les erreurs et les problèmes de cette puce. Il me semble qu'au début, il est nécessaire de produire des microcircuits dans un boîtier en plastique, de le distribuer à toutes les parties intéressées, et seulement après des tests (approbation latine - approbation, reconnaissance), les spécialistes peuvent préparer un audit dans un boîtier en métal-céramique avec protection contre tous les facteurs terribles. J'espère que dans un avenir proche, nous serons tous satisfaits des nouveaux projets annoncés lors des expositions.

Toute personne développée par moi, le tableau de débogage, peut répéter, modifier et utiliser dans le processus éducatif. Tout d'abord, je me suis fait une planche, mais ça s'est tellement bien passé que j'ai décidé de la partager avec tout le monde .

K1986BE1QI (avia) est un contrôleur très intéressant avec des interfaces uniques qui peuvent être utilisées dans les universités pour éduquer les étudiants. Je pense qu'après avoir corrigé les erreurs détectées dans le contrôleur et réussi les tests de certification, le contrôleur volera dans le sens littéral du terme!

Source: https://habr.com/ru/post/fr482716/


All Articles