-
Постов
27 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Mars36
-
-
18.07.2021 в 13:36, Alexeyslav сказал:
В китае продаются платки защиты на эти аккумуляторы
Поскольку я буду использовать такую поделку исключительно для себя, поэтому хочу, что бы она выглядела красиво, без навешанных модулей на соплях.
18.07.2021 в 13:36, Alexeyslav сказал:Но почему сразу не использовать аккумулятор со встроенной защитой?
Разве у них есть встроенная защита? К примеру у кого нибудь NCR18650B. Насколько я знаю, аккумуляторы со встроенной защитой чуть-чуть длиннее и с трудом влезают в стандартные холдеры.
0 -
17 часов назад, Yurkin2015 сказал:
Тогда непонятен вопрос про убийство МК напряжением больше 4В.
18650 аккумулятор с одной стороны подключён к RT8008, с другой - подключён к TP4056.
"Нацарапано" на скриншоте, конечно, неправильно.
Спасибо, а есть ли более продвинутые микросхемы с защитой от КЗ и переразряда? Удалось найти только ту же микросхему, только дополнительно с BMS. И Будет ли достаточно делителя напряжения для точности замера заряда аккумулятора?
0 -
9 часов назад, Yurkin2015 сказал:
Нормальное напряжение на литиевом аккумуляторе от 3 до 4.2 В. Есть заряд или нет заряда - без разницы. Как в поделке питается МК от такого напряжения?
Предполагаю через LDO вроде RT8008.
0 -
На поделке предполагаю USB и работу от аккума 18650. Хотелось бы иметь дополнительно возможность заряжать аккум не вынимая из устройства. Сильно экономить батарейку смысла нет, т.к. устройство должно работать за раз не более 12-16 часов. Для контроля заряда выбрал TP4056. Собственно вопрос, как совместить одновременно заряд аккумулятора и работу устройства? Как я понимаю если сделать как нацарапано на скриншоте работа во время заряда должна убить МК, т.к. во время заряда напряжение будет больше 4 вольт.
0 -
Есть вопросик по OLED ssd1306. Не могу понять как очистить дисплей. В чужих библиотеках есть функция заполнения, но отыскать ее содержимое не удалось. Как я понял надо просто заполнить все семь страниц черным цветом, например. А это делается отправкой данных, уже заготовленными "пустыми" квадратами? В даташите описание очистки также не удалось найти.
0 -
Доброго времени. Хочу найти ресурс где можно подробно почитать про компиляцию и линковку проекта для stm32f103 в линуксе. В гугле много инфы на счет самого мейка и с ним более менее понятно, а вот процесс компиляция под конкретный контроллер мне найти не удалось. Хотелось бы узнать на зависимости файлов CMSIS и весь алгоритм. Хочу научится компилировать проект из консоли, а в идеале прикрутить все необходимое к нужному мне текстовому редактору. Рассматривал готовые мейкфайлы, но написаны они достаточно сложно для моего познания в синтаксисе мейка. Пока планирую написать хотя бы элементарный мейк.
0 -
Спасибо за ответ. В параметрах линкера было "-Wl,-gc-sections". Изменил на "-Wl,-gc-sections, -u,vfprintf -lprintf_flt", проект заметно потяжелел, но результат остался неизменным. Так же пробовал менять на "-Wl,-u,vfprintf -lprintf_flt" но результата это так же не принесло.
17 минут назад, ARV сказал:Погуглил: не совсем так надо сделать. Просто добавьте к опциям линкера -u _printf_float
Спасибо, заработало.
0 -
Доброго времени. Есть проблемка по конвертации float в string в stm32f103. Для конвертации целых чисел использую функцию sprintf со спецификатором "%u" и все прекрасно шлется на дисплей и по uart, но при попытке отправить float возникает какая то магия. Пример:
sprintf(testStr, "%.3f", 1.281);
То в uart не прилетает ничего, и на дисплее так же пустота. Как удалось узнать из гугла ни sprintf ни printf не работают с float, хотя на ютубе в роликах люди использовали эту функцию и у них все прекрасно работало. Хочу узнать, есть ли какая нибудь аналогичная функция?
0 -
@BARS_ Поправил настройку и использовал функцию задержки на таймере, тоже самое. Подключил РТОС и использовал его задержку и так же по нулям.Понизив частоту до 24 Mhz сообщение об ошибке не стало но мусор остался. Нашел тему на easyelectronics с частично похожей проблемой. Там ее решили. Решенный вариант я залил в свой камень, но вместо сообщения "Hello" приходит один и тот же код 0xF8, хотя на отправку идет пять символов. Код с той темы:
#include "stm32f4xx.h" // Device header #include "FreeRTOS.h" #include "task.h" #include "queue.h" void RCC_Init(void); void GPIO_Init(void); void UART_Init(void); void USART2_send (char chr); void vTaskLed1 (void *argument); int main(void){ RCC_Init(); GPIO_Init(); UART_Init(); xTaskCreate(vTaskLed1,"LED1",32,NULL,1,NULL); vTaskStartScheduler(); //planner while(1); } //********************************************************************************** void vTaskLed1 (void *argument){ while(1){ GPIOD->ODR |= GPIO_ODR_ODR_12; //turn on led green GPIOD->ODR &= ~GPIO_ODR_ODR_13; //turn off led orange vTaskDelay(10000); GPIOD->ODR |= GPIO_ODR_ODR_13; //turn on led orange GPIOD->ODR &= ~GPIO_ODR_ODR_12; //turn off led green USART2_send('H'); USART2_send('e'); USART2_send('l'); USART2_send('l'); USART2_send('0'); USART2_send('!'); USART2_send('\n'); vTaskDelay(10000); } } //********************************************************************************** void RCC_Init(void){ RCC->CR |= ((uint32_t)RCC_CR_HSEON); // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); // Ready start HSE FLASH->ACR = (FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY| FLASH_ACR_ICEN | FLASH_ACR_DCEN); // Cloclk Flash memory RCC->CFGR |= RCC_CFGR_HPRE_DIV1; // AHB = SYSCLK/1 - 168/1 RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; // APB1 = HCLK/4 - 168/4 = 42 RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; // APB2 = HCLK/2 - 168/2 = 84 RCC->CFGR &= ~RCC_PLLCFGR_PLLSRC; // clearn PLLSRC bits RCC->CFGR &= ~RCC_PLLCFGR_PLLM; // clearn PLLM bits RCC->CFGR &= ~RCC_PLLCFGR_PLLN; // clearn PLLN bits RCC->CFGR &= ~RCC_PLLCFGR_PLLP; // clearn PLLP bits RCC->CFGR |= RCC_PLLCFGR_PLLSRC_HSE; // source HSE = 8MHz RCC->CFGR |= RCC_PLLCFGR_PLLM_4; // source HSE/4 = 2 MHz RCC->CFGR |= (RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_3); // is set N mul: PLLM x168: clock = 2 MHz * 168 = 336 MHz // already RCC_PLLCFGR_PLLP = 0; // PLLN/2 = 336 MHz * 2 = 168 MHz RCC->CR |= RCC_CR_PLLON; // enable PLL while((RCC->CR & RCC_CR_PLLRDY) == 0) {} // wait till PLL is ready RCC->CFGR &= ~RCC_CFGR_SW; // clear SW bits RCC->CFGR |= RCC_CFGR_SW_PLL; // select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // wait till PLL is used } void GPIO_Init (void){ RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; //Turn on clock on AHB1 to GPIOD GPIOD->MODER &= ~GPIO_MODER_MODER13; //PD15 - clear - led orange GPIOD->MODER |= GPIO_MODER_MODER13_0; //PD13 - PP - led orange GPIOD->MODER &= ~GPIO_MODER_MODER12; //PD15 - clear - led green GPIOD->MODER |= GPIO_MODER_MODER12_0; //PD12 - PP - led green GPIOD->OSPEEDR = 0; //low speed for all gpiod GPIOD->OTYPER = 0; } void UART_Init(void){ RCC->APB1ENR |= RCC_APB1ENR_USART2EN; //Turn on clock on APB1 to UASRT1 ----------------------------тут RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //Turn on clock on AHB1 to GPIOA //PA2 - TX GPIOA->MODER &= ~GPIO_MODER_MODER2_0; //MODER 10 GPIOA->MODER |= GPIO_MODER_MODER2_1; //MODER 10 GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR2; //PUPDR 00 GPIOA->OTYPER &= ~GPIO_OTYPER_OT_2; //OTYPER 0 => PA2 - AF PP GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR2; //OSPEED 11 - very high speed GPIOA->AFR[0] |= 0x00000700; //AF7 //PA3 - RX GPIOA->MODER &= ~GPIO_MODER_MODER3; //MODER 00 GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR3; //PUPDR 0 => PA3 - floating input GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR3; //OSPEED 11 - very high speed USART2->BRR = 0x00001117; // BRR = (f(APB1)+ 4800)/9600, f(APB1) == 42 MHz USART2->CR1 |= USART_CR1_UE; //Enable USART2 USART2->CR1 |= USART_CR1_TE; //Transmitter USART2 USART2->CR1 |= USART_CR1_RE; //Resiver USART2 USART2->CR1 |= USART_CR1_RXNEIE; //RX Interrupt Enable NVIC_EnableIRQ(USART2_IRQn); } void USART2_send (char chr){ while(!USART2->SR & USART_SR_TC); USART2->DR = chr; }
У человека с той темы так же дискавери. Как по мне сажать UART на P2-P3 не очень хорошо, т.к. по схеме там висят железки, но у него как я понял все заработало. Подумал, что это из за юсб хаба к которому подключена отладка и USB->UART, но попробовав воткнуть сразу в порту на материнке, ноутбуке и другом компе, но ситуация не изменилась. Странно, что каждый раз приходит почти один и тот же код.
0 -
@BARS_Спасибо. Установил настройки UART как у вас и изменил значение AFR на " GPIOB->AFR[0] |= 0x77000000;". Ситуация улучшилась. Теперь байты передаются когда нужно, но так же какой то мусор. Как мне кажется дело либо в кодировке терминала либо с частотой МК. Функцию инициализации RCC перепроверил несколько раз, все должно быть в норме. Но терминал пишет ошибку связанную с битрейтом. Для удобства решил сразу отправлять код "0x31".
Функцию для задержки написал, что бы случае чего не заспамило терминал, но за пример на таймере спасибо). До этого использовал FreeRTOS и задержку из перехода между задачами.
0 -
@snn_krs Пока данные не принимаю. Сначала бы с отправкой разобраться.
Изменил "GPIOB->AFR[0] |= 0x00000700;" на "GPIOB->AFR[0] |= GPIO_AFRL_AFRL7_0 | GPIO_AFRL_AFRL7_1 | GPIO_AFRL_AFRL7_2; " и сделал галушку для прерывания по приему на всякий случай, но все осталось точно так же. По идее делаю как написано в RM и даташите, хотя скорее всего я слепой.
0 -
@MasterElectric в кубе пожмакал делители, после прописал нужные руками. Получилось. Что на апб2 - 84mhz, что в притык по даташиту. (8400000+4800)/9600=0х222Е.
А что не так с регистром afr? Должен быть выбран младший, т.к. пины 6 и 7 и af7 из таблицы по референс мануалу, если нужно перенастроить с pa9 и pa10.
0 -
Доброго времени суток, второй день пытаюсь настроить отправку данных по UART для камня 407vg на плате discovery. Использую USART1 с ножками PB6(TX) и PB7(RX). Тактирование от внешнего кварца. Частота APB2 - 84MHz, соответственно BRR->0x222E. При заливке прошивки в камень на ПК прилетает один мусорный байт и большей ничего не происходит, при ресете МК соответственно опять прилетает один мусорный байт. Пробовал подключать через USART2, там дела обстоят чуть лучше. Байты отправляются, но в виде мусора. Притом, отправлял разные символы(почти все цифры и буква алфавита) но код на терминали был либо 0xDF либо 0xFF.
/******************************************************************************/ /* LYBRARY */ /******************************************************************************/ #include "stm32f4xx.h" /******************************************************************************/ /* USE FUNCTION */ /******************************************************************************/ void InitGPIO (void); void InitRCC(void); void InitUSART2(void); void delay (uint32_t time); /******************************************************************************/ /* MAIN */ /******************************************************************************/ int main (void){ InitGPIO (); InitRCC(); InitUSART2(); while (1){ GPIOD->BSRR |= GPIO_BSRR_BS15; while(!(USART1->SR & USART_SR_TC)); USART1->DR = 'h'; delay(200000000); GPIOD->BSRR |= GPIO_BSRR_BR15; delay(200000000); } } /******************************************************************************/ /* InitGPIO */ /******************************************************************************/ void InitUSART2(void){ RCC->APB2ENR |= RCC_APB2ENR_USART1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER &= ~GPIO_MODER_MODER6_0; GPIOB->MODER |= GPIO_MODER_MODER6_1; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR6; GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6; GPIOB->AFR[0] |= 0x00000700; GPIOB->MODER &= ~GPIO_MODER_MODER7; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR7; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; USART1->BRR = 0x0000222E; USART1->CR1 |= USART_CR1_UE; USART1->CR1 |= USART_CR1_TE; USART1->CR1 |= USART_CR1_RE; USART1->CR1 |= USART_CR1_RXNEIE; NVIC_EnableIRQ(USART1_IRQn); } void InitRCC(void){ RCC->CR |= ((uint32_t)RCC_CR_HSEON); while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR = (FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY| FLASH_ACR_ICEN | FLASH_ACR_DCEN); RCC->CFGR |= RCC_CFGR_HPRE_DIV1; RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; RCC->CFGR &= ~RCC_PLLCFGR_PLLSRC; RCC->CFGR &= ~RCC_PLLCFGR_PLLM; RCC->CFGR &= ~RCC_PLLCFGR_PLLN; RCC->CFGR &= ~RCC_PLLCFGR_PLLP; RCC->CFGR |= RCC_PLLCFGR_PLLSRC_HSE; RCC->CFGR |= RCC_PLLCFGR_PLLM_4; RCC->CFGR |= (RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_3); RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0) {} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} } void InitGPIO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER |= GPIO_MODER_MODE15_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT15; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED15_0; GPIOD->MODER |= GPIO_MODER_MODE14_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT14; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED14_0; GPIOD->MODER |= GPIO_MODER_MODE13_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT13; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED13_0; GPIOD->MODER |= GPIO_MODER_MODE12_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT12; GPIOD->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15_0; } void delay(uint32_t time){ uint32_t i; for (i=0; i<time;i++); }
0 -
В 28.12.2018 в 17:13, hasl сказал:
2. У UART есть события по ошибке, есть прерывание по ошибке. Взяли и посмотрели, что за ошибка. В чем проблема то?
Под событиями подразумеваются флаги?
0 -
Добрый день. Необходима не большая консультация. В общем, я хочу научиться разработке различных радиоэлектронных устройств с использованием микропроцессоров и микроконтроллеров и все с этим связанное. На данный момент планирую поступать на факультет радиотехники и электроники местного политеха. Выбрал специальность 11.03.03 "Конструирование и технология электронных средств", хотелось бы узнать, подойдет ли эта специальность для того, что мне нужно? Я понимаю, что программа в вузах не самая свежая, но знания в фундаментальных вопросах в любом случае должны, тем более осваивать современные технологии придется самостоятельно.
0 -
9 часов назад, Света сказал:
По-моему, практически в каждой книжке по электротехнике есть примеры задач. Вот глянула первую попавшуюся книжку из своей библиотечки: Шатенье Г. и др. - Учебник по общей электротехнике (2009), задачи есть...
Можно просто найти задачник, к примеру:
Коровкин Н.В. - Теоретические основы электротехники Сборник задач (2006)
или Поливанов К.М. (под ред.) - Задачник по теоретическим основам электротехники (1973).
Можно даже такую книжку посмотреть: Сошинов А.Г., Карпенко О.И. - Лабораторный практикум по электротехнике и электронике (2006)Огромное спасибо за примеры, как раз то, что я искал).
8 часов назад, avv_rem сказал:Хоть бы примерно пояснил, что именно нужно (практика, обучение, производство).
Или уровень (кружок, школа, спецшкола, техникум, университет).
Если все подряд, то меня лично заинтересовали эти. Все можно найти и бесплатно скачать.
Арсеньев Г.Н. Основы теории цепей Практикум 2016г
Бараш Н.В. Электротехника 1977г
Бессонов Л.А. Сборник задач по теоретическим основам электротехники 1988г
Брускин В.Я. Книга радиомастера 1967г
Вайнштейн С.С. Задачи и примеры для радиолюбителей 1951г
Гайах Т. Простейшие электротехнические расчеты 1968г
Головатенко-Абрамова М.П. Задачи по электронике 1992г
Гринфилд Дж. Транзисторы и линейные ИС Руководство по анализу и расчету 1992г
Дивавин Н.И. Переменные токи 1940г
Динеш С. Дьюб Электроника схемы и анализ 2008г
Дьяков В.И. Типовые расчеты по электрооборудованию 1991г
Изъюрова Г.И. Расчет электронных схем Примеры и задачи 1987г
Кацман М.М. Сборник задач по электрическим машинам 2003г
Кузнецов А.В. Элементарная электротехника 2014гОх, пожалуй все сразу. Учусь в колледже по этому направлению, потом планирую в ВУЗ в качестве продолжения, так же это мое хобби и хотелось бы, что бы это еще и стало работой. Спасибо за примеры.
0 -
Доброго времени суток, ищу учебник для изучения электротехники, а после схемотехники. Для схемотехники нашел прекрасную книгу "Искусство схемотехники" Хоровиц и Хилл. Для электротехники приметил А.А. Усольцев "Общая Электротехника". Но хотелось бы иметь в книге что то на подобие "домашнего задания", как у Хоровица. Мне кажется так будет проще закреплять изученный материал.
0 -
Только что, BARS_ сказал:
Референса и апнотов более чем достаточно. А по отладке достаточно про keil почитать
Благодарю.
0 -
7 часов назад, mail_robot сказал:
Совершенная правда. Но судя по тому как мыслит ТС, ни с чем круче ардуино он дел не имел, и для него еще мир весь в "открытиях чудных". С отладкой в железе он тоже не сталкивался, поэтому ему нужна кроватка обязательно и программатор. Для STM то все это не нужно, так же как теряют смысл всякие протеусы и прочие софтопомогайки. И даже отладочные платы по сути имеют мало смысла, потому как это просто потеря времени при наличии живого прототипа
Иметь под рукой пару оперативных железяк конечно неплохо (чисто на подхвате, что-то слепить за 5 минут на коленке), но не обязательно
Так и есть, но в гугле мне не удалось найти чего либо подробного по отладке и работе с чистыми камнями, большинство лишь мигают светодиодами на всяких готовых отладочных платах и прочем. До референс мануала пока не добрался, можете ли посоветовать что то на подобные темы?(гайды, статьи и т.д.)
0 -
41 минуту назад, BARS_ сказал:
Спасибо за пример). Пробну накидать что то похожее.
0 -
4 минуты назад, BARS_ сказал:
Что-то я никак не пойму, нафига МК паять, переставлятьи т.п.? Что мешает сразу запаять его в ту плату, где он будет работать и в ней прошить? Для прошивки всего три контакта нужны (SWCLK, SWDIO, GND). Зачем вы придумываете проблемы на ровном месте?
Хм, я пока не шерстил даташиты, т.к. не выбрал конкретные камни и серии, но на счет этого не знал, mail_robot писал об этом выше, но я его не понял). В таком случае достаточно какой нибудь Discavery для отладки, если у них конечно нет каких либо своих библиотек и прочих заморочек как у ардуинок, по идее такого не должно быть.
0 -
7 часов назад, _abk_ сказал:
Вам что надо-то, определились бы. "Вкатиться", "тестировать" или изготавливать готовые устройства с сокетом на борту?
Мне необходимо разработать пару проектов на стм, для этого в них нужно вкатиться и в процессе разработки нужны макетные варианты, не отправлять же гербера на завод каждый раз.
7 часов назад, AVI-crak Home сказал:Хорошая шутка. Ну посмотри ценники кроваток под lqfp с шагом 0,5мм, это тебя немного остудит. Например lqfp208 ~ 70к рубликов.
Мне не нужен сокет в каждое устройсво, стм в конце концов можно просто впаять в плату как обычную микросхему. Он мне нужен для прошивки камня на отладочной платы, после чего я его достану из сокета и впаяю в плату.
0 -
20 минут назад, mail_robot сказал:
что мешает вывести 2 пина с готовой платы? Впаивай незашитый проц, прошивай на месте. Проблему изобрел...
Для тех кто не умеет паять есть STM32 core board на алишке или бангуде
Не думаю, что перепаивать камни на шилдах по десятку раз будет проще, чем развести плату с сокетом, в который этот голый камень можно просто вставить. А core board все равно по сути является отдельной платой, что для моих проектов и иньересов крайне не желательно, как говорил выше с шилдом тестировать удобно, но не изгоотавливать готовые устройства.
0 -
Добрый день. Имею желание вкатиться в разработку на stm32. Не много погуглив обнаружил копеечный программатор(tt-link), но отладочной платы как у какой нибудь avr'ки не нашел(аля вставил камень, прошил, впаял в плату). Существует множество всяких discovery и им подобных, для проверки работы штука удобная, но для использовании в конечном устройстве нерациональная. Поэтому хотелось бы знать, существуют ли какие либо платы, переходники и т.д.? И если подобных промышленных вариантов нету, то единственный вариант это развести такую самостоятельно и вкорячивать переходники c LQFPхх и т.д.?
P.S. Когда то видел вариант у аврки c tqfp корпусом, когда к подобной домашней плате аврку цепляли с помощью прищепки.0
Питание stm32 от 18650 и контроль заряда\разряда
в МК для начинающих
Опубликовано · Изменено пользователем Mars36
Боюсь ошибиться со схемой. Мне не удалось найти статьи по этому поводу, поэтому использовать специализированную микросхему мне кажется более правильным , по крайней мере в первый раз .т.к. в ДШ есть описание и примеры стандартных применений А так, конечно, было бы интересно такое реализовать.