Подавление дребезга энкодера

Контроллеры, драйверы, датчики, управляющие устройства.
skyAlex
Мастер
Сообщения: 489
Зарегистрирован: 30 май 2014, 21:43
Репутация: 87
Откуда: Питер

Re: Подавление дребезга энкодера

Сообщение skyAlex »

isx писал(а):Если вы хоть иногда делаете сложные проекты, то лучше один раз научиться, чем всю жизнь страдать, а с даташитами тут все просто - у большинства STM все настройки периферии практически идентичны, так что выучив один камень можно применять любой другой без особых трудностей.
Нет смысла изображать из себя шиву многорукого, если у меня что то простое, то я это сделаю за пол часа на 8ми битной или АРМ-ардуинке. Для серьезных проектов у меня есть програмисты, которые как раз на СТМках и пишут. Не надо путать предназначение изделий, ардуино создавалась именно под очень быстрое прототипирование.
isx
Опытный
Сообщения: 157
Зарегистрирован: 17 июн 2013, 14:21
Репутация: 17
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение isx »

michael-yurov писал(а):А потом еще пол дня убить, чтобы понять, что отключить этот чертов JTAG я не могу, потому что возникает конфликт с другой периферией, которую уже переназначить на новую ногу нельзя
С этим помочь не могу. С вашим проектом не знаком :) .
michael-yurov писал(а):Зачем создавать таблицу соответствия названия и выполняемой функции?
Это кстати очень удобно на этапе планирования проекта. Сразу видно что это полноценная рабочая нога, а не системный отросток :) (особенно удобно, когда нужно настраивать много внешних прерываний).
michael-yurov писал(а):AVR-ки в этом плане настраивались намного, намного проще.
Не спорю, но и возможностей там гораздо меньше.
А по поводу приблуд, я к ним скептически настроен. Предпочитаю работать напрямую, так отлаживать легче.
aftaev писал(а):У нас проекты больше связаны с пром. применением.
Мне на АВР-ках только пока приходилось дисплейчики цеплять. А вообще, проекты делаю не коммерческие, для дома, так сказать. То в гараже станок перевести на автомат, то к стенду панель управления с хитрыми калькуляторами присобачить, а когда скучно дребедень всякую собираю типа усилков, БП, контроллеров чего-нибудь и пр. Как раз и опыт на них набираю :) .
skyAlex писал(а): Не надо путать предназначение изделий, ардуино создавалась именно под очень быстрое прототипирование.
С ардуиной я вообще не работал, не знаю че там и как. Я даже простые проекты (пищалки, таймеры отключения) делаю на STM32. Пусть это, что называется "из пушки по воробьям", но мне то какая разница, если самая дешевая АВР-ка стоит так же.
skyAlex писал(а):Для серьезных проектов у меня есть програмисты, которые как раз на СТМках и пишут.
Ну мои изречения больше подходят для простых смертных, типа меня. у которых нет собственного программиста :D .
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

isx писал(а):С ардуиной я вообще не работал, не знаю че там и как. Я даже простые проекты (пищалки, таймеры отключения) делаю на STM32. Пусть это, что называется "из пушки по воробьям", но мне то какая разница, если самая дешевая АВР-ка стоит так же.
У Ардуинки что хорошо есть удобные разъемы и шилды(платы). Купил экран, воткнул его в Ардуину и не нужно ничего паять. Хош Ардуину к инету подключить, покупаешь шилд Интернет за 7 баксов, втыкаешь в Ардуину и готово :)

Шилдов куча разных http://www.ebay.com/sch/i.html?_from=R4 ... o&_sacat=0
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
isx
Опытный
Сообщения: 157
Зарегистрирован: 17 июн 2013, 14:21
Репутация: 17
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение isx »

Удобно наверное. У меня обычно если что-то становиться нужно, то нужно срочно и сейчас и делать приходится из того, что есть :) .
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

michael-yurov писал(а):Не мог бы ткнуть меня носом?
С телефона искать сложно, попробуй сам на st.com поискать в разделе про дев.тулс или про тот-же куб...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

aftaev писал(а):Шилдов куча разных
Такие-же шилды есть и 3-вольтовые и их разнообразие в разы больше, т.к. они подходят под все современные МК и FPGA, а не только под ардуины.
Кстати, 5-вольтовая логика сейчас сильно ограничивает применение ардуины - кучу интересной периферии не подключить к ней. Да и архитектура много чего не позволяет, например увеличить память подключив внешнюю DRAM.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

michael-yurov писал(а):Может быть я неправильно назвал обработчик прерывания?, может быть что-то напутал в настройке приоритетов?, может быть сбрасываю не тот флаг прерывания, а нужный продолжает висеть?, может быть то прерывание, которое я выбрал не работает именно с этой ногой?
Все это выясняется за пару минут брякпоинтами и просмотром регистров контролера через отладчик :)
michael-yurov писал(а):сначала колонка с названиями ног, где данная нога фигурирует, как PB3, а потом оказывается есть вторая колонка, в которой все то же самое, кроме этого JTAG.
Что значит - оказывается? Разве можно делать хоть какой-то серьезный проект на контроллере без тщательного изучения этого контролера? Еще до составления принципиальной схемы, как раз для того, чтобы потом не было этих "оказывается ... уже переназначить на новую ногу нельзя" :)
michael-yurov писал(а):Зачем создавать таблицу соответствия названия и выполняемой функции?
Очевидно, чтобы не создавать многострочные названия выводов, перечисляя все их функции :) А называть выводы по именам соответствующих I/O-портов вполне логично. Например, если я вижу, что вывод называется, к примеру, JTDO, мне и в горлову не придет, что этот вывод может работать еще и как обычный I/O. А видя по названию, что это вывод I/O, я буду как минимум подозревать, что у него есть и другие назначаемые функции, связанные с периферией.
michael-yurov писал(а):AVR-ки в этом плане настраивались намного, намного проще.
Сама AVR намного, намного проще. Соответственно проще и настройка и документация к ней.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

AndyBig писал(а):Все это выясняется за пару минут брякпоинтами и просмотром регистров контролера через отладчик
Куда я должен поставить брейкпоинт, чтобы выяснить как должно называться нужное мне прерывание, и почему оно не срабатывает?
Что я увижу в регистрах с помощью отладчика?
AndyBig писал(а):Что значит - оказывается? Разве можно делать хоть какой-то серьезный проект на контроллере без тщательного изучения этого контролера?
Пока что речь шла о том, что "тщательно изучить" эти контроллеры очень не просто.
AndyBig писал(а):Еще до составления принципиальной схемы, как раз для того, чтобы потом не было этих "оказывается ... уже переназначить на новую ногу нельзя"
Нельзя. Не помню уже по какой причине, но нужна была именно эта нога (из за контроллера, а не разводки платы).
Но проблема то в другом - я ведь и не предполагал, что на эту ногу не стоит вешать нужные мне функции просто потому что потом будет сложно разобраться, почему они не работают.
Неужели было где-то указано "не пользуйтесь этой ногой, если не хотите потрепать себе нервы".
AndyBig писал(а):А называть выводы по именам соответствующих I/O-портов вполне логично.
С тем же успехом можно было их просто пронумеровать, что тоже логично.
AndyBig писал(а):Например, если я вижу, что вывод называется, к примеру, JTDO, мне и в горлову не придет, что этот вывод может работать еще и как обычный I/O. А видя по названию, что это вывод I/O, я буду как минимум подозревать, что у него есть и другие назначаемые функции, связанные с периферией.
А мне вот почему-то наоборот - когда увидел название PB3 пришло в голову, что это PB3. И как мне вообще могло такое в голову придти!
AndyBig писал(а):Сама AVR намного, намного проще. Соответственно проще и настройка и документация к ней.
Ч.Т.Д.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

michael-yurov писал(а):Куда я должен поставить брейкпоинт
Где угодно при условии создания к этому моменту гарантированных условий выполнения прерывания.
michael-yurov писал(а):Пока что речь шла о том, что "тщательно изучить" эти контроллеры очень не просто.
Я (и некоторые из моих знакомых) перешел с AVR на ARM очень легко. Естественно, объем документации больше, есть свои нюансы, но при знании одного типа контроллеров освоить другой тип несложно. Главное - читать документацию :)
michael-yurov писал(а): я ведь и не предполагал, что на эту ногу не стоит вешать нужные мне функции просто потому что потом будет сложно разобраться, почему они не работают.
Лично я ни разу не сталкивался с тем, чтобы описанные в документации на контроллер функции не работали. Или чтобы исключения в их работе не были указаны в той же документации или Errata. Ни у Atmel, ни у ST, ни у Philips. А нужные Вам функции ведь были описаны в документации, правда? ;) Говорить о чем-то предметно бессмысленно без подробностей конкретной проблемы и условий ее возникновения...
michael-yurov писал(а):С тем же успехом можно было их просто пронумеровать, что тоже логично.
Нумерация у выводов и так имеется :) Помимо названий :)
michael-yurov писал(а):А мне вот почему-то наоборот - когда увидел название PB3 пришло в голову, что это PB3
И в голову не пришло то, что у выводов может иметься куча альтернативных функций, что периферия умеет ремапиться? :)
michael-yurov писал(а):Ч.Т.Д.
Это не требовалось доказывать, это и так понятно :) Просто описанный Вами "ужас-ужас", мягко говоря, не соответствует действительности :)
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

AndyBig писал(а):Где угодно при условии создания к этому моменту гарантированных условий выполнения прерывания.
Ну так в этом и была проблема - прерывание не происходило, и я не понимал, какие условия я не выполнил и где искать.
AndyBig писал(а):Лично я ни разу не сталкивался с тем, чтобы описанные в документации на контроллер функции не работали. Или чтобы исключения в их работе не были указаны в той же документации или Errata. Ни у Atmel, ни у ST, ни у Philips. А нужные Вам функции ведь были описаны в документации, правда?
Ну так, конечно, все есть в документации. Только у меня вычислительных способностей и объема памяти не хватает, чтобы все это в голове удерживать. И не хватает, чтобы помнить где что написано.
(вероятно по той причине, что это не моя основная работа, и, даже, не хобби, а разовая необходимость)
AndyBig писал(а):Нумерация у выводов и так имеется Помимо названий
С номерацией все понятно 1, 2, 3,..
И с названиями понятно PA1,P A2, PA3,..
Не понятно было то, что названия PA1, PA2, PA3,.. и функция PA1, PA2, PA3,.. не одно и то же.
Потом, конечно, разобрался и навсегда запомнил, но как-то у меня мозг по другому работает - совсем не так, как у разработчиков.
AndyBig писал(а):И в голову не пришло то, что у выводов может иметься куча альтернативных функций, что периферия умеет ремапиться?
Ну умеет, ну, хорошо, ну есть эти альтернативные функции, ну и фиг с ними. Меня то почему они должны были волновать - я пытался воспользоваться входом порта PB3, который был на ноге PB3.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

michael-yurov писал(а):Ну умеет, ну, хорошо, ну есть эти альтернативные функции, ну и фиг с ними. Меня то почему они должны были волновать - я пытался воспользоваться входом порта PB3, который был на ноге PB3.
В даташите есть табличка, в которой перечислены все функции, которые может выполнять каждый вывод. Очевидно, что если включить какой-нибудь таймер, который пользуется этим выводом, то использовать его для чего-то ещё будет проблематично...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

michael-yurov писал(а):Ну так в этом и была проблема - прерывание не происходило, и я не понимал, какие условия я не выполнил и где искать.
Про условия я имел в виду следующее: если прерывание должно быть, например, по изменению уровня на выводе, то просто руками изменяете уровень, останавливаете программу и смотрите регистры :)
michael-yurov писал(а):Ну так, конечно, все есть в документации. Только у меня вычислительных способностей и объема памяти не хватает, чтобы все это в голове удерживать.
Дык не надо удерживать в голове всю документацию, главное - помнить основные моменты. Например, что почти все выводы имеют кроме основной функции I/O несколько альтернативных функций, связанных с периферией. Что одна и та же периферия может использовать разные выводы (ремапиться). Что после сброса у всех выводов назначаются функции по умолчанию. И т.д. На самом деле это по большей части общие принципы для большинства ARM-контроллеров. А за подробностями уже обращаетесь по необходимости к документации.
michael-yurov писал(а):Не понятно было то, что названия PA1, PA2, PA3,.. и функция PA1, PA2, PA3,.. не одно и то же.
Ну, это в любом микроконтроллере аналогично, даже в AVR :)
michael-yurov писал(а):ну есть эти альтернативные функции, ну и фиг с ними. Меня то почему они должны были волновать
Потому что они сидят на выводах того контроллера, с которым Вы работаете :)
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение SVP »

Всё не читал. Если всё еще есть проблемы с производительностью...
Ковырялся тут с динамической индикацией и 2560мегой.
Была цель заставить работать 6 цифр по 7 разрядов.

Результат: надо тщательно вычищать код. Нашел какую-то библиотеку дающую вместо стандартных
функций типа установить пин в позицию HI задефайненные макросы. Работает в 10 раз быстрее.
Если надо поищу название.

Любой дебаг-вывод в com-порт катастрофически всё подвешивает, т.е. на 0.1с или более.
Выражается в смаргивании всех разрядов.

Если писать крайне аккуратно, то килогерцы полагаю вполне можно получить.
Но вообще лучше-бы конечно это всё протестировать предварительно на производительность...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

UAVpilot писал(а):Очевидно, что если включить какой-нибудь таймер, который пользуется этим выводом, то использовать его для чего-то ещё будет проблематично...
По-моему, в AVR можно при включенной на выводе периферии работать с ним и как с простыми I/O - читать и задавать состояние :) Что, на мой взгляд, не очень правильный подход...
SVP писал(а):Ковырялся тут с динамической индикацией и 2560мегой.
Была цель заставить работать 6 цифр по 7 разрядов.
Результат: надо тщательно вычищать код.
Хм... Помнится, Мега8 вполне себе успевала динамическую индикацию матрицы 96х8, одновременно обмениваясь с управляющим модулем по UART (принимая новые данные и команды, отвечая на запросы) и обсчитывая различные эффекты (сдвиги, разъезжание, появление изображения по точкам и т.п.).
SVP писал(а):Нашел какую-то библиотеку дающую вместо стандартных
функций типа установить пин в позицию HI задефайненные макросы. Работает в 10 раз быстрее.
Не знаю, что имеется в виду под стандартными функциями, но команда установки пина работает ну очень быстро :) Дефайны тут помогают только в смысловом плане - вместо строки типа "PORTA = PORTA | 0x20" удобнее писать что-нить типа "SetPortApin5();", задефайнив в него ту строку :) Или использовать функции с такими строками, но объявить их инлайновыми - эффект аналогичен дефайнам.
SVP писал(а):Любой дебаг-вывод в com-порт катастрофически всё подвешивает, т.е. на 0.1с или более
Видимо, вывод в порт работает простым циклом "выдать символ в порт, подождать пока отправится, выдать следующий и т.д." :) При работе через прерывание не должен подвешивать.
Последний раз редактировалось AndyBig 20 авг 2015, 15:54, всего редактировалось 1 раз.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

AndyBig писал(а):Хм... Помнится, Мега8 вполне себе успевала динамическую индикацию матрицы 8х16, одновременно обмениваясь с управляющим модулем по UART (принимая новые данные и команды, отвечая на запросы) и обсчитывая различные эффекты (сдвиги, разъезжание, появление изображения по точкам и т.п.).
Я так понимаю он про случай Arduino - там с производительностью совсем плохо, ибо позволяется программить практически не читая даташитов. А те, кто всё таки прочитал становятся гуру недосягаемого уровня. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

UAVpilot писал(а):Я так понимаю он про случай Arduino
А, если так тогда понятно :)
ЗЫ: поднял тот проект - модули были 98х8, а не 16х8 :) Равноценно динамической индикации на 96 7-сегментных индикаторов, с обсчетом анимаций, работой с управляющим модулем по высокоуровневому протоколу :)
С оптимизацией, кстати, особо не заморачивались, писали на C++ с использованием классов :)
А тут 6 индикаторов - проблемы? :))
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение SVP »

UAVpilot писал(а):Я так понимаю он про случай Arduino
Да. Т.к. вроде бы у ТСа именно она, не :) ?
UAVpilot писал(а):практически не читая даташитов. А те, кто всё таки прочитал становятся гуру недосягаемого уровня.
Неоднократно читал жалобы, что пока дочитаешь один даташит уже новый выходит.
Вникать во все это глубоко в подобной ситуации довольно бесперспективное занятие,
если не требуется приборов космической сложности.
AndyBig писал(а):А тут 6 индикаторов - проблемы? )
3 минуты гугленья и 10 минут профайлинга и проблемы решены...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

SVP писал(а):Неоднократно читал жалобы, что пока дочитаешь один даташит уже новый выходит.
Врут, даташиты не так часто обновляются, да и обновления в них носят скорее косметический характер :)
А вот ерраты - да, их желательно иметь всегда свежие :)
SVP писал(а):Вникать во все это глубоко в подобной ситуации довольно бесперспективное занятие,
если не требуется приборов космической сложности.
Если придерживаться тематики форума, то это можно сравнить с тем, как человек, не вникая в теорию и расчеты, строит станок - на глазок, как получится и из чего бог пошлет :) Да, станок таким образом можно сделать, но он не будет ни быстрым, ни точным, ни жестким :)
SVP
Мастер
Сообщения: 6140
Зарегистрирован: 19 дек 2012, 15:49
Репутация: 884
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение SVP »

AndyBig писал(а):Врут, даташиты не так часто обновляются, да и обновления в них носят скорее косметический характер
Да, как щаз помню, ножки какие-то местами поменялись итп :)
Небольшие такие переделочки.
AndyBig писал(а):Если придерживаться тематики форума, то это можно сравнить с тем, как человек, не вникая в теорию и расчеты, строит станок - на глазок, как получится и из чего бог пошлет Да, станок таким образом можно сделать, но он не будет ни быстрым, ни точным, ни жестким
Если придерживаться здравого смысла, то микроскоп плохая вещь для забивания гвоздей.
Попытки некоторых специалистов работающих с эмбеддед представить всех остальных "последним чмом" только
потому, что они сами не смогли решить поставленной задачи без чтения 10000 страниц даташитов, а "остальные"
смогли всегда навевают на меня грусть.

Три года изучать тонкости, чтобы на выходе сделать счетчик на сигнал в 1кГц лично мне видится
крайне тупым просиранием жизни... мне гораздо интереснее сделать его за три часа и двигаться дальше.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение AndyBig »

SVP писал(а):Да, как щаз помню, ножки какие-то местами поменялись итп
Это где такое было? Что, вот взяли и поменяли у контроллера ноги, продолжив выпускать его под старым именем? :)
SVP писал(а):Если придерживаться здравого смысла, то микроскоп плохая вещь для забивания гвоздей.
Угу, лучше гвозди забивать 10-тонным молотом :) Когда ардуиновской меги людям не хватает на те задачи, которые при нормальном программировании может выполнить и тинька :)
SVP писал(а):Попытки некоторых специалистов работающих с эмбеддед представить всех остальных "последним чмом" только
потому, что они сами не смогли решить поставленной задачи без чтения 10000 страниц даташитов, а "остальные"
смогли всегда навевают на меня грусть.
Нехорошими словами вроде бы никто тут не обзывался... А над остальным посмеялся, спасибо :)
SVP писал(а):Три года изучать тонкости, чтобы на выходе сделать счетчик на сигнал в 1кГц лично мне видится
крайне тупым просиранием жизни... мне гораздо интереснее сделать его за три часа и двигаться дальше.
Три года на изучение микроконтроллера??? Тяжело, наверное, таким тугодумам в жизни приходится :)
Три часа на простой счетчик? Серьезно? И Вы еще говорите о какой-то скорости разработки для Ардуино? :)))
Ответить

Вернуться в «Электроника»