Да, именно его взял за основу. Очень хороший проект.DrLivsy писал(а): А насчет РЦЛ измерителя: http://radiokot.ru/circuit/digital/measure/113
Народный осциллограф "Мурзик" на базе STM32F303VCT6 - проект
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
- Реклама
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
В недрах нашего местного "радиомаркета" нашел ОУ для входных цепей: LMH6643.
Это специально созданный быть буфером АЦП сдвоенный, малошумящий, высокочастотный 130МГц, высоколинейный до 40МГц, "правда"-однополярный ОУ с низким выходным сопротивлением 150 Ом и диапазоном питающего напряжения 2,7-12,8В. Причем на 3Вольтовом питании его параметры тоже протестены и прописаны в даташите.
Цена - как у десятка LM358.
Больше я ничего искать не хочу, потому как надоедает колупаться в списке радиоэлементов без описания, за каждым разом теребя Гугла "дай даташит".
Моя отладочно-оценочная STM32F3Discovery не сразу захотела работать с CoFlash. Ей почему-то надо сначала законектиться с родной СТ-линковской утилитой, а потом начинает нормально работать и CoFlash.
Виден свет в окне Кокоса.
ЗЫ Какой ресурс у флеша STM32F303VC? самостоятельно пока не нашел.
Это специально созданный быть буфером АЦП сдвоенный, малошумящий, высокочастотный 130МГц, высоколинейный до 40МГц, "правда"-однополярный ОУ с низким выходным сопротивлением 150 Ом и диапазоном питающего напряжения 2,7-12,8В. Причем на 3Вольтовом питании его параметры тоже протестены и прописаны в даташите.
Цена - как у десятка LM358.
Больше я ничего искать не хочу, потому как надоедает колупаться в списке радиоэлементов без описания, за каждым разом теребя Гугла "дай даташит".
Моя отладочно-оценочная STM32F3Discovery не сразу захотела работать с CoFlash. Ей почему-то надо сначала законектиться с родной СТ-линковской утилитой, а потом начинает нормально работать и CoFlash.
Виден свет в окне Кокоса.
ЗЫ Какой ресурс у флеша STM32F303VC? самостоятельно пока не нашел.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Этот ОУ не подойдет для входных цепей по причине высокого входного тока. На входе нужен JFET-ОУ, например, AD8065, AD8066, OPA656 и подобные.DrLivsy писал(а):В недрах нашего местного "радиомаркета" нашел ОУ для входных цепей: LMH6643.
10 000. Находится в ds по ключевому слову "dura".DrLivsy писал(а):Какой ресурс у флеша STM32F303VC?
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Понял, с перламутровыми пуговицами у них нету, будем искать...Леонид Иванович писал(а):Этот ОУ не подойдет для входных цепей по причине высокого входного тока. На входе нужен JFET-ОУ, например, AD8065, AD8066, OPA656 и подобные.DrLivsy писал(а):В недрах нашего местного "радиомаркета" нашел ОУ для входных цепей: LMH6643.
На первое время, до 1Мгц, мне хватит MCP6022 (у меня уже есть пара), а там что-нибудь найдется.
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
"RIN Common Mode Input Resistance 3 MΩ"DrLivsy писал(а):В недрах нашего местного "радиомаркета" нашел ОУ для входных цепей: LMH6643.
А лично мне кажется, что вполне подойдет. Конечно "классических" сотен мегаом на низких частотах не получится, но!
Вот скажем есть частота 1 МГц и суммарная входная емкость прибора 20 pF.
20 pF на этой частоте обладают сопротивлением 8 КОм примерно.
Кстати по поводу Rail-to-Rail - лично у меня ОУ в таком режиме добавляют примерно 1% нелинейных искажений к сигналу. Причем не всегда, а при определенных амплитудах/частотах сигнала, выглядят как "ступенька" на синусоиде.
- Реклама
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Я тоже думаю над этим:
на наших максимальных 20Мгц сильно напрягаться нет смысла. На частотах выше большУю роль играет емкость/индуктивность, так как осцил становится сильно комплексной нагрузкой. А у нас еще работают простые резюки. Я чем глубже вникаю в теорию осциллографирования, тем больше понимаю, что это дело тонкое, чем выше лезем, тем тоньше оно становится.
Пока есть основания остановится на 20ти, а то и меньше Мгц. Дальше - бОльшую роль играет щуп, а не прибор. Хотя озаботится минимальной входной емкостью прибора очень надо - будет перспектива расширения с помощью связки софт+активный щуп (скорее всего покупной или переделанный из пассивного покупного).
У нас максимальная скорость АЦП в сдвоенном черезстрочной режиме - 14MSPS при 8ми битах точности. По Котельникову мы развернем 7Мгц. В стробоскопическом режиме точно пока не знаю, но, судя по картинке в статье о эквивалентных выборках, раз в 8 больше.
Это - 50МГц. (ого!) - значит запас по дискретизации у нас есть.
Есть смысл подумать о диапазоне частот, который "пролазит" через обычные банановые щупы от тестера. Расширение возможностей прибора делать в сторону многоканальности/многофункциональности, с широкими возможностями логического пробника, например. Вот например, есть у меня старая Омния, дисплюк у нее 400х240 с тачем, а даташита нету
А на осцилле он бы очень хорошо себя показал, особенно в сочетании с тачем. Что бы его реверсировать нужен логический анализатор.
на наших максимальных 20Мгц сильно напрягаться нет смысла. На частотах выше большУю роль играет емкость/индуктивность, так как осцил становится сильно комплексной нагрузкой. А у нас еще работают простые резюки. Я чем глубже вникаю в теорию осциллографирования, тем больше понимаю, что это дело тонкое, чем выше лезем, тем тоньше оно становится.
Пока есть основания остановится на 20ти, а то и меньше Мгц. Дальше - бОльшую роль играет щуп, а не прибор. Хотя озаботится минимальной входной емкостью прибора очень надо - будет перспектива расширения с помощью связки софт+активный щуп (скорее всего покупной или переделанный из пассивного покупного).
У нас максимальная скорость АЦП в сдвоенном черезстрочной режиме - 14MSPS при 8ми битах точности. По Котельникову мы развернем 7Мгц. В стробоскопическом режиме точно пока не знаю, но, судя по картинке в статье о эквивалентных выборках, раз в 8 больше.
Это - 50МГц. (ого!) - значит запас по дискретизации у нас есть.
Есть смысл подумать о диапазоне частот, который "пролазит" через обычные банановые щупы от тестера. Расширение возможностей прибора делать в сторону многоканальности/многофункциональности, с широкими возможностями логического пробника, например. Вот например, есть у меня старая Омния, дисплюк у нее 400х240 с тачем, а даташита нету
А на осцилле он бы очень хорошо себя показал, особенно в сочетании с тачем. Что бы его реверсировать нужен логический анализатор.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Не тот параметр смотрите. Нужно смотреть входной ток. А он у этого ОУ 1.5 мкА. Входное сопротивление КВИ осциллографа должно быть 1 МОм (а не на сотни МОм, как Вы написали). На таком сопротивлении из-за входного тока получим смещение 1.5 В, что ни в какие ворота не лезет.balmer писал(а):"RIN Common Mode Input Resistance 3 MΩ" А лично мне кажется, что вполне подойдет. Конечно "классических" сотен мегаом на низких частотах не получится, но!
- balmer
- Это не хвост, это антенна
- Сообщения: 1433
- Зарегистрирован: Вс дек 02, 2012 03:13:48
- Откуда: Калининград
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Ну это как раз примерно 3 МОм есть при размахе входного сигнала 5 Вольт.Леонид Иванович писал(а):А он у этого ОУ 1.5 мкА.
Ну классический осциллограф он такой, сложный. Я бы вообще для упрощения конструкции поставил на входе разделительный RC фильтр со срезом эдак в 10 герц, чтобы постоянную составляющую сигнала отрезать. И никаких резисторов сопротивлением 1 МОм на вход не ставил быЛеонид Иванович писал(а):Входное сопротивление КВИ осциллографа должно быть 1 МОм (а не на сотни МОм, как Вы написали). На таком сопротивлении из-за входного тока получим смещение 1.5 В, что ни в какие ворота не лезет.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Входное сопротивление для синфазного сигнала и входной ток - совершенно не связанные между собой параметры. Перевод одного в другое лишен всякого физического смысла. Происхождение входного тока ОУ можно представить наличием внутренних генераторов тока, подключенных ко входным пинам. Независимо от значения тока, внутреннее сопротивление идеальных генераторов тока бесконечно, они не вносят никакого вклада во входное сопротивление. В реальности генераторы тока не являются идеальными, но степень их неидеальности никак не связана с величиной тока.balmer писал(а):Ну это как раз примерно 3 МОм
Не вижу никакого усложнения. При правильном выборе элементной базы получится стандартный вход 1 МОм || 20 пФ, который позволит пользоваться стандартным щупом с компенсированным делителем. При этом количество элементов во входной части осциллографа не увеличится. Усложнения начинаются лишь когда хочется достичь широкой полосы, малых шумов, малого дрейфа и т.д.balmer писал(а):Ну классический осциллограф он такой, сложный.
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Спасибо за поддержку.
Внимательно все обдумав и взвесив соотношения цена/время/качество предлагаю таки использовать LMH6643. Его выходное сопротивление 150 Ом очень хорошо удовлетворяет вход АЦП СТМ32Ф303 (150 Ом на макс скорости 8ми битного семплирования, да, оказалось все очень сурово, см. даташит стр.105). Неудовлетворительное входное сопротивление предлагаю приFETить с помощью дешевого и качественного двухзатворного полевика типа BF998.
Типа так:

У этой схемы есть проблемы, в диапазоне до 1ГГц
Такие:
"В повторителе с рисунка 7-10 остаётся несколько проблем. Во-первых, затвор не имеет защиты ни от перенапряжения, ни от электростатических разрядов. Во-вторых, напряжение затвор-исток существенно меняется от температуры, сильно ухудшая стабильность на постоянном напряжении. В-третьих, оставлен без внимания шум вида 1/f. Неравномерность характеристики на самом деле очень плохая. И, наконец, повторитель со следящей связью не допускает больших постоянных смещений на входе. "
Шерстю схемы активных щупов в поисках решения.
О! Продолжил читать туже статью из "The Art and Science of Analog Circuit Design. Steve Roach " (http://embedders.org/sites/default/file ... 7_1002.zip) и увидел решение:

постоянная составляющая выделяется и усиливается отдельно.
У нас АЦП с кучей входов, спокойно делим вход мурзика по постоянке на скоко хотим (а хотим наверное на 10) и потом LM358 (или просто кт315) приводит его к нужному для АЦП значению. Кроме того, ослабленное на 10% усиление в полосе до 1кГц можно компенсировать программно или просто не заметить.
Переменная составляющая пойдет на BF998, типа так, токо при 3В питания и 270пФ на входе:

а потом на LMH6643.
Вот оригинал статьи:
http://elektrotanya.com/files/forum/2009/10/e04a036.pdf
Проблемы - незащищенный от статики и перенапряжения затвор BF998. использование супрессора и диодов на шины питания должно помочь.
ЗЫ. Вместо LM358 можно поставить MCP602 - высокоомно, недорого и уже есть
Кроме того, чтобы не дергать АЦП со входа на вход, постоянку можно сложить с переменкой на входе LMH6643.
Внимательно все обдумав и взвесив соотношения цена/время/качество предлагаю таки использовать LMH6643. Его выходное сопротивление 150 Ом очень хорошо удовлетворяет вход АЦП СТМ32Ф303 (150 Ом на макс скорости 8ми битного семплирования, да, оказалось все очень сурово, см. даташит стр.105). Неудовлетворительное входное сопротивление предлагаю приFETить с помощью дешевого и качественного двухзатворного полевика типа BF998.
Типа так:
У этой схемы есть проблемы, в диапазоне до 1ГГц
Такие:
"В повторителе с рисунка 7-10 остаётся несколько проблем. Во-первых, затвор не имеет защиты ни от перенапряжения, ни от электростатических разрядов. Во-вторых, напряжение затвор-исток существенно меняется от температуры, сильно ухудшая стабильность на постоянном напряжении. В-третьих, оставлен без внимания шум вида 1/f. Неравномерность характеристики на самом деле очень плохая. И, наконец, повторитель со следящей связью не допускает больших постоянных смещений на входе. "
Шерстю схемы активных щупов в поисках решения.
О! Продолжил читать туже статью из "The Art and Science of Analog Circuit Design. Steve Roach " (http://embedders.org/sites/default/file ... 7_1002.zip) и увидел решение:
постоянная составляющая выделяется и усиливается отдельно.
У нас АЦП с кучей входов, спокойно делим вход мурзика по постоянке на скоко хотим (а хотим наверное на 10) и потом LM358 (или просто кт315) приводит его к нужному для АЦП значению. Кроме того, ослабленное на 10% усиление в полосе до 1кГц можно компенсировать программно или просто не заметить.
Переменная составляющая пойдет на BF998, типа так, токо при 3В питания и 270пФ на входе:
а потом на LMH6643.
Вот оригинал статьи:
http://elektrotanya.com/files/forum/2009/10/e04a036.pdf
Проблемы - незащищенный от статики и перенапряжения затвор BF998. использование супрессора и диодов на шины питания должно помочь.
ЗЫ. Вместо LM358 можно поставить MCP602 - высокоомно, недорого и уже есть
Кроме того, чтобы не дергать АЦП со входа на вход, постоянку можно сложить с переменкой на входе LMH6643.
- morokot
- Вымогатель припоя
- Сообщения: 587
- Зарегистрирован: Вт сен 13, 2011 13:29:09
- Откуда: Крым, Симферополь
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Вот http://hobby-research.at.ua/publ/razrab ... 3/4-1-0-42 законченный проект осциллографа на интересующей Вас элементной базе, работающий очень неплохо, проверено лично...
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Вот нашел интересную статью на тему эквивалентного квантования: расширение входа 10МГцового осцилла до 1ГГц! (в аттаче)
Особо дорогих/высокочастотных микрух не наблюдаю. Самая замороченная деталь - линия задержки 40нс сделанная из 8метрового куска кабеля.
И еще:



Особо дорогих/высокочастотных микрух не наблюдаю. Самая замороченная деталь - линия задержки 40нс сделанная из 8метрового куска кабеля.
И еще:
- Вложения
-
- Circuits_1GHz-samplig-Oscilloscope-Front-End.pdf
- (1.48 МБ) 1131 скачивание
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Это, конечно, хорошо, но "This ... module can significantly increase the display bandwidth ... for repetitive signals." (Первое предложение в статье.)
Т.е. это только для периодических сигналов. Одиночные импульсы или данные по SPI на большой частоте такой штукой не посмотришь.
Т.е. это только для периодических сигналов. Одиночные импульсы или данные по SPI на большой частоте такой штукой не посмотришь.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Именно так.
Для народного (читайте дешевого) осциллографа вполне подходяще. Наш МК позволяет сэмплировать в реальном времени на скорости 14МСПС при 8ми битной точности. Это - 7Мгц по Котельникову. Если удастся сделать счетверенный черезстрочный режим, то все это удвоится. 14Мгц неплохой показатель для самоделки с ценой деталей до 30 баксов.
Простой переход на 6ти битный режим сделает МСПС<=36 (4 АЦП). Это - <=18 МГц. Такой точности более чем достаточно для обзора большинства широко используемых цифровых интерфейсов, которые обычно осматриваются логическими анализаторами с 2х битной точностью.
Расширение полосы даже не в 100, как в статье, а хотя бы в 5-10 раз (т.е. возможность рассматривать строго периодические сигналы с частотой 70-140Мгц при 8битах точности) даст очень большой плюс прибору. Причем реализация видится чисто программная, при правильном построении входа.
Даже если он развернет периодические 50МГц, это - супер!
Для народного (читайте дешевого) осциллографа вполне подходяще. Наш МК позволяет сэмплировать в реальном времени на скорости 14МСПС при 8ми битной точности. Это - 7Мгц по Котельникову. Если удастся сделать счетверенный черезстрочный режим, то все это удвоится. 14Мгц неплохой показатель для самоделки с ценой деталей до 30 баксов.
Простой переход на 6ти битный режим сделает МСПС<=36 (4 АЦП). Это - <=18 МГц. Такой точности более чем достаточно для обзора большинства широко используемых цифровых интерфейсов, которые обычно осматриваются логическими анализаторами с 2х битной точностью.
Расширение полосы даже не в 100, как в статье, а хотя бы в 5-10 раз (т.е. возможность рассматривать строго периодические сигналы с частотой 70-140Мгц при 8битах точности) даст очень большой плюс прибору. Причем реализация видится чисто программная, при правильном построении входа.
Даже если он развернет периодические 50МГц, это - супер!
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Для обзора интерфейсов нужен ЛА с анализатором протоколов , осцилл здесь мало требуется .DrLivsy писал(а): для обзора большинства широко используемых цифровых интерфейсов.
Из бюджетных есть Open Logic Sniffer, 200МГц- 16(32) каналов.
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Вот логика расчета для программной реализации:
дано:
У нас нет аппаратной синхронизации между входным сигналом и АЦП.

В итоге на выходе АЦП мы получаем последовательность значений, из которой можно собрать исходный сигнал. Для этого нужно просто расставить эти значения в правильном порядке. Нужно вычислить позицию каждого значения по отношению к входному сигналу. Для этого нужно программно выбрать точку отсчета, вычислить время между отсчетами и их положение по отношению к точке отсчета. Потом соотнести точку отсчета со входным сигналом и вычислить коэффициент наложения по времени между входным сигналом и значениями на выходе АЦП.

Необходимо знать:
1. Длительность периода исследуемого сигнала.
2. Длительность захвата (Sampling time, время зарядки конденсатора на входе) и длительность преобразования АЦП.
3. Нужна точка отсчета, т.е. триггер синхронизации.
По пункту 1. - это значение мы можем получить от частотомера. (Привет от таймеров СТМ32).
Значение для 2го пункта рассчитываем по данным из даташита/текущих настроек АЦП.
За точку отсчета можно взять одно из первых значений в последовательности, ближайшее к нулю. Это - программная синхронизация.
Но есть один нюанс:
Если частота сигнала равна или кратна частоте преобразования, то мы всегда будем захватывать один и тот же кусок периода входного сигнала.
Поэтому, получив значение Частота от частотомера необходимо проверить это условие на совпадение и, при необходимости, сменить частоту дискретизации АЦП.
дано:
У нас нет аппаратной синхронизации между входным сигналом и АЦП.
В итоге на выходе АЦП мы получаем последовательность значений, из которой можно собрать исходный сигнал. Для этого нужно просто расставить эти значения в правильном порядке. Нужно вычислить позицию каждого значения по отношению к входному сигналу. Для этого нужно программно выбрать точку отсчета, вычислить время между отсчетами и их положение по отношению к точке отсчета. Потом соотнести точку отсчета со входным сигналом и вычислить коэффициент наложения по времени между входным сигналом и значениями на выходе АЦП.
Необходимо знать:
1. Длительность периода исследуемого сигнала.
2. Длительность захвата (Sampling time, время зарядки конденсатора на входе) и длительность преобразования АЦП.
3. Нужна точка отсчета, т.е. триггер синхронизации.
По пункту 1. - это значение мы можем получить от частотомера. (Привет от таймеров СТМ32).
Значение для 2го пункта рассчитываем по данным из даташита/текущих настроек АЦП.
За точку отсчета можно взять одно из первых значений в последовательности, ближайшее к нулю. Это - программная синхронизация.
Но есть один нюанс:
Если частота сигнала равна или кратна частоте преобразования, то мы всегда будем захватывать один и тот же кусок периода входного сигнала.
Поэтому, получив значение Частота от частотомера необходимо проверить это условие на совпадение и, при необходимости, сменить частоту дискретизации АЦП.
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Кроме АЦПирования нужно отображать результат, производить какие либо вычисления, на 14 МГц семплирования стм только и будет делать, что семплировать.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
Вообще на экране осциллографа можно увидеть где-то 100 отсчетов. Дабы не быть жадными, сделаем буфер на 1000 отсчетов, и отсчитаем в него те самые 1000 отсчетов на частоте 14Мгц. повторим это ну пусть даже 20 раз в секунду.pcb писал(а):Кроме АЦПирования нужно отображать результат, производить какие либо вычисления, на 14 МГц семплирования стм только и будет делать, что семплировать.
Сколько это займет времени?
(1/14000000*1000/20)=0,001429 секунды.
У СТМ32 есть еще целых 0,998571 сек. на всякие глупости типа обработки DSP командами, вывода на экран/USB и тд.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Народный осциллограф "Мурзик" на базе STM32F303VCT6 - пр
+1. Neilscope - очень неплохой проект. Каждому осциллографостроителю просто необходимо прочитать всю ветку того форума, которая сопровождала разработку с самого начала.morokot писал(а):Вот http://hobby-research.at.ua/publ/razrab ... 3/4-1-0-42 законченный проект осциллографа на интересующей Вас элементной базе, работающий очень неплохо, проверено лично...


