С такой подачей как здесь, мол ты дурак, сразу видно программист и т.д. мне помощь не нужна, тратя свое время получать оскорбления? да на фиг оно мне упало, для себя я его доделаю.
Ну-ну По плечу - валяйте. Зачем вам тогда вообще нужен форум? Потратьте своё драгоценное время лучше на изучение аналоговой схемотехники, чтобы избежать хотя бы детских граблей, и соответствующей, как вы сказали, "подачи". У людей на уяснение всех нюансов уходят годы, это тебе не HAL с калокубом крутить, когда наваял по-быстрячку и запустил.
С такой подачей как здесь, мол ты дурак, сразу видно программист и т.д. мне помощь не нужна, тратя свое время получать оскорбления? да на фиг оно мне упало, для себя я его доделаю.
Ну-ну По плечу - валяйте. Зачем вам тогда вообще нужен форум? Потратьте своё драгоценное время лучше на изучение аналоговой схемотехники, чтобы избежать хотя бы детских граблей, и соответствующей, как вы сказали, "подачи". У людей на уяснение всех нюансов уходят годы, это тебе не HAL с калокубом крутить, когда наваял по-быстрячку и запустил.
Моей целью не было изучение аналоговой части, моя цель была лучшее изучение STM32 в практической задаче, хотите лучшею входную часть, да пожалуйста, изучайте, делайте, АЦП от этого работать по другому не начнет и программа тоже. Мне это не нужно сто лет. Заменю ОУ на МСР6022 и в путь. Форум нужен для конструктивной беседы, а не хаяния, прошу не путать. Дельного только услышал "поставь, что по схеме МСР6022", ну ОК, остальное вода. Мне не интересно изучать ОУ, экспериментировать с ними, покупать кучу разных, оно мне не нужно, в жизни я ими не пользуюсь. Хотите помочь, знаете простую, надежную, проверенную схему, выкладывайте, нет, хорош пустые коменты набивать. Устройство будет по схеме хамелиона, и оно будет работать т.к. он работал, я просто отошел от схемы входной части. в моей задумке входную часть менять не планировалось. Замену МК, и экрана я выполнил.
Устройство будет по схеме хамелиона, и оно будет работать т.к. он работал, я просто отошел от схемы входной части. в моей задумке входную часть менять не планировалось. Замену МК, и экрана я выполнил.
У Хамелеона основной недостаток в необходимости поисков дисплея, недорогой распространенный дисплей будет многими приветствоваться. Кстати, как он по SPI, не тормозит? Нормальная зарядка и преобразователь отрицательного питания на IC тоже хорошо, упростит сборку и наладку. Если использовать внутренний АЦП STM, можно избавиться от внешнего недешевого, что тоже многим понравится. Нужно ли два канала? Вопрос спорный. Но если быстродействие МК значительно превышает возможности аналоговой части, то можно сделать двухканальный с переключением входных каналов.
Устройство будет по схеме хамелиона, и оно будет работать т.к. он работал, я просто отошел от схемы входной части. в моей задумке входную часть менять не планировалось. Замену МК, и экрана я выполнил.
У Хамелеона основной недостаток в необходимости поисков дисплея, недорогой распространенный дисплей будет многими приветствоваться. Кстати, как он по SPI, не тормозит? Нормальная зарядка и преобразователь отрицательного питания на IC тоже хорошо, упростит сборку и наладку. Если использовать внутренний АЦП STM, можно избавиться от внешнего недешевого, что тоже многим понравится. Нужно ли два канала? Вопрос спорный. Но если быстродействие МК значительно превышает возможности аналоговой части, то можно сделать двухканальный с переключением входных каналов.
Скорости SPI достаточно, конечно если график загруженный то FPS проседает, вообще оно от 100 Гц до 4 может прыгать, но если на экране разборчивый сигнал то около 15-20 есть и этого вполне достаточно.
Да внешний АЦП можно и не ставить, будут работать 2 канала на встроенных АЦП, просто битрейт будет до 4,5 мегасемпла на канал. Но внешнее по лучше вроде по шумам. В режиме 9.14 встроенное АЦП уже работает с огромными косяками и можно только лишь на форму сигнала посмотреть, но оно и понятно, встроенное должно работать только до 2 мегасемплов в режиме 1 канала на два АЦП. а дальше это издевательство над ним.
Два канальна от одного внешнего АЦП, наверное, можно, только нужен очень быстрый мультиплексор, я не знаю, в реальности будет ли это работать. Но если текущая аналоговая входная часть не будет позволять раскрыть потенциал АЦП, то просто найдется кто-то шарящий в ОУ и доработает входной каскад, будет новая версия.
АЦП внешнее завелось, я подал на него 32 мегагерца, считывание происходит с частотой 21333333 артефактов вроде нет, есть колебание на 1 разряд, если прицепить вход на землю или опорное, но реальный сигнал посмотреть не могу, у меня ОУ нет нормальных, а те что есть сами генерят что-то.
Даже внутреннее нормально работает в режиме 2 мегасемпла на канал или 4 всего один канал, выше проблемы с качеством достаточно большие и их видно визуально. Поэтому я ограничусь 2 мегасемплами на встроенном АЦП чтобы фаза совпадала выборки и прочее, 2 канала будут полноценные, а после один отключу и вместо него использую внешний АЦП, он хоть и запускается одновременно со встроенным все равно сравнивать два сигнала по фазе уже нельзя.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Запитал ОУ и 4051 от ДС-ДС 3,8-3,9В ситуация с помехами стала горазда лучше. Отрицательное напряжение на входе пропало, правда появилось положительное при малых коэфициентах деления, но уже не такое и сигнал хоть за рамки не выходит.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Карманный осциллограф на STM32
Добавлено: Чт сен 01, 2016 11:11:34
Родился
Зарегистрирован: Вт мар 13, 2012 16:52:38 Сообщений: 3
Рейтинг сообщения:0
GFX, а какую максимальную частоту можно будет контролировать этим осликом при использовании внешнего или внутреннего ацп? и какова максимальная амплитуда без применения внешних делителей?
Буфер с данными есть, можно и проанализировать, только памяти программ мало из-за программного чтения 4000 значений с внешнего АЦП отъелось много памяти, перейду на ДМА, сэкономлю память, можно будет сделать.
GFX, а какую максимальную частоту можно будет контролировать этим осликом при использовании внешнего или внутреннего ацп? и какова максимальная амплитуда без применения внешних делителей?
амплитуда +-50В без делителей (10В на клетку), частота внутреннего 2мегасепмла нормально, до 9.14мегасемпла - 3й сорт, внешний 21,333 на текущий момент, но если за 5 тактов берет ДМА то будет 25,6 мегасемпла. Какую частоту можно контролировать - 100кГц видно хорошо на встроенном, на внешнем 300 нормально, а так до половины частоты выборки при условии, что входной каскад пропустит столь высокую частоту(но при этом будет сигнал из 2 точек). Частоты менее 100 кГц обычных блоков питания в принципе смотреть можно, но только при ремонте, при создании конечно нужен нормальный прибор чтобы выбросы видеть и прочие помехи, которые наш прибор не покажет.
Буфер с данными есть, можно и проанализировать, только памяти программ мало из-за программного чтения 4000 значений с внешнего АЦП отъелось много памяти, перейду на ДМА, сэкономлю память, можно будет сделать.
ДМА завелось - 30к кода освободилось Но оно считывает данные только за 9 тактов В чем дело? это в 1.5 раза медленнее моей сосиски кода по ручному считыванию
Тут давеча говорили про остановку ядра (WFI) на время семплирования...
То другое, остановка ядра дает стабильные 5 тактов(и меньшие шумы), без него иногда получается больше, но в среднем торможение будет меньше процента.
GFX писал(а):
ДМА завелось - 30к кода освободилось Но оно считывает данные только за 9 тактов В чем дело? это в 1.5 раза медленнее моей сосиски кода по ручному считыванию
SPL не пользуюсь, но код вроде правильный, даже не знаю в чем там можно накосячить. Как ты производишь измерения?
Цитата:
ДМА не надежное какое-то, если работают два штуки то, оно еще медленнее.
Зачем тебе 2 DMA? Внутренние ADC медленные и в dual mode пишут в один регистр, потому все равно хватит одного DMA. Внешний ADC у тебя один, если добавить второй, то нужно его вешать на тот же порт и опять же хватит одного DMA. Запускать одновременно внешний и внутренний ADC на разных частотах бессмысленно, а на одинаковых скорость DMA не важна...
Провожу на глаз и потом, видишь у меня частоту сигнала определяет, так вот сигнал 300кГц а определяется как 450, я считал из расчета 6 тактов на замер и частота совпадала. Ну и при прямом сравнении сосиськи и ДМА видно что в 1.5 раза разница
Reflector писал(а):
Зачем тебе 2 DMA? Внутренние ADC медленные и в dual mode пишут в один регистр, потому все равно хватит одного DMA. Внешний ADC у тебя один, если добавить второй, то нужно его вешать на тот же порт и опять же хватит одного DMA. Запускать одновременно внешний и внутренний ADC на разных частотах бессмысленно, а на одинаковых скорость DMA не важна...
это все понятно, но это и есть лучший результат во сне и одно ДМА активно с высшим приоритетом. Если с двумя, то результат еще хуже(определяет частоты, как 500кГц)
Так что все видно наглядно, такты посчитаны правильно. Вот только это очень плохо. Я обрадовался, что ДМА может работать с портами ввода-вывода и на тебе, процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать. Есть код работающий быстрее, только не на ХОЛовский функциях?
Провожу на глаз и потом, видишь у меня частоту сигнала определяет, так вот сигнал 300кГц а определяется как 450, я считал из расчета 6 тактов на замер и частота совпадала. Ну и при прямом сравнении сосиськи и ДМА видно что в 1.5 раза разница
Как-то я делал товарищу, который до сих пор сидит на AVR, простенький ЛА на разогнанном в 2 раза F031. Кроме того там был генератор от 1Hz до 48 Mhz, частотомер(висящий на входе ETR), который брал этот диапазон, один аналоговый канал до 4.36MHz и частоту дискретизации можно было менять в широких пределах. Т.к. от ЛА на крохотном экранчике толку мало, то клиент был на C#. И этот девайс показывает, что для F4 получается 4 такта для DMA или асма, а для F0 и F1 - по 5. Хоть точки на графике считай, хоть дрыгай ножкой по окончанию заполнения всего буфера и меряй частоту... Если сомневаешься, что для F4 должно быть 4 такта, можешь почитать эту серию статей, там парень пытался избавиться(и избавился) от артефактов при работе с VGA. Не может же быть, чтобы у меня правильно показывало 4 такта, но вместо 9 выдавало 5 Кроме того у меня в файлик сохраняются сырые данные и можно посмотреть сколько там точно приходится выборок на период. Например, для максимальной частоты семплирования 96 / 5 = 19.2MHz получаем ровный заборчик 0101 для меандра 9.6MHz.
Для 1MHz уже выходит 9-10 выборок на полупериод, в среднем на период будет 19, как и должно быть.
Более низкие частоты семплирования уже задаются через таймер, там минимум 6 тактов. Лесенка 0101 будет для меандра 8MHz, а для 1MHz в файлике одни 8-ки, т.е. 16 выборок на период.
Цитата:
Так что все видно наглядно, такты посчитаны правильно. Вот только это очень плохо. Я обрадовался, что ДМА может работать с портами ввода-вывода и на тебе, процедура ручного считывания отнимает 30 кбайт памяти, т.е. половину из доступной, лучше я на ней анализатор спектра намучу или сохранение на флешку скриншотов, а тут такая подстава. свободно памяти 2.4 кбайта, это только на исправление косяков можно сказать. Есть код работающий быстрее, только не на ХОЛовский функциях?
Внутри init помимо установки всяких CPAR/CMAR/CNDTR только для CCR выставляются биты приоритета, размера и инкремента, т.е. ровно то, что туда передается. Потому я и говорил, что тут сложно где-то накосячить, а вот измеряя частоту при помощи ADC ошибиться намного проще.
а вот измеряя частоту при помощи ADC ошибиться намного проще.
Дело ведь не только в измерении частоты, это только один факт. Вы же видите визуально, что один и тот же сигнал 300кГц при ручном считывании выглядит как менее быстрый, в экран помещается меьнше. Отсюда только 2 варианта: 1. считывание по ДМА происходит за 5 тактов, то тогда ручное за 3,333 такта что подозрительно да и при сравнении со встроенным АЦП видно что это не так. 2. считывание по ДМА у меня лично происходит за 9 тактов, это не противоречит тому что у вас может происходит за 5, может все таки что-то у меня насроено не так как должно, хотя ДМА сложно заставить работать быстрее или медленнее, его настроил и вперед.
Поэтому я и не понимаю, либо у вас там не было 5 тактов, просто косяк в методике, либо у меня почему-то ДМА работает медленнее, может размер буфера, может еще что, но это факт. Оно медленнее процессора копирует из памяти в память. Я сейчас сделаю простой пример, выставлю какой-то порт в 1, запущу ДМА и в прерывании ДМА выставлю этот порт в ноль. И на логическом анализаторе посмотрим время (у меня 4000 значений), но я в чудеса не верю, моя методика определения количества тактов понятна и наглядна, что-то не то. Есть место в датащите или референс мануале или еще где, где прописано конкретно сколько тактов ДМА нужно для записи и чтения памяти?
Вот провел проверку через логический анализатор, все сходится с достаточно большой точностью, вывод 9 тактов на 1 чтение с портов ввода-вывода через ДМА, на текущий момент это так. Вопрос в другом, можно ли достичь хотя бы 6 тактов как при чтении процессором.
Похоже разобрался. Оригинальный девайс у меня на F0, там заполняется буфер длиной 3584 байт, SysTick показывает, что на это уходит 17981 тактов, т.е. 5 тактов на байт. На F4 получается 14384 тактов, т.е. 4 такта на байт. Проверяя F1 я где-то недоглядел и подумал, что они с F0 по скорости одинаковые, но сейчас F1 действительно выдает 32302, а это 9 тактов...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения