10 долларов США пересмотрено

Ахулл
Сб 09 мая 2015 12:56
За последние несколько дней я играл с идеей осциллографа Ray STM32.


Изображение


Некоторые предварительные результаты доступны здесь..

https: // github.com/pingumacpenguin/stm3 ... Ontruction

Мой взгляд на эскиз с областью здесь..

https: // github.com/pingumacpenguin/stm32-o-scope

Это забавный маленький проект, и он стоит построить только для развлечения. В настоящее время полоса пропускания немного ограничена, но с небольшим количеством дополнительных усилий можно было бы сделать полностью функциональную область 2 МГц, почти ничего. Идеально подходит для исследования I2C, аудио и других низкоскоростных сигналов.

Редактировать: нам удалось выжать максимальную скорость из АЦП, прочитайте дальнейшее поток для подробностей. Код GitHub включает в себя все усовершенствования, сделанные из хода этого потока.

Мадиас
Сб, 09 мая 2015 г. 13:18
Интересный проект!
У меня есть DSO NANO (также STM32 Powered) с прошивкой Benq, и инструменты действительно полезны (я использую его для аудиоданных).
Было бы интересно, если есть возможность извлечь из него 2 (или более) канала (с половиной скорости или около того).

Mrburnette
Сб 09 мая 2015 г. 15:02
Ух ты!

Ваша реализация и усовершенствования, несомненно, вмещают эту идею в удобную категорию!

Спасибо.


Луча

Ахулл
Сб 09 мая 2015 г., 20:55
Мадиас написал:Интересный проект!
У меня есть DSO NANO (также STM32 Powered) с прошивкой Benq, и инструменты действительно полезны (я использую его для аудиоданных).
Было бы интересно, если есть возможность извлечь из него 2 (или более) канала (с половиной скорости или около того).

Ахулл
Солнце 10 мая 2015 г., 13:32
Быстрое изменение кода (без DMA или другого обмана) позволяет мне вытолкнуть петлю отбора проб до 3US за преобразование...

Код теперь читает...
const adc_dev *dev = PIN_MAP[analogInPin].adc_device; int pinMapPB0 = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(dev, ADC_SMPR_13_5); for (uint16_t j = 0; j <= maxSamples - 1 ; j++ ) { dataPoints[j] = adc_read(dev, pinMapPB0); }

Ахулл
Солнце 10 мая 2015 г. 14:29
Более того.... : D ... Если мы перенесем настройку регистра за пределами петли. (Видеть https: // github.com/lefflabs/lefflabs-do ... Эрви.перстю Для секретного соуса, который дает подсказки относительно того, как это сделать).
const adc_dev *dev = PIN_MAP[analogInPin].adc_device; int pinMapPB0 = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(dev, ADC_SMPR_13_5); adc_reg_map *regs = dev->regs; adc_set_reg_seqlen(dev, 1); regs->SQR3 = pinMapPB0; for (uint16_t j = 0; j <= maxSamples ; j++ ) { regs->CR2 |= ADC_CR2_SWSTART; while (!(regs->SR & ADC_SR_EOC)) ; dataPoints[j]=(regs->DR & ADC_DR_DATA); }

Ахулл
Солнце 10 мая 2015 г., 19:43
Сбросить время образца до 7.5 тактовых циклов дают нам 427616 образцов/сек и полосы пропускания 213 808 Гц, но мы начинаем видеть некоторое звонок в пути сигнала, который можно обрезать небольшим дополнительным емкостью в нашем зонде.

Ахулл
Солнце 10 мая 2015 г., 19:54
Сбросить время образца еще дальше до 1.5 тактовых циклов по -прежнему дают полезный результат, с 6144 образцами, взятыми всего 11792 микросекунды.

Изображение

Мы видим больше артефактов на сигнале, но он все еще доступен и с образетом, который сейчас принимает 1.919270833 Микросекунд, мы приближаемся к теоретическому минимальному времени преобразования АЦП. Это дает нам 521 031.207598372 Образцы в секунду для полосы пропускания 260 515.603799186 Гц (я.эн. чуть более 260.5 кГц), что не плохо.

Сигнал может быть слегка очищен, используя правильный датчик с прицелом и регулируя его триммер. Я сделаю это завтра. Недостаток отдельной плоскости из АЦП и чистый ADC Vref на этих маленьких платах заметен на такой частоте. Кроме того.

Если вы хотите немного узнать о зондах с масштабами и высокими частотными сигналами, посмотрите здесь..
https: // www.DFAD.компонент.Au/Links/%20 секунды ... 0oct09.PDF

Я доволен этим. Если я получу немного свободного времени, я могу посмотреть на использование АЦП с DMA - но если кто -то еще хочет взломать в битве 1.9 США за преобразование * с * DMA и рутиной службы прерывания, перчатка была брошена. : D

Обновленный набросок на GitHub. https: // github.com/pingumacpenguin/stm32-o-scope

Ахулл
Солнце 10 мая 2015 г., 22:54
Одна вещь, которую я, возможно, не упомянул. Эскиз также может выплюнуть данные на серийном порту USB, так что вы можете проанализировать его дальше. Вот образец графика с использованием gnuplot http: // www.Gnuplot.информация/ из 6144 образцов в одном буфере, взятых с последним набросом слегка шумного сигнала ШИМ.

Просто введите S <входить> На последовательной консоли, и она отпускает точки данных.
Вставьте их в файл CSV и подайте его в Gnuplot.

Gnuplut> Сюжет 'Сериал.CSV '

Изображение

Мы можем увеличить...

Gnuplot> Сюжет [500: 2000] 'Сериал.CSV 'с линиями

Изображение

.. Вы поняли идею...

Mrburnette
Пн 11 мая 2015 г., 2:25
Я впечатлен.

Моя первоначальная идея состояла в том, чтобы просто предоставить недорогую учебную помощь, но текущая реализация выходит далеко за пределы этого! Отличная работа.

Луча

Ахулл
Пн 11 мая 2015 г., 13:26
STM32-O-Scope Wiki обновлен https: // github.com/pingumacpenguin/stm32-o-scope/wiki - Добавлены страницы для строительства и построение данных.

Ахулл
Пн 11 мая 2015 г., 19:18
Для полноты я построил данные только с помощью провода для зонда и с помощью подлинного зонда.

Два сюжета можно найти здесь. https: // github.com/pingumacpenguin/stm3 ... G-Data

Вы можете сделать свои собственные выводы.

Мадиас
Пн 11 мая 2015 г., 21:13
Ahull: Жаль, что у меня просто нет времени для нового проекта, но ваш O-Scope высок в списке «обязательно построить»!

Mrburnette
Пн 11 мая 2015 г., 22:07
@ahull;
Очень хороший проект! Очевидно, это не первый раз в городе ;)

Луча

Ахулл
Пн 11 мая 2015 г., 23:28
Очевидно, это не первый раз в городе @Ray, ты можешь быть правым... Я подозреваю, что я еще один кандидат на ремни памяти. ( ViewTopic.PHP?F = 35&T = 113#P827 ) : D

Ахулл
Ср 13 мая 2015 г., 21:57
STM32-O-Scope был необходим для обновления корпуса, так как переосмысленная шоколадная коробка начинала разваливаться. В соответствии с темой 10 долларов, коробка должна была быть недорогой.

Быстрое посещение "Pounstretchers", чтобы получить «контейнер с пищевым продуктом в качестве коробки проекта» [http: // chdk.Setepontos.com/index.PHP?Тема = 10284.0] что много из одного из проектов вступило. £ 1.99 "скрипучая собачья игрушка".. Хорошо, это удвоило бюджет моего проекта, но я надеюсь, что результаты того стоят.

Изображение

Мистер Пиг собирается иметь окно на его стороне (после некоторой незначительной операции), и все приведенные ниже Губбин Будут добавлены батареи, так как у нашего друга свиньи есть много запасных обхватов, чтобы разместить их.

Изображение
(Горячий фестиваль сопли и большой беспорядок) проводов)

Помимо того, что кольцо в конце носа будет очевидной ссылкой на глупость мистера Лираса, в конце его носа станет квадратной тестовой точкой. Первоначальные фотографии сборки начинаются здесь.. https: // plus.Google.com/u/0/photos?pid = ... 4282217370

Mrburnette
Ср 13 мая 2015 г. 11:34
Какой отличный способ вернуть домой бекон!

Политика свинички ничего не имеет в этом техно -технике.

Слишком смешно. Мне нужно было хорошо смеяться, это было прекрасно.


Луча

victor_pv
Чт 14 мая 2015 г. 14:39
Ребята, которые начинают выглядеть как профессиональный осциллограф, даже с меткой за 10 долларов : D

Ахалл, я думаю, вы должны посмотреть на добавление DMA для захвата. Вы можете установить таймер для запуска каждой передачи DMA, чтобы вы могли точно установить частоту захвата с помощью таймера, запустить передачу, затем сбросить данные на экран.

Я теряю большую часть своего времени на загрузчик USB -перечисление, но если я получу минуту, я постараюсь посмотреть, смогу ли я протестировать ADC DMA захваты.
Если это сработало нормально, все, что вам нужно, будет 2 кнопки или сенсорный экран, чтобы настроить частоту захвата

Ахулл
Чт 14 мая 2015 г., 21:58
@Victor, если у вас есть шанс получить что -то, что работает для ADC - DMA Transfer, используя один из таймеров, который был бы идеальным. Это даст нам полную скорость на АЦП, я подозреваю. В настоящее время я только опрашиваю ADC, но если мы сможем использовать DMA и TIMER для точных конверсий ADC, мы получим более точные времена (хотя даже опросы дают довольно точные результаты, насколько я могу судить).

Я должен признать, что мне очень нравится возиться с этим, то, что на самом деле вызвало мой интерес к STM32F103, был встроенным RTC, но на данный момент он зашел на заднее сидень.

Одна вещь, которую я обнаружил, это то, что частота ШВМ на самом деле не 1100 Гц, как указано в Leaflabs, но на самом деле 550 Гц - на штифте PWM, который я использую, кажется предварительным значением, которое они использовали для таймера 3 (я вышел (я вышел (я Использование PB1 для моего тестового вывода).

Было довольно очевидно, что что-то было не так, когда я посмотрел на это на экране STM32-O-Scope, и когда я сравнил результаты по прицелу в своем офисе, показал, что STM32-O-Scope правильно измерял период. У меня была ошибка в моем коде. Затем я проверил, и есть некоторая информация об этом на форуме Leaflabs. Я собираюсь связываться с таймерами, если у меня будет шанс, и посмотрю, смогу ли я настроить некоторый контроль над выходной частотой, используя команды последовательных портов.

Я подтолкнул свой последний код в GIT, если кто -то еще хочет играть. : D
Я теряю большую часть своего времени на загрузчик USB -перечисление, но если я получу минуту, я постараюсь посмотреть, смогу ли я протестировать ADC DMA захваты.
Если это сработало нормально, все, что вам нужно, будет 2 кнопки или сенсорный экран, чтобы настроить частоту захвата
У меня настроен несколько последовательных команд, в том числе один для увеличения/уменьшения временной базы, поэтому я могу просто зацепить эти.
У меня есть сенсорный экран, но я еще не начал играть с библиотекой Touch.

victor_pv
Пт 15 мая 2015 г. 16:52
Из того, что я помню из примечания STM, я прочитал некоторое время назад, мы можем настроить ADC1 и ADC2, чтобы взять образцы в тандеме, что приводит к 2 -метровым образцам/с, что является довольно респектабельной скоростью для такого устройства. Я смогу, если я найду, как они это сделали, и адаптировать к кленку. Я думаю, что это не должно потребовать много усилий, так как функции DMA от Leaflabs работают, как и ожидалось до сих пор. Мы увидим о коде их таймера после того, что вы заметили с PWM...

Ахулл
Пт 15 мая 2015 г., 17:44
Я считаю, что ты прав.. http: // www.ул.com/web/en/resource/techn ... 258017.PDF <<Страница 10
2.2.1 Описание

Двойной быстрый переоцененный режим ADC предназначен для преобразования одного канала. ADC1
и ADC2 преобразует выбранное канал попеременно с периодом 7 тактовых циклов АЦП.
Это означает, что канал преобразуется каждые 7 тактовых циклов. Каждый АЦП преобразует
канал каждые 14 тактовых циклов АЦП. С 14 МГц часами ADC, таким образом можно достичь
2 мс в секунду: 14 МГц/7 = 2 МГц (частота выборки). Преобразование может быть
Запустите внешний триггер или программное обеспечение, а результаты преобразования ADC1 и ADC2
Хранится в регистре данных ADC1 (32-битный формат)
Если мы сможем управлять этим маленьким трюком плюс DMA и Timer Time Byse, мы на 99% от «настоящего» осциллографа. Нам по -прежнему понадобится какой -то метод калибровки, и могут возникнуть проблемы с входным импедансом, влияющим на упрощенный резистор OHM в 1 мега... Но я уверен, что мы можем исправить это в программном обеспечении : D

Мадиас
Сб 16 мая 2015 г., 6:23
. Нам по -прежнему понадобится какой -то метод калибровки, и могут возникнуть проблемы с входным импедансом, влияющим на упрощенный резистор OHM в 1 мега... Но я уверен, что мы можем исправить это в программном обеспечении Ахулл: Я считаю, что вы посмотрели на схемы DSO Nano? Может быть, есть несколько вещей, которые могут быть интересными для этого проекта...

http: // www.Seeedstudio.com/document/pdf ... эматический.PDF

Ахулл
Сб 16 мая 2015 г. 8:52 утра
@Madias Я действительно посмотрел на DSO Nano, он разработан с нуля, чтобы быть осциллографом, и использует пару операций по OP-AMP и некоторой другой аналоговой схеме для буферизации ввода. Интересно, что вы можете получить довольно полезный результат без каких -либо дополнительных схем (кроме резистора высокого значения в качестве аттенюатора).

С DSO Nano они сталкиваются с тем же ограничением полосы пропускания ADC, а также буферизации ввода они подняли вклад в свои зонды с помощью пары на бортовых триммерных конденсаторах (они выполняют работу триммера на стандартном зонд области).

Минималистский подход, который мне пришлось принять, на самом деле работает почти так же хорошо, но вызывает небольшой риск разжигания АЦП, так как нет реальной защиты ввода, за исключением резистора OHM в 1 мег. Сказав это, если вы взорвите эту вещь, то плата STM32 дешевая и легко заменяемая.

Я был удивлен, насколько хороши результаты были честны, я ожидал, что это будет довольно бесполезно.

Mrburnette
Сб 16 мая 2015 г. 14:02
. Сказав это, если вы взорвите эту вещь, то плата STM32 дешевая и легко заменяемая. ДА : D

Теперь это мой личный подход к инженерии!

Луча

Ахулл
Сб 16 мая 2015 г. 16:19
Mrburnette написал:. Сказав это, если вы взорвите эту вещь, то плата STM32 дешевая и легко заменяемая. ДА : D

Теперь это мой личный подход к инженерии!

Луча

Ахулл
Сб 16 мая 2015 г. 16:24
На более серьезном примечании, кто -нибудь знает самый простой способ убедить STMF103 переключить штифт на предопределенной частоте, используя таймеры. Я что -то вместе, возившись с Analogwrite () и ..
uint16 timer_set_period(HardwareTimer timer, uint32 microseconds) { if (!microseconds) { timer.setPrescaleFactor(1); timer.setOverflow(1); return timer.getOverflow(); } uint32 cycles = microseconds * (72000000 / 1000000); // 72 cycles per microsecond uint16 ps = (uint16)((cycles >> 16) + 1); timer.setPrescaleFactor(ps); timer.setOverflow((cycles / ps) - 1 ); return timer.getOverflow(); }

Ахулл
Сб 16 мая 2015 г. 11:28
У меня не было много времени, чтобы играть сегодня, так как я выполнял свою дневную работу, но вот 540 000 образцов в секунду сигнала около 50 кГц. X Mark - это выборочные точки.

Изображение

Похоже, мне нужно обрезать емкость моего грубого аттенюатора 1 мл.. Я уверен, что смогу кровнять эту форму волны. : D

код Gnuplot.. gnuplot> # Gnuplot script file for plotting data in file "serial3.csv" gnuplot> # This file is called serial3.gplot gnuplot> set autoscale # scale axes automatically gnuplot> unset log # remove any log-scaling gnuplot> unset label # remove any previous labels gnuplot> set xtic auto # set xtics automatically gnuplot> set ytic auto # set ytics automatically gnuplot> set title "STM32 Oscilloscope plot" gnuplot> set xlabel "Time (microseconds)" gnuplot> set ylabel "Signal (mV)" gnuplot> set linestyle 2 linetype rgb "green" gnuplot> plot "serial3.dat" using 1:2 title 'Channel 1' with lines linetype 2 gnuplot> plot [1000:1100] "serial3.dat" using 1:2 title 'Channel 1' with linespoints linetype 2

victor_pv
Вторник 19 мая 2015 г., 8:30 вечера
Энди, я читал о периферийном устройстве АЦП и думаю, что я разобрался с DMA. В значительной степени так же, как и с SPI, нам нужно написать только одну функцию, чтобы включить и отключить DMA включить бит. Я предполагаю, что Leaflabs никогда не должны это делать, потому что это не Libmaple, но эквивалентные SPI уже были в Libmaple...

В любом случае, я сделаю на снимке после работы и посмотрю, смогу ли я написать модификации на ваш эскиз. Учитывая, что АЦП не слишком быстрая, я не думаю, что будет значительное улучшение, используя DMA в одном канале, но с DMA мы можем использовать переоцененный режим с ADC2 и удвоить полосу пропускания, и из таблицы данных я понимаю DMA Требование, чтобы иметь возможность использовать переоцененный режим:
11.8 запрос DMA
Поскольку конвертированное значение обычных каналов хранится в уникальном регистре данных, это необходимо
Использовать DMA для преобразования более одного обычного канала. Это избегает потери данных
Уже хранится в регистре ADC_DR.
Только конец преобразования обычного канала генерирует запрос DMA, который позволяет
Передача его преобразованных данных из регистра ADC_DR в выбранное место назначения
пользователем.
Примечание: только ADC1 и ADC3 имеют эту возможность DMA. Данные с ADC2 могут быть переданы в
Двойной режим ADC с использованием DMA благодаря Master ADC1.
Поэтому мне нужно будет добавить ISR, изменить пару битов в CR2 и установить контроллер DMA, очень похожий на то, что мы сделали с SPI.
Как только это сработает, я посмотрю на включение переоцененного режима.

Ахулл
Вторник 19 мая 2015 г., 21:30
В других преимуществах DMA, очевидно, состоит в том, что он должен позволить нам проводить несколько конверсий ADC без какой -либо необходимости в цикле опроса. Мое понимание того, как это работает (и я могу ошибаться), вы можете указать, сколько конверсий вы хотите, и период между ними.

Так что, если это так, мы можем указать DMA на наш массив ADC, скажем, дайте мне преобразования в этом куске памяти (наш массив), затем осмотрите их позже, как только тяжелая работа будет выполнена. Это оставляет процессор свободным делать другие вещи, например, нарисовать дисплей, прочитать сенсорную панель, поговорить с последовательным портом или чем -то еще.

Я буду очень впечатлен, если мы сможем справиться с этим маленьким трюком. Кстати, я не приговорен к какому -либо конкретному выводу для ввода АЦП, если нам нужно перейти на другой булавку из -за конфликтов с таймерами или чем -то еще, я в порядке с этим.

Rogerclark
Вторник 19 мая 2015 г. 22:26
@ahull

DMA имеет несколько режимов работы, вы можете дать ему буфер с фиксированной длиной, но вы также можете управлять им в режиме круглого буфера, хотя я не знаю, применимо ли это к АЦП (вероятно).

С областью, вероятно, это будет означать, что вы захватываете данные в буфер немного быстрее и проще, чем цикл и ожидание.

На данный момент Victors Spi DMA Code "блокирует", я.e В то время как его передача E.g на дисплее, код находится в цикле времени и ждет завершения.

Тем не менее, я почти уверен, что можно заставить DMA запустить прерывание, когда оно закончено, поэтому можно было бы создать буфер выходного кадра, а затем начать SPI DMA, чтобы написать его на дисплей, а затем Вернитесь к отбору АЦП на главной петле

Ахулл
Вторник 19 мая 2015 г., 23:47
Rogerclark написал:@ahull

DMA имеет несколько режимов работы, вы можете дать ему буфер с фиксированной длиной, но вы также можете управлять им в режиме круглого буфера, хотя я не знаю, применимо ли это к АЦП (вероятно).

С областью, вероятно, это будет означать, что вы захватываете данные в буфер немного быстрее и проще, чем цикл и ожидание.

На данный момент Victors Spi DMA Code "блокирует", я.e В то время как его передача E.g на дисплее, код находится в цикле времени и ждет завершения.

Тем не менее, я почти уверен, что можно заставить DMA запустить прерывание, когда оно закончено, поэтому можно было бы создать буфер выходного кадра, а затем начать SPI DMA, чтобы написать его на дисплей, а затем Вернитесь к отбору АЦП на главной петле

Rogerclark
Вторник 19 мая 2015 г. 11:55
Я не уверен, как Freertos интегрируется с DMA

Это действительно задача для DMA, так как вы можете перенести из ADC в память одновременно с передачей кадрического буфера на дисплей, и все еще иметь основной цикл, используя ваш код управления графическим интерфейсом.

Хотя вы можете написать это с помощью RTOS, это не даст вам истинную многозадачность, которую дает DMA DMA. я.E DMA дает эффект наличия мульти -основного процессора - если некоторые ядра просто передают данные.
RTO пришлось бы постоянно переключаться на контекст, чтобы сделать то же самое, что было бы невероятно неэффективно.

victor_pv
Ср 20 мая 2015 г., 4:04
Энди, у меня был шанс преобразовать захват АЦП в DMA. Я собрал, но у меня не было времени, чтобы проверить это, так что не могу гарантировать, что все так, как должно, но я считаю, что это. Это те изменения, которые вам нужны:

Сначала заявьте это в начале: // End of DMA indication volatile static bool dma1_ch1_Active;

Ахулл
Ср 20 мая 2015 г., 11:41
Виктор, спасибо за это, я должен получить шанс протестировать, сегодня вечером. Я дам тебе знать, как это происходит.

Как только мы его работаем, я подозреваю, что следующий шаг - создать ADC LIB, аналогичную SPI LIB, чтобы сделать код модульным, и легче переносить в другие архитектуры (F4 и т. Д.).

Ахулл
Ср 20 мая 2015 г. 13:06
Не скомпилируется...
STM32-O-Scope.ino: In function 'void takeSamples()': STM32-O-Scope.ino:385:3: error: 'regs' was not declared in this scope 'regs' was not declared in this scope

victor_pv
Ср 20 мая 2015 г. 14:37
Энди, возможно, я не объяснил это в своем посте. Не заменяйте все содержание void takesamples (), замените только прокомментируйте петлю, который доставляет захваты в массив, и добавьте новую рутину, чтобы сделать это. Но вы должны сохранить первую часть функции TakesAmples.


Regs объявлен в первой части этой функции, в этой линии:

adc_reg_map *regs = dev->рег;

victor_pv
Ср 20 мая 2015 г. 14:48
Должен быть так: void takeSamples () { /* for (uint16_t j = 0; j <= 10 ; j++ ) { analogRead(analogInPin); } */ // In effect I have unwrapped analogRead() into its component parts here to speed things up. // this avoids the need to check the pinmap every time we go round the loop. const adc_dev *dev = PIN_MAP[analogInPin].adc_device; int pinMapPB0 = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(dev, ADC_SMPR_1_5); adc_reg_map *regs = dev->regs; adc_set_reg_seqlen(dev, 1); regs->SQR3 = pinMapPB0; /* // Discard the first 10 samples to allow the ADC to stabalise. for (int16_t j = -10; j <-0 ; j++) { regs->CR2 |= ADC_CR2_SWSTART; while (!(regs->SR & ADC_SR_EOC)) ; if (j > 0) { regs->DR & ADC_DR_DATA; } } */ /* for (int16_t j = 0; j <= maxSamples ; j++ ) { regs->CR2 |= ADC_CR2_SWSTART; while (!(regs->SR & ADC_SR_EOC)) ; if (j > 0) { dataPoints[j] = (regs->DR & ADC_DR_DATA); } // TODO: Tighten up this loop or better still use DMA and/or dual conversion to get up to 2MS/s i.e. 0.5uS per sample and sub-microsecond accuracy. // sweepDelay adds delay factor with a sub microsecond resolution we would of course be better using an ISR and DMA for the ADC // //sweepDelay(sweepDelayFactor); } */ // Loop above replaced with this DMA transfer setup: regs->CR2 |= ADC_CR2_CONT; // Set continuous mode dma_init(DMA1); dma_attach_interrupt(DMA1, DMA_CH1, DMA1_CH1_Event); adc_dma_enable(ADC1); dma_setup_transfer(DMA1, DMA_CH1, &ADC1->regs->DR, DMA_SIZE_32BITS, &dataPoints, DMA_SIZE_16BITS, (DMA_MINC_MODE | DMA_TRNS_CMPLT));// Receive buffer DMA dma_set_num_transfers(DMA1, DMA_CH3, maxSamples); dma1_ch1_Active = 1; dma_enable(DMA1, DMA_CH1); // Enable the channel and start the transfer. regs->CR2 |= ADC_CR2_SWSTART; while (dma1_ch1_Active); dma_disable(DMA1, DMA_CH1); //End of trasfer, disable DMA regs->CR2 &= ~ADC_CR2_CONT; //and Continuous mode. }

Ахулл
Ср 20 мая 2015 г., 22:07
Виктор, служит мне прямо за то, чтобы не читать инструкции.. Я слишком спешил выйти и наслаждаться солнцем.

Я буду играть с этим завтра. Спасибо.

victor_pv
Чт 21 мая 2015 г., 2:00 утра
У меня была пара ошибок в моем коде. Это работает сейчас с этим кодом и функциями и переменными, которые я разместил ранее.
Это раздел захвата, чтобы включить в вашу функцию принятия:
regs->CR2 |= ADC_CR2_CONT; // | ADC_CR2_DMA; // Set continuous mode and DMA dma_init(DMA1); dma_attach_interrupt(DMA1, DMA_CH1, DMA1_CH1_Event); adc_dma_enable(dev); dma_setup_transfer(DMA1, DMA_CH1, ®s->DR, DMA_SIZE_32BITS, &dataPoints, DMA_SIZE_16BITS, (DMA_MINC_MODE | DMA_TRNS_CMPLT));// Receive buffer DMA dma_set_num_transfers(DMA1, DMA_CH1, maxSamples); dma1_ch1_Active = 1; dma_enable(DMA1, DMA_CH1); // Enable the channel and start the transfer. samplingTime = micros(); regs->CR2 |= ADC_CR2_SWSTART; while (dma1_ch1_Active); samplingTime = (micros() - samplingTime); /* uint32_t t0 = millis(); while (dma1_ch1_Active) { if ((millis() - t0) > 100) { dma1_ch3_Active = 0; break; } } */ // regs->CR2 &= ~ADC_CR2_DMA; dma_disable(DMA1, DMA_CH1); //End of trasfer, disable DMA and Continuous mode. regs->CR2 &= ~ADC_CR2_CONT;

victor_pv
Чт 21 мая 2015 г., 3:46 утра
Хорошо, теперь он работает в переоценке. Мы также могли бы установить осциллограф 2 канала 1 МГц в двойном режиме АЦП, причем оба захватывают одновременно, но разные входы.

Это то, что нужно для переоценка режима:

Сначала изменить объявление массива, чтобы мы могли получить к нему доступ к одному 32 -битному слову во время захвата: uint32_t dataPoints32[maxSamples/2]; uint16_t *dataPoints = (uint16_t *)&dataPoints32;

Ахулл
Чт 21 мая 2015 г., 9:39
Это работает хорошо.

У нас есть несколько проблем и некоторые ранее существовавшие ошибки, но все это значительно улучшение.

Запуск, безусловно, нуждается в повторном посещении, мой текущий метод является грубым, если не сказать больше. Он родился по необходимости, а не тщательно продуманным.
Также масштабирование и рисунок формы волны в настоящее время довольно плохой. Мне нужно сделать это более. Все, что улучшает скорость рисунка на дисплее, также будет выгодой.

Я протолкнут то, что мы сделали до сих пор для GIT, и вы можете сравнить со своей рабочей копией, чтобы убедиться, что я взял все ваши изменения. Если вы хотите получить доступ к моему Git Repo, напишите мне свой общедоступный ключ, и я добавлю вас.

Ахулл
Чт 21 мая 2015 г., 10:19
Вот фотографии экрана, настоящий осциллограф для сравнения и график данных.

Изображение

ПРИМЕЧАНИЕ: США за div вводят в заблуждение, это должно быть время для подразделения на экране, но в настоящее время я думаю, что это связано со временем на выборку.

РЕДАКТИРОВАТЬ: Что было странно, так это то, что эта цифра неверна. Общее время, взятое для образцов, составляет 2988.0 США и количество образцов составляет 5120, так что это дает время на выборку 0.58359 США за образец .. Другими словами, мы видим проблему здесь, когда разделяем INT, и результат <1

Я исправил это, и это дает время на выборку 0.58us, которая дает фигуру 1.713 мега -образцы в секунду. Это довольно близко к нашему минимуму 0.5 или 2 мегазама в секунду.

Зачем мы в конечном итоге с таким дико неверным ответом, когда разделяем наши INT, - это еще один вопрос.

Изображение

Тот же ссылочный сигнал 1 кГц просмотрен одновременно на моем Tektronix.

Изображение

Область данных - нанесенную с помощью Gnuplot. Вы можете видеть, что есть достаточное количество шума, но я подозреваю, что многое из этого происходит от неадекватного сглаживания на плате STM32F103. Дополнительные колпачки по всему ADC Vref, вероятно, устранят многое из этого. Скорость дискретизации 1.5 тактовых циклов на образец (ADC_SMPR_1_5, /**< 1.5 циклов АЦП */)

Кстати, если кто -то ищет генератор функций сигнала, Asearch eBay для AD9850 - Эти маленькие доски весьма полезны - на самом деле я вижу еще один маленький проект. Генератор функции STM32.

Ахулл
Чт 21 мая 2015 г., 11:45
Если я увеличу скорость дискретизации до 13.5 тактовых циклов от 1.5 тактовых циклов, я получаю более чистый результат. Теперь я получаю 1.08 США на выборку или 925 925.925 образцов в секунду.

Изображение

Гораздо лучше, хотя на сигнале есть заметная 50 кГц или около того квадратной волновой волновой пульсации.

Mrburnette
Чт 21 мая 2015 г. 12:03
Дополнительные колпачки по всему ADC Vref, вероятно, устранят многое из этого. Если не на вашей плате, небольшой индуктор в линии VCC в аналоговую часть чипа также полезен. Оригинальные доски составляли 4 слоя с аналоговой заземленной плоскостью, но My Clone Maple Mini представляет собой двухсторонний перефразировка макета; Несколько хуже в дизайне, но за 4 доллара нужно быть реалистичным в отношении изготовления.

Хорошая работа. Зверь превращается в очень недорогой, низкобюджетный инструмент для домашнего создания для экспериментатора на выходных.


Луча

victor_pv
Чт 21 мая 2015 12:43
Мы, вероятно, должны использовать булавку дальше от SPI MOSI, так как ближе к нему находится тот, который используется прямо сейчас, и MOSI может создавать довольно немного шума. Не уверен, действительно ли это, как доступ и захват дисплея происходят в разное время, но на всякий случай...
Кроме того, как ADC1, так и ADC2 имеют калибровочную функцию, которая, как я считаю, вызвана инициализацией портов, но я не уверен, что может быть хорошо назвать это в какой -то момент в эскизе.
Тогда у нас есть единственная проблема с бензином. Я использую мини -клон, и на твоих фотографиях показывают другую доску, которая, вероятно, тоже не имеет отдельного б.е.
В качестве теста перед сном я триммер в последние 4 бита образцов, оставляя только 8 бит разрешения, плюс я должен был обрезать 4 верхних бита, так как захват только на 12 бит, и я не был так Должен сделать это, это тоже может уменьшить этот шум.
Итак, в моем списке:
-Обрезать топ -4 бита.
-Используйте другой PIN -код.
-Вызовите калибровку на обоих портах при старте.
-Запустите ADC непрерывный захват чуть раньше.

Теперь время образца ADC может быть отрегулировано на лету. Было бы хорошей идеей, если бы вы могли добавить команду, чтобы изменить это, поэтому для более медленных сигналов мы получаем более чистый захват.

Кстати, согласно спецификациям, при использовании 72 МГц на основных часах MCU самое быстрое время захвата ADC - 1.17 США. Когда мы используем 2 АЦП, мы могли бы получить вдвое больше захватов, поэтому .58 США, когда вы говорите выше, что вы получаете максимум. Я думаю, что мы достигли ограничения скорости чипа, теперь все, что мы можем сделать, это повысить точность.

Используйте этот цикл после того, как ADC DMA завершится, чтобы обрезать 4 лучших бита, которые не принадлежат фактическому образцу, может иметь значение. У меня нет настоящего осциллографа, чтобы сравнить :(
... dma_disable(DMA1, DMA_CH1); //End of trasfer, disable DMA and Continuous mode. // regs->CR2 &= ~ADC_CR2_CONT; for (int16_t j = 0; j < maxSamples/2 ; j++ ) { dataPoints32[j] &=0x0FFF0FFF; }

Ахулл
Чт 21 мая 2015 г., 13:03
Это версия "отделана"...

Изображение

victor_pv
Чт 21 мая 2015 г. 13:15
Не большая разница, я думаю, АЦП писала 0 в неиспользованных битах.

Попробуйте обрезать 2 или 4 нижних бита образцов с помощью 0ff60ff6 или 0ff00ff0.
Это наверняка снизит шум за счет потери некоторого разрешения.

Теперь я помню, как читал примечание STM о том, как увеличить разрешение захвата АЦП, используя шум в нем.
Мне придется найти это и посмотреть, сможем ли мы применить это к этому делу.

Я подумал об идее Роджера для кадров. Дисплей имеет 240x320 пикселей, 2 байта каждый, которым нужно около 144 КБ ОЗУ для хранения рамки.
Теперь это будет работать на меньших дисплеях 128x128, которые нуждаются в 32 КБ для рамного буфера, но только используя больший MCU.

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

Ахулл
Чт 21 мая 2015 г. 15:44
Я переместил вход АЦП на PB1, выключил свой тестовый выходной вывод (источник 50 кГц, я подозреваю) и немного укоренил мне кабель.

Изображение

Выше приведено с ADC ADC_SMPR_13_5 (1.08 США за образец)- он выглядит намного чище. Мне нужно посмотреть, смогу ли я каким -то образом очистить предложение АЦП, но это заметное улучшение. Возможно, я посмотрю, смогу ли я поставить тестовый штифт на порт C или что -то еще. Идея иметь тестовый пин -код с известной частотой Squarewave все еще привлекает, но я думаю, что если это вызовет проблемы, я могу его отбросить. Заземленное экранирование на тестовом сигнальном кабеле может быть всем, что требуется.

Мне также нужно взглянуть на добавление небольшого конденсатора параллельно с моим резистором 1 -мега -резистора (или какой -то другой маленькой настройкой), чтобы обрезать мой зонд и сгладить эту раздражающую кривую на переднем крае тестового сигнала 1 кГц.

Кажется, есть дрожание между двумя АЦП, которые, как я подозреваю, мы можем исключить, калибруя их.

Это довольно очевидно, когда вы смотрите на некоторые из образцов данных на плоском пятнах на форме волны.
#Time, ADC, Value 7722.84 1 1997 7723.92 2 2015 7725.01 1 1997 7726.09 2 2015 7727.17 1 2001 7728.26 2 2015 7729.34 1 1996 7730.42 2 2015 7731.51 1 1997

victor_pv
Чт 21 мая 2015 г., 16:22
Функция калибровки такова:

adc_calibrate (const adc_dev *dev)

Так что попробуйте добавить их в какой -то момент в начале эскиза, когда вывод импульса не происходит.
Я думаю, что код Libmaple запускает это при запуске, но не совсем уверен. В любом случае, если это не поможет, нам просто нужно его вывести:
adc_calibrate (adc1);
adc_calibrate (adc2);

Я предполагаю, что запуск калибровки во время продолжительного выхода ШИМ может повлиять на калибровку.

Мы можем установить 2 -канальный осциллограф довольно легко одинаково, только обеспечивая различный вход для каждого АЦП и изменяя некоторые биты в настройках двойного режима, поэтому оба захватывают одновременно. Это должно обеспечить почти 1 МГц на канал.

Еще один вариант для цифровых сигналов - сделать захват порта, а не ADC. Это может обеспечить 15 каналов в одном в io. Я считаю, что MAX может составлять около 50 МГц на цифровых входах с DMA, но ему нужно будет проверить.

Ахулл
Чт 21 мая 2015 г. 18:48
Я добавил линии калибровки АЦП, но, похоже, не имеет большого значения.

Изображение

Я изменил пару других вещей.

1) Я повторно разработал тестовый штифт, но сбросил его частоту, и это, похоже, вызывает гораздо меньше помех.
2) Сейчас я измеряю тестовый штифт на STM32, а не тестовый сигнал на моем реальном объеме (потому что он в офисе, а я дома : D )
Таким образом, имейте в виду, что, хотя шум, по -видимому, увеличился, это связано с тем, что они рассматривают сигнал 3V3, а не сигнал 5V.

Как и прежде, проблема становится очевидной, если мы посмотрим на данные.
#Time(uS), ADC Number, value 7734.36 1 2194 7735.44 2 2174 7736.52 1 2196 7737.61 2 2176 7738.69 1 2195 7739.77 2 2176 7740.85 1 2197 7741.93 2 2173 7743.02 1 2197 7744.10 2 2176 7745.18 1 2193

Ахулл
Чт 21 мая 2015 г., 19:33
victor_pv написал:Функция калибровки такова:

adc_calibrate (const adc_dev *dev)

Так что попробуйте добавить их в какой -то момент в начале эскиза, когда вывод импульса не происходит.
Я думаю, что код Libmaple запускает это при запуске, но не совсем уверен. В любом случае, если это не поможет, нам просто нужно его вывести:
adc_calibrate (adc1);
adc_calibrate (adc2);

Я предполагаю, что запуск калибровки во время продолжительного выхода ШИМ может повлиять на калибровку.

Ахулл
Чт 21 мая 2015 г., 8:10 вечера
Я сделал очевидное и усреднил ошибки.эн. Я построил среднее значение двух смежных значений ADC (i.эн. один из каждого АЦП), чтобы увидеть, какое влияние это будет иметь.. Результат ниже.

Изображение

Как видите, он имел эффект, который я ожидал, и удалил джиттер. Очевидно, что это не лучший способ устранить ошибку, поскольку два согласных с АДК были бы лучше, так как она сохранит нашу полосу пропускания (усреднение будет иметь эффект более низкой пропускной способности), но это показывает, какая остаточная ошибка остается, как только мы устраняем эту проблему. Моим метрическим калиброванным глазом я приглашаю оставшуюся ошибку, лежит где -то от 1% до 5% (до тех пор, пока мы не считаем, что Swew, предоставленная аттенюатором), что довольно респектабельно. Но мы можем добиться большего!

РЕДАКТИРОВАТЬ: Я действительно должен запустить свой аналоговый осциллограф и сравнить, но здесь опаздывает, так что это выглядит как задача на завтра.

victor_pv
Пт 22 мая 2015 г. 1:39
Видите ли вы, что ошибка постоянно от 15 до 20, независимо от того, находится ли она в верхней части волны или внизу?
Я думал, что ошибка была пропорциональной, что было бы сложнее приспособиться, но если это неизменно, мы могли бы попробовать просто добавить 18 из нижнего или вычитать 18 из самых высоких.

Что касается начала захвата, мы можем установить оба порта в непрерывном режиме и начать захват во время подпрограммы настройки, и просто запустить и остановить передачу DMA в память.

И на втором разъеме BNC... Ну, до вас, но вы можете поместить предупреждение перед публикацией картинки, чтобы любой обиделся ;) В противном случае я не думаю, что силиконовая свинья будет сильно заботиться о том, где вы просверлите дополнительную дыру, он может немного визжать... :ржу не могу:

Ахулл
Пт 22 мая 2015 г. 13:55
Если я графизу точки + половина разницы между этой точкой и последней (я.эн. Половина разницы между этим значением ADCX и значением другого АЦП) она выглядит довольно хорошо, это не оптимально, я подозреваю, что должен быть лучший способ сделать это.

Изображение
Красная линия - это график необработанных точек ADC, зеленый - это те же данные + половина разницы между этой точкой и последним.

Примечание. Различия между положительными и отрицательными в каждой точке, если вы пытались выяснить, почему они всегда добавляются.
я.эн. Я принимаю разницу между 45 и 50, чтобы быть +5, но разница между 50 и 45 --5

Я думаю, что различие должно быть взвешен на более чем 2 конверсии, в противном случае он окажет непропорциональное влияние на быстрые переходные процессы.
Кто -нибудь может подумать о лучшем способе сделать это?

Имейте в виду, что «разница» изменяется, это не фиксированная фигура, поэтому она может варьироваться по длине нашего буфера для образцов, предположительно, из -за отдельных источников ошибок в обоих ADC

Вот более близкий обзор ошибки
Изображение

Mrburnette
Пт 22 мая 2015 г., 14:50
Я думаю, что различие должно быть взвешен на более чем 2 конверсии, в противном случае он окажет непропорциональное влияние на быстрые переходные процессы.
Кто -нибудь может подумать о лучшем способе сделать это?
Просто мое мнение, «фактор сглаживания» должен быть пользователем программируемым... то есть кнопка, удерживаемая во время питания. И это будет написано для вспышки. Затем во время обычной загрузки, если кнопка настройки не низкая при запуске, вспышка читается для конфигурации.

Таким образом, когда вы попадаете в мягкие настройки, меню можно легко расширить, и процедура может быть управляемой меню численно.


Луча

Ахулл
Пт 22 мая 2015 г. 15:39
@Ray, мне нравится идея сохранить семя для коррекционного коэффициента и других параметров установки во Flash. Мне нужно было посмотреть, будет ли этот параметр последовательным по сравнению с перезагрузками. Вместо этого может потребоваться выполнить калибровочный запуск при запуске.

Еще одна вещь, которую нужно отметить. Этот раздражающий сбой на предыдущих графиках - перекрестный стол из моего тестового штифта. Если я включите его, я увижу сбой. Выключите его... ушел.... Мне нужно найти лучшую булавку для этого.

victor_pv
Пт 22 мая 2015 г., 19:31
Мы также могли бы использовать подпрограмму калибровки, которая просит пользователя подключить порт к 0 В, вычислить смещение между обоими, затем подключите к 3.3, рассчитайте смещение между ними, затем используйте эти смещения, чтобы перенастроить образцы.

Ахулл
Пт 22 мая 2015 г., 20:17
victor_pv написал:Мы также могли бы использовать подпрограмму калибровки, которая просит пользователя подключить порт к 0 В, вычислить смещение между обоими, затем подключите к 3.3, рассчитайте смещение между ними, затем используйте эти смещения, чтобы перенастроить образцы.

victor_pv
Пт 22 мая 2015 г. 11:38
Я понял из какого -то документа, мы можем подражать периферическому вводу, установив вывод в качестве вывода и написания на него. Я не помню, прочитал ли я это в таблице или где. То есть у меня появилась идея, что мы могли бы заставить один из контактов USB в качестве выходного сигнала, чтобы заставить USB -реэналирование.
USB -периферийное устройство немного отличается от остальных от того, что я видел в таблице данных, но я думаю, что стоит протестировать что -то подобное в АЦП.

Я сделаю это, если у меня будет мгновение спустя, я хочу сначала протестировать RTC RTC.

victor_pv
Сб 23 мая 2015 г., 3:52
Энди,

Я работал некоторыми оптимизациями в ЖК -библиотеке. Это все еще не самый лучший, но гораздо быстрее, чем раньше, когда речь заходит о рисовании полученных данных.
Загрузите ZIP прикреплено и используйте это. Требуется последняя библиотека SPI от репо Роджера.
Adafruit_ili9341_stm.молния
(6.41 киб) скачано 125 раз

Ахулл
Солнце 24 мая 2015 г., 21:47
Виктор, это кажется моему метрическому калиброванному глазу, чтобы немного ускорить ситуацию. Спасибо.

Кстати, я добавил функциональность часов в реальном времени в область. Смотрите страницу библиотеки RTC для получения более подробной информации.

Изображение

Если вы хотите установить часы с хоста Linux, следующий один из одной линии должен на трюке (при условии, что ваш серийный порт включен /dev /ttyacm3, он подходит для вашего пользователя, а последовательный монитор еще не работает на нем ).
NOWTIME="timestamp $(date --date "+1hour1seconds" +"%s")";echo -e "$NOWTIME\r" >/dev/ttyACM3

victor_pv
Солнце 24 мая 2015 г. 11:02
Хорошо, мне нужно попробовать это с RTC.

Я немного почистил код для библиотек, поэтому они не печатают артефакты, если эскиз пытается вывести линию из диапазона.
Вы увидите это как некоторые бездомные зеленые точки в зависимости от входной волны, особенно с шумом (просто наносит на нее палец).

Вы можете скачать последнюю версию отсюда:
https: // github.com/vicopropv/arduino_stm ... Li9341_stm

Я послал притяжение к Роджеру, так что он должен быть обновлен в его репо в ближайшее время, так как предыдущий больше не компилируется после обновления библиотеки SPI.

Mrburnette
Пн 25 мая 2015 г., 2:39
Самая прекрасная часть этого заключается в том, что вы используете Pix Of O'Scope в работе, чтобы показать возможности и проблемы.

Работа хорошо сделана... Это должно быть обязательной сборкой для любого серьезного Tinkerer, который не имеет доступа к объему. Это был бы отличный проект PSOC 4200 из -за «свободной» аналоговой подсистемы и аналогового MUX + Opamp. К вашему сведению, Только 4 доллара http: // www.кипарис.ком/?Rid = 92146
(Даже не учитывайте 4100)


Луча

Ахулл
Пн 25 мая 2015 г. 14:47
Рэй, это выглядит довольно интересной частью. Мне, возможно, придется играть с одним из тех.

Ахулл
Пн 25 мая 2015 г., 14:50
За то, что это стоит, я пропустил код на мою «уродливую доску» (ниже), чтобы сравнить.

Изображение

Следующее изображение - выход из этой «области», с PB0, перемещенным в PB1 (I.эн. Проверьте, чтобы аналог без тестового зонда). Я обещаю, что не подделал это... Похоже, квадратная квадратная волна, которую я когда -либо видел.

Изображение

Таким образом, с небольшой работой над зондом, мы должны получить довольно чистые результаты, если мы можем снизить помехи и размышления.

Mrburnette
Пн 25 мая 2015 г. 15:04
Я обещаю, что не подделал это... Похоже, квадратная квадратная волна, которую я когда -либо видел. Хе -хе -хе.... и все за 10 долларов. Очень хорошо. (Свинья, дополнительная, батареи не включены!)


Луча
Flyingscope.jpg
Flyingscope.JPG (12.7 киб) просмотрено 2453 раза

Mrburnette
Пн 25 мая 2015 г. 15:07
Ахулл написал:Рэй, это выглядит довольно интересной частью. Мне, возможно, придется играть с одним из тех.

Рик Кимбалл
Пн 25 мая 2015 г., 16:06
Как у вас есть время для материала STM32, если вам это нравится?

Ахулл
Пн 25 мая 2015 г., 17:02
Mrburnette написал: Я обещаю, что не подделал это... Похоже, квадратная квадратная волна, которую я когда -либо видел.

victor_pv
Пн 25 мая 2015 г., 17:34
Ахулл написал:За то, что это стоит, я пропустил код на мою «уродливую доску» (ниже), чтобы сравнить.

Изображение

Следующее изображение - выход из этой «области», с PB0, перемещенным в PB1 (I.эн. Проверьте, чтобы аналог без тестового зонда). Я обещаю, что не подделал это... Похоже, квадратная квадратная волна, которую я когда -либо видел.

Изображение

Таким образом, с небольшой работой над зондом, мы должны получить довольно чистые результаты, если мы можем снизить помехи и размышления.

Ахулл
Пн 25 мая 2015 г., 19:03
Да, это использует оба ADC - есть некоторая разница в чтениях, они не просто устроены в рамках 0V и 3V3 A, я подозревал, вот близкий взгляд на некоторые данные.

Изображение

Как вы можете видеть, два АЦП соглашаются в очень близком районе в этом образце, 8 частей в 4096 или около 0.195%, что, если это типично, довольно впечатляет.
Изменить: поместить это в контекст, для наших 3.3V сигнал, который мы измеряем к чему-то около +/- 0.0064 V или 6.5 мВ. все это без какого -либо дополнительного усилителя или буфера. Недостаточно хорош для ЭЭГ, который требует около 0.Возможно, разрешение 5uv, но все же очень полезное точность.

victor_pv
Вторник 26 мая 2015 г. 12:43
Мне очень нравится, что есть несколько образцов подряд с одинаковым значением, то есть оба АЦП читают одинаково для нескольких образцов подряд. Возможно, большая часть оставшегося шума находится только из платы и регулирования напряжения больше, чем от дисперсии в АЦП. Тем не менее, я думаю, что уровень шума - это то, с чем я могу жить.

Я отделил код настройки ADC от подпрограммы Tawsample, но не продвигал его, и был до того, как вы добавили код RTC.
Я постараюсь загрузить ваш последний, снова перенесите настройку ADC в новую рутину, а затем нажмите сразу, прежде чем добавить новую функцию ;)

Я думал о том, чтобы превратить это в эскиз COOS или Freertos, в основном для демонстрационных целей о том, что могут сделать RTO, и получить больше опыта с ними. Я думаю, что COOS приводит к действительно маленькому следам вспышки и оперативной памяти и делает координационные задачи довольно простыми, но не уверен, что PigScope извлечет выгоду из этого. Вы думали о добавлении любой новой функциональности, которая может извлечь выгоду из RTOS?

Кстати, уродливая плата делает отличный осциллограф с низким шумом, если ничего другого...

Докедисон
Вторник 26 мая 2015 г. 6:16
Все, что я видел здесь, в этой теме, это блестящая тяжелая работа...
Но здесь может использоваться последователь напряжения..
Я вижу из волны формирует эффекты двухсторонней печатной платы и комбинацию несоответствия импеданса между зондом и входом АЦП..
«Быстрое» последователь напряжения, используемый в качестве интерфейса между входом АЦП и зондом, будет иметь большое значение для облегчения ?Некоторые из совершенно очевидных отсутствия высокочастотной характеристики или округлых ведущих краев обоих входов..
Я отремонтировал все испытательное оборудование на моей последней работе (в отставке в 2008 году), а O'Scopes были моими «другой» правой рукой..
Я вижу несоответствие на входе АЦП. Ввод вклад с помощью буфера усиления Unity или быстрого оператора..
Поскольку выходной импеданс буфера или последователя напряжения обычно составляет менее 100 Ом, а входной импеданс ограничен скоростью отбора проб АЦП.
Просто мой $.02 Стоит..
Приятно, что есть отдельный форум для этого самого удивительного/удара для доски (я)...

Док

Ахулл
Вторник 26 мая 2015 г. 9:57 утра
Виктор, я не собираюсь добавлять что -то еще в данный момент в данный момент. Моя следующая цель - прояснить отображение формы волны. Код, как он находится в настоящее время, немного неопрятный, поэтому я тоже могу почистить вещи. Но все это может подождать, пока вы не объедините свои изменения.

Ахулл
Вторник 26 мая 2015 г. 10:09
Док, последователь напряжения или какой -то буфер был бы очень хорошей идеей. Сфера начала жизнь как что -то вроде того, что если... Поэтому я пытался понять, как далеко мы могли бы продвигать вещи с небольшим или без дополнительных компонентов.

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

Активный подход зонда может быть единственным вариантом, но добавляет слой сложности и стоимости. Интересно, какой будет самый простой и дешевый способ сделать это, учитывая нашу низкую цену с низкой целью материалов. Активный зонд также позволит нам добавить некоторый уровень защиты ввода, но, как я уже говорил в предыдущем посте, взорвать UC и/или ADC было бы грустным, но они стоят всего пару фунтов, так что не конец мир. Защита ввода может быть просто пара Зеннерс и Пикуфуз или толпа. Но снова я не задумался. Любая защита между входом, вероятно, будет иметь влияние на частотную характеристику, особенно в свете отсутствия буферизации.

Вне по теме я знаю Док, но вы не знаете, где я мог бы найти детали для старой области Metrix Ox 2000, вы. У меня есть автомобиль из одного в моем гараже, она выглядит как долгосрочный проект, так как в нем отсутствует б.е., аналоговая входная карта и плата водителя КТР. Более здравый человек, чем я, без сомнения, просто положил его в мусорное ведро. : D

Mrburnette
Вторник 26 мая 2015 г., 11:59
Рик Кимбалл написал:Как у вас есть время для материала STM32, если вам это нравится?

victor_pv
Вторник 26 мая 2015 г. 14:57
Энди, я скачаю вашу последнюю версию позже и отделю настройку АЦП от захвата и нажмите обновление.
После этого я постараюсь адаптировать его к COOS, но я буду сохранять имена функций, поэтому, если вы внесете изменения в функцию, прежде чем я нажму это, все, что нам нужно сделать, это скопировать эту функцию прямо.

Ахулл
Вторник 26 мая 2015 г. 15:24
victor_pv написал:Энди, я скачаю вашу последнюю версию позже и отделю настройку АЦП от захвата и нажмите обновление.
После этого я постараюсь адаптировать его к COOS, но я буду сохранять имена функций, поэтому, если вы внесете изменения в функцию, прежде чем я нажму это, все, что нам нужно сделать, это скопировать эту функцию прямо.

victor_pv
Ср 27 мая 2015 г. 12:42
Я пытался собрать последнюю версию, которая включает в себя часть RTC, и я получаю ошибки, указывающие на то, что GMTime и Mktime не объявляются в этой области:
«GMTime» не был объявлен в этом объеме

Я не вижу ни одного из них в библиотеке Павла, откуда они должны прийти?

Rogerclark
Ср 27 мая 2015 г. 12:51
#include void setup() { // put your setup code here, to run once: const time_t* t; gmtime(t); }

victor_pv
Ср 27 мая 2015 г. 1:39
Rogerclark написал:#include void setup() { // put your setup code here, to run once: const time_t* t; gmtime(t); }

Rogerclark
Ср 27 мая 2015 г., 1:47
ммм
это должно быть включено RTClock

Mrburnette
Ср 27 мая 2015 г., 11:42
... Но когда я пытаюсь использовать библиотеку RTC, она не говорит о том, что она не объявлена ​​в этой области: Такой каламбур! ;)

У меня такая же проблема... вчера только не хватило времени, чтобы опубликовать об этом. Список дел жены мешает моей игре.

Луча

victor_pv
Ср 27 мая 2015 г. 12:31
:ржу не могу: не думал об этом, пока вы не упомянули

victor_pv
Ср 27 мая 2015 г., 14:51
Рей любая идея о том, почему это происходит до сих пор?
Я использую версию 1.6.0 из Arduino IDE.
Вчера я проверил установку GCC 4.9.0 15q1, и все еще получал те же ошибки.

Mrburnette
Ср 27 мая 2015 г. 15:08
victor_pv написал:Рей любая идея о том, почему это происходит до сих пор?
Я использую версию 1.6.0 из Arduino IDE.
Вчера я проверил установку GCC 4.9.0 15q1, и все еще получал те же ошибки.

victor_pv
Ср 27 мая 2015 г. 15:58
Я собираюсь попробовать 1.6.0 в чистом компьютере, на котором он никогда не установил, затем скачайте Master Repo Роджера, а затем попробуйте еще раз...

victor_pv
Ср 27 мая 2015 г. 18:25
Энди, ты можешь собрать последний толчок, который я отправил, и проверить его? Я проверил разделение настройки АЦП и захват DMA до того, как вы добавили в нее RTC, поэтому я ожидаю, что она будет работать нормально, но я не могу проверить прямо сейчас из -за ошибок RTC.

Ахулл
Ср 27 мая 2015 г., 19:15
Да, компилируется для меня. Однако со следующими предостережениями.
Я могу использовать другую версию библиотек ILI9341. Мне нужно проверить, как только вернусь из супермаркета. Multiple libraries were found for "Adafruit_ILI9341_STM.h" Used: /home/ahull/Arduino/libraries/Adafruit_ILI9341_STM Not used: /home/ahull/PersonalApps/Arduino.cc/beta/arduino-nightly/hardware/Arduino_STM32/STM32F1/libraries/Adafruit_ILI9341_STM Multiple libraries were found for "Adafruit_GFX_AS.h" Used: /home/ahull/Arduino/libraries/Adafruit_GFX_AS Not used: /home/ahull/PersonalApps/Arduino.cc/beta/arduino-nightly/hardware/Arduino_STM32/STM32F1/libraries/Adafruit_GFX_AS

victor_pv
Ср 27 мая 2015 г., 8:22 вечера
Я получаю те же ошибки с GMTime и MKTime при чистой установке Arduino IDE 1.6.0 и последнее репо.

Энди, какая версия IDE вы используете?

victor_pv
Ср 27 мая 2015 г. 20:46
Рэй, я нашел проблему.
Библиотека времени Пола, называемое временем (с прописным T), кажется, взята на время.H из стандартной библиотеки.
Я собираюсь компилировать, переименуя библиотеку Пола до времени1.CPP и Time1.час.

Понятия не имею, зависит ли это для Arduino IDE, или, скорее, для GCC для Windows, или это зависит от того, какой заказ GCC загружает каждый файл заголовка.

Mrburnette
Ср 27 мая 2015 г., 11:25
... Ну, это объясняет! Спасибо за то, что рассказали об этом, я был занят сегодня без полет.

Луча

Rogerclark
Ср 27 мая 2015 г. 11:27
Ах

Это случай в отношении чувствительности в Windows, e.глин. Время.h == время.H, который является внутренним заголовком в компиляторе ??

Я подозреваю, что лучше не называть свои собственные файлы время.H или время.CPP просто чтобы быть в безопасности

victor_pv
Чт 28 мая 2015 г. 12:08
Кажется, что это.

Рэй использует Arduino 1.7.3 из "других", пока я использую 1.6.0, и я также попробовал GCC 4.9 с теми же результатами. Таким образом, проблема, по -видимому, заключается в том, что Windows по какой -либо причине не заботится об этом случае, хотя с другими библиотеками я обнаружил, что мне нужно соответствовать делу, иначе он не найдет файлы... Перейти к фигуре...

victor_pv
Чт 28 мая 2015 г., 3:06 утра
Ахулл написал:Да, компилируется для меня...

Ахулл
Чт 28 мая 2015 г., 7:37 утра
Я поместил его в ~/arduino/библиотеки/время, однако я не копировал библиотеку .папка Zip, я клонировал git Repo... url = https: // github.com/paulstoffregen/время.git

Ахулл
Чт 28 мая 2015 г., 13:27
O-Swilloscope! : D

Изображение

Идея (с) 2015 Найл Чепмен... все права защищены. Ценность бекона может расти, а также вниз. У вас чувство юмора может подвергаться риску, если вы не будете продолжать платежи... и т. д.

Mrburnette
Чт 28 мая 2015 г. 14:21
Со всеми основными подпрограммами в дизайне вы также можете использовать одну из линий ввода -вывода для переключения между «областью применения» и режимом «вольтметра»... В последнем режиме MR. Свины были бы свинью-o-meter вместо свиней... правильно известный как POM и SOS на маркировке. Если вы расширяете концепцию вольтметра, чтобы иметь внутренний шунт, то амперметр можно назвать беконом-o-метром (Bak 'en Omm Mi Tor). В электронном сленге проверка напряжения, тока или формы волны, вероятно, может развиваться до того, что они были в курсе схемы."

Луча

Ахулл
Чт 28 мая 2015 г. 15:06
Мне нравится твой стиль..

victor_pv
Пт 29 мая 2015 г. 14:43
Маленькое обновление, я протестировал свиньи на плате RCT6 и отлично работает. Я протестировал его с последними коммитами в репо, с 2 библиотеками ILI9341, одна с DMA (_STM), а одна - без. Отлично работает с обоими.

Я заметил, что, если эскиз ждет уровня триггера, чтобы захватить следующую партию образцов, он, кажется, сохраняется в этом цикле навсегда, пока не запустит, и тем временем не будет отвечать на какие -либо другие последовательные команды.

Как только произойдет событие триггера, оно идет и отвечает на все команды, которые были отправлены в то время. Я не проверял код раздела триггера, чтобы понять, почему это, я считаю, не зависит от платы, но я не заметил этого раньше.

Кстати, я еще не начал переворачивать его в RTOS, если вам нужно вносить изменения в репо, и я скачиваю снова, прежде чем начать с RTOS.

Ахулл
Пт 29 мая 2015 г., 16:29
Запуск очень грубый. Я подозреваю, что нам нужно перепроектировать запуск, чтобы воспользоваться нашими двойными АДС и DMA. У меня есть гости, оставшиеся в эти выходные, но я посмотрю на любые недавние изменения, когда, если я получу время сегодня вечером.

Если мы сможем сделать запуск более надежным, мы могли бы рассмотреть схемы усреднения по нескольким триггерам, чтобы получить лучшее разрешение (хотя для этого потребуется больше ОЗУ или меньше образцов на событие и может быть не практичным на платах STM32F103C8XX). Есть несколько хитростей, которые также позволяют увеличить пропускную способность, усредняя, ​​так что мы могли бы теоретически уметь вырвать еще несколько мегазам/с из нашего короткого сигнала с небольшим количеством дыма и зеркал. Последовательный запуск является ключом к этим идеям, хотя.

Этот может сделать интересное чтение.

Ахулл
Пт, 05 июня 2015 12:02
Я подключил сенсорный экран, и благодаря некоторым хорошим советам от Матиаса у меня теперь есть несколько рудиментарных приостановленных свиносец.
Изменения, подталкиваемые к GIT для тех, кто хочет присоединиться к партии.

victor_pv
Пт, 05 июня 2015 2:48
Ахулл написал:Я подключил сенсорный экран, и благодаря некоторым хорошим советам от Матиаса у меня теперь есть несколько рудиментарных приостановленных свиносец.
Изменения, подталкиваемые к GIT для тех, кто хочет присоединиться к партии.

Рик Кимбалл
Пт, 05 июня 2015 г., 2:52
Ахулл написал:Я подключил сенсорный экран, и благодаря некоторым хорошим советам от Матиаса у меня теперь есть несколько рудиментарных приостановленных свиносец.
Изменения, подталкиваемые к GIT для тех, кто хочет присоединиться к партии.

Ахулл
Пт, 05 июня 2015 г. 8:27 утра
Рик Кимбалл написал:Ахулл написал:Я подключил сенсорный экран, и благодаря некоторым хорошим советам от Матиаса у меня теперь есть несколько рудиментарных приостановленных свиносец.
Изменения, подталкиваемые к GIT для тех, кто хочет присоединиться к партии.

Rogerclark
Пт, 05 июня 2015 г. 8:56 утра
Ну, VS1003 Lib Works играет в mp3 для меня

Мне просто нужно найти oink.mp3

Ахулл
Пт, 05 июня 2015 г., 9:10
Rogerclark написал:Ну, VS1003 Lib Works играет в mp3 для меня

Мне просто нужно найти oink.mp3

Ахулл
Сб, 06 июня 2015 г. 22:06
Я думаю о переписывании кода PigScope, чтобы использовать библиотеки UTFT и UTOUCH, у кого -то есть какие -либо мысли об этом, прежде чем я уйду по этому пути? Скорее всего, UTFT будет медленнее или быстрее, чем библиотека Adafruit, например,?

Rogerclark
SAT 06 июня 2015 г., 22:13
Энди

Вы собираетесь использовать тот же дисплей ?

кстати.Какой дисплей вы сейчас используете ?

Я подозреваю, что параллельный дисплей с использованием UTFT будет намного лучше для областей (если вы используете SPI, скорость обновления будет немного низким, не будет ли это ?)

Пса. У меня есть параллельный показ, который я думал о попытке одной из моих больших досок
Bt, я полагаю, доски F103C будут изо всех сил пытаться иметь достаточно булавок,

Т.е. я думаю, что мой дисплей - 16 -битный адрес / данные, плюс 4 строки управления

Ахулл
Сб, 06 июня 2015 г., 22:38
Rogerclark написал:Энди

Вы собираетесь использовать тот же дисплей ?

Rogerclark
Сб, 06 июня 2015 г., 23:48
Энди

Хорошо о вашем дисплее. Да. Построить несколько моментов, вероятно, не будет намного быстрее на параллельном

Re: параллельно на серии C

У него тоже есть прикосновение, но я подозреваю, что не будет достаточно булавок для всего этого на C8 :-(

Глядя на мою красную доску таблеток, у нее нет всех 16 булавок на том же порте, разбитых (A или B), что повлияет на производительность, так как вам нужно разделить вещи, возможно, 8 бит на порту А и 8 на порту B, и если вам пришлось манипулировать индивидуальными битами и даже не делать банки по 8 бит, производительность, вероятно, окажется ниже, чем использование SPI :-(

Я думаю, что, возможно, параллельные дисплеи лучше всего подходят для больших плат серии R, V или Z

Jensep
Солнце 07 июня 2015 г., 19:26
Rogerclark написал:
Я думаю, что, возможно, параллельные дисплеи лучше всего подходят для больших плат серии R, V или Z

Ахулл
Солнце 07 июня 2015 г., 19:38
Я думаю, что у меня более или менее сглажены проблемы с сенсорным экраном. Мне все еще нужно написать свою собственную встроенную калибровочную процедуру, но теперь я понимаю гораздо больше о рутине уточ и самого контроллера. В результате я теперь получаю довольно хорошие, точные и быстрые результаты на сенсорном экране.

Изображение

Изображение

Если у меня сейчас нет ничего, что у меня есть собственный. : D
РЕДАКТИРОВАТЬ: Если вы хотите поиграть с этим в настоящее время, я вставил свои изменения в GitHub. Вам понадобится последовательный монитор IDE, который работает, чтобы использовать его в качестве retch-a-sketch, потому что он выплевывает координаты на серийную отладку при запуске, поэтому в конечном итоге он прекратит график, если серийный монитор не работает.

Для записи у меня в настоящее время есть эти значения калибровочных значений в моем utouchcd.H Но как только написана подпрограмма калибровки калибровки PigScop.
// PIGSCOPE AGAIN #define CAL_X 0x0388C10FUL #define CAL_X 0x004E0D7AUL #define CAL_S 0x000EF13FUL

victor_pv
Пн июня 08, 2015 12:34
И все еще менее 10 долларов :)

Mrburnette
Пн, 08 июня 2015 12:40
victor_pv написал:И все еще менее 10 долларов :)

Мадиас
Пн июня 08, 2015 8:36 утра
Приятно видеть, что все работает!
Но эй! Может быть, это рыночная ниша: DSO с функцией блокнота на экране! :)

Ахулл
Пт 26 июня 2015 г. 22:34
У меня не было много времени, чтобы играть с этим недавно, у меня были посетители, рабочие обязательства и пара неприятных приступов гриппа, но я все еще имел в виду несколько улучшений.

Первым является частотный анализ (FFT). Я собираюсь начать с чего -то в этом роде Если у кого -то нет лучшего предложения. «Численные рецепты в C», упомянутые на этой странице, доступны здесь.

Rogerclark
Пт 26 июня 2015 г., 11:00 вечера
Энди

У моей области Rigol есть несколько отличных функций измерения, которые, вероятно, было бы легче реализовать, чем FFT.

Я не могу вспомнить полный список, но он проводит частоту и измерения времени (при условии периодической формы волны) и измеряет время низкой или высокой части формы волны

Он также измеряет напряжение, VRM и пик до пика и т. Д

Я нахожу это довольно удобным

Вы также можете добавить курсоры, E.глин. Измерьте Delta T или Delta V и т. Д

Ахулл
Вт 21 июля 2015 г., 19:50
Хорошо.. Я намекал на это раньше, но, похоже, кто -то избил меня до изюминки...

http: // chackaday.com/2015/07/21/Fast-Adc-For-laser-lab/

Похоже, что с небольшим количеством дыма и зеркал мы могли бы получить около 48 МГц визжающей полосы пропускания свиньи (конечно, на повторяющихся сигналах) из нашего АЦП 1 МГц... Потенциально даже 72 МГц или даже выше, если вариант STM32 имеет ADC имеет три или более каналов.

Все, что мне нужно сейчас, это немного этого магического отсутствующего ингредиента .. Свободное время, чтобы возиться... Если кто -то еще не победит меня, конечно.

Даже если я/мы никогда не приступим к тому, чтобы попробовать это, была статья, и эта рецензия стоит прочитать.

Gdenton61
Пт 24 июля 2015 1:42
Привет, ребята,
Попытка скомпилировать эскиз с IDE 1.6.5 на win7, но он не работает - он говорит, что функции, вызванные из Setup () и Loop (), не были объявлены до их вызова.
Я могу обойти это, сначала объявив функции или перемещая setup () и loop () вниз, но, конечно, мне не нужно делать тоже.

Любые идеи?

Rogerclark
Пт 24 июля 2015 г. 2:04
Что вы получите, если попытаетесь скомпилировать пустой / по умолчанию эскиз по умолчанию с помощью просто setup () и loop ()

Gdenton61
Пт 24 июля 2015 г., 2:13
Комплекция завершается ОК.

Rogerclark
Пт 24 июля 2015 г. 2:46
ХОРОШО.

Я предполагаю, что вам нужно подождать, пока Энди (автор кода вернется к вам), он находится в Шотландии (Великобритания), где в настоящее время середина ночи

victor_pv
Пт 24 июля 2015 г., 2:57
Gdenton61 написал:Привет, ребята,
Попытка скомпилировать эскиз с IDE 1.6.5 на win7, но он не работает - он говорит, что функции, вызванные из Setup () и Loop (), не были объявлены до их вызова.
Я могу обойти это, сначала объявив функции или перемещая setup () и loop () вниз, но, конечно, мне не нужно делать тоже.

Любые идеи?

Rogerclark
Пт 24 июля 2015 г. 3:36
Я иногда кажется, что с IDE случаются какие -то странные вещи.

Я могу превратить себя в полный беспорядок и жаловаться на определения дублирования функций и т. Д

Вы пробовали покинуть IDE и повторно открыть этот набросок и попробовать снова.

Mrburnette
Пт 24 июля 2015 г. 11:48
Похоже, мы все были «здесь» раньше. Я обычно закрываю все сеансы IDE, удаляю временные файлы и перезагрузите. Некоторые авторы размещают функции выше Setup (), а некоторые авторы размещают функции после Loop (). Как правило, я вкладываю их в другую вкладку, просто не дайте ему имени расширения, и IDE вынуждает его к .INO, который затем становится добавленным (или, может быть, префикс) .Ино перед компиляцией.

В любом случае, кажется, что это просто одна из тех необъяснимых вещей, которые требуют ответа, но случается, когда нужно только чистое компиляция, а ответы на самом деле не так важны. Я бы не стал слишком ходить со странными вещами, которые делает IDE, я не думаю, что он когда-нибудь снова станет стабильным, слишком много кода.

луча

Gdenton61
Сб 25 июля 2015 г. 12:01
Я попытался удалить временные файлы, но все еще имел те же проблемы, переупорядочение функций провели меня, но теперь я застрял со следующими ошибками:

C: \ пользователи \ владелец \ Documents \ Electronics \ Arduino-1.6.5-r2 \ hardware \ arduino_stm32 \ stm32f1 \ libraries \ rtclock \ src \ rtclock.CPP: 88: 31: Ошибка: «Mktime» не была объявлена ​​в этой области
rtc_set_count (mktime (tm_ptr));

C: \ пользователи \ владелец \ Documents \ Electronics \ Arduino-1.6.5-r2 \ hardware \ arduino_stm32 \ stm32f1 \ libraries \ rtclock \ src \ rtclock.CPP: 98: 23: Ошибка: «GMTime» не была объявлена ​​в этой области
tm_ptr = gmtime (&res); // Почему бы не gmtime?

Rogerclark
Сб 25 июля 2015 г. 12:21
Я попробую скачать 1.6.5.R2 для Windows на случай, если команда IDE что -то сломает

Gdenton61
Сб 25 июля 2015 г. 12:50 утра
Спасибо за помощь, Роджер.
На данный момент я прокомментировал все, связанные с «времени», и он закончил компиляцию - теперь мне нужно подключить его и посмотреть, что произойдет.

РЕДАКТИРОВАТЬ - Забыл добавить, что эскиз был слишком большим для оперативной памяти с выбранным оригинальным загрузчиком, поэтому мне пришлось выбрать Bootloader 2.0, думаю, я попробую установить 2.0 завтра.

Ахулл
Сб 25 июля 2015 г. 8:26 утра
Gdenton61 написал:Спасибо за помощь, Роджер.
На данный момент я прокомментировал все, связанные с «времени», и он закончил компиляцию - теперь мне нужно подключить его и посмотреть, что произойдет.

РЕДАКТИРОВАТЬ - Забыл добавить, что эскиз был слишком большим для оперативной памяти с выбранным оригинальным загрузчиком, поэтому мне пришлось выбрать Bootloader 2.0, думаю, я попробую установить 2.0 завтра.

Rogerclark
Сб 25 июля 2015 г., 11:37
Энди,

Просто интересный.. Сколько шума вы видите на своем входе в АЦП, если он плавает ?

Я прикрепил свою область к PA1, когда он работал в качестве АЦП, и я вижу интересную форму волны.

У вас много шума, если измерение из источника с высоким импедансом ?


Спасибо

Роджер

Gdenton61
Сб 25 июля 2015 г. 12:56
Ахулл написал:Gdenton61 написал:Спасибо за помощь, Роджер.
На данный момент я прокомментировал все, связанные с «времени», и он закончил компиляцию - теперь мне нужно подключить его и посмотреть, что произойдет.

РЕДАКТИРОВАТЬ - Забыл добавить, что эскиз был слишком большим для оперативной памяти с выбранным оригинальным загрузчиком, поэтому мне пришлось выбрать Bootloader 2.0, думаю, я попробую установить 2.0 завтра.

Ахулл
Сб 25 июля 2015 г. 13:39
Я запускаю Linux, и моя папка библиотек находится в другом месте. (В моем случае библиотека времени установлена ​​в {home}/arduino/библиотеки/время)
Я клонировал либ... cd /home/ahull/Arduino/libraries git clone https://github.com/PaulStoffregen/Time.git

Gdenton61
Солнце 26 июля 2015 г., 17:15
Я выяснил, что вызывает мою первоначальную проблему (не нахождение функций после Setup () и Loop ()).
Мой дисплей не сенсорный экран, поэтому я прокомментировал "#define touch_screen_available".
Оказывается, у других людей была такая же проблема с другими эскизами, и я нашел следующие потоки, в которых обсуждаются это, и обходной путь (если вы добавите эту строку до самого начала, ошибка исчезает: «char foo;»);

http: // форум.Ардуино.CC/INDEX.PHP?Тема = 84412.0
http: // форум.Ардуино.CC/INDEX.PHP/Тема ... #msg9388861

Но я все еще получаю эти ошибки:
C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp: In member function 'void RTClock::setTime(tm*)': C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp:88:31: error: 'mktime' was not declared in this scope rtc_set_count(mktime (tm_ptr)); ^ C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp: In member function 'tm* RTClock::getTime(tm*)': C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp:98:23: error: 'gmtime' was not declared in this scope tm_ptr = gmtime(&res); ^

victor_pv
Солнце 26 июля 2015 г. 20:16
Gdenton61 написал:
Но я все еще получаю эти ошибки:
C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp: In member function 'void RTClock::setTime(tm*)': C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp:88:31: error: 'mktime' was not declared in this scope rtc_set_count(mktime (tm_ptr)); ^ C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp: In member function 'tm* RTClock::getTime(tm*)': C:\Users\Owner\Documents\Electronics\arduino-1.6.5\hardware\Arduino_STM32\STM32F1\libraries\RTClock\src\RTClock.cpp:98:23: error: 'gmtime' was not declared in this scope tm_ptr = gmtime(&res); ^

Gdenton61
Солнце 26 июля 2015 г., 21:12
Спасибо, Виктор - наконец -то успешно скомпилирован.

Но после того, как я загружаю эскиз, дисплей ничего не делает, светодиод платы начинается непрерывно мигает, как будто запускает.

Я знаю, что он правильно подключен, так как я могу загрузить эскиз GraphicStest, и это работает так, как и ожидалось.

victor_pv
Вт 28 июля 2015 г. 14:54
Gdenton61 написал:Спасибо, Виктор - наконец -то успешно скомпилирован.

Но после того, как я загружаю эскиз, дисплей ничего не делает, светодиод платы начинается непрерывно мигает, как будто запускает.

Я знаю, что он правильно подключен, так как я могу загрузить эскиз GraphicStest, и это работает так, как и ожидалось.

Ахулл
Вт 28 июля 2015 г., 19:36
victor_pv написал:Gdenton61 написал:Спасибо, Виктор - наконец -то успешно скомпилирован.

Но после того, как я загружаю эскиз, дисплей ничего не делает, светодиод платы начинается непрерывно мигает, как будто запускает.

Я знаю, что он правильно подключен, так как я могу загрузить эскиз GraphicStest, и это работает так, как и ожидалось.

Ахулл
Вторник 28 июля 2015 г., 19:42
Rogerclark написал:Энди,

Просто интересный.. Сколько шума вы видите на своем входе в АЦП, если он плавает ?

Я прикрепил свою область к PA1, когда он работал в качестве АЦП, и я вижу интересную форму волны.

У вас много шума, если измерение из источника с высоким импедансом ?


Спасибо

Роджер

Gdenton61
Пт 31 июля 2015 г. 1:17
Энди - я использую Maple Mini Poard.

Светодиод платы подключен к PB1, поэтому мне пришлось переучить пару булавок - и я ошибочно назначил test_wave_pin для PB2 - на PB2 нет таймера - так что он сбоялся на функции аналога - Doh!

Теперь дисплей InitS, и я вижу на нем тестовый сигнал.

Но теперь я должен выяснить, почему Showtime () и серийные команды не работают...

victor_pv
Пт 31 июля 2015 г. 5:22 утра
Gdenton61 написал:Энди - я использую Maple Mini Poard.

Светодиод платы подключен к PB1, поэтому мне пришлось переучить пару булавок - и я ошибочно назначил test_wave_pin для PB2 - на PB2 нет таймера - так что он сбоялся на функции аналога - Doh!

Теперь дисплей InitS, и я вижу на нем тестовый сигнал.

Но теперь я должен выяснить, почему Showtime () и серийные команды не работают...

Ахулл
Пт 31 июля 2015 г. 9:42 утра
Если у вашей платы нет установки RTC Crystal, один из эти Сделай свое дело. Я до сих пор установил 4 из них на разные доски, и они работают безупречно. Однако эти кристаллы довольно крошечные (2 мм х 6 мм не включают в себя вывод), поэтому вам может понадобиться увеличение, чтобы легко их увидеть (если только ваше зрение неплохо) и очень тонкий совет на вашем пайке.

Вы можете, очевидно, прокомментировать функции времени в коде, если они также вызывают проблемы. Прицел не полагается на них (пока) ни для чего, кроме дисплея часов.

darth_llamah
Пт 21 августа 2015 10:43
Привет
Извините, если мой вопрос n00bish, я новичок в C/c++.

Я пытаюсь скомпилировать свиньи-o-scope для клона Maple Mini с помощью Arduino 1.6.5:
-сенсорный экран не определяется, так как у моего TFT его нет
-Все библиотеки (за исключением уточ) на месте
-Библиотека времени переименована и включена правильно
-Board_led изменен на PB1
-Мне известно о втором экземпляре ADAFRIT_GFX_AS, но он не мешает (протестирован с использованием других проектов TFT)

Но все же я получил ошибку компиляции: STM32-O-Scope.ino: In function 'void setup()': STM32-O-Scope:258: error: 'setADCs' was not declared in this scope STM32-O-Scope:263: error: 'setCurrentTime' was not declared in this scope STM32-O-Scope:264: error: 'serialCurrentTime' was not declared in this scope STM32-O-Scope:265: error: 'sleepMode' was not declared in this scope STM32-O-Scope:271: error: 'toggleSerial' was not declared in this scope STM32-O-Scope:272: error: 'toggleHold' was not declared in this scope STM32-O-Scope:273: error: 'decreaseTimebase' was not declared in this scope STM32-O-Scope:274: error: 'increaseTimebase' was not declared in this scope STM32-O-Scope:275: error: 'decreaseZoomFactor' was not declared in this scope STM32-O-Scope:276: error: 'increaseZoomFactor' was not declared in this scope STM32-O-Scope:277: error: 'scrollRight' was not declared in this scope STM32-O-Scope:278: error: 'scrollLeft' was not declared in this scope STM32-O-Scope:279: error: 'incEdgeType' was not declared in this scope STM32-O-Scope:280: error: 'decreaseYposition' was not declared in this scope STM32-O-Scope:281: error: 'increaseYposition' was not declared in this scope STM32-O-Scope:282: error: 'toggleTestPulseOn' was not declared in this scope STM32-O-Scope:283: error: 'toggleTestPulseOff' was not declared in this scope STM32-O-Scope:285: error: 'unrecognized' was not declared in this scope STM32-O-Scope:307: error: 'timer_set_period' was not declared in this scope STM32-O-Scope:315: error: 'clearTFT' was not declared in this scope STM32-O-Scope:326: error: 'showCredits' was not declared in this scope STM32-O-Scope:327: error: 'showGraticule' was not declared in this scope STM32-O-Scope:332: error: 'showLabels' was not declared in this scope STM32-O-Scope.ino: In function 'void loop()': STM32-O-Scope:346: error: 'trigger' was not declared in this scope STM32-O-Scope:347: error: 'showGraticule' was not declared in this scope STM32-O-Scope:350: error: 'blinkLED' was not declared in this scope STM32-O-Scope:352: error: 'TFTSamples' was not declared in this scope STM32-O-Scope:353: error: 'showLabels' was not declared in this scope STM32-O-Scope:360: error: 'takeSamples' was not declared in this scope STM32-O-Scope:370: error: 'showTime' was not declared in this scope STM32-O-Scope.ino: In function 'void trigger()': STM32-O-Scope:440: error: 'triggerNegative' was not declared in this scope STM32-O-Scope:443: error: 'triggerPositive' was not declared in this scope STM32-O-Scope:446: error: 'triggerBoth' was not declared in this scope STM32-O-Scope.ino: In function 'void takeSamples()': STM32-O-Scope:519: error: 'DMA1_CH1_Event' was not declared in this scope STM32-O-Scope:521: error: 'adc_dma_enable' was not declared in this scope STM32-O-Scope.ino: In function 'void decreaseTimebase()': STM32-O-Scope:681: error: 'clearTrace' was not declared in this scope STM32-O-Scope:694: error: 'showTrace' was not declared in this scope STM32-O-Scope.ino: In function 'void increaseTimebase()': STM32-O-Scope:701: error: 'clearTrace' was not declared in this scope STM32-O-Scope:708: error: 'showTrace' was not declared in this scope STM32-O-Scope.ino: In function 'void increaseZoomFactor()': STM32-O-Scope:714: error: 'clearTrace' was not declared in this scope STM32-O-Scope:718: error: 'showTrace' was not declared in this scope STM32-O-Scope.ino: In function 'void decreaseZoomFactor()': STM32-O-Scope:725: error: 'clearTrace' was not declared in this scope STM32-O-Scope:729: error: 'showTrace' was not declared in this scope STM32-O-Scope.ino: In function 'void setCurrentTime()': STM32-O-Scope:853: error: 'serialCurrentTime' was not declared in this scope Multiple libraries were found for "Adafruit_GFX_AS.h" Used: C:\Users\Matus\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\Adafruit_GFX_AS Not used: C:\Users\Matus\Documents\Arduino\libraries\Adafruit_GFX_AS-2 'setADCs' was not declared in this scope

Ахулл
Пт 21 августа 2015 г., 11:08
Интересный... Я не уверен, действительно ли я проверил эти IFDEF для сенсорного экрана. Я буду играть с этим позже.
Скомпилируется ли он, если вы захватите LIB и установите его и оставите #Define touch_screen_available как есть?

darth_llamah
Пт 21 августа 2015 г., 11:27
Ахулл написал:Скомпилируется ли он, если вы захватите LIB и установите его и оставите #Define touch_screen_available как есть?

Rogerclark
Пт 21 августа 2015 г. 11:50
Старый / оригинальный загрузчик дает вам 17 тыс., Новый загрузчик дает всю оперативную память в устройстве

Легкий тест - это просто переключить загрузчик в меню и перекомпилировать

Mrburnette
Пт 21 августа 2015 12:20
Rogerclark написал:Старый / оригинальный загрузчик дает вам 17 тыс., Новый загрузчик дает всю оперативную память в устройстве

Легкий тест - это просто переключить загрузчик в меню и перекомпилировать

darth_llamah
Пт 21 августа 2015 12:33
Rogerclark написал:Старый / оригинальный загрузчик дает вам 17 тыс., Новый загрузчик дает всю оперативную память в устройстве

Легкий тест - это просто переключить загрузчик в меню и перекомпилировать

Ахулл
Пт 21 августа 2015 13:44
Вы также можете уменьшить размер буфера. // Samples - depends on available RAM 6K is about the limit on an STM32F103C8T6 // Bear in mind that the ILI9341 display is only able to display 240x320 pixels, at any time but we can output far more to the serial port, we effectively only show a window on our samples on the TFT. # define maxSamples 1024*6

darth_llamah
Пт 21 августа 2015 г. 14:18
Ахулл написал:Вы также можете уменьшить размер буфера.

Rogerclark
Пт 21 августа 2015 г., 21:01
Подсветка не связана с процессором, обычно подключенной к VCC.

Так что, если его вообще не зажжены, вы не неправильно подключили его или дефектные

victor_pv
Пт 21 августа 2015 г., 23:46
darth_llamah написал:Ахулл написал:Вы также можете уменьшить размер буфера.

darth_llamah
Сб 22 августа 2015 г. 8:55 утра
victor_pv написал:darth_llamah написал:Ахулл написал:Вы также можете уменьшить размер буфера.

Mrburnette
Сб 22 августа 2015 г. 13:25
darth_llamah написал: TFT наверняка не дефектная, проводка кажется в порядке.
Но я не уверен, что получен .HEX хорош- нет вывода на test_wave_pin, и плата не перечислена в виде последовательного порта.
Я снова проверю все с помощью немодифицированного эскиза

Rogerclark
Сб 22 августа 2015 г., 21:34
Я полностью согласен с подходом модульного тестирования, который описал Рэй.

Мне часто приходится возвращаться к демо -чему LCD, чтобы подтвердить, что соединения верны, прежде чем я перехожу к настоящему, думаю, что я хочу сделать.

Mrburnette
Вторник 25 августа 2015 г. 14:55
Rogerclark написал:Я полностью согласен с подходом модульного тестирования, который описал Рэй.
Мне часто приходится возвращаться к демо -чему LCD, чтобы подтвердить, что соединения верны, прежде чем я перехожу к настоящему, думаю, что я хочу сделать.

Zoomx
Чт 10 сентября 2015 г. 10:02 утра
Наконец я строю этот проект с TFT TJCTM24024-SPI.

Проблемы столкнулись:
Если у вас есть библиотека ADAFRIT_GFX_AS в папке библиотеки, вы найдете проблемы, описанные здесь
ViewTopic.PHP?f = 14&t = 562
Решение состояло в том, чтобы переместить эту библиотеку и библиотеку ADAFRIT_ILI9341_STM в папке Sketch и изменить все ссылки на .h Всего .Файлы CPP.
Время.H Библиотека должна быть переименована в других.

Светодиодный штифт TFT кажется, что он не работает в PA3 PIN -коде (но плата STM берет питание от Stlink, я забыл USB -кабель), я использовал 3.3V PIN.
Кажется, что координаты прикосновения вращаются на 180 градусов, возможно, это написано на некоторых страницах здесь, но я считаю, что решение простое.

Примечание.
STLINK не смог найти чип, пока я не использовал утилиту STM32 ST-Link, затем при настройке выбранного «подключиться к сбросу» (режим), затем после подключения было зафиксировано чип. После этого IDE смог запрограммировать чип. Я просто не помню, как был набросок в чипе.

Rogerclark
Чт 10 сентября 2015 г. 20:57
Пинаты SWD (Stlink) обычно устанавливаются в режим GPIO, если вы загружаете через загрузчик и т. Д.

Я думаю, что только загрузки Stlink оставляют штифты SWD в своем режиме SWD.

Ахулл
Пт 11 сентября 2015 г. 15:39
Это трудно найти компонент для Свинька теперь доступна на Али.

Доступно, это может показаться на двух разных размерах и двух новых цветах. А Традиционалисты могут предпочесть это в сером.

Оригинал (и лучший?) версия на несколько центов дороже...

Оинк, Оинк... наслаждаться.. : D

Martinayotte
Сб 12 сентября 2015 г., 3:26
Ахулл написал:Оинк, Оинк... наслаждаться.. : D

Ахулл
Сб 12 сентября 2015 г. 13:03
Martinayotte написал:Ахулл написал:Оинк, Оинк... наслаждаться.. : D

Martinayotte
Сб 12 сентября 2015 г. 13:12
:ржу не могу: :ржу не могу: :ржу не могу:

victor_pv
Сб 12 сентября 2015 г., 19:04
Ахулл написал:Это трудно найти компонент для Свинька теперь доступна на Али.

Доступно, это может показаться на двух разных размерах и двух новых цветах. А Традиционалисты могут предпочесть это в сером.

Оригинал (и лучший?) версия на несколько центов дороже...

Оинк, Оинк... наслаждаться.. : D

Martinayotte
Сб 12 сентября 2015 г., 22:52
victor_pv написал: Я все еще пытаюсь расшифровать описание по последней ссылке, что у свиньи могут быть некоторые секретные особенности...
"Новое прибытие интерактивное мини-муседино свиней свиней для щенка для латекса произношения для латекса игрушки STT-0031"

victor_pv
Сб 12 сентября 2015 г. 22:55
Martinayotte написал:victor_pv написал: Я все еще пытаюсь расшифровать описание по последней ссылке, что у свиньи могут быть некоторые секретные особенности...
"Новое прибытие интерактивное мини-муседино свиней свиней для щенка для латекса произношения для латекса игрушки STT-0031"

Mrburnette
Солнце 13 сентября 2015 г. 1:11
"Новое прибытие интерактивное мини-муседино свиней свиней для щенка для латекса произношения для латекса игрушки STT-0031" Я не знаю, что это значит, но я хочу один!

Луча

Daybyter
Пт 09 октября 2015 г. 9:29 утра
Я узнал, что вы можете разгонять эти маленькие доски до 128 МГц. Это тоже даст вам большую пропускную способность ADC? Создание прицела 2 МГц 3.5 МГц?

Mrburnette
Пт 09 октября 2015 г. 11:55 утра
Daybyter написал:Я узнал, что вы можете разгонять эти маленькие доски до 128 МГц. Это тоже даст вам большую пропускную способность ADC? Создание прицела 2 МГц 3.5 МГц?

Ахулл
Сб 10 октября 2015 12:48
Daybyter написал:Я узнал, что вы можете разгонять эти маленькие доски до 128 МГц. Это тоже даст вам большую пропускную способность ADC? Создание прицела 2 МГц 3.5 МГц?

Daybyter
Вт 13 октября 2015 г., 21:30
Любой, кто использует эскиз без сенсорного экрана? Когда я выхожу на доход.

Ахулл
Вт 13 октября 2015 г. 22:20
Daybyter написал:Любой, кто использует эскиз без сенсорного экрана? Когда я выхожу на доход.

Daybyter
Вторник 13 октября 2015 г. 11:37
Хорошо. Без проблем.

В Showgraticue этот код:
for (uint16_t TicksX = 1; TicksX < 10; TicksX++) { for (uint16_t TicksY = 1; TicksY < 10; TicksY++) { TFT.drawPixel( TicksX * (myHeight / 10), TicksY * (myWidth / 10), GRATICULE_COLOUR); } }

Mrburnette
Вт 13 октября 2015 г., 11:44
Daybyter написал: <...>
В то же время я посмотрел через код и подумал, что он может быть упрощен/оптимизирован?

Daybyter
Ср 14 октября 2015 г. 3:29
Спасибо за добро пожаловать.

К сожалению, у меня также есть слишком много кода, чтобы поддерживать.

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

darth_llamah
Ср 14 октября 2015 г. 10:07
Daybyter написал:Любой, кто использует эскиз без сенсорного экрана? Когда я выхожу на доход.

Daybyter
Ср 14 октября 2015 г., 21:12
И я также смешал ширину и высоту в своем примере... : oops:

Исправлено уже в моем коде.

Сегодня я получил одну из этих очень дешевых клавиатур Arduino

http: // www.eBay.com/itm/10pcs-4x3-matri ... 3F2D1C78E8

И теперь мне интересно, можно ли это использовать для управления областью применения, когда он не прикреплен к ПК. Мне просто не нравится тот факт, что клавиатура огромна (больше моего 2,2 -дюймового дисплея).

Ахулл
Пт 16 октября 2015 г., 23:27
Ахулл написал:Daybyter написал:Любой, кто использует эскиз без сенсорного экрана? Когда я выхожу на доход.

Ахулл
Пт, 16 октября 2015 г., 23:54
Daybyter написал: Мне просто интересно, может ли эта небольшая область быть полезной при попытке восстановить старые компьютеры. Следовательно, будет оценен каждый небольшая пропускная способность. Итак, я подумал об этом варианте разгона. Просто просмотр кода, чтобы понять необходимые модификации.

Ахулл
Пт, 16 октября 2015 г., 23:58
Daybyter написал: Сегодня я получил одну из этих очень дешевых клавиатур Arduino

Daybyter
Сб 17 октября 2015 г., 4:02
Может, мой TFT уже сенсорный дисплей. Еще не уверен. Не получил описания. Я бы все равно предпочел дополнительный ключ. Но моей первой идеей было использовать коробку Q-Tip в качестве случая

http: // g02.с.Аликдн.com/kf/htb1cop8hpxx ... x-baby.JPG

Но тогда мне пришлось бы использовать меньшую клавиатуру. Может, этот

http: // m.eBay.com/itm/1x4-matrix-array- ... Nav = Search

Сделает навигацию намного сложнее, хотя.

Сегодня играл с прототипом хлебного ящика, и сигнал выглядит ужасно. Может я должен начать с лучшего источника питания.

Бьянкифан
Пн 19 октября 2015 г., 16:32
Хороший маленький проект, к сожалению, он все еще не собирается компилироваться.
После очистки всех ошибок, упомянутых выше многих ошибок в Time1.H остаются:
Ошибка: 'DT_MAX_STRING_LEN' не была объявлена ​​в этой области
Ошибка: 'uint8_t' не была объявлена ​​в этой области
Ошибка: ожидается ',' или ';' до '{' token
...
и так далее..

Win7/64, Arduino IDE 1.6.5

Ахулл
Пн 19 октября 2015 г., 19:55
Бьянкифан написал:Хороший маленький проект, к сожалению, он все еще не собирается компилироваться.
После очистки всех ошибок, упомянутых выше многих ошибок в Time1.H остаются:
Ошибка: 'DT_MAX_STRING_LEN' не была объявлена ​​в этой области
Ошибка: 'uint8_t' не была объявлена ​​в этой области
Ошибка: ожидается ',' или ';' до '{' token
...
и так далее..

Win7/64, Arduino IDE 1.6.5

Бьянкифан
Вт 20 октября 2015 г. 8:19
Я использовал LIB Paulstoffregen и переименованное время.H до времени1.H аналог я прочитал несколько постов выше.
Без переименования я получаю известные недостатки в RTClock:
«Mktime» и «Gmtime» не были «объявлены в этой области».

Просто даже я попробовал твою прикрепленную либера..Та же процедура...

Есть еще 3 другого времени.H in ...\ инструменты \ arm-none-eabi-gcc \...

Mrburnette
Вт 20 октября 2015 г. 12:57
Бьянкифан написал:Я использовал LIB Paulstoffregen и переименованное время.H до времени1.H аналог я прочитал несколько постов выше.
Без переименования я получаю известные недостатки в RTClock:
«Mktime» и «Gmtime» не были «объявлены в этой области».

Просто даже я попробовал твою прикрепленную либера..Та же процедура...

Есть еще 3 другого времени.приветне ...\ инструменты \ arm-none-eabi-gcc \...

Бьянкифан
Ср 21 октября 2015 г. 9:02
Я нашел свою глупую ошибку, я забыл переименовать в Datestrings.CPP :(

Тем не менее я попробовал Mrburnette написал: #включать "./библиотека.час"

Робка
Солнце 22 ноября 2015 г. 12:09
Я знаю, что это неправильная ветка для моего вопроса, но здесь есть наибольшее знание Fast ADC, поэтому я подумал, что попробую здесь, прежде чем создать новую ветку.

Я пытаюсь построить звуковой локатор с помощью 4 микрофонов. Идея состоит в том, чтобы контролировать 4 микрофона для триггера, после того, как триггер (любой микрофон) выше порога, система будет пробежать 4 микрофона (в идеале при высоких показателях дискретизации, выше 100 кГц на канал). Затем система будет пересекать корреляцию 4 сигналов, рассчитывайте в разное время, когда звук достигал микрофонов и использует 3 значения TDOA (первый микрофон для получения сигнала установлен как 0 -эталонное время) для расчета местоположения звука, используя многолатерацию. Я думаю, что у меня есть код для перекрестной корреляции и мультилатерации, теперь мне нужно получить хорошие образцы

Я вижу, что прицел на 10 долларов использует 2 канала, чередующуюся выборку непосредственно в память, используя DMA.

Есть ли у вас какие -либо предложения о том, как выбирать 4 канала (в идеале с передачей DMA), в идеале гарантируя, что все 4 канала находятся в синхронизации (или в худшем случае CH1 и CH2 в синхронизации, CH3 и CH4 в синхронизации с известной задержкой)? Расположение звука основано на TDOA (разница во времени прибытия звука), поэтому поддержание образцов в синхронизации довольно важно

8 -битная выборка, кстати, это все, что мне нужно, не нужно пройти весь путь до 12

Любое предложение (включая C -код для аналогичных досок) приветствуется. Я быстро отсканировал приложение STM для ADC, и я быстро потерялся во всех различных режимах, поддерживаемых... Я надеюсь, что вы могли бы дать мне отправную точку (в противном случае я копаюсь в примечании)

Вассилис
Солнце 22 ноября 2015 г., 6:43
Если я понял правильно, у вас есть, например, большая квадратная площадка с 1 микрофоном на каждом углу (всего 4), и вы хотите найти положение объекта, который перелетает над этой квадратной площадкой и создает определенный звук (например, дрон).

Это правильно?

Rogerclark
Солнце 22 ноября 2015 г., 7:03
У меня такое ощущение, что, если звук, который хочет обнаружить OP, не является чем -то вроде клика или чего -то еще очень короткого продолжительности, самой сложной проблемой может быть обработка сигнала.

Если они слушают звук беспилотника, это очень сложный звук, когда 4 винта все время постоянно проходят на разных скоростях, и я не уверен, как вы даже можете использовать процессор цифрового сигнала для определения позиции, как Сэттер повторяется.
Так что, даже если вы провели некоторое скольжение некоторых круговых буферов, чтобы получить цифровой эквивалент разницы, у меня есть ощущение, что его будет трудно вычислить, и я не уверен, что процессор 72 МГц будет иметь достаточно скорости, чтобы Сделай это

Однако это будет зависеть от того, какая частота дискретизации использовалась и как часто нужно сравнивать буферы.

Также RAM была бы большой проблемой, так как вы могли бы выделить только несколько K на канал, если вы не переключитесь на использование более крупного процессора, такого как F103V или F103Z, в которых есть больше ОЗУ (или, возможно, используйте дистрибкое устройство SPI RAM - которое было бы медленнее до доступ)

Однако, возможно, все проще, чем я представляю.

Робка
Солнце 22 ноября 2015 г. 10:07
Спасибо за комментарии.

Vassilis: Да, микрофоны помещаются в квадратный или прямоугольник (поскольку это облегчает математику, мультилатерация может быть сделана с любым произвольным место поступить. Относительно легко обнаружить импульсивные звуки и пересекать время прибытия, очень трудно обнаружить более сложные звуки и определить их корреляцию. Роджер абсолютно прав. Если бы вы хотели обнаружить беспилотник, то способ сделать это, чтобы ультразвуковой эмиттер на беспилотнике, ультразвуковые приемники на земле и иметь периодические ультразвуковые импульсы из -за беспилотников.

Интересно, что математика работает, даже когда звук находится за пределами «прямоугольника для микрофона». Реально, это ограничено только чувствительностью к микрофону. С чувствительными микрофонами и импульсивным звуком, намного выше пола шума, вы можете обнаружить вещи на любом расстоянии. Скорость изменений звука с влажностью и температурой, поэтому есть также термогигрометр, который поможет исправить для этого

Роджер: Да, память действительно является проблемой, поэтому мне нужно будет сбалансировать объем доступной памяти (хорошо, что платы STM32F103VET6 составляют всего ~ 10 долл. США и имеют 64 КБ, на случай, если мне нужно больше), скорость отбора проб и размер массива микрофона. Интересная вещь о математике заключается в том, что это зависит только от расстояния между микрофонами, а не от расстояния звука (поскольку я запускаю преобразование только тогда, когда микрофон, ближайший к звуку , есть только так много образцов, необходимого для обнаружения звука, когда он перемещается от запускаемого микрофона до самого дальнего). Формула (если я имею это правильно) заключается в том, что минимальное количество необходимых образцов - это максимальное расстояние между микрофонами в метрах (диагональ прямоугольника), разделенного на скорость звука, время от скорости отбора проб. Даже для микрофона массива до 6 на 4 метра максимальная задержка звука между микрофонами составляет менее 1/40 секунд, что позволяет мне обрабатывать 4 микрофона с теоретическим максимумом ~ 500-550 кГц (с 64-километровым оперативным для системы и других задач). Для массива 100 кГц и 4х6 м, кленовый мини -мини -миниму

Чем больше я могу увеличить скорость отбора проб, тем больше я могу уменьшить размер массива микрофона. Как работает математика, вы можете обнаружить местоположение с меньшим массивом, если вы можете попробовать быстрее (я.эн. Если вы можете надежно обнаружить меньший и меньший TDOA). Чем точно вы можете измерить TDOA, тем точнее вы сможете найти звук. Вы можете либо увеличить размер матрицы микрофона (чтобы больше разделить поступление звука), либо быстрее (чтобы получить лучшее разрешение и способность пересекать коррелятные сигналы). Если бы я мог управлять 100-200 кГц на канал (с хорошей точностью времени) на 8 бит, я мог бы провести точные измерения с меньшим массивом

Звуки, которые я хочу обнаружить, достаточно далеко друг от друга, что любой STM32 достаточно быстр (AVR Arduino был бы, если бы я мог попробовать достаточно быстро) может попробовать, перекрестно коррелировать, рассчитать местоположение и отправить результаты на SD -карту или SD или SD или через Bluetooth/Wi -Fi, и у меня все еще много времени, прослушивая следующий звук. С быстрой ADC и процессором 72 МГц вы можете найти звук несколько раз в секунду, я думаю. Не звук беспилотника, предоставленного, а какой -либо импульсивный звук.

Итак, у нас осталась проблема, которая начала оригинальный вопрос ;): любая идея о том, как я мог бы попробовать 4 канала (8 бит) как можно быстрее и как можно более последовательно, в идеале с использованием DMA?

Rogerclark
Солнце 22 ноября 2015 г. 10:19
@ROBCA

Я думаю, что вам нужно ждать Энди, который написал сферу или, возможно, @victorpv (который сделал много вещей DMA), чтобы ответить на вопрос DMA

Я думаю, что ограничением может быть количество каналов DMA, и я не знаю, достаточно ли бесплатных каналов для обработки 4 входов АЦП.
Я думаю, что более крупные чипсы e.g У ветеринара может быть больше каналов DMA, так как они совершенно разные MCU для серии F103C.

КСТАТИ. Я предполагаю, как вы используете 4 микрофоны, которые вы делаете ?

Робка
Солнце 22 ноября 2015 12:05
После прочтения нескольких приложений и образцов приложения, и учитывая, что я хочу использовать дешевую доску (я.эн. Ограничено 2 АЦП), я почти уверен, что мне придется использовать двойной одновременный режим, взяв два чтения (по одному на ADC... Что -то вроде MIC1 и MIC3 на ADC1, MIC2 и MIC4 на ADC2). Этот wold означает, что MIC3 и MIC4 будут иметь небольшой «сдвиг» во времени по сравнению с MIC1 и MIC2 (один цикл конверсии), но это было бы легко исправить в перекрестной корреляционной части. Пока каждая пара микрофонов синхронизирована, а временная сдвиг известна, легко добавить сдвиг в расчете TDOA. Наличие 4 АЦП явно упростило бы вещи, но с достаточно высокими показателями это не будет иметь значения

Альтернативный подход (но я буду делать только вторую версию или если первый не сработает), - это иметь внешний триггер (я.эн. Используйте компаратор OP-AMP на микрофонах) и две платы F103. Внешний триггер начнет преобразование одновременно на двух F103, каждый из которых отбирает только 2 канала. Тогда один из F103 отправит время другому, а «Master» F103 рассчитал бы позицию... Но я надеюсь, что мне не придется туда идти.

Я на самом деле использую 4 микрофоны на самолете и только получаю 2D местоположение. Это правда, что с 4 микрофами (в правильной конфигурации) я мог обнаружить 3D -позиции, но математика очень быстро становится ужасно сложной, и я потерялся... Для 2D -исправления вам нужны только 3 микрофона, но математика для 2D -фиксации с 4 микрофонами намного проще. Учитывая, что преобразование 3 или 4 аналоговых сигналов занимает точно так же время, я решил начать с 2D -исправления и посмотреть, что произойдет, затем «выпускник» до 3D исправления с теми же 4 MIC (только в другой макете)

То, что я изо всех сил пытаюсь понять из примера кода, который я нашел, и код O-Scope, так это то, как передача DMA перемещает 8 бит образцов, учитывая, что АЦП составляет 12 битов, а DMA обычно предназначена для 16 бит... Часть моей проблемы в том, что я совершенно новичок в STM32 (и я еще не читал все документы : oops:), часть, которую я не знаком с проектом STM32Duino, поэтому поиск таких вещей », где определяется ADC1, чтобы я мог понять ADC1->регс->Cr1 | = adc_cr1_fastint "все еще медленно (и, да, эта часть, которую я нашел :))

Таким образом, любые разъяснения о том, как DMA может работать с двойным одновременным режимом, было бы отличной помощью (по иронии судьбы, я могу найти образцы для использования DMA практически с любым режимом ADC, сохраните тот, который мне нужен: двойной одновременный режим)

После того, как я преодолею этот горб, я надеюсь, что у меня будет образец кода, чтобы поделиться (и начну правильный поток... До тех пор этот, где кажется, что большая часть знаний DMA/ADC). Надеюсь, Энди и другие не будут слишком возражать

Ахулл
Солнце 22 ноября 2015 12:25
@Roca, это звучит как довольно интересная проблема. Я бы предложил, что это достаточно интересно, чтобы иметь тему самостоятельно.

Если бы мы знали профиль звуков, которые мы пытаемся дефектировать, мы могли бы упростить проблему, добавив некоторую аналоговую (или цифровую) фильтрацию, чтобы получить более определенную форму волны. Фильтрация, вероятно, будет необходима, чтобы избежать ложного запуска и помочь изолировать сигнал от шума.

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

Если мы пойдем по маршруту ADC, то нам нужно моделировать что -то похожее на аналоговую схему в программном обеспечении (i.эн. какой -то интегрирующий триггер)

Например, существует несколько примеров более сложных систем, например, в Интернете этот патент.

Если, однако, вы решите выполнить некоторую обработку сигнала (шумовая фильтрация и интеграция оцифрованных сигналов как минимум, который я думаю), вам нужно будет выяснить, какой компонент входящего звука вы ищете.

Вы также ограничены в STM32F103 до двух одновременных преобразований ADC в любое время, поэтому вам потребуется выборка MIC1, MIC2, затем MIC3, MIC4 и учет задержки между двумя различными временами образца в программном обеспечении. Это должно быть возможно, возможно, путем интерполяции средней точки между последовательными наборами образцов M1, M2 и также последовательными наборами образцов M3, M4. Вам также необходимо будет выбирать, и, вероятно, применить некоторую статистическую очистку к образцам (возможно, более чем простое усреднение), чтобы избежать ложного запуска и удалить шум. Читайте о цифровом и аналоговом осциллографе, чтобы получить некоторые идеи.

Одним из проектов, которые мне никогда не удалось подняться с STM32F103, является акустическая камера скорости. Я живу рядом с оживленной главной дорогой, где движение проходит по дому на условной 30 миль в час. Ночью (когда все дорожные полицейские спрятаны в постели), я часто слышу, как транспортные средства проезжают дом с чрезмерной скоростью.. И было бы интересно попытаться определить эту скорость от звука одного транспортного средства. Я подозреваю, что это должно быть возможно, но у меня не было ни одного из этого очень дорогого и редкого магии отсутствующего ингредиента (свободное время), чтобы заняться этим вопросом. Ваш пост может быть именно тем, что мне нужно, чтобы я интегрировал сдвиг допплера локальных ночных уходов скорости.

Rogerclark
Солнце 22 ноября 2015 г. 20:22
Энди.

Re: скорость камера

Как насчет выполнения БПФ на звуке, а затем использование допплеровского принципала, мониторинг скорости изменения шага.

И / или иметь 2 микросхемы на расстоянии нескольких метров и сравните шаг, чтобы определить, когда автомобиль проходит каждый микрофон (но, возможно, сравнение амплитуды - это все, что необходимо)

Робка
Вт 24 ноября 2015 г., 17:07
Чтобы не рандомизировать эту ветку более чем необходимо, я разместил здесь свой вопрос http: // www.STM32duino.com/viewtopic.PHP?f = 3&t = 757

Я сделал намного больше копаний, и я нахожусь в тупике (я не думаю, что смогу сделать то, что хотел)

Стэнлисеоу
Солнце 06 декабря 2015 г. 14:26
Я получил «красный» Mini STM32 и сумел получить работу TFT I ILI9341 без каких -либо проблем...

Когда я попытался скомпилировать STM32-O-Scope, я получаю ошибки ниже:-

Только изменения, которые я сделал, были:-
#undef touch_screen_available
И используя время.H от // библиотека времени - https: // github.com/paulstoffregen/время
STM32-O-Scope.ino: In function 'void setup()': STM32-O-Scope.ino:257:12: error: 'setADCs' was not declared in this scope STM32-O-Scope.ino:262:34: error: 'setCurrentTime' was not declared in this scope STM32-O-Scope.ino:263:34: error: 'serialCurrentTime' was not declared in this scope STM32-O-Scope.ino:264:34: error: 'sleepMode' was not declared in this scope STM32-O-Scope.ino:270:26: error: 'toggleSerial' was not declared in this scope and many many more "was not declared in this scope" ....

Ахулл
Солнце 06 декабря 2015 г., 22:52
Привет, Стэнлисеоу

Больше информации об этой проблеме разбросано на протяжении всего этого потока журнала. Я думаю, что затронул это здесь..

Я думаю, что быстрое исправление состоит в том, чтобы оставить #define touch_screen_available и получить незначительный удар в пространстве, используемом эскизом.

Стэнлисеоу
Пн декабря 07, 2015, 2:17
Хорошо, спасибо... Добавлен уточ...Интересно, почему ???

ZMEMW16
Пн декабря 07, 2015 6:46 утра
Стэнлисеоу написал: #undef touch_screen_available

Стэнлисеоу
Вторник 08 декабря 2015 г. 2:32 утра
Вот мой ...
Изображение2015-12-07 10.18.06 к stanley_seow, на Flickr

Изображение2015-12-07 10.18.25 к stanley_seow, на Flickr

Почему мое время в 1970 году ? Часы Unix ??

Я читаю через конструкции и конструкции2 вики..

Помимо резисторов 1M OHM, нужен ли мне справочный источник на PB1 ??

Я исследую его в генераторе сигналов Android телефона, выпускающего синусоидальную волну для аудио, но ничего не происходит ...

Моя основная цель - просто расследовать уровень шума на радио Hand Handy, который получил аудиосигнал на уровне ?

Ахулл
Вт, 08 декабря 2015 г. 9:58 утра
Стэнлисеоу написал:Вот мой ...
Изображение2015-12-07 10.18.06 к stanley_seow, на Flickr

Изображение2015-12-07 10.18.25 к stanley_seow, на Flickr

Mrburnette
Вторник 08 декабря 2015 г., 21:07
Стэнлисеоу написал:Вот мой ...

Бьянкифан
Чт 21 января 2016 12:25
Вчера вечером я немного сыграл с этой сферой, ESC, BLDC и бататной коробкой для велосипеда..

Некоторые анноты..
1 -й..
Мой вики STM32-O-Scope.PDF сообщает мне об использовании PIN -кода, PB0 является вводом и тестовым сигналом PB1.
Но мой источник, украдененный у GIT, рассказывает наоборот, тест PB0 и вход PB1. ;)
Подсветка TFT была PA3..

Просто даже украден&Ввод, PB0 для board_led ???

2 -й..
Играя с прицелом, которую я забыл, это всего лишь прорыв, потому что я прочитал что -то вроде 3V/div.
К сожалению, у моего батта 7.2 (8.4) V..
Волшебный дым сразу же сбежал и вызвал плохое плохое запах :(
Но экран все еще был отображен, только график исчез.
Итак, я переписывался с переключенными портами:
тест&Ввод на PA3/4, подсветка на PB0.
Сначала все было хорошо.
Но время от времени, проведенные вещами, случившись, двойные фото казались перемещенными и вращающимися.
После подключения подсветки к VCC все снова было в порядке.
Может быть.

Так что всегда имейте в виду:
O-Scope-это не крошечный OSCI, без входного разделителя, только прорыв!!

Мрмонтейт
Чт 21 января 2016 г. 16:26
Бьянкифан написал:Вчера вечером я немного сыграл с этой сферой, ESC, BLDC и бататной коробкой для велосипеда..
Волшебный дым сразу же сбежал и вызвал плохое плохое запах :(

Mrburnette
Чт 21 января 2016 г., 16:50
Mrmonteith написал:Бьянкифан написал:Вчера вечером я немного сыграл с этой сферой, ESC, BLDC и бататной коробкой для велосипеда..
Волшебный дым сразу же сбежал и вызвал плохое плохое запах :(

Ахулл
Пт 22 января 2016 г. 1:24
Отсутствие входной защиты, и экспериментальный характер масштабов за 10 долларов упоминался несколько раз, на самом деле в этой теме упоминалось по крайней мере три раза.

ViewTopic.PHP?t = 107&начало = 190#p8868

ViewTopic.PHP?t = 107&начало = 70#p1614

ViewTopic.PHP?t = 107&начало = 170#p6908

... И насколько я помню в оригинальной версии Рэя, из которой это развилось.

Я открыт для предложений по улучшению, поэтому, если кто -то чувствует себя как проектирование защищенного переднего конца для него (предпочтительно контролируется программным обеспечением ;) ) и готов поделиться этим дизайном, а затем я возьму трещину в улучшении программного обеспечения. Защита ввода в виде аттенюатора, Zeners, чтобы зажать напряжение, предохранитель и, возможно, монета был бы минимум, но, как я уже сказал, я открыт для любых идей.

Ой.. и теплый приветственный Бьянчифан в волшебный дымовой клуб.... : D Это популярное место с четырьмя страницами вкладов.

Мрмонтейт
Пт 22 января 2016 г., 2:50 утра
Энди,
Я мог бы начать смотреть на некоторые варианты. Моя первая первоначальная мысль-хороший фронт Op-Amp. Это позволило бы ослаблять/контроль усиления, а также защиту. Лучше пожертвовать OP-AMP, чем микро. Поставить защиту Zener после Op-AMP в качестве последней попытки дальнейшей защиты.

Я также смотрел на игру с программируемыми потенциометрами. Мне пришлось купить немного для проекта, который я собрал. Парень использовал его, чтобы настроить схему. Так что это могут работать для программируемого ослабления и т. Д. Они также сделают для калибровки.

В любом случае я посмотрю, что я нахожу на предмете, и поделюсь тем, что я придумал, правильно или неправильно. Я за то, чтобы поделиться. Вот как ты учишься. Вы делитесь тем, что у вас есть, и иногда учитесь у других, о чем вы не думали.

Майкл

Бьянкифан
Пт 22 января 2016 г. 9:09
Ахулл написал:Я открыт для предложений по улучшению.

Мрмонтейт
Пт 22 января 2016 12:56
Бьянкифан написал:Ахулл написал:Я открыт для предложений по улучшению.

Mrburnette
Пт 22 января 2016 г. 13:10
Защита ввода для недорогого объема довольно проста на низких частотах. Например, поиск изображения в Google для «Цепь защиты ввода осциллографа» предоставит многочисленные схемы, многие пассивные. Если бы я выполнял реализацию, я бы, вероятно, положил это в Специя Пакет и воспроизводите с квадратными входами.
pcscopecircuit.jpg
PCSCOPECIRCIUT.JPG (22.84 киб) просмотрено 1773 раз

Ахулл
Сб 06 февраля 2016 г. 15:53
Похоже, у нас может быть запутанная свинья. : o

Дэвида обнаружил проблему с заказом массива данных, полная информация в ссылке ниже.

https: // github.com/pingumacpenguin/stm3 ... -180469664

Кажется, я предположил, что порядок образцов в массиве ADC1, ADC2, но на самом деле данные появляются в массиве как ADC2, ADC1, и это сделает сюжеты несколько ущербными. У меня не было времени, чтобы проверить это, так как в наши дни я догнал другие вещи, кто -нибудь может проверить, что Дэвид прав. Лучше они могут предложить исправление. Можем ли мы изменить упорядочение данных по мере их размещения в массиве, или нам просто нужно соблюдать этот порядок, выплющая результаты, на дисплей и/или последовательный порт?

Дэвид Пилтинга
Сб 06 февраля 2016 г. 18:26
Я был бы рад позвонить в код (при условии, что он нуждается в этом), но у меня сейчас нет TFT, поэтому, если я это сделаю, это займет несколько недель.

Ахулл
Сб 06 февраля 2016 г., 8:45 вечера
Дэвид Пиллинг написал:Я был бы рад позвонить в код (при условии, что он нуждается в этом), но у меня сейчас нет TFT, поэтому, если я это сделаю, это займет несколько недель.

Дэвид Пилтинга
Сб 06 февраля 2016 г., 21:06
Я сделаю это и дам тебе знать...

Ахулл
Сб 06 февраля 2016 г., 21:11
Дэвид Пиллинг написал:Я сделаю это и дам тебе знать...

Дэвид Пилтинга
Солнце 07 февраля 2016 г. 2:48
Я играл с модулем Ultrasonic HC-SR04 Ultrasonic. Для многих целей он работает нормально, как поставляется. Но я использовал его на коротких диапазонах, измеряющих небольшие изменения в расстоянии. Для этого требуется извлечение аналоговых сигналов из него. Я сделал это и получил результаты, которые я хотел, используя Atmega 328p и очень скромную обработку аналоговых сигналов. Однако мне показалось, что я прошел обработку цифровых сигналов, где появились STM32 и ваш код O -Scope.

Ахулл
Солнце 07 февраля 2016 12:03
Дэвид Пиллинг написал:Я играл с модулем Ultrasonic HC-SR04 Ultrasonic. Для многих целей он работает нормально, как поставляется. Но я использовал его на коротких диапазонах, измеряющих небольшие изменения в расстоянии. Для этого требуется извлечение аналоговых сигналов из него. Я сделал это и получил результаты, которые я хотел, используя Atmega 328p и очень скромную обработку аналоговых сигналов. Однако мне показалось, что я прошел обработку цифровых сигналов, где появились STM32 и ваш код O -Scope.

Дэвид Пилтинга
Солнце 07 февраля 2016 г. 15:22
Ахулл написал:Дэвид Пиллинг написал:Я играл с модулем Ultrasonic HC-SR04 Ultrasonic. Для многих целей он работает нормально, как поставляется. Но я использовал его на коротких диапазонах, измеряющих небольшие изменения в расстоянии.

Рекснанет
Ср. 16 марта 2016 г., 19:31
Мне удалось настроить Arduino IDE 1.6.3 с аппаратной библиотекой arduino_stm32.

Я могу собрать мгновение.
Я уже скачал библиотеку времени и сериал также.

Но я получаю эти ошибки:

STM32-O-Scope.INO: в функции 'void setup ()':
STM32-O-Scope.INO: 261: 12: ошибка: «setAdcs» не был объявлен в этой области
STM32-O-Scope.INO: 266: 34: Ошибка: «SetCurrentTime» не была объявлена ​​в этой области
STM32-O-Scope.INO: 267: 34: Ошибка: «SerialCurrentTime» не была объявлена ​​в этой области

Я знаю, что могу вручную добавить прототипы на начало кода для каждого, но это боль, и если это работает для другого, может быть что -то не так в моей настройке...

Помощь? :)

РЕДАКТИРОВАТЬ: Я использую 1.6.3 Потому что 1.6.5 не работал, но сейчас я тестировал 1.6.5 и у него те же ошибки.

Ахулл
Ср. 16 марта 2016 г. 11:19
Видеть http: // www.STM32duino.com/viewtopic.PHP ... = 140#P4959 Для получения подробной информации, но это ошибка в коде, посредством которой

#define touch_screen_available вещи не работают, как и ожидалось. Оставьте определенную определенную, и это должно работать.

Рекснанет
Пт 18 марта 2016 г. 13:54
Ахулл написал:Видеть http: // www.STM32duino.com/viewtopic.PHP ... = 140#P4959 Для получения подробной информации, но это ошибка в коде, посредством которой

#define touch_screen_available вещи не работают, как и ожидалось. Оставьте определенную определенную, и это должно работать.

Mrburnette
Пт 18 марта 2016 г. 14:08
Рекснанет написал: <...>
Затем я получил проблему библиотеки «Время», переименованную в «Time1.час .CPP ".
<...>

Рекснанет
Пт 18 марта 2016 г. 15:41
Mrburnette написал: Да, эта проблема - просто проблема Arduino IDE в том, как искали библиотеки ... Можно иметь только один раз.H в каталоге /Arduino /Libraries. Это отстой, на самом деле, но это только одна из тех абстрактных вещей, которые делает Ардуино.

Я настоятельно рекомендую поместить такой код непосредственно в каталог с файлами iNO и инкапсулирует его. Жесткие диски настолько большие в наши дни, что дублированное пространство незначительно, и способ развития ардуиноида, когда менеджер совета директоров обновлял библиотеки, вызвало у меня большое раздражение. В любом случае, есть некоторые среды, такие как разработка Cypress PSOC, где библиотеки всегда копируются в рабочую папку - поэтому парадигма не странная.

Луча

Mrburnette
Пт 18 марта 2016 г. 22:16
Рекснанет написал: <...>
Чтобы решить многие из этих проблем, мы могли бы создать файл Zip/RAR со всеми необходимыми библиотеками "в рабочем состоянии" :) Чтобы облегчить воспроизведение проекта.

Этот подход делает более низким обменом библиотеками и их изменениям, но делает компиляцию намного проще.
<...>

Рекснанет
Ср 23 марта 2016 г. 14:20
victor_pv написал:Энди,

Я работал некоторыми оптимизациями в ЖК -библиотеке. Это все еще не самый лучший, но гораздо быстрее, чем раньше, когда речь заходит о рисовании полученных данных.
Загрузите ZIP прикреплено и используйте это. Требуется последняя библиотека SPI от репо Роджера.
Adafruit_ili9341_stm.молния

Рекснанет
Ср 23 марта 2016 г. 15:00
Mrburnette написал:Самая прекрасная часть этого заключается в том, что вы используете Pix Of O'Scope в работе, чтобы показать возможности и проблемы.

Работа хорошо сделана... Это должно быть обязательной сборкой для любого серьезного Tinkerer, который не имеет доступа к объему. Это был бы отличный проект PSOC 4200 из -за «свободной» аналоговой подсистемы и аналогового MUX + Opamp. К вашему сведению, Только 4 доллара http: // www.кипарис.ком/?Rid = 92146
(Даже не учитывайте 4100)


Луча

Рекснанет
Ср 23 марта 2016 г., 17:03
Рекснанет написал: Последний я проверю его на доске :)

Бьянкифан
Ср 23 марта 2016 г., 17:36
Рекснанет написал: ADC быстро (достаточно)? :)
http: // www.мышца.com/ds/2/100/001-87197-269422.PDF

Ахулл
Ср 23 марта 2016 г., 23:16
Рекснанет написал:Рекснанет написал: Последний я проверю его на доске :)

Рекснанет
Чт 24 марта 2016 г. 14:45
Ахулл написал: Позаботьтесь о подсветке, контакты на STM32F103, возможно, не смогут найти ток, необходимый для запуска дисплея с полной яркостью, вам может (в зависимости от вашей ЖК -платы) необходимо добавить транзистор, чтобы управлять подсветкой.

Ахулл
Чт 24 марта 2016 г. 16:41
Рекснанет написал:Ахулл написал: Нет, АЦП на большинстве плат привязан к напряжению питания, поэтому в большинстве случаев вы вводите сигнал * должны быть между 0В и VCC (3.3v) в противном случае вы повредит АЦП.

Рекснанет
Солнце 27 марта 2016 г., 8:45 вечера
Ахулл написал: Двойной канал должен быть относительно легким, но вы не получите полную полосу.

Ахулл
Солнце 27 марта 2016 г. 22:31
Вы можете найти это интересно. https: // www.таблетка.org/~ Avian/Blog/Arch ... oller_adc/

Что касается стабильности аналога, я не знаю о какой -либо нестабильности, я полагаю, что лучший способ проверить это - сравнить с настоящим осциллографом.

Ахулл
Пн 28 марта 2016 г. 12:55
Как только у вас есть изгибы, вытекающие из ваших изменений, и вы довольны ими, Погодите мне просьбу о вытяжении на Гитиб, И я могу объединить их, если хотите. : D

На основе доступной аналоговой полосы пропускания на Пост в блоге Элвина Интересно, сможем ли мы переполнить часы АЦП (за счет разрешения, предположительно), и получить надежные результаты за пределы указанной спецификации STM 1 МГц. Это похоже на интересный эксперимент, чтобы попробовать. Даже 8 -битное разрешение на скажем, 10 МГц было бы полезно. Красные таблетки GD32F103 также могут стоить немного экспериментов, которые теоретически должны быть более поддающимися движению на более высоких частотах.

Rogerclark
Пн 28 марта 2016 г., 8:32 вечера
Энди

Доски GD32, кажется, работают нормально на 120 МГц, но я не смотрел, работает ли АЦП на этой частоте.
Но это указано до 108 МГц (но, как вы знаете, USB работает только в 48,72,96 и 120 МГц из -за ограничений в галстуке USB PLL)

Ахулл
Пн 28 марта 2016 г., 21:03
Rogerclark написал:Энди

Доски GD32, кажется, работают нормально на 120 МГц, но я не смотрел, работает ли АЦП на этой частоте.
Но это указано до 108 МГц (но, как вы знаете, USB работает только в 48,72,96 и 120 МГц из -за ограничений в галстуке USB PLL)

Rogerclark
Пн 28 марта 2016 г. 11:23 вечера
Привет, Энди

Я думаю, что кто -то, возможно, уже изучил переключение часов, но я, хотя он ломает USB -соединение

Вы, конечно, могли бы заставить USB-реиньюмерность, но это было бы болью каждый раз, когда вы хотели перенести данные

К сожалению, STM32 имеет только 2 настройки разделителя часов для USB PLL, но GD32 имеет 4 (2 бита) (это было возможно, потому что STM имеет зарезервированный бит в реестре рядом с битом для разделителя PLL, поэтому GD смог Чтобы добавить еще 2 настройки делителя PLL и все же сохранить обратную совместимость

Ахулл
Вторник 29 марта 2016 г. 12:53
Rogerclark написал:Привет, Энди

Я думаю, что кто -то, возможно, уже изучил переключение часов, но я, хотя он ломает USB -соединение

Rogerclark
Вт 29 марта 2016 г., 9:54 утра
Привет, Энди

Боюсь, я вообще не смотрел на часы АЦП.

Глядя в ручном RM0008, есть разделитель PLL для часов ADC, но я не знаю, где его настройка в сердечнике.

Я быстро посмотрел в папку Libmaple в ADC.C, но я могу видеть только настройку для количества тактовых циклов на образец, а не мастер -разделителя PLL для ADC.

Я подозреваю, что материал ADC, вероятно, настроен где -то в коде RCC, но я не уверен, где.

Если бы у кого -то было время поиграть с этим, я полагаю, что вы сможете получить немного большую производительность за счет разрешения, но мне интересно, насколько это будет полезно, или вы просто получите ошибочные результаты.

Рекснанет
Вторник 29 марта 2016 г. 10:09
Ахулл написал:Вы можете найти это интересно. https: // www.таблетка.org/~ Avian/Blog/Arch ... oller_adc/

Что касается стабильности аналога, я не знаю о какой -либо нестабильности, я полагаю, что лучший способ проверить это - сравнить с настоящим осциллографом.

Рекснанет
Вторник 29 марта 2016 г. 14:16
Рекснанет написал: С перегруженным АЦП мы должны сохранить 1.5CLK во время образца, чтобы обеспечить правильную выборку сигнала.

Rogerclark
Вт 29 марта 2016 г., 21:21
Вы можете изменить передачу SPI DMA, чтобы не блокировать, и создать прерывание, когда передача завершена, так как это позволило бы ядро ​​ЦП уйти и делать другие вещи, пока проходил передача SPI.

Но я не думаю, что есть много, что процессор мог бы сделать, ожидая, когда перенос SPI завершится?

Ахулл
Ср 30 марта 2016 г. 12:49
Рекснанет написал:Рекснанет написал: С перегруженным АЦП мы должны сохранить 1.5CLK во время образца, чтобы обеспечить правильную выборку сигнала.

Mrburnette
Ср 30 марта 2016 г. 13:19
Может ли быть так, что свинья-с-сикп стал коммерческим?
Амазонка здесь. В этом комплекте используется процессор ARM Cortex-M3 (STM32F103C8) и включает 2.4-дюймовый цвет TFT
Pig-o-Scope.jpg
Свинья.JPG (153.69 киб) просмотрено 1724 раз

Ахулл
Ср 30 марта 2016 г. 15:10
Я видел несколько продавцов, предлагающих эту область, оба собрались и в качестве комплекта. Это выглядит довольно забавная игрушка, но я не знаю, является ли это оборудование с открытым исходным кодом/открытым.

http: // www.eBay.com/sch/i.HTML?_from = r4 ... 38&_sop = 15

Рекснанет
Ср 30 марта 2016 г. 15:57
Rogerclark написал:Вы можете изменить передачу SPI DMA, чтобы не блокировать, и создать прерывание, когда передача завершена, так как это позволило бы ядро ​​ЦП уйти и делать другие вещи, пока проходил передача SPI.

Но я не думаю, что есть много, что процессор мог бы сделать, ожидая, когда перенос SPI завершится?

Рекснанет
Ср 30 марта 2016 г., 16:03
Ахулл написал:Я видел несколько продавцов, предлагающих эту область, оба собрались и в качестве комплекта. Это выглядит довольно забавная игрушка, но я не знаю, является ли это оборудование с открытым исходным кодом/открытым.

http: // www.eBay.com/sch/i.HTML?_from = r4 ... 38&_sop = 15

Mrburnette
Ср 30 марта 2016 г. 16:28
Ахулл написал:Я видел несколько продавцов, предлагающих эту область, оба собрались и в качестве комплекта. Это похоже на веселую игрушку, но я не знаю, есть ли это Открытое исходное оборудование/открытое оборудование.
<...>

Рекснанет
Чт 31 марта 2016 г., 10:01
Mrburnette написал:
Ну, это, конечно, не идет с случаем для < 30 долларов они спрашивают ... Итак, это, безусловно, открытый корпус :рулон:

Луча

Zoomx
Пт 01 апреля 2016 г. 9:26 утра
Ахулл написал:Я видел несколько продавцов, предлагающих эту область, оба собрались и в качестве комплекта. Это выглядит довольно забавная игрушка, но я не знаю, является ли это оборудование с открытым исходным кодом/открытым.

Мрмонтейт
Пт 01 апреля 2016 12:45
Это довольно интересно в этом DSO138. Если я помню правильно, красная версия сделана компания, которая ее создала. Но есть черная версия подделки. Конечно, я этого не знал, пока не получил один из черных. Но я скажу, что это не сработало после того, как я собрал его вместе и связался с ними, и они прислали мне новый. Конечно, я думаю, что они получают этот материал дешево, так что нет кожи от их спины. Хорошо. Я нашел свою электронную почту.
Наборы DSO138 от Sainsmart - это поддельный продукт. Пожалуйста, посмотрите http: // www.jyetech.com/products/lcdscope/e138.PHP. Если у вас есть другие вопросы, пожалуйста, не стесняйтесь обращаться к нам.
С наилучшими пожеланиями,
Jye Tech Sales

Ахулл
SAT 02 апреля 2016 12:41
Есть много клонов DSO138 -Самый дешевый на eBay находится примерно в 17 долларов.

Rogerclark
SAT 02 апреля 2016 г. 2:09
Я предполагаю, что это также может быть использовано в качестве доски общего назначения с ЖК -дисплеем, но я не уверен, что это особенно хорошая ценность, за 17 долларов

(Учитывая, что стоимость компонентов, вероятно, менее 10 долларов.)

Рекснанет
Ср 6 апреля 2016 г., 15:49
Все еще работая над получением стабильного триггера, но он улучшен (возможно, немного гистерезиса из -за шума в АЦП).

Может, я сделаю небольшое видео об улучшениях. Я думаю, что это немного быстрее в целом.

Библиотека Adafruit Modified ILI9341 действительно быстро! 34 мс для заливного экрана действительно хороша = скорость SPI 36 МБ. Я думал, что SPI может добраться до 18 МБ, используя «нормальные» настройки. Может быть, где -то есть настройка Div1 для часов модуля SPI...?

Rogerclark
Ср. 06, 2016, 8:38 вечера
Процессорные часы составляют 72 МГц, поэтому Div2 36 МГц

Высокие скорости помогают использование DMA

Рекснанет
Чт, 07 апреля 2016 г., 13:35
Rogerclark написал:Процессорные часы составляют 72 МГц, поэтому Div2 36 МГц

Высокие скорости помогают использование DMA

Rogerclark
Чт, 07 апреля 2016 г., 21:03
РЖУ НЕ МОГУ

Я только что прочитал спецификацию..

Похоже, мы разгоняем SPI, вдвое максимальную скорость.

Ни у кого не было проблем с этим ;-)

Mrburnette
Чт, 07 апреля 2016 г., 21:10
Rogerclark написал: <...>
Похоже, мы разгоняем SPI, вдвое максимальную скорость. Ни у кого не было проблем с этим ;-)

Rogerclark
Чт, 07 апреля 2016 г., 21:20
Привет, есть несколько систем, которые я построил для своей расширенной семьи, которые используют Maple Mini и дисплей ILI9341, которые не останавливались в течение нескольких месяцев (не менее 9 месяцев), без каких -либо проблем вообще.

Я не думаю, что необходимо изменить ядро, чтобы снизить скорость, даже если мы разгоняем.

Но, возможно, мне следует добавить в библиотеку SPI, чтобы все знали, что мы выполняем разрыв

Mrburnette
Чт, 07 апреля 2016 г., 21:22
Rogerclark написал: <...>
Но, возможно, мне следует добавить в библиотеку SPI, чтобы все знали, что Мы выполняем разрыв

Rogerclark
Чт, 07 апреля 2016 г., 21:29
Живи не весело, если вы не разгоняете, иногда.

Рекснанет
Пт 08 апреля 2016 г., 9:11 утра
Mrburnette написал:Rogerclark написал: <...>
Но, возможно, мне следует добавить в библиотеку SPI, чтобы все знали, что Мы выполняем разрыв

Rogerclark
Пт 08 апреля 2016 г., 10:47
Вы можете довольно легко изменить множитель PLL PLL, но USB перестанет работать

Если вы посмотрите в boards_setup.CPP

эн.глин.


https: // github.com/rogerclarkmelbourne/ ... _настраивать.CPP

и изменить

#define board_rcc_pllmul rcc_pllmul_9

к другому номеру
typedef enum rcc_pll_multiplier { RCC_PLLMUL_2 = (0x0 << 18), RCC_PLLMUL_3 = (0x1 << 18), RCC_PLLMUL_4 = (0x2 << 18), RCC_PLLMUL_5 = (0x3 << 18), RCC_PLLMUL_6 = (0x4 << 18), RCC_PLLMUL_7 = (0x5 << 18), RCC_PLLMUL_8 = (0x6 << 18), RCC_PLLMUL_9 = (0x7 << 18), RCC_PLLMUL_10 = (0x8 << 18), RCC_PLLMUL_11 = (0x9 << 18), RCC_PLLMUL_12 = (0xA << 18), RCC_PLLMUL_13 = (0xB << 18), RCC_PLLMUL_14 = (0xC << 18), RCC_PLLMUL_15 = (0xD << 18), RCC_PLLMUL_16 = (0xE << 18), } rcc_pll_multiplier;

Рекснанет
Пн 11 апреля 2016 г., 9:13
ОК, спасибо! Я нашел это.

Теперь мне нужно сделать некоторые тесты :)

У моей также есть кристалл 8 МГц. Так что здесь нет проблем.

Что касается USB, я знаю, что это не сработает, но если я добавлю несколько кнопок, чтобы изменить настройку, нет необходимости в интерфейсе USB -последовательного командного интерфейса :)

У серии F4 есть больше вариантов для USB -разделителя, поэтому они более "для разгонов дружелюбны" :) Я видел STM32F429 (@180 МГц по умолчанию), разбросанный на 250 МГц без проблем.
Я начинаю разрабатывать доску, чтобы получить F429 или F746, работая с какой -либо внешней оперативной памятью, ЖК -дисплеем и внешним АЦП. Но время не растягивается... :)

Рекснанет
Пн 11 апреля 2016 г., 21:43
ОНО РАБОТАЕТ!!! :ржу не могу:

Скорость SPI безумна!!! У меня есть видео, чтобы доказать это LOL из моих расчетов, это, вероятно, 64 МГц!

Скорость обновления быстрее и более отзывчиво. Это почти похоже на пример +10 долларов :ржу не могу: :ржу не могу: :ржу не могу:

Скорость АЦП сохраняется, так что все еще ~ 1.7 мс с.

Также запустил демонстрацию графических тестов, он пролетает через шаги :ржу не могу: ПРОХЛАДНЫЙ :)

Завтра я выложу видео (все еще нужно загрузить на YouTube).

Rogerclark
Пн 11 апреля 2016 г., 22:49
Прохладный

Ахулл
Вт 12 апреля 2016 г. 12:00 утра
Рекснанет написал:ОНО РАБОТАЕТ!!! :ржу не могу:

Скорость SPI безумна!!! У меня есть видео, чтобы доказать это LOL из моих расчетов, это, вероятно, 64 МГц!

Скорость обновления быстрее и более отзывчиво. Это почти похоже на пример +10 долларов :ржу не могу: :ржу не могу: :ржу не могу:

Скорость АЦП сохраняется, так что все еще ~ 1.7 мс с.

Также запустил демонстрацию графических тестов, он пролетает через шаги :ржу не могу: ПРОХЛАДНЫЙ :)

Завтра я выложу видео (все еще нужно загрузить на YouTube).

Mrburnette
Вт 12 апреля 2016 г. 12:20 вечера
Ахулл написал: Отображать.
Но я не могу поручиться за то, что этот дисплей можно использовать.

Рекснанет
Вт 12 апреля 2016 г. 14:17
Аааааааааааааааааааааааа и вот они : D

Нормальная скорость:
https: // www.YouTube.com/watch?v = rqmdzvx8ovq


Гипер скорость: : Twisted:
https: // www.YouTube.com/watch?V = Voxv87-Hzt8

На видео это не совсем так заметно, но в светодиоде наблюдается больше триггеров/второго заметно.

Они также показывают новую машину триггера, работа на уровне триггеров :)

Ахулл
Вт 12 апреля 2016 г., 22:21
Выглядит довольно гладко, : D и новый алгоритм триггера намного лучше, чем оригинал. Что вы делали?

Если бы у меня было какое -либо свободное время в данный момент, я бы хотел увидеть, сможем ли мы периодически через часы до запуска, а затем вернулись на стандартные часы, чтобы выплеснуть результаты на USB. У меня была трещина в этом ранее с режимами с низкой мощностью, но мне не удалось разработать механизм, чтобы сохранить USB с более низкими тактовыми скоростями. Возможно, можно было бы массировать USB в стабильность с высокой тактовой скоростью с некоторой умной хитростью, хотя.

Альтернативой будет добавить USB в 2 доллара в серийный преобразователь на сериал1 или что -то еще, и отказаться от USB на борту USB. Возможность отправлять полученные данные на хост с использованием какой -то серийной передачи кажется мне как «должна иметь» функцию.

Рекснанет
Ср 13 апреля 2016 г. 12:34
Ахулл написал:Выглядит довольно гладко, : D и новый алгоритм триггера намного лучше, чем оригинал. Что вы делали?

Если бы у меня было какое -либо свободное время в данный момент, я бы хотел увидеть, сможем ли мы периодически через часы до запуска, а затем вернулись на стандартные часы, чтобы выплеснуть результаты на USB. У меня была трещина в этом ранее с режимами с низкой мощностью, но мне не удалось разработать механизм, чтобы сохранить USB с более низкими тактовыми скоростями. Возможно, можно было бы массировать USB в стабильность с высокой тактовой скоростью с некоторой умной хитростью, хотя.

Альтернативой будет добавить USB в 2 доллара в серийный преобразователь на сериал1 или что -то еще, и отказаться от USB на борту USB. Возможность отправлять полученные данные на хост с использованием какой -то серийной передачи кажется мне как «должна иметь» функцию.

Ахулл
Ср 13 апреля 2016 г. 12:47
Рекснанет написал:Ахулл написал:Выглядит довольно гладко, : D и новый алгоритм триггера намного лучше, чем оригинал. Что вы делали?

Если бы у меня было какое -либо свободное время в данный момент, я бы хотел увидеть, сможем ли мы периодически через часы до запуска, а затем вернулись на стандартные часы, чтобы выплеснуть результаты на USB. У меня была трещина в этом ранее с режимами с низкой мощностью, но мне не удалось разработать механизм, чтобы сохранить USB с более низкими тактовыми скоростями. Возможно, можно было бы массировать USB в стабильность с высокой тактовой скоростью с некоторой умной хитростью, хотя.

Альтернативой будет добавить USB в 2 доллара в серийный преобразователь на сериал1 или что -то еще, и отказаться от USB на борту USB. Возможность отправлять полученные данные на хост с использованием какой -то серийной передачи кажется мне как «должна иметь» функцию.

Рекснанет
Вторник 10 мая 2016 г. 12:27
Обновления в пути! :)

Также я нашел простое решение для аналогового бита: MCP6S92 (односторонний, вводный/вывод с рельсом, PGA с низким уровнем
Точно еще 4 из них, 2 для каждого канала, а также возможность перенаправить любой канал для ADC1, чтобы получить ~ 2 мс с :)
Таким образом, мы можем получить несколько конфигурации усиления с несколькими частями HW!
Диапазоны усиления от 1 до 32 об./Об :)
Добавление аттенюатора ввода 1:10 и 1 мом мы можем получить функциональный O-Scope!

Ахулл
Вторник 10 мая 2016 г. 16:09
Рекснанет написал:Обновления в пути! :)

Также я нашел простое решение для аналогового бита: MCP6S92 (односторонний, вводный/вывод с рельсом, PGA с низким уровнем
Точно еще 4 из них, 2 для каждого канала, а также возможность перенаправить любой канал для ADC1, чтобы получить ~ 2 мс с :)
Таким образом, мы можем получить несколько конфигурации усиления с несколькими частями HW!
Диапазоны усиления от 1 до 32 об./Об :)
Добавление аттенюатора ввода 1:10 и 1 мом мы можем получить функциональный O-Scope!

Racemaniac
Чт, 09 июня 2016 г., 8:19 вечера
Немного не по теме, но я начал с кода из этого проекта, чтобы быстро начать работу

Я прочитал, что вы можете легко изменить голосовые вины без FFT, просто записывая звук в круглом буфере и пройдя через этот буфер с другой скоростью для воспроизведения (с необязательным алгоритмом для немного сглаживания волны, когда выборка улавливает вас, или наоборот).
Поэтому я взял код из этого проекта и установил простой круговой DMA в буфер из 2K 16 -битных образцов и замедлил его как можно больше (Dealing 8 для ADC, 239.5 циклов отбора проб), которое уменьшило бы скорость отбора проб примерно до 35 кГц, что идеально подходит для звука XD.
А затем прикрепил ЦАП к моему Maple Mini, прочитайте буфер с различными скоростями отбора проб, и он просто идеально меняет высоту голоса, это невероятно просто :)
Если бы все это работало менее чем за 2 часа работы ^^.

Ахулл
Пт 10 июня 2016 г., 9:38 утра
Реданьяк написал:Немного не по теме, но я начал с кода из этого проекта, чтобы быстро начать работу

Я прочитал, что вы можете легко изменить голосовые вины без FFT, просто записывая звук в круглом буфере и пройдя через этот буфер с другой скоростью для воспроизведения (с необязательным алгоритмом для немного сглаживания волны, когда выборка улавливает вас, или наоборот).
Поэтому я взял код из этого проекта и установил простой круговой DMA в буфер из 2K 16 -битных образцов и замедлил его как можно больше (Dealing 8 для ADC, 239.5 циклов отбора проб), которое уменьшило бы скорость отбора проб примерно до 35 кГц, что идеально подходит для звука XD.
А затем прикрепил ЦАП к моему Maple Mini, прочитайте буфер с различными скоростями отбора проб, и он просто идеально меняет высоту голоса, это невероятно просто :)
Если бы все это работало менее чем за 2 часа работы ^^.

Racemaniac
Пт 10 июня 2016 г., 10:37
Ахулл написал:Реданьяк написал:Немного не по теме, но я начал с кода из этого проекта, чтобы быстро начать работу

Я прочитал, что вы можете легко изменить голосовые вины без FFT, просто записывая звук в круглом буфере и пройдя через этот буфер с другой скоростью для воспроизведения (с необязательным алгоритмом для немного сглаживания волны, когда выборка улавливает вас, или наоборот).
Поэтому я взял код из этого проекта и установил простой круговой DMA в буфер из 2K 16 -битных образцов и замедлил его как можно больше (Divider 8 для ADC, 239.5 циклов отбора проб), которое уменьшило бы скорость отбора проб примерно до 35 кГц, что идеально подходит для звука XD.
А затем прикрепил ЦАП к моему Maple Mini, прочитайте буфер с различными скоростями отбора проб, и он просто идеально меняет высоту голоса, это невероятно просто :)
Если бы все это работало менее чем за 2 часа работы ^^.

Rogerclark
Пт 10 июня 2016 г. 11:25 утра
GitHub хорош для общих проектов с открытым исходным кодом

Если вы хотите бесплатный частный GIT Repo с Imitit Private Sharing, посмотрите на Bitbucket.орг

Рик Кимбалл
Пт 10 июня 2016 г. 12:33
http: // Gist.GitHub.компонент Позволяет вам обмениваться фрагментами кода без создания пользователя ID

Я создал этот. Он просто использует имя анонимное, если вы не вошли в GitHub.компонент

https: // Gist.GitHub.com/anonymous/d267e ... E864DD63E1

Crtsuznik
Чт 20 октября 2016 г., 16:06
Привет всем!
Я прочитал первые 10 или около того страниц и зацепил! Я должен сделать это.
Кто -нибудь может предоставить окончательную (пока) версию этого проекта?

Ахулл
Чт 20 октября 2016 г., 21:52
Crtsuznik написал:Привет всем!
Я прочитал первые 10 или около того страниц и зацепил! Я должен сделать это.
Кто -нибудь может предоставить окончательную (пока) версию этого проекта?

Rogerclark
Чт 20 октября 2016 г., 22:43
КСТАТИ.

Если у кого -то есть какие -либо проблемы с запуска кода Энди, вы можете опубликовать его здесь.

Поскольку был пиар, который внесли некоторые изменения в обратные вызовы ADC и DMA и т. Д

Ахулл
Пт 21 октября 2016 г., 11:51 вечера
Согласно предыдущему сообщению от @crtsuznik..

Пакет Manager Manager Arduino STM32 может быть добавлен в IDE, следуя инструкциям, найденным здесь...

http: // www.STM32duino.com/viewtopic.PHP?t = 844

Библиотека RTC является лишь частью истории, вам также нужна библиотека "Time"
// Time library - https://github.com/PaulStoffregen/Time #include "Time.h" //If you have issues with the default Time library change the name of this library to Time1 for example.

AG123
Сб 22 октября 2016 г., 5:47
вау, это очень крутой проект, попробую : D

Crtsuznik
Сб 22 октября 2016 г. 11:42
У меня есть эскиз загрузки без каких -либо ошибок (я использую серийный адаптер). Я еще ничего не подключил к этому, так как я все еще жду, когда дисплей произойдет с eBay.
Я попытался увидеть случайные выходы в серийном мониторе, но, похоже, нет вывода. Насколько я понимаю, я должен отправить его «S», чтобы начать, но когда я набираю S и отправляю его...Там нет изменений.
Что я делаю не так?

Кроме того, я использую Arduino IDE 1.6.9

Ахулл
Сб 22 октября 2016 г. 12:18
Область должна отвечать на следующие команды.
sCmd.addCommand("s", toggleSerial); // Turns serial sample output on/off sCmd.addCommand("h", toggleHold); // Turns triggering on/off sCmd.addCommand("t", decreaseTimebase); // decrease Timebase by 10x sCmd.addCommand("T", increaseTimebase); // increase Timebase by 10x sCmd.addCommand("z", decreaseZoomFactor); // decrease Zoom sCmd.addCommand("Z", increaseZoomFactor); // increase Zoom sCmd.addCommand("r", scrollRight); // start onscreen trace further right sCmd.addCommand("l", scrollLeft); // start onscreen trae further left sCmd.addCommand("e", incEdgeType); // increment the trigger edge type 0 1 2 0 1 2 etc sCmd.addCommand("y", decreaseYposition); // move trace Down sCmd.addCommand("Y", increaseYposition); // move trace Up sCmd.addCommand("g", decreaseTriggerPosition); // move trigger position Down sCmd.addCommand("G", increaseTriggerPosition); // move trigger position Up sCmd.addCommand("P", toggleTestPulseOn); // Toggle the test pulse pin from high impedence input to square wave output. sCmd.addCommand("p", toggleTestPulseOff); // Toggle the Test pin from square wave test to high impedence input.

Crtsuznik
Сб 22 октября 2016 г. 12:35
Теперь я пытался подключить B0 и B1, и красный свет начал мигать, так что это хорошо.
Однако до сих пор не было никаких данных о серийном мониторе. Какой скорость бода я должен использовать?

Ахулл
Сб 22 октября 2016 г. 13:11
Crtsuznik написал:Теперь я пытался подключить B0 и B1, и красный свет начал мигать, так что это хорошо.
Однако до сих пор не было никаких данных о серийном мониторе. Какой скорость бода я должен использовать?

AG123
Сб 22 октября 2016 г. 18:41
Пока что -то в некоторой степени увлечен этим, но просто добавив свои мысли на 2 цента, еще один «скучный» способ сделать область применения может состоять в том, чтобы прочитать объем DMA от ADC и передать это по USB (E.глин. USB Transports) к подключенному хост -компьютеру и для хост -компьютера отображает график (Scope) & делать дальнейшую обработку (e.глин. БПФ).

Есть различные преимущества, один из которых заключается в том, что у хост -компьютера, возможно, гораздо больше ресурсов E.глин. хранение и оперативная память (возможно, в гигабайтах против 20K на STM32F103CB) & Гораздо более быстрый процессор (скажем, многоядерный i3, i5, i7 и т. Д.).

Существует также возможность подключить несколько Maple-Mini, что делает его «параллельным» приобретением. Однако вещь в том, как сохранить начало Илнеса синхронизировать через множественные кленовые минии, если выполнять «параллельные» область или в этом отношении, чтобы представить его таким образом, чтобы казалось «синхронизацией» (это могло бы повернуть батареи клена Minis в «многоканальный» цифровой сигнал) анализатор цифрового сигнала)

Другим недостатком будет то, что приложение, возможно, должно быть записано на взаимодействие с Maple-Mini, чтобы быть полным объемом.

Но я думаю, что до сих пор стало довольно очевидным, так это то, что STM32 F1 делает «хорошие сферы». Его точность хороша 12 битов e.глин. отображает все гармоники / крошечные сигналы / шумовые езды по основным сигналам (e.глин. квадратная волна) и в значительной степени быстро 1-2 мсэма за секунду, сравнимые с некоторыми «реальными» областями. STM32 F4 с 3 АДК каждые 2+ М образцов/с, вероятно, будет еще более впечатляющим в этих аспектах.

Maple Minis - это «новые» профессиональные $ 5 на 1 МГц :ржу не могу:

AG123
Сб 22 октября 2016 г., 19:28
STM32 F4 может даже стоять на месте для этих 10 -х образцов M -образцов на параллельный логический анализатор
https: // www.Fussylogic.сопутствующий.Великобритания/Блог/?P = 1226

& Там ты иди, кто-то там тоже сделал: : D
http: // tomeko.net/miniscope_v2c/

Открытый исходный код в наши дни стал самым современным
http: // sigrok.org/wiki/main_page

http: // sigrok.org/wiki/beaglelogic
https: // github.com/abhishek-kakkar/beaglelogic/wiki
http: // beta.Beaglelogic.сеть/ BeagleLogic превращает ваш Beaglebone Black/Green в логический анализатор на 100 мс с с. Все, что вам нужно, это Beaglebone, SD -карта и Beaglelogic Cape, чтобы встать и бежать.

Санджупракаш
Чт 27 октября 2016 г. 9:26 утра
Привет!

Я пытался получить АЦП на плате минимальной разработки STM32F103C8T6 для выборки при 1 мс с использованием Arduino IDE. Я опробовал большинство кодов на STM32Duino, и ни один из них не загружается хорошо. Я записал простой эскиз Datalogger, который способен регистрировать 10 тыс. Образцов/сек в SD -карту . Эскиз с прицелом свиньи говорит, что можно получить почти 1 мс сб . Но я не могу расшифровать эскиз. Не могли бы вы помочь мне, указав методы, с помощью которых я могу получить более высокую скорость отбора проб с регистрацией ее на SD -карту или распечатав на серийном мониторе?

Это код, который я сейчас запускаю: #include #include #include const int chipSelect = PB12; int x = 0; unsigned long t = 0; File dataFile; void setup() { Serial.begin(250000); delay(1000); while (!Serial) {} Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } Serial.println("card initialized."); adc_set_sample_rate(ADC1, ADC_SMPR_1_5); dataFile = SD.open("1.txt", FILE_WRITE); t = millis(); } void loop() { if (!dataFile) return; if(Serial) if(Serial.read()=='0') //Enter 0 to stop logging and close file { dataFile.close(); } //Serial.println(analogRead(PA0)); dataFile.println(adc_read(ADC1,0)); x++; if (millis()-t>=1000) { Serial.println("X=");Serial.print(x); x = 0; t=millis(); //dataFile.close(); } }

Ахулл
Чт 27 октября 2016 г. 15:54
То, как мы получаем быструю производительность АЦП, используется с использованием двух чередующихся АЦП и полагаться на прерывания и DMA.. На первый взгляд это немного сложный, но основными частями решения являются блок кода ниже.
... adc_calibrate(ADC1); adc_calibrate(ADC2); setADCs (); //Setup ADC peripherals for interleaved continuous mode. ... void setADCs () { // const adc_dev *dev = PIN_MAP[analogInPin].adc_device; int pinMapADCin = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(ADC1, ADC_SMPR_1_5); //=0,58uS/sample. ADC_SMPR_13_5 = 1.08uS - use this one if Rin>10Kohm, adc_set_sample_rate(ADC2, ADC_SMPR_1_5); // if not may get some sporadic noise. see datasheet. // adc_reg_map *regs = dev->regs; adc_set_reg_seqlen(ADC1, 1); ADC1->regs->SQR3 = pinMapADCin; ADC1->regs->CR2 |= ADC_CR2_CONT; // | ADC_CR2_DMA; // Set continuous mode and DMA ADC1->regs->CR1 |= ADC_CR1_FASTINT; // Interleaved mode ADC1->regs->CR2 |= ADC_CR2_SWSTART; ADC2->regs->CR2 |= ADC_CR2_CONT; // ADC 2 continuos ADC2->regs->SQR3 = pinMapADCin; } // Grab the samples from the ADC // Theoretically the ADC can not go any faster than this. // // According to specs, when using 72Mhz on the MCU main clock,the fastest ADC capture time is 1.17 uS. As we use 2 ADCs we get double the captures, so .58 uS, which is the times we get with ADC_SMPR_1_5. // I think we have reached the speed limit of the chip, now all we can do is improve accuracy. // See; http://stm32duino.com/viewtopic.php?f=19&t=107&p=1202#p1194 void takeSamples () { // This loop uses dual interleaved mode to get the best performance out of the ADCs // dma_init(DMA1); dma_attach_interrupt(DMA1, DMA_CH1, DMA1_CH1_Event); adc_dma_enable(ADC1); dma_setup_transfer(DMA1, DMA_CH1, &ADC1->regs->DR, DMA_SIZE_32BITS, dataPoints32, DMA_SIZE_32BITS, (DMA_MINC_MODE | DMA_TRNS_CMPLT));// Receive buffer DMA dma_set_num_transfers(DMA1, DMA_CH1, maxSamples / 2); dma1_ch1_Active = 1; // regs->CR2 |= ADC_CR2_SWSTART; //moved to setADC dma_enable(DMA1, DMA_CH1); // Enable the channel and start the transfer. //adc_calibrate(ADC1); //adc_calibrate(ADC2); samplingTime = micros(); while (dma1_ch1_Active); samplingTime = (micros() - samplingTime); dma_disable(DMA1, DMA_CH1); //End of trasfer, disable DMA and Continuous mode. // regs->CR2 &= ~ADC_CR2_CONT; /** * @brief Enable DMA requests * @param dev ADC device on which to enable DMA requests */ void adc_dma_enable(const adc_dev * dev) { bb_peri_set_bit(&dev->regs->CR2, ADC_CR2_DMA_BIT, 1); } /** * @brief Disable DMA requests * @param dev ADC device on which to disable DMA requests */ void adc_dma_disable(const adc_dev * dev) { bb_peri_set_bit(&dev->regs->CR2, ADC_CR2_DMA_BIT, 0); } static void DMA1_CH1_Event() { dma1_ch1_Active = 0; }

Громовой двор
Пт 28 октября 2016 г. 6:26
Привет! Я хотел бы поблагодарить автора, за то, что повторно посетил STM-O-Scope! Дело в том, что в последнее время я собирал проекты и решения для простых DIY-прицелов, и, их довольно много, особенно в русских говорящих на ресурсах (я латинский, но я знаю, что язык). Я решил, что эта модифицированная O -Scope будет первым, что я пытаюсь, чтобы увидеть, правильно ли я понял свои вещи - это первое прикосновение к STM для меня. И все прошло хорошо! У меня есть дисплей с прицелом на первом переключении. Очень хорошее чувство и поддержка, чтобы пойти дальше :) Вот визуальная радость:
http: // bildites.LV/A/684AF4CB#V6EDCHDA
Кстати, мне пришлось исправить использование библиотеки «Утоуч», потому что теперь его называют библиотекой «Urtouch», а также пришлось переименовать библиотеку «Time», как это было предложено в комментариях к эскизам. После этого все прошло хорошо. Еще не пробовал серийный выход. Показы часов, 1970 год. Мне тогда было два ;-)
Спасибо, и я буду следовать, если какие -либо достижения в этом конкретном проекте (или, возможно, новые тоже)!

РЕДАКТИРОВАТЬ: Я не уверен, как работать серийным взаимодействием. Должен ли я добавить типичный серийный начало наброски и установить скорость бода?

Санджупракаш
Пт 28 октября 2016 г. 8:25 утра
Ахулл написал:То, как мы получаем быструю производительность АЦП, используется с использованием двух чередующихся АЦП и полагаться на прерывания и DMA.. На первый взгляд это немного сложный, но основными частями решения являются блок кода ниже.
... adc_calibrate(ADC1); adc_calibrate(ADC2); setADCs (); //Setup ADC peripherals for interleaved continuous mode. ... void setADCs () { // const adc_dev *dev = PIN_MAP[analogInPin].adc_device; int pinMapADCin = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(ADC1, ADC_SMPR_1_5); //=0,58uS/sample. ADC_SMPR_13_5 = 1.08uS - use this one if Rin>10Kohm, adc_set_sample_rate(ADC2, ADC_SMPR_1_5); // if not may get some sporadic noise. see datasheet. // adc_reg_map *regs = dev->regs; adc_set_reg_seqlen(ADC1, 1); ADC1->regs->SQR3 = pinMapADCin; ADC1->regs->CR2 |= ADC_CR2_CONT; // | ADC_CR2_DMA; // Set continuous mode and DMA ADC1->regs->CR1 |= ADC_CR1_FASTINT; // Interleaved mode ADC1->regs->CR2 |= ADC_CR2_SWSTART; ADC2->regs->CR2 |= ADC_CR2_CONT; // ADC 2 continuos ADC2->regs->SQR3 = pinMapADCin; } // Grab the samples from the ADC // Theoretically the ADC can not go any faster than this. // // According to specs, when using 72Mhz on the MCU main clock,the fastest ADC capture time is 1.17 uS. As we use 2 ADCs we get double the captures, so .58 uS, which is the times we get with ADC_SMPR_1_5. // I think we have reached the speed limit of the chip, now all we can do is improve accuracy. // See; http://stm32duino.com/viewtopic.php?f=19&t=107&p=1202#p1194 void takeSamples () { // This loop uses dual interleaved mode to get the best performance out of the ADCs // dma_init(DMA1); dma_attach_interrupt(DMA1, DMA_CH1, DMA1_CH1_Event); adc_dma_enable(ADC1); dma_setup_transfer(DMA1, DMA_CH1, &ADC1->regs->DR, DMA_SIZE_32BITS, dataPoints32, DMA_SIZE_32BITS, (DMA_MINC_MODE | DMA_TRNS_CMPLT));// Receive buffer DMA dma_set_num_transfers(DMA1, DMA_CH1, maxSamples / 2); dma1_ch1_Active = 1; // regs->CR2 |= ADC_CR2_SWSTART; //moved to setADC dma_enable(DMA1, DMA_CH1); // Enable the channel and start the transfer. //adc_calibrate(ADC1); //adc_calibrate(ADC2); samplingTime = micros(); while (dma1_ch1_Active); samplingTime = (micros() - samplingTime); dma_disable(DMA1, DMA_CH1); //End of trasfer, disable DMA and Continuous mode. // regs->CR2 &= ~ADC_CR2_CONT; /** * @brief Enable DMA requests * @param dev ADC device on which to enable DMA requests */ void adc_dma_enable(const adc_dev * dev) { bb_peri_set_bit(&dev->regs->CR2, ADC_CR2_DMA_BIT, 1); } /** * @brief Disable DMA requests * @param dev ADC device on which to disable DMA requests */ void adc_dma_disable(const adc_dev * dev) { bb_peri_set_bit(&dev->regs->CR2, ADC_CR2_DMA_BIT, 0); } static void DMA1_CH1_Event() { dma1_ch1_Active = 0; }

Рекснанет
Пт 28 октября 2016 г. 8:45
Санджупракаш написал: Это код письма, который я использую, и для регистрации образцов требуется более минуты.
Также есть ли какой -нибудь способ сохранить значения в флэш -памяти, предоставленной на плате ?

Санджупракаш
Пт 28 октября 2016 г. 8:58 утра
Рекснанет написал: Сколько данных вам нужно хранить?
Написание на флэш-память всегда займет некоторое время, либо на SD-карту, либо во внутренней микроконтроллере Flash... Также у вас есть только 128 КБ макс. На внутренней вспышке (и некоторые из них будут использоваться кодом).
В зависимости от количества данных и ставки вы можете попытаться использовать временную оперативную память SPI в качестве буфера...

Рекснанет
Пт 28 октября 2016 г., 9:15 утра
Санджупракаш написал: Мне нужно хранить как минимум 6 секунд данных, то есть около 6 мс с.

Rogerclark
Пт 28 октября 2016 г. 9:19 утра
АЦП превышают 8 бит,

Поэтому, если OP использует полный диапазон АЦП, понадобится 2 байта на образец.

Следовательно, вдвое больше скорости данных (12 м)

Рекснанет
Пт 28 октября 2016 г., 9:22 утра
Ага :)

Я был "обрезать", чтобы сделать это проще :)
Если ему нужно больше 8 бит, да, это удваивает ситуацию...

Санджупракаш
Пт 28 октября 2016 г. 9:25 утра
Есть ли способ использовать DMA для передачи данных на SD -карту ?

И я не против иметь компромисс между количеством образцов, которые я получаю в секунду, пока я получаю более 100 км.

Rogerclark
Пт 28 октября 2016 г. 9:40
Я думаю, что у последней SD Lib есть DMA.

Попробуйте Googling »Сайт: STM32Duino.com sd dma "

Громовой двор
Вторник 8 ноября 2016 г., 19:11
Я был бы очень благодарен, если бы автор, или любой, кто знает и может сделать небольшие инструкции «для манекенов» о серийном взаимодействии с этой областью. Я использовал терминалы и последовательные связи раньше, проблема в том, что я очень новый в этой области STM. заранее спасибо!
П.С.: Есть ли запланированные достижения, изменения для этой области? Или это было просто быстрое упражнение, которое не планировалось стать «больше»? Я надеюсь, что он вырастет... :) Спасибо!

Ахулл
Вторник 8 ноября 2016 г., 22:17
Thunderowl написал:Я был бы очень благодарен, если бы автор, или любой, кто знает и может сделать небольшие инструкции «для манекенов» о серийном взаимодействии с этой областью. Я использовал терминалы и последовательные связи раньше, проблема в том, что я очень новый в этой области STM. заранее спасибо!
П.С.: Есть ли запланированные достижения, изменения для этой области? Или это было просто быстрое упражнение, которое не планировалось стать «больше»? Я надеюсь, что он вырастет... :) Спасибо!

Громовой двор
Ср. 09 ноября 2016 г., 10:04
Энди Халл, спасибо, что ответили. Когда я писал на одну страницу раньше, после некоторых исправлений в именах библиотек, сфера деятельности работал. Попытка последовательного терминала из Arduino IDE или от отдельной программы не дала никаких ответов. Где в случае STM-Duino я могу увидеть Baudrate, что я должен использовать для серийного взаимодействия?
Кроме того, в вашем учебном пособии есть:
https: // github.com/pingumacpenguin/stm3 ... L-Commands
«Вы, должно быть, собрали эскиз с флагом -deserial_usb, так что, например, если вы используете жанрерический STM32F103C, вам нужно что -то подобное в ваших досках.txt file.
genericstm32f103c.меню.upload_method.Stlinkmethod.строить.upload_flags = -dconfig_maple_mini_no_disable_debug = 1 -deserial_usb
(конец цитаты) ".

Я проверил, что в соответствии с C: \ Program Files (x86) \ arduino \ ardware \ arduino_stm32 \ stm32f1 \ in file boards.txt у меня есть это:
genericstm32f103c.меню.upload_method.Stlinkmethod.строить.upload_flags = -dconfig_maple_mini_no_disable_debug = 1 -deserial_usb -dgeneric_bootloader
Итак, есть еще один флаг, о загрузчике. Я должен редактировать сейчас?
Или, возможно, я, вероятно, использую искренне устаревшие .INO -файл для начала с? :)
Я был бы признателен для меня несколько уроков, новичок Duino-Stm :) Спасибо!

Ахулл
Ср. 09 ноября 2016 г., 11:16
Thunderowl написал:Энди Халл, спасибо, что ответили. Когда я писал на одну страницу раньше, после некоторых исправлений в именах библиотек, сфера деятельности работал. Попытка последовательного терминала из Arduino IDE или от отдельной программы не дала никаких ответов. Где в случае STM-Duino я могу увидеть Baudrate, что я должен использовать для серийного взаимодействия?
Кроме того, в вашем учебном пособии есть:
https: // github.com/pingumacpenguin/stm3 ... L-Commands
«Вы, должно быть, собрали эскиз с флагом -deserial_usb, так что, например, если вы используете жанрерический STM32F103C, вам нужно что -то подобное в ваших досках.txt file.
genericstm32f103c.меню.upload_method.Stlinkmethod.строить.upload_flags = -dconfig_maple_mini_no_disable_debug = 1 -deserial_usb
(конец цитаты) ".

Я проверил, что в соответствии с C: \ Program Files (x86) \ arduino \ ardware \ arduino_stm32 \ stm32f1 \ in file boards.txt у меня есть это:
genericstm32f103c.меню.upload_method.Stlinkmethod.строить.upload_flags = -dconfig_maple_mini_no_disable_debug = 1 -deserial_usb -dgeneric_bootloader
Итак, есть еще один флаг, о загрузчике. Я должен редактировать сейчас?
Или, возможно, я, вероятно, использую искренне устаревшие .INO -файл для начала с? :)
Я был бы признателен для меня несколько уроков, новичок Duino-Stm :) Спасибо!

Рекснанет
Ср. 09 ноября 2016 г. 13:45
Вы имеете в виду на серийном мониторе Arduino IDE?
Если это так, вам, возможно, придется менять Baudrate на раскрывающемся поле каждый раз, когда вы перепрограммируете STM, чтобы получить данные.
Не имеет значения, какой Baudrate вы выберете.
Это происходит со мной все время.

mausi_mick
Пт 11 ноября 2016 г., 2:57
У меня есть некоторые проблемы с областью:
Серийные функции начинаются только один раз, я включил в исходный
Заявление: сериал.начало (115200); с разными бодратами (9600), но без реального успеха.

Но функция прикосновения в порядке, но координаты идут слева направо для Y и внизу для x.

Дисплей 2.8 дюймов с прикосновением около 11 $.


mausi_mick

Rogerclark
Пт 11 ноября 2016 г., 4:02
:ржу не могу:

Я думал, что на фото, которую вы также запрограммировали его на игру в Galaxian ( https: // en.Википедия.org/wiki/galaxian )

Бьянкифан
Пт 11 ноября 2016 г., 10:30 утра
mausi_mick написал:серийные функции начинаются только один раз,

mausi_mick
Пт 11 ноября 2016 г. 13:03
На экране это должно быть что-то вроде «розовой свиньи», но это было немного сложно, потому что ручка была Q-наконечником, а координаты от TFT и прикосновение отличались (Ca 3mm).

Возможно, проблема с дисплеем заключается в том, что оба нуждаются в SPI-шпильки (SCK, MOSI; MISO, CS ...), Utouch / Urtouch - LIB является предполагаемой программной SPI.

Поэтому я выключил прикосновение - до и после использования - включено / выключение:

DigitalWrite (PB13, Low); // enable Touch device ######################################

...
пока (MyTouch.DataVailable () == false) && это сочетание < CalibrationTries) {

...

DigitalWrite (PB13, High); // disable Touch device #############################################


Из-за проблем с серийными CMD, которые я протестировал
Переключатели (на PIN PB7 ... PB3 (15...20 Maple Mini)) с прерывами с успехом:



void isr_15 () {// подписать временной базы, xzoomfactor, svolk, смещение и т. Д.
if (vorz == 0) vorz = 1;
иначе vorz = 0;
}

void ISR_16 () {// Увеличение, уменьшение временной базы
if (vorz == 1) if (временная база < 10000) Timebase = Timebase + 100;
if (vorz == 0) if (временная база > 100) временная база = временная база - 100;
}

void isr_17 () {// увеличить, уменьшить ZoomFactor
if (vorz == 1) if (xzoomfactor < 21) xzoomfactor += 1;
if (vorz == 0) if (xzoomfactor > 1) xzoomfactor -= 1;
}

void isr_18 () {// scrollrightleft
if (vorz == 1) if (startamplem < (ENDSAMPLE - 120)) Startsample += 100; // scrollright
if (vorz == 0) if (startamplem > (120)) Startsample -= 100; // Прокрутка
}

void isr_19 () {// увеличить, уменьшить y-позицию
if (vorz == 1) if (yposition < myheight) yposition ++;
if (vorz == 0) if (yposition > -myheight) yposition -;
}

void isr_20 () {// Увеличьте, уменьшить триггерпозицию
if (vorz == 1) if (triggervalue < Analog_max_value) triggervalue += trigger_position_step; // запустить этап позиции
if (vorz == 0) if (triggervalue > Trigger_position_step) triggervalue -= trigger_position_step; // запустить этап позиции
}

Теперь я протестирую то же самое с двумя квадратуренкодерами, первым для функции, второй для значения.

mausi_mick

Громовой двор
Пт 11 ноября 2016 г. 14:05
mausi_mick написал: ...
Из-за проблем с серийными CMD, которые я протестировал
Переключатели (на PIN PB7 ... PB3 (15...20 Maple Mini)) с прерывами с успехом
Теперь я протестирую то же самое с двумя квадратуренкодерами, первым для функции, второй для значения...

mausi_mick

Рекснанет
Пт 11 ноября 2016 г. 14:36
Большой! :)

Я не знал, что PIN ISR был таким простым :) Даже не нужно очищать int. Флаги и прочее?... хороший :)

Да, таким образом, в это действительно легко добавить энкодер! Даже 2!!! : D

mausi_mick
Сб 12 ноября 2016 г. 1:16
С энкодерами ("multi_encoder_acc") это не так просто, потому что им нужен таймер1. Но с этим таймером у меня были проблемы с применением, и я изменил его на таймер 3.
Поэтому мне пришлось деактивировать тестовый импульс:

// Тестовый импульс - это квадратная волна около 3.3V (я.эн. напряжение питания STM32) примерно на 1 кГц
// «Ардуно имеет фиксированную частоту ШИМ 490 Гц» - и кажется, что это также относится к STM32F103 с использованием текущих библиотек STM32F03 в соответствии с
// STM32, Maple и Maple Mini Port для IDE 1.5.х - http: // форум.Ардуино.CC/INDEX.PHP?Тема = 265904.2520
// Поэтому, если мы хотим точную частоту тестирования, мы не можем просто использовать по умолчанию разбитый 50% -ной цикл Тира.

// timer_set_period (timer3, 1000); //<<<<<<<<<<<<<<<<<<<<<<<<<<<
// toggletStpulseon ();

Но с переключателями у меня также были проблемы: PB3 ...PB7 функционировал, но не включите PA15.
Возможно, с переключателями лучше взять i2c.

mausi_mick

mausi_mick
Сб 12 ноября 2016 г. 1:56 утра
Привет,

изображение с модифицированного света экрана:

В левом тройке тест FOT Фактические позиции Encoder1 и Encoder2 (в красном).
В нижней строке вы можете увидеть 2 параметра: фактические используемые значения Encoder - Encoder 1/2.

Справа вы можете увидеть два резистора: 13 Ом от VCC (3.3V) до светодиодной пит-пилоты и 470 Ом между VCC и Reset-Pin.

На YouTube-видео с изменяющейся временной базой по сравнению с квадратурными кодерами:

https: // www.YouTube.com/watch?V = DPID25T ... e = youtu.быть]

Громовой двор
Сб 12 ноября 2016 г. 14:51
Mausi_mick, я желаю вам всего наилучшего в вашей работе над кодом, надеясь увидеть и использовать этот код (с кодерами или/и кнопками) в будущем! Я сам - я не так хорош в программировании :)

mausi_mick
Сб 12 ноября 2016 г., 19:29
Привет,

С двумя вращающимися кодерами я могу изменить параметры .
Encoder0 для функций (e.глин. Временная база, смещение, YPOS...), Encoder1 для определения функциональных параметров.
Я изменил SW, чтобы удерживать положение Encoder1, если я пойду с Encoder0 на другую функцию и обратно.(e.глин. Если временная база находится в положении 2 (200 мкс), и я изменяю E.глин. yposition и go, чем обратно с Encoder0+8 к временной базе, что есть старая позиция (200 мкл))).

Активное сенсорное поле меньше, чем TFT-поле . На картинке я отметил область розовыми кругами. Сенсорный центр находится примерно в 3 мм от графического центра.
P1020567-001.jpg
P1020567-001.JPG (164.84 киб) просмотрено 1279 раз

Rogerclark
Сб 12 ноября 2016 г., 19:37
Вы использовали код роторного энкодера, который @madias опубликовал вчера ?

mausi_mick
Солнце 13 ноября 2016 г. 2:38 утра
да,

multi_encoder_acc.молния

[URL]http: // www.STM32duino.com/viewtopic.PHP?t = 15]

Но я внесу некоторые изменения для SetPosition и устраняю функцию ACCE (1 или 5 шагов):



void readencoders () {// ******** Функция энкодера ##################
для (байтовый счетчик = 0; счетчик < Maxencoders; счетчик ++)
{
if ((gpio_read_bit (pin_map [encoderpina [счетчик]].gpio_device, pin_map [encoderpina [счетчик]].gpio_bit) ? Высокий: низкий) != A_set [счетчик])
{
A_set [счетчик] = !A_set [счетчик];
if (a_set [счетчик] && !B_set [счетчик]) encoderpos [счетчик] += 1;
// {if (millis () - encodertimer > 3) encoderpos [счетчик] += 1;
// else encoderpos [счетчик] += 5;
//}

encodertimer = millis ();

}
if ((gpio_read_bit (pin_map [encoderpinb [счетчик]].gpio_device, pin_map [encoderpinb [счетчик]].gpio_bit) ? Высокий: низкий) != B_set [счетчик])
{
B_set [счетчик] = !B_set [счетчик];
if (b_set [счетчик] && !A_set [счетчик]) encoderpos [счетчик] -= 1;
// {if (millis () - encodertimer > 3) Encoderpos [счетчик] -= 1;
// else encoderpos [счетчик] -= 5;
//}
encodertimer = millis ();

}
}
}


и для установленной позиции:

void setencoderpos (byte enc_nr, int16_t pos_nr)
{
encoderpos [enc_nr] = pos_nr;

}

Ахулл
Солнце 13 ноября 2016 г. 11:46
Просто быть педантичным, я знаю, но если вы оберните код в [ /code] tags, it makes it much easier for others to cut and paste. [code] void readEncoders() { // ********encoder function ################## for (byte counter = 0; counter < MAXENCODERS; counter++) { if ( (gpio_read_bit(PIN_MAP[encoderpinA[counter]].gpio_device, PIN_MAP[encoderpinA[counter]].gpio_bit) ? HIGH : LOW) != A_set[counter] ) { A_set[counter] = !A_set[counter]; if ( A_set[counter] && !B_set[counter] ) encoderpos[counter] += 1; // { if (millis() - encodertimer > 3) encoderpos[counter] += 1; // else encoderpos[counter] += 5; // } encodertimer = millis(); } if ( (gpio_read_bit(PIN_MAP[encoderpinB[counter]].gpio_device, PIN_MAP[encoderpinB[counter]].gpio_bit) ? HIGH : LOW) != B_set[counter] ) { B_set[counter] = !B_set[counter]; if ( B_set[counter] && !A_set[counter] ) encoderpos[counter] -= 1; // { if (millis() - encodertimer > 3) encoderpos[counter] -= 1; // else encoderpos[counter] -= 5; // } encodertimer = millis(); } } }

Rogerclark
Солнце 13 ноября 2016 г., 19:41
Энди

Я нахожу код намного проще для чтения, если он правильно отступает.

Если мне придется работать над каким -то кодом, от кого -то другого, то это не отступает, то одна из первых вещей, которые я в конечном итоге делаю, - это отступить кусочки кода I и работать над.
Это помогает мне понять, как функционирует код / ​​потоки

В C есть ряд общих ошибок, и одна из них - путаница в конце блока «если», особенно когда брекеты не используются (для одной линии)

Я знаю, что многие люди думают, что это излишнее, но я обычно стараюсь положить брекеты даже для отдельных линий внутри блока, а также соответственно отступить за одну линию.

mausi_mick
Солнце 13 ноября 2016 г., 19:56
Извините, я согласен,

Это более яснее более компактное.

Сегодня я немного протестировал функциональность сенсорного телевидения на дисплее,
Я определил два поля на левой стороне дисплея . Самое главное поле для активации ведьма прикоснитесь к названию (+/-, вверх/вниз),
Поле ниже предназначено для изменения значения временного базы.

Вы можете увидеть это на YouTube:

Увеличьте временной базы:

https: // www.YouTube.com/watch?v = 5ys88sk ... e = youtu.быть

Уменьшение временной базы:

https: // www.YouTube.com/watch?V = JHKAI3SEDZE

Но я думаю, что с двумя кодерами лучше

mausi_mick
Солнце 13 ноября 2016 г., 8:21 вечера
В связи с прикосновением я изменил
Программа urtouch_buttontest для использования с ADAFRIT_ILI9341_STM - LIB.


Источник:
[

ZMEMW16
Солнце 13 ноября 2016 г., 8:54 вечера
так что пи - нет, не . :)
SRP

mausi_mick
Пн 14 ноября 2016 г., 7:53
Привет,

Я проверил сенсорный экран с модифицированной программой QuickDraw в Urtouch-Lib.

Вы можете видеть, что около 10% видимого дисплея вверху не используются для сенсорной функции,
то же самое на дне и около 5% с правой стороны.

Urtouch_quickdraw_00.Ино
(2.62 киб) скачано 179 раз

Громовой двор
Пн 14 ноября 2016 г. 8:01
Таким образом, более или менее окончательный код будет содержать как энкодер/кнопку, и контроль подключения? Или, сохраняя, чтобы оба, возможно, вызвали немного замедления и т. Д?

Стивестронг
Пн 14 ноября 2016 г. 8:13 утра
Чтобы использовать весь экран для прикосновения, просто найдите форум для «калибровки прикосновения».

mausi_mick
Пн 14 ноября 2016 г. 8:40
У меня это есть,

Я пришлю его через несколько минут


mausi_mick

mausi_mick
Пн 14 ноября 2016 г. 8:55 утра
Привет,

Здесь модифицированная программа калибровки сенсорной калибровки от Urtouch Lib
С модификациями для использования с Adafruits-Tft-Libs (ILI9341 SPI).
Stm32_urtouch_calibration_00.Ино
(14.18 киб) скачано 222 раз

mausi_mick
Пн 14 ноября 2016 г., 9:18 утра
Привет, гром,

Моя программа тестирования содержит в настоящее время обе функции:
2 вращающиеся энкодеры и сенсорная функция (только 2 сенсорные поля, реализованные для знака и временной базы).

Но если я тестирую прикосновение («временная база»), я переключаю Encoder0 в другой положении, E.g yposition или смещение.

Но я думаю, что с помощью энкодеров это более важно, и я бы предпочел это.
Возможно, с некоторыми «нормальными» переключателями (перерывами), даже если это немного дороже.

Но я думаю, что все открыто, возможно, я стараюсь связаться со вторым дисплеем SPI только для параметров.

Громовой двор
Пн 14 ноября 2016 г., 9:29
Спасибо, mausi_mick. Я был бы очень признателен, если бы вы подумали об этом поделиться полным кодом, и я полностью осознаю, что это не будет закончено, не задавать вопросы о поддержке о. Мне нравится сам процесс :) И, по этому поводу, изучая код, я узнаю что -то или два. Когда я отправил несколько страниц обратно, я получил базовую работу по настройке, я могу проверить любой новый код для этого устройства OSC.

Рекснанет
Пн 14 ноября 2016 г., 9:40
Кадровая, кажется, много спускается с добавлением функций сенсорного экрана...
Также это немного не :) показывая 9fps, и видно, что волна обновляется примерно на 1 кадры в секунду.
Но это связано с тем, как он рассчитывается (моя вина? :) )...и, вероятно, что -то было добавлено между отбором времени.

Кажется, что энкодер - лучший подход с точки зрения скорости...

mausi_mick
Пн 14 ноября 2016 г., 10:06 утра
Привет, гром,

Вот мой последний код вчерашнего дня.

На слевах верхней части экрана два числа видны (для тестирования), они изменили свое значение, если вы касаетесь экрана. Это для проверки координат, где вы нажали.
STM32-O-SCOPE-04.Ино
(42.22 киб) скачано 202 раз

Громовой двор
Пн 14 ноября 2016 г., 10:11
Отличный! Лилс Пальдис! :) И это «большое спасибо» в Латвине. Я опубликую впечатления, как только у меня будет время, чтобы проверить это (завтра, скорее всего).

Ахулл
Пн 14 ноября 2016 г. 12:31
Рекснанет написал:Кадровая, кажется, много спускается с добавлением функций сенсорного экрана...
Также это немного не :) показывая 9fps, и видно, что волна обновляется примерно на 1 кадры в секунду.
Но это связано с тем, как он рассчитывается (моя вина? :) )...и, вероятно, что -то было добавлено между отбором времени.

Кажется, что энкодер - лучший подход с точки зрения скорости...

mausi_mick
Пн 14 ноября 2016 г. 14:45
привет,

Я думаю, что разница в цене между кодерами и горшками не большая. Вы можете получить кодеры за 1 или 2 $ $.
Но у вас больше гибкости.
Эн.глин. Мне нужен Encoder 0 для функций (временная база, позиции, триггер ...) и второй энкодер 1 для значений функции.
И я свободен: я беру, возможно, 12 положений по переключателям для временного базы, 20 для YPOS ... И я могу изменить это на SW.
И реакция - из -за прерываний - быстро.


mausi_mick

Рекснанет
Пн 14 ноября 2016 г. 15:08
У энкодера есть кнопка, поэтому нет необходимости в 2 энкодерах.
С помощью кнопки вы можете переключаться между двумя (или более) функциями.
Например:
1- Поверните, чтобы выбрать функцию (время масштаба, амплитуда, триггер и т. Д.)
2- Нажмите, чтобы выбрать функцию.
3- Поверните, чтобы изменить значение.
4- Нажмите, чтобы вернуться в главное «меню».

Ахулл
Пн 14 ноября 2016 г., 16:15
mausi_mick написал:...
Я думаю, что разница в цене между кодерами и горшками не большая. Вы можете получить кодеры за 1 или 2 $ $.
...
mausi_mick

Ахулл
Пн 14 ноября 2016 г., 16:22
Рекснанет написал:У энкодера есть кнопка, поэтому нет необходимости в 2 энкодерах.
С помощью кнопки вы можете переключаться между двумя (или более) функциями.
Например:
1- Поверните, чтобы выбрать функцию (время масштаба, амплитуда, триггер и т. Д.)
2- Нажмите, чтобы выбрать функцию.
3- Поверните, чтобы изменить значение.
4- Нажмите, чтобы вернуться в главное «меню».

Рекснанет
Пн 14 ноября 2016 г., 16:40
Да, я знаю, но, как у моего, есть этот переключатель... :)

Я собираюсь купить некоторые из них, у которых уже есть адаптер печатной платы:
https: // pt.aliexpress.com/item/1pcs-fre ... Ид = 400103

Ахулл
Пн 14 ноября 2016 г., 23:17
Рекснанет написал:Да, я знаю, но, как у моего, есть этот переключатель... :)

Я собираюсь купить некоторые из них, у которых уже есть адаптер печатной платы:
https: // pt.aliexpress.com/item/1pcs-fre ... Ид = 400103

mausi_mick
Ср 16 ноября 2016 г., 9:34
Привет, Рекснанет,

Это была хорошая идея от вас использовать только один ротационный энкодер (и на нем переключатель).

Но немного работы ...

Теперь программа тестирования можно использовать.

I Последняя строка экрана, теперь это поля деревьев с цифрами для
- последняя функция SET (1...7)
- Для последнего параметра SET (отличается от функции)
- Для положения энкодера (желтый текст

Если переключатель энкодера находится в положении 1 (изменение функции), поле серое, а цвет текста черный.
Если переключатель находится в положении 2 (изменение параметров), поле пурпурное и черный цвет текста.
Если переключатель находится в положении 0, два поля нормальны по зеленым/черным и положению энкодера
не имеет влияния.

Громовой двор
Ср. 16 ноября 2016 г., 9:54
mausi_mick написал: Это была хорошая идея от вас использовать только один ротационный энкодер (и на нем переключатель).
Теперь программа тестирования можно использовать.
...

Рекснанет
Ср 16 ноября 2016 г. 10:11
mausi_mick написал:Привет, Рекснанет,

Это была хорошая идея от вас использовать только один ротационный энкодер (и на нем переключатель).

Но немного работы ...

Рекснанет
Ср 16 ноября 2016 г. 11:08
Только что увидел это в коде :)
attachInterrupt(but15, isr_15, RISING); // sign (1=increase,0=decreas)

mausi_mick
Ср 16 ноября 2016 г., 14:12
Привет,

Видео на YouTube с прицелом с 1 энкодером:


[URL] [https: // www.YouTube.com/watch?v = _tr434g ... уту.быть/url]

mausi_mick
Чт 17 ноября 2016 г., 4:51
Привет, Рекснанет !

Как вы предложили, я изменил энкодер.
Работает очень хорошо. Нет проблем с отскоком.Спасибо !


Здесь код:

Рекснанет
Чт 17 ноября 2016 г., 9:13
mausi_mick написал:Привет, Рекснанет !

Как вы предложили, я изменил энкодер.
Работает очень хорошо. Нет проблем с отскоком.Спасибо !

Рекснанет
Чт 17 ноября 2016 г., 16:02
Очевидно, вы также можете использовать конфигурацию прерывания «Изменение», которая приводит к этому подходу.

Похоже, это хорошая ссылка:
http: // makeatronics.блог.Pt/2013/02 ... -с.HTML

mausi_mick
Пт 18 ноября 2016 г. 10:18 утра
Привет,
Мне нужно прерывание только на PIN16 / PB6.
Я использую энкодер EC-11 из Альп только с 18 положениями переключателей. Характеристика переключения не симметрична:
Ec-11_switch_characteristic.jpg
EC-11_SWITCH_CHARACTERISTIST.JPG (77.1 киб) просмотрено 1377 раз

Рекснанет
Пт 18 ноября 2016 г. 11:10
Привет,
Хорошо, сейчас я вижу. С EC11-E... Типы вы можете использовать только одно прерывание.
Может быть, это была главная идея для их создания такого типа переключения... хит :)

Громовой двор
Ср 23 ноября 2016 12:06
Привет, mausi_mick! Наконец -то у меня есть время, чтобы попробовать ваши наброски. Похоже, у меня что -то не так, может быть, у вас и других есть несколько предложений для меня. Эскиз 07 - это «замороженное», и изображение обновляется только на момент, если я что -то делаю с кодером. В эскизе "06" экрана обновляется примерно за 1 раз за 1 секунду. Для тестирования, что у меня есть аппаратное обеспечение, я загрузил старый базовый эскиз "STM32-O-Scope.Ино " - все работает хорошо.
При составлении «06», «07», я получил предупреждения о «void dma_setup_transfer», может быть связанным (извините, мое плохое знание)? Предупреждения: E:\Elektron\OSC\STM32-O-Scope\mausi_mick\STM32-O-Scope-07\STM32-O-Scope-07.ino: In function 'void takeSamples()': E:\Elektron\OSC\STM32-O-Scope\mausi_mick\STM32-O-Scope-07\STM32-O-Scope-07.ino:732:3: warning: 'void dma_setup_transfer(dma_dev*, dma_channel, volatile void*, dma_xfer_size, volatile void*, dma_xfer_size, uint32)' is deprecated (declared at C:\Program Files (x86)\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/stm32f1/include/series/dma.h:563) [-Wdeprecated-declarations] dma_setup_transfer(DMA1, DMA_CH1, &ADC1->regs->DR, DMA_SIZE_32BITS, ^ E:\Elektron\OSC\STM32-O-Scope\mausi_mick\STM32-O-Scope-07\STM32-O-Scope-07.ino:733:85: warning: 'void dma_setup_transfer(dma_dev*, dma_channel, volatile void*, dma_xfer_size, volatile void*, dma_xfer_size, uint32)' is deprecated (declared at C:\Program Files (x86)\Arduino\hardware\Arduino_STM32\STM32F1\system/libmaple/stm32f1/include/series/dma.h:563) [-Wdeprecated-declarations] dataPoints32, DMA_SIZE_32BITS, (DMA_MINC_MODE | DMA_TRNS_CMPLT));// Receive buffer DMA

Рекснанет
Ср 23 ноября 2016 г., 14:30
Thunderowl написал:Эскиз 07 - это «замороженное», и изображение обновляется только на момент, если я что -то делаю с кодером. В эскизе "06" экрана обновляется примерно за 1 раз за 1 секунду.

mausi_mick
Ср 23 ноября 2016 г., 17:17
Только. Если функции/параметры изменены с помощью энкодера, вы должны вызовать set_func или set_value.

Поэтому вам нужен флаг, установленный в Encoder-ISR и сбросьте с помощью set_func/value:

volatile boolean enc_flag= false;

Ахулл
Чт, 01 декабря 2016 12:42
Я играл с одним из этих крошечных 1.44 "TFT EBAY показывает и подумал, можно ли заставить Pig-O-Scope работать с ним. Этот дисплей основан на ILI9163C, но исходный код вызывает дисплей ILI9341. После небольшого царапины головы и много бессмысленного рефакторирования кода... Я присутствует...

Бессмысленно маленький свинья... В комплекте с 128x128 пикселями и 1.44 "почти неразборчивой квадратной волны 1 кГц для вашего развлечения.
Rimg0090_small.jpg
Rimg0090_small.JPG (203.14 киб) просмотрено 1762 раз

Громовой двор
Чт, 01 декабря 2016 12:49
Ахулл написал:Я присутствует...
Бессмысленно маленький свинья... в комплекте с 1.44 "почти неразборчивой квадратной волны 1 кГц для вашего развлечения.
Если кто -то фантазий слияет эту версию, обратно в основной вариант, отправьте мне запрос на вытягивание GIT.

Ахулл
Чт, 01 декабря 2016 12:54
Thunderowl написал:Ахулл написал:Я присутствует...
Бессмысленно маленький свинья... в комплекте с 1.44 "почти неразборчивой квадратной волны 1 кГц для вашего развлечения.
Если кто -то фантазий слияет эту версию, обратно в основной вариант, отправьте мне запрос на вытягивание GIT.

Громовой двор
Чт, 01 декабря 2016 г. 13:08
Ахулл написал:Thunderowl написал:Спасибо за эту версию! Но этот код по-прежнему с контроль только для последовательности только для?

Zoomx
Пт 02 декабря 2016 г. 14:23
Ахулл написал: Да, крошечная версия - это развлекательный проект на обед, не предназначенный для чего -либо, кроме как держать меня удивленным.

ZMEMW16
Пт, 02 декабря 2016 г., 14:28
+1 : D

Громовой двор
Пт 02 декабря 2016 г. 14:56
Zoomx написал: Почему не 0.96 "OLED? :ржу не могу:

Ахулл
Сб 3 декабря 2016 г., 15:47
Я делал игрушку с использованием 0.96 "OLED, и я могу взломать это некоторое время. В моем стремлении найти самый дешевый подходящий экран с сенсорной панелью, я наткнулся на эти -> http: // www.eBay.сопутствующий.Великобритания/ITM/282274565558? ... Ebidx%3ait

Они должны работать с UTFT Libs, поэтому я заказал один. OLED поставляется в нескольких разных ароматах и ​​немного дороже, и, очевидно, не имеет сенсорной панели. Я полагаю, что большинство из этих дешевых дисплеев TFT с сенсорными панелями являются «восстановленные запасы», аналогичные большим монохромным дисплеям "Nokia 5110". Я думаю, что Nokia по -прежнему побеждают, чем оно доходит до низкого энергопотребления, но это соревнование по тесному пробегу, так как для многих из этих дисплеев большая часть мощности используется в подсветке.


Интересно, стоит ли стоит добавить поддерживаемые дисплеи в вики, что все думают? :?:

Громовой двор
Сб 3 декабря 2016 г., 17:06
Ахулл написал:... квест, чтобы найти самый дешевый подходящий экран с сенсорной панелью, я наткнулся на эти...

Ахулл
Сб 3 декабря 2016 г., 22:03
Этот первый показ... Я купил пару из них некоторое время назад (тоже нет здравого смысла : D ). Насколько я помню, это сработало довольно хорошо - тот, который в этом списке основан на 7781, но, насколько я помню, есть и другие варианты, и у меня мог быть другой контроллер. Насколько я помню, я использовал библиотеки Swift (или, возможно, UTFT) с ним, а не Adafruit.

Второй, который вы упомянули, - это дисплей на основе ILI9341, поэтому теоретически он будет хорошо работать с. Если вы просмотрите форум, я думаю, что вы найдете страницы обоих этих контроллеров. 3.5 -дюймовый дисплей должен позволить вам управлять им либо 16 PONS GPIO, либо 8 по внешнему виду разъема, некоторые исследования на контроллере могут определить, как использовать 16 -битный.

Громовой двор
Сб 3 декабря 2016 г. 22:11
Спасибо, Энди. И, конечно же, я также заказал 2-дюймовый ЖК-дисплей. Просто иметь те же игрушки, что и вы. : D : D

mausi_mick
Sun 04 декабря 2016 г. 8:19
Привет,

Я немного протестировал с Urtouch Lib,

реализовано только для борьбы с временной и Yposition.

Но это не так удобно по сравнению с вращающимися кодерами.
Частично из -за его функционирования с опросом в петле ().

Здесь картина из меню:

P1020590.jpg
P1020590.JPG (134.68 киб) просмотрено 1403 раз

Ахулл
Sun 04 декабря 2016 г. 8:36 утра
Частично из -за его функционирования с опросом в петле (). Одним из вариантов было бы провести опрос, управляемый прерыванием таймера. Это может быть более отзывчивым.

mausi_mick
Пн, 05 декабря 2016 г., 15:59
Я немного изменил меню, но без прерывания. Теперь это быстрее (вы можете увидеть в видео):


https: // youtu.be/ouh_jc8ks1k

В правом нижнем углу у меня есть невидимое сенсорное поле для начала и остановка сенсорного меню.
Теперь реализованы эти функции: временная база (ширина шага 100), y_position (шаг-ширина 10) и y-zoomfactor (100...500 = 1-5).

Если вы используете большие сенсорные поля с большим расстоянием до края, вы можете манипулировать им пальцами.

mausi_mick
Пн, 05 декабря 2016 г., 17:21
Теперь я опубликовал более длинное видео . Вы можете увидеть, насколько легко и быстро вы можете изменить параметры с помощью сенсорной функции, если вы нажмете правильное поле.


https: // youtu.be/agewbowofy4

Громовой двор
Пн, 05 декабря 2016 г., 21:03
Спасибо, Mausi_mick, за ваши продолжающиеся усилия!

AG123
Вт 06 декабря 2016 г., 5:43 утра
Ахулл написал:Я играл с одним из этих крошечных 1.44 "TFT EBAY показывает и подумал, можно ли заставить Pig-O-Scope работать с ним. Этот дисплей основан на ILI9163C, но исходный код вызывает дисплей ILI9341. После небольшого царапины головы и много бессмысленного рефакторирования кода... Я присутствует...

Бессмысленно маленький свинья... В комплекте с 128x128 пикселями и 1.44 "почти неразборчивой квадратной волны 1 кГц для вашего развлечения.

Изображение


Маленький, но (почти) идеально сформирован. Фотография не делает это справедливо.. Этот маленький дисплей должен поставляться с парой биноклей, чтобы прочитать его. : D

Громовой двор
Вторник 06 декабря 2016 г. 8:22 утра
AG123 написал: О, вау, «умные часы», носимый, o-scope, добавьте акселерометр & 1 мог график этого спринта 100 м или ходить в парке :ржу не могу:

Рекснанет
Вт 06 декабря 2016 г., 9:20 утра
Thunderowl написал:AG123 написал: О, вау, «умные часы», носимый, o-scope, добавьте акселерометр & 1 мог график этого спринта 100 м или ходить в парке :ржу не могу:

Рекснанет
Вторник 06 декабря 2016 г. 9:26 утра
mausi_mick написал:Привет,

Я немного протестировал с Urtouch Lib,

реализовано только для борьбы с временной и Yposition.

Но это не так удобно по сравнению с вращающимися кодерами.
Частично из -за его функционирования с опросом в петле ().

Здесь картина из меню:

P1020590.JPG

mausi_mick
Вторник 06 декабря 2016 12:29
Привет, Рекснанет,

Баут это только для передней стороны.
У меня были проблемы с Maple-Mini на борту хлеба (я думаю, что до большой возможности между булавками. Поэтому я должен сделать
мой собственный макет (но простая медная резак с помощью коробки).

Я изменил сенсорное меню для ручки с маленьким ? пальцы:

P1020596.JPG
P1020596.JPG (125.47 киб) просмотрено 1433 раза

mausi_mick
Ср. 07 декабря 2016 г. 8:45 утра
Я активировал некоторые другие функции в меню:


https: // youtu.be/6mc8fgf__o8

Бьянкифан
Ср. 07 декабря 2016 г., 11:56
mausi_mick написал:Я активировал некоторые другие функции в меню:

mausi_mick
Ср. 07 декабря 2016 г. 18:45
Привет, Бьянкифан,

Это 2.8 "Spi-Display с ILI9341 без. TCJTM24028-SPI.

У меня есть другие диплом с ILI9327 и ILI9841, но у меня есть проблемы с дисплеями на STM32F103 / Maple Mini Clone

Если я изменяю триггерпозицию/значение или x-zoomfactor, программа сбивает...

Другие рабочие стабильны.

Joxo989
Солнце 18 декабря 2016 г. 9:53 утра
Привет,

Я пытаюсь заставить свинью-o-scope на синей таблетке.

Хотя сама прицел, кажется, работает нормально, я
Проблема с серийным вводом -выводом.
// Create USB serial port USBSerial serial_debug; void setup() { .... serial_debug.begin(); serial_debug.println("Hello from serial_debug");

Громовой двор
Солнце 18 декабря 2016 г., 9:59
Я мог бы добавить, что у меня все еще нет четкого представления о том, как использовать последовательную связь для этой области под окнами тоже. Но это, вероятно, только я не образован :)

Ахулл
Солнце 18 декабря 2016 г. 10:10
Я беспокоился о некоторых серийных терминальных эмуляторах.

Серийный выход должен выйти из серийного устройства USB.

Проблема, по -видимому, связана с линейными окончаниями (<герметичный><LF>) и/или последовательное сделку (DTR/DSR, x-on/x-off).

Вам может потребоваться экспериментировать с настройками окончания линии, а также, возможно, также рукопожатие (DTR/DSR и т. Д.) На вашем конкретном эмуляторе терминала, чтобы получить надежный выход. Это не уникально для O-Scope, у меня были аналогичные проблемы с другим кодом, используя серийный вывод Arduino.

Громовой двор
Солнце 18 декабря 2016 г. 10:37 утра
Спасибо, Ахалл, за подсказки. Попробую в какой -то момент. У меня есть несколько DIY-прицел, экспериментирующие по строительству, идут параллельно, так что нет определенных временных шкал для любого из них, в частности, в частности :) Если кто -то интересуется другими проектами, я нахожу интересным - напишите мне сообщение, я думаю. Или, если стартер захочет этого, я могу опубликовать все здесь (некоторые из них не являются STM32, например, клон дешевых USB -Scopes Hantek/Instrustar - они основаны на кипарисе).

Ахулл
Солнце 18 декабря 2016 г. 12:41
Thunderowl написал:Спасибо, Ахалл, за подсказки. Попробую в какой -то момент. У меня есть несколько DIY-прицел, экспериментирующие по строительству, идут параллельно, так что нет определенных временных шкал для любого из них, в частности, в частности :) Если кто -то интересуется другими проектами, я нахожу интересным - напишите мне сообщение, я думаю. Или, если стартер захочет этого, я могу опубликовать все здесь (некоторые из них не являются STM32, например, клон дешевых USB -Scopes Hantek/Instrustar - они основаны на кипарисе).

Joxo989
Солнце 18 декабря 2016 г. 13:23
Спасибо, Энди.

И ... Какой порт UART делает SerialCommand SCMD;
использовать?

Ахулл
Солнце 18 декабря 2016 г. 13:50
Joxo989 написал:Спасибо, Энди.

И ... Какой порт UART делает SerialCommand SCMD;
использовать?

Joxo989
Солнце 18 декабря 2016 г. 15:24
еще раз спасибо.

Re: SerialCommand:
Картирование CRLF в терминальной программе сделало свое дело....

Ахулл
Солнце 18 декабря 2016 г. 16:00
Joxo989 написал:еще раз спасибо.

Re: SerialCommand:
Картирование CRLF в терминальной программе сделало свое дело....

Громовой двор
Пн 19 декабря 2016 г., 19:19
Ахулл написал:... В моем стремлении найти самый дешевый подходящий экран с сенсорной панелью, я наткнулся на эти -> http: // www.eBay.сопутствующий.Великобритания/ITM/282274565558? ... Ebidx%3ait
Они должны работать с UTFT Libs, поэтому я заказал один. ...

Ахулл
Пн 19 декабря 2016 г., 22:48
Thunderowl написал:Ахулл написал:... В моем стремлении найти самый дешевый подходящий экран с сенсорной панелью, я наткнулся на эти -> http: // www.eBay.сопутствующий.Великобритания/ITM/282274565558? ... Ebidx%3ait
Они должны работать с UTFT Libs, поэтому я заказал один. ...

Громовой двор
Пт 23 декабря 2016 г., 23:38
Ахулл написал:Я беспокоился о некоторых серийных терминальных эмуляторах.
Серийный выход должен выйти из серийного устройства USB.

Ахулл
Сб 24 декабря 2016 г. 12:18 утра
Thunderowl написал:Ахулл написал:Я беспокоился о некоторых серийных терминальных эмуляторах.
Серийный выход должен выйти из серийного устройства USB.

Громовой двор
Сб 24 декабря 2016 г. 16:15
С Рождеством, все! :)

Громовой двор
Солнце 25 декабря 2016 12:56
Могу я все еще опубликовать свое письмо о рождественских пожеланиях Санте? :)
Я полагаю, было бы здорово, если бы мы систематизировали обновленные ссылки на текущие, «последние и лучшие» версии «O-Scope» где-то легко доступны без. Я думаю, это может быть «липкий» первый пост этой ветки, например,. С ссылками на текущие версии кода от различных пользователей, которые создают «вилки». Иногда это делается в подписи первого сообщения автора.
Можем ли мы пожелать, на Рождество? :) Или, может быть, Новый год :)
Пожалуйста, вопрос Mausi_mick: я полагаю, что вы также являетесь пользователем Windows, и, судя по вашим предыдущим сообщениям, также изо всех сил пытаясь иметь последовательное взаимодействие? Или, может быть, любой успех, которым вы могли бы поделиться? Это похоже на то, что серийное соединение возможно только для пользователей, не являющихся Windows, здесь. Я могу надеяться, что я ошибаюсь. И, mausi_mick, какой у вас текущий код, который вам нравится ваш? Это ориентирован на кодер, или прикосновение, или оба, может быть? заранее спасибо!

Ахулл
Солнце 25 декабря 2016 г., 21:26
Вики здесь -> https: // github.com/pingumacpenguin/stm32-o-scope/wiki
Приглашаются все запросы на притяжение и вики. Если вы выясните причину ваших серийных проблем Windows (не только установка реальной операционной системы, конечно : Twisted: ) разместите их на вики и поделитесь ими здесь.

Громовой двор
Солнце 25 декабря 2016 г., 21:36
Да, но как насчет работы Mausi_mick, Racemaniac, Rexanet, может быть, больше других?

mausi_mick
Пн 26 декабря 2016 г., 10:38 утра
Привет, гром,

В прошлый раз я тестировал другие дисплеи на STM32 (ILI9327, ILI9481), но без успеха.

И в этой теме я немного протестировал с прикосновением (urtouch-lib) .
На 2.8 "ILI9341 Дисплей можно изменить параметры на прикосновениях пальцами, на меньших дисплеях вы должны взять палку или внести изменения по энкодеру (ы).

Пожелания на новый год:
-
-
-
- Второй канал для O_SCOPE (для тестирования квадратурных кодеров ... )
- Большой дисплей с большим количеством пикселей (например, ILI9481-8bit? 480 x 320)) для отображения сигнала с 8-битным разрешением.

Ахулл
Пн 26 декабря 2016 г., 10:54
Я взломал версию для * меньшего * дисплея (давай, я не Санта -Клаус... Я не могу дать вам все игрушки, которые вы хотите ;) )

Вот разница между взломанным tft_ili9163c 1.4 -дюймовая версия (первая) и оригинальная версия adafruit_ili9341_stm git (второе), чтобы вы могли увидеть, какие изменения необходимы. Я не собираюсь поддерживать различные дисплеи, но если вы хотите выполнять работу таким образом, что вы можете определить тип дисплея и автоматически включать правильные либера. Вам, возможно, придется обрезать часть раздувания, а также определить лучший набор цветов.
1,2c1,2 < /*. < (c) Andrew Hull - 2015 --- > /*. > (c) Andrew Hull - 2015 4c4 < STM32-O-Scope - aka "The Pig Scope" or pigScope released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991 --- > STM32-O-Scope - aka "The Pig Scope" or pigScope released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991 6c6 < https://github.com/pingumacpenguin/STM32-O-Scope --- > https://github.com/pingumacpenguin/STM32-O-Scope 8c8 < Adafruit Libraries released under their specific licenses Copyright (c) 2013 Adafruit Industries. All rights reserved. --- > Adafruit Libraries released under their specific licenses Copyright (c) 2013 Adafruit Industries. All rights reserved. 12,13c12,13 < //#include "Adafruit_ILI9341_STM.h" < //#include "Adafruit_GFX_AS.h" --- > #include "Adafruit_ILI9341_STM.h" > #include "Adafruit_GFX_AS.h" 19c19 < #define LANDSCAPE 3 --- > #define LANDSCAPE 1 21,26d20 < // Define the orientation of the touch screen. Further < // information can be found in the UTouch library documentation. < < // #define TOUCH_SCREEN_AVAILABLE < < #define TOUCH_ORIENTATION LANDSCAPE 28,33d21 < #ifdef TOUCH_SCREEN_AVAILABLE < // UTouch Library < // http://www.rinkydinkelectronics.com/library.php?id=56 < #include < < #endif 48d35 < #ifdef TOUCH_SCREEN_AVAILABLE 50c37,42 < UTouch myTouch( PB12, PB13, PB14, PB15, PA8); --- > // Also define the orientation of the touch screen. Further > // information can be found in the UTouch library documentation. > // > > // This makes no sense.. (BUG) but if you don't actually have a touch screen, you need to declere it anyway then #undef it below. > #define TOUCH_SCREEN_AVAILABLE 51a44,49 > #if defined TOUCH_SCREEN_AVAILABLE > #define TOUCH_ORIENTATION LANDSCAPE > // UTouch Library > // http://www.rinkydinkelectronics.com/library.php?id=56 > #include > UTouch myTouch( PB12, PB13, PB14, PB15, PA8); 53a52,55 > // This makes no sense.. (BUG) but if you don't actually have a touch screen, #undef it here. > #undef TOUCH_SCREEN_AVAILABLE > > 77c79 < #include "Time.h" --- > #include "Time.h" //If you have issues with the default Time library change the name of this library to Time1 for example. 84a87 > /* For reference on STM32F103CXXX 86,88c89,98 < #define BOARD_LED PC13 < //#define TFT_LED PC13 // Backlight < #define TEST_WAVE_PIN PB0 // PWM 500 Hz --- > variants/generic_stm32f103c/board/board.h:#define BOARD_NR_SPI 2 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI1_NSS_PIN PA4 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI1_MOSI_PIN PA7 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI1_MISO_PIN PA6 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI1_SCK_PIN PA5 > > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI2_NSS_PIN PB12 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI2_MOSI_PIN PB15 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI2_MISO_PIN PB14 > variants/generic_stm32f103c/board/board.h:#define BOARD_SPI2_SCK_PIN PB13 90,109d99 < < /* < Connections to an STM32F103CXXX board as follows. (Wire colours for reference only, clearly you can use whatever colours you please). < NOTE: While most of the cheap "ILI9163C 128x128 TFT" boards will probably work you may also need to set the board type in TFT_ILI9163C.h < Also, the STM32F103XXX boards are 3v3 devices, as is the display, so you can in fact short out the link across the regulator on the display and power it directly from the 3v3 on the STM board. < < Pinout - (TFT => stm32duino) < LED to 3.3V - Orange - Could also be taken to a suitable pin + transistor to drive the backlight. < NOTE: The backlight will probably draw far too much current for one GPIO pin to handle unbuffered. < < SCK to PA5 - Yellow - STM32 -> SPI1_SCK - These two SPI pins are hardware defined pins < SDA to PA7 - Greeen - STM32 -> SPI1_MOSI - < < - The exact pin number of the next three pins are not critical, you should be able to use and GPIO, update the below #defines and it should work. < A0 to PB6 - Blue < RST to PB5 - Violet - Can also be tied to STM32_NRST, so save a GPIO pin. < CS to PB7 - Grey < < GND to GND - Brown < VCC to 3.3V - Red 111,114d100 < // Additional SPI1 pins. < #define RST PB5 < #define DC PB8 < #define CS PB9 115a102,113 > // Additional display specific signals (i.e. non SPI) for STM32F103C8T6 (Wire colour) > #define TFT_DC PA0 // (Green) > #define TFT_CS PA1 // (Orange) > #define TFT_RST PA2 // (Yellow) > > // Hardware SPI1 on the STM32F103C8T6 *ALSO* needs to be connected and pins are as follows. > // > // SPI1_NSS (PA4) (LQFP48 pin 14) (n.c.) > // SPI1_SCK (PA5) (LQFP48 pin 15) (Brown) > // SPI1_MOSO (PA6) (LQFP48 pin 16) (White) > // SPI1_MOSI (PA7) (LQFP48 pin 17) (Grey) > // 117,118c115,116 < #include "TFT_ILI9163C.h" < TFT_ILI9163C TFT = TFT_ILI9163C(CS, DC, RST); --- > #define TFT_LED PA3 // Backlight > #define TEST_WAVE_PIN PB1 //PB1 PWM 500 Hz 119a118,119 > // Create the lcd object > Adafruit_ILI9341_STM TFT = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_RST); // Using hardware SPI 123,159c123 < #define BOARD_LED PC13 < < #ifndef ILI9341_BLACK < // Color definitions from ILI9341 < // FIXME: I should stick to a subset of real colours, and avoid the Adafruit ones. < #define ILI9341_BLACK 0x0000 /* 0, 0, 0 */ < #define ILI9341_NAVY 0x000F /* 0, 0, 128 */ < #define ILI9341_DARKGREEN 0x03E0 /* 0, 128, 0 */ < #define ILI9341_DARKCYAN 0x03EF /* 0, 128, 128 */ < #define ILI9341_MAROON 0x7800 /* 128, 0, 0 */ < #define ILI9341_PURPLE 0x780F /* 128, 0, 128 */ < #define ILI9341_OLIVE 0x7BE0 /* 128, 128, 0 */ < #define ILI9341_LIGHTGREY 0xC618 /* 192, 192, 192 */ < #define ILI9341_DARKGREY 0x7BEF /* 128, 128, 128 */ < #define ILI9341_BLUE 0x001F /* 0, 0, 255 */ < #define ILI9341_GREEN 0x07E0 /* 0, 255, 0 */ < #define ILI9341_CYAN 0x07FF /* 0, 255, 255 */ < #define ILI9341_RED 0xF800 /* 255, 0, 0 */ < #define ILI9341_MAGENTA 0xF81F /* 255, 0, 255 */ < #define ILI9341_YELLOW 0xFFE0 /* 255, 255, 0 */ < #define ILI9341_WHITE 0xFFFF /* 255, 255, 255 */ < #define ILI9341_ORANGE 0xFD20 /* 255, 165, 0 */ < #define ILI9341_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ < #define ILI9341_PINK 0xF81F < < // Colours are RGB565 - try this site for a colour picker --> http://www.barth-dev.de/online/rgb565-color-picker/ < #define TFT_GREY 0x5AEB < #define TFT_BLACK 0x0000 < #define TFT_WHITE 0xFFFF < #define TFT_RED 0xFB03 < #define TFT_GREEN 0x37E0 < #define TFT_BLUE 0x081F < #define TFT_ORANGE 0xFC80 < #define TFT_MAGENTA 0xF817 < #define TFT_YELLOW 0xE7E0 < < #endif --- > #define BOARD_LED PC13 //PB0 168,169d131 < < 171d132 < #define ANALOG_INPUT_1 PB1 173c134 < const int8_t analogInPin = ANALOG_INPUT_1 ; // Analog input pin: any of LQFP44 pins (PORT_PIN), 10 (PA0), 11 (PA1), 12 (PA2), 13 (PA3), 14 (PA4), 15 (PA5), 16 (PA6), 17 (PA7), 18 (PB0), 19 (PB1) --- > const int8_t analogInPin = PB0; // Analog input pin: any of LQFP44 pins (PORT_PIN), 10 (PA0), 11 (PA1), 12 (PA2), 13 (PA3), 14 (PA4), 15 (PA5), 16 (PA6), 17 (PA7), 18 (PB0), 19 (PB1) 174a136 > float displayTime = 0; 183,187c145,146 < int16_t yZoomFactor = 50 < ; < < //int16_t yPosition = -150 ; < int16_t yPosition = 20 ; --- > int16_t yZoomFactor = 100; //Adjusted to get 3.3V wave to fit on screen > int16_t yPosition = 0 ; 194c153 < unsigned long timeBase = 100; // Timebase in microseconds --- > unsigned long timeBase = 200; //Timebase in microseconds 205d163 < int32_t triggerSensitivity = 6; 207,208c165,171 < int16_t retriggerDelay = 10; < int8_t triggerType = 1; --- > // Trigger is setup in one of 32 positions > #define TRIGGER_POSITION_STEP ANALOG_MAX_VALUE/32 > // Trigger default position (half of full scale) > int32_t triggerValue = 2048; > > int16_t retriggerDelay = 0; > int8_t triggerType = 2; //0-both 1-negative 2-positive 225,226c188,189 < # define maxSamples 1024*6 < uint32_t startSample = 10; --- > # define maxSamples 1024*6 //1024*6 > uint32_t startSample = 0; //10 229d191 < 234a197,200 > //array for computed data (speedup) > uint16_t dataPlot[320]; //max(width,height) for this display > > 243,244c209 < serial_debug.begin(); < /* --- > 246c211 < #ifdef BOARD_LED --- > #if defined BOARD_LED 247a213,219 > digitalWrite(BOARD_LED, HIGH); > delay(1000); > digitalWrite(BOARD_LED, LOW); > delay(1000); > #endif > pinMode(TFT_LED, OUTPUT); > digitalWrite(TFT_LED, HIGH); 249,255c221 < for ( int i = 0; i < 30; i++) < { < blinkLED(100); < } < #endif < */ < --- > serial_debug.begin(); 281c247,249 < sCmd.addCommand("Y", increaseYposition); // move trace Down --- > sCmd.addCommand("Y", increaseYposition); // move trace Up > sCmd.addCommand("g", decreaseTriggerPosition); // move trigger position Down > sCmd.addCommand("G", increaseTriggerPosition); // move trigger position Up 302a271 > 314,317c283,285 < TFT.fillScreen(TFT_BLACK); < < //TFT.setRotation(2); < //TFT.setRotation(PORTRAIT); --- > // initialize the display > clearTFT(); > TFT.setRotation(PORTRAIT); 326a295 > // showGraticule(); 328,329c297 < showGraticule(); < delay(3000) ; --- > delay(1000) ; //5000 348d315 < showGraticule(); 351,358c318 < blinkLED(10); < //Blank out previous plot < TFTSamples(BEAM_OFF_COLOUR); < showLabels(); < < // Show the showGraticule < showGraticule(); < //notTriggered = true; --- > blinkLED(); 361a322,324 > > //Blank out previous plot > TFTSamplesClear(BEAM_OFF_COLOUR); 363,364c326,327 < // Display the Labels ( uS/Div, Volts/Div etc). < showLabels(); --- > // Show the showGraticule > showGraticule(); 367a331,335 > displayTime = (micros() - displayTime); > > // Display the Labels ( uS/Div, Volts/Div etc). > showLabels(); > displayTime = micros(); 368a337,338 > }else { > showGraticule(); 395c365 < TFT.drawFastHLine( (myHeight / 2) - 1 , TicksX, 3, TFT_RED); --- > TFT.drawFastHLine( (myHeight / 2) - 1 , TicksX, 3, GRATICULE_COLOUR); 399c369 < TFT.drawFastHLine( (myHeight / 2) - 5 , TicksX, 11, GRATICULE_COLOUR); --- > TFT.drawFastHLine( (myHeight / 2) - 3 , TicksX, 7, GRATICULE_COLOUR); 407c377 < TFT.drawFastVLine( TicksY, (myWidth / 2) - 1 , 3, TFT_RED); --- > TFT.drawFastVLine( TicksY, (myWidth / 2) - 1 , 3, GRATICULE_COLOUR); 411c381 < TFT.drawFastVLine( TicksY, (myWidth / 2) - 5 , 11, GRATICULE_COLOUR); --- > TFT.drawFastVLine( TicksY, (myWidth / 2) - 3 , 7, GRATICULE_COLOUR); 420,421c390,391 < adc_set_sample_rate(ADC1, ADC_SMPR_13_5); < adc_set_sample_rate(ADC2, ADC_SMPR_13_5); --- > adc_set_sample_rate(ADC1, ADC_SMPR_1_5); //=0,58uS/sample. ADC_SMPR_13_5 = 1.08uS - use this one if Rin>10Kohm, > adc_set_sample_rate(ADC2, ADC_SMPR_1_5); // if not may get some sporadic noise. see datasheet. 455,457c425,431 < delayMicroseconds(20); < if (((analogRead(analogInPin) - triggerPoints[0] ) < triggerSensitivity) or ((triggerPoints[0] - analogRead(analogInPin) ) < triggerSensitivity)) { < notTriggered = false ; --- > while(notTriggered){ > triggerPoints[1] = analogRead(analogInPin); > if ( ((triggerPoints[1] < triggerValue) && (triggerPoints[0] > triggerValue)) || > ((triggerPoints[1] > triggerValue) && (triggerPoints[0] < triggerValue)) ){ > notTriggered = false; > } > triggerPoints[0] = triggerPoints[1]; //analogRead(analogInPin); 462,466d435 < < triggerPoints[1] = analogRead(analogInPin); < if ((triggerPoints[1] - triggerPoints[0] ) > triggerSensitivity) { < notTriggered = false; < } 467a437,443 > while(notTriggered){ > triggerPoints[1] = analogRead(analogInPin); > if ((triggerPoints[1] > triggerValue) && (triggerPoints[0] < triggerValue) ){ > notTriggered = false; > } > triggerPoints[0] = triggerPoints[1]; //analogRead(analogInPin); > } 471,475d446 < < triggerPoints[1] = analogRead(analogInPin); < if ((triggerPoints[0] - triggerPoints[1] ) > triggerSensitivity) { < notTriggered = false; < } 476a448,454 > while(notTriggered){ > triggerPoints[1] = analogRead(analogInPin); > if ((triggerPoints[1] < triggerValue) && (triggerPoints[0] > triggerValue) ){ > notTriggered = false; > } > triggerPoints[0] = triggerPoints[1]; //analogRead(analogInPin); > } 486,488c464,466 < serial_debug.println(triggerPoints[0]); < serial_debug.println(triggerPoints[1]); < serial_debug.println(triggerType); --- > serial_debug.println(triggerPoints[0]); > serial_debug.println(triggerPoints[1]); > serial_debug.println(triggerType); 497c475 < void blinkLED(uint16_t duration) --- > void blinkLED() 501c479 < delay(duration); --- > delay(10); 539a518,525 > void TFTSamplesClear (uint16_t beamColour) > { > for (signalX=1 ; signalX < myWidth - 2; signalX++) > { > //use saved data to improve speed > TFT.drawLine ( dataPlot[signalX-1], signalX, dataPlot[signalX] , signalX + 1, beamColour) ; > } > } 544,545c530,534 < signalX = 1; < while (signalX < myWidth - 2) --- > //calculate first sample > signalY = ((myHeight * dataPoints[0 * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]) / ANALOG_MAX_VALUE) * (yZoomFactor / 100) + yPosition; > dataPlot[0]=signalY * 99 / 100 + 1; > > for (signalX=1 ; signalX < myWidth - 2; signalX++) 549,558c538,541 < signalY = (((myHeight * dataPoints[signalX * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]) / ANALOG_MAX_VALUE) * yZoomFactor ) / 100 + yPosition; < signalY1 = (((myHeight * dataPoints[(signalX + 1) * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]) / ANALOG_MAX_VALUE) * yZoomFactor ) / 100 + yPosition ; < TFT.drawLine ( signalY * 99 / 100 + 1, signalX, signalY1 * 99 / 100 + 1 , signalX + 1, beamColour) ; < signalX += 1; < /* < serial_debug.println((myHeight * dataPoints[signalX * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]) / ANALOG_MAX_VALUE); < serial_debug.println(dataPoints[(signalX + 1) * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]); < serial_debug.println(yZoomFactor/100); < serial_debug.println(yPosition); < */ --- > signalY1 = ((myHeight * dataPoints[(signalX + 1) * ((endSample - startSample) / (myWidth * timeBase / 100)) + 1]) / ANALOG_MAX_VALUE) * (yZoomFactor / 100) + yPosition ; > dataPlot[signalX] = signalY1 * 99 / 100 + 1; > TFT.drawLine ( dataPlot[signalX-1], signalX, dataPlot[signalX] , signalX + 1, beamColour) ; > signalY = signalY1; 563,564c546,547 < // Run a bunch of NOOPs to trim the inter ADC conversion gap < void sweepDelay(unsigned long sweepDelayFactor) { --- > // Run a bunch of NOOPs to trim the inter ADC conversion gap > void sweepDelay(unsigned long sweepDelayFactor) { 569c552 < } --- > } 575,576c558,559 < TFT.setTextSize(0); < TFT.setCursor(2, 100); --- > TFT.setTextSize(1); > TFT.setCursor(10, 190); 581,583c564,572 < TFT.setTextSize(0); < TFT.print(" uS "); < TFT.setTextSize(0); --- > TFT.setTextSize(1); > TFT.print(" uS/Sample "); > TFT.print(maxSamples); > TFT.print(" samples "); > // TFT.setCursor(10, 190); > // TFT.print(displayTime); > TFT.print(float (1000000 / float(displayTime))); > TFT.print(" fps "); > TFT.setTextSize(2); 585,586c574,575 < TFT.print("3.0"); < TFT.setTextSize(0); --- > TFT.print("0.3"); > TFT.setTextSize(1); 588,595c577,584 < /* Not enough room on 128*128 for all of the lables < TFT.setTextSize(0); < TFT.print(samplingTime); < TFT.setTextSize(0); < TFT.print(" us for "); < TFT.print(maxSamples); < TFT.print(" samples "); < */ --- > TFT.setTextSize(1); > > TFT.print("timeBase="); > TFT.print(timeBase); > TFT.print(" yzoom="); > TFT.print(yZoomFactor); > TFT.print(" ypos="); > TFT.print(yPosition); 603c592 < TFT.setTextSize(0); --- > TFT.setTextSize(1); 608c597 < TFT.setCursor(5, 120); --- > TFT.setCursor(5, 10); 623,631c612,618 < /* Not enough room on 128*128 display for date < TFT.print(" "); < TFT.print(day(tt)); < TFT.print("-"); < TFT.print(month(tt)); < TFT.print("-"); < TFT.print(year(tt)); < TFT.print(" "TZ" "); < */ --- > TFT.print(" "); > TFT.print(day(tt)); > TFT.print("-"); > TFT.print(month(tt)); > TFT.print("-"); > TFT.print(year(tt)); > TFT.print(" "TZ" "); 655,656c642 < //serial_debug.print("\n"); < serial_debug.println(); --- > serial_debug.print("\n"); 695,696c681,682 < sweepDelayFactor = sweepDelayFactor / 2 ; < if (sweepDelayFactor < 1 ) { --- > sweepDelayFactor = sweepDelayFactor / 2 ; > if (sweepDelayFactor < 1 ) { 700c686 < } --- > } 801a788,806 > > void increaseTriggerPosition() { > > if (triggerValue < ANALOG_MAX_VALUE ) { > triggerValue += TRIGGER_POSITION_STEP; //trigger position step > } > Serial.print("# TriggerPosition="); > Serial.println(triggerValue); > } > > void decreaseTriggerPosition() { > > if (triggerValue > 0 ) { > triggerValue -= TRIGGER_POSITION_STEP; //trigger position step > } > Serial.print("# TriggerPosition="); > Serial.println(triggerValue); > } > 833,834c838,839 < @brief Enable DMA requests < @param dev ADC device on which to enable DMA requests --- > * @brief Enable DMA requests > * @param dev ADC device on which to enable DMA requests 843,844c848,849 < @brief Disable DMA requests < @param dev ADC device on which to disable DMA requests --- > * @brief Disable DMA requests > * @param dev ADC device on which to disable DMA requests 884d888 < // Not enough space on 128*128 display but OK on serial 996,1003c1000,1001 < TFT.setTextColor(TFT_RED, BEAM_OFF_COLOUR) ; < TFT.setTextSize(0); // Tiny font < TFT.setCursor(0, 10); < TFT.print("STM-O-Scope") ; < TFT.setCursor(0, 30); < TFT.print(" Andy Hull"); < TFT.setCursor(0, 40); < TFT.print(" Ray Burnette."); --- > TFT.setTextSize(2); // Small 26 char / line > //TFT.setTextColor(CURSOR_COLOUR, BEAM_OFF_COLOUR) ; 1005,1007c1003 < TFT.print(" Victor PV"); < TFT.setCursor(0, 60); < TFT.print(" Roger Clark"); --- > TFT.print(" STM-O-Scope by Andy Hull") ; 1009,1013c1005 < TFT.print("stm32duino.com"); < TFT.setCursor(0, 80); < TFT.print("Probe Pin ["); < TFT.print("PB1"); < TFT.print("]"); --- > TFT.print(" Inspired by"); 1015,1020c1007,1022 < TFT.setTextSize(0); < TFT.print("GPL Ver. 2 "); < TFT.setTextColor(CURSOR_COLOUR, BEAM_OFF_COLOUR) ; < //delay(3000); < //TFT.setTextSize(2); < //TFT.setRotation(PORTRAIT); --- > TFT.print(" Ray Burnette."); > TFT.setCursor(0, 130); > TFT.print(" Victor PV"); > TFT.setCursor(0, 150); > TFT.print(" Roger Clark"); > TFT.setCursor(0, 170); > TFT.print(" and all at stm32duino.com"); > TFT.setCursor(0, 190); > TFT.print(" CH1 Probe STM32F Pin ["); > TFT.print(analogInPin); > TFT.print("]"); > TFT.setCursor(0, 220); > TFT.setTextSize(1); > TFT.print(" GNU GENERAL PUBLIC LICENSE Version 2 "); > TFT.setTextSize(2); > TFT.setRotation(PORTRAIT); 1057,1077d1058 < void send_command(int command, void *message) < { < asm("mov r0, %[cmd];" < "mov r1, %[msg];" < "bkpt #0xAB" < : < : [cmd] "r" (command), [msg] "r" (message) < : "r0", "r1", "memory"); < } < < void put_char(char c) < { < asm ( < "mov r0, #0x03\n" /* SYS_WRITEC */ < "mov r1, %[msg]\n" < "bkpt #0xAB\n" < : < : [msg] "r" (&c) < : "r0", "r1" < ); < }

Ахулл
Пн 26 декабря 2016 г., 11:05
Кстати, вы хотите два канала.. Создайте две сферу.. нужно три.... четыре... построить больше : D

Я полагаю, что нынешний рос, вероятно, ближе к 6 долларам, чем 10 долларов, так как доски STM-Ubercheap, поэтому можно построить с двойным головным свиней. Преимущество иметь двоих в том, что у вас все еще есть полная пропускная способность на каналах. Если вы пойдете по этой дороге, вам, возможно, потребуется изобрести какой -то способ поделиться запуск.

Еще одним преимуществом наличия двух или более областей является то, что когда происходит неизбежное, и вы ломаете один, у вас есть другой, чтобы отлаживать его с.

Если вы добавите второй канал в существующий код, вам необходимо поделиться пропускной способностью между каналами, и, следовательно, полоса пропускания вдвое снижается. У вас также может быть один дисплей и несколько каналов с каждым подачей своих данных в мастер -контроллер, но это может быть немного больше работы. Стоит, если вы собираетесь использовать больший и, следовательно, более дорогой дисплей, я думаю. Наличие двух или более каналов на одном дисплее имеет свои преимущества. Это облегчает сравнение времени сигнала, например,.

Я считаю, что осциллографы подобны мультиметрам, у вас никогда не будет слишком много. Моя жена может не полностью согласиться с этим вопросом :ржу не могу:

mausi_mick
Пн 26 декабря 2016 г. 14:53
Но я думаю, что для тестирования, например, квадрокодера с сдвигом на 90 ° между сигналами, лучше иметь двойной объем, пропускная способность обычно не является проблемой.
Возможно, это можно изменить с помощью O-Scope между одно- и двойным каналом.

Ахулл
Пн 26 декабря 2016 г. 15:00
mausi_mick написал:Но я думаю, что для тестирования, например, квадрокодера с сдвигом на 90 ° между сигналами, лучше иметь двойной объем, пропускная способность обычно не является проблемой.
Возможно, это можно изменить с помощью O-Scope между одно- и двойным каналом.

Громовой двор
Вт 27 декабря 2016 г., 13:48
MAUSI_MICK, можем ли мы иметь ваши самые последнюю версию (ы) кода, который использует Touch и (или) вращающийся энкодер? Спасибо.

Громовой двор
Вт 27 декабря 2016 г. 14:56
Ахулл написал: Если вы выясните причину серийных проблем Windows ...

Громовой двор
Вторник 27 декабря 2016 г. 8:58 вечера
Ахулл написал:... Но если вы хотите выполнять работу таким образом, что вы можете определить тип дисплея и автоматически включить правильные либера.

Промывание мозгов
Вт 27 декабря 2016 г., 21:21
Привет, новый пользователь здесь, зарегистрирован только для этого проекта.

Я прочитал всю тему, и в некоторое время был по крайней мере один отчет о том, что доска была взорвана из -за высокого входного напряжения. Я не понимаю, как это может произойти, существует 1-мегальный входной импеданс, который при 12 В позволил бы 12NA тока, хорошо в (встроенных) спецификациях зажима ESD. Хотя я не смог найти жесткие характеристики в какой -либо технической ссылке. Очевидно, это применимо только в случае использования серийного резистора.

Другая тема, которая может быть интересной: кто -нибудь охарактеризовал точность чтения? Я знаю, что он образует разделитель напряжения с внутренним входным импедансом стадии АЦП (десятки сотен килорих), но у кого-то есть реальная фигура при использовании резистора 1MO? Эти цифры сильно различаются между платами и/или входными выводами?

Каково текущее потребление платы (без ЖК -подсветки) при работе с максимальной скоростью?

Моя конечная цель - иметь удаленный «одноразовый» осциллограф (например, Mooshimeter), чтобы оставить в автомобиле/мотоцикле, в сочетании с серийным модулем BT (HC05) или, возможно, некоторым дешевым модулем BLE (для совместимости с iOS).

Я, вероятно, выберу HC05, так как у меня есть несколько из них, и я знаю, что он хорошо работает с ПК и телефонами Android, он имеет необходимую полосу пропускания (115KBAUD должно быть в порядке) и дешево (3-5 $). Моя идея состоит в том, чтобы сделать запуск на плате и подавать запускаемые данные через серийные. Лучший сценарий случая - 115200/10 бод (за байт данных) / 320px = 36 кадров в секунду, я был бы доволен всем выше 2 кадров в секунду.

Rogerclark
Вторник 27 декабря 2016 г., 22:34
@brainewashed

Будет ли это своего рода Bluetooth с помощью дисплея через iOS или Android ?
Или он все еще сохранит дисплей ?

Ахулл
Вт 27 декабря 2016 г., 11:09
Thunderowl написал:Ахулл написал:... Но если вы хотите выполнять работу таким образом, что вы можете определить тип дисплея и автоматически включить правильные либера.

Ахулл
Вт 27 декабря 2016 г., 11:22 вечера
Thunderowl написал:Ахулл написал: Если вы выясните причину серийных проблем Windows ...

Fredbox
Ср 28 декабря 2016 г. 3:47
Переплата последовательных портов никогда не имело для меня особого смысла для меня. Я считаю, что Serial1 всегда должен указывать на выводы UART1.

Обычно я определяю свой собственный серийный порт: #define mySerial Serial1

Громовой двор
Ср 28 декабря 2016 г. 6:44
Спасибо, Энди, это удивительные информативные ответы! Спасибо, что у меня было терпение для меня. И спасибо, Fredbox - за ваши намеки на серийные определения.

Ахулл
Ср 28 декабря 2016 г., 9:43
Thunderowl написал:Спасибо, Энди, это удивительные информативные ответы!

Громовой двор
Ср 28 декабря 2016 г. 14:32
Ахулл написал: Для STM32DUINO
USBERIAL определяется в .../cores/maple/usb_serial.CPP и относится к порту USB Conm, который предоставляет Libmaple.
Другие последовательные порты определены в ../ядер/клен/твердый.час (Насколько я помню, обозначения PIN -кода определены в этом файле).

Стивестронг
Ср 28 декабря 2016 г. 14:58
Поскольку «serial1» уже определен в основной LIB, вы должны иметь: #define serial_debug Serial1

Ахулл
Ср 28 декабря 2016 г., 15:34
Thunderowl написал:Ахулл написал: Для STM32DUINO
USBERIAL определяется в .../cores/maple/usb_serial.CPP и относится к порту USB Conm, который предоставляет Libmaple.
Другие последовательные порты определены в ../ядер/клен/твердый.час (Насколько я помню, обозначения PIN -кода определены в этом файле).

Громовой двор
Ср 28 декабря 2016 г., 15:50
Большое спасибо за помощь. Я продолжу эксперименты позже сегодня вечером (GMT+2 здесь, Латвия), но до сих пор я могу сказать это:
Я попробовал предложение Stevestrong, по моей собственной логике, я добавил Baudrate (строка в исходном коде была serial_debug.begin (), я сделал это serial_debug.Начните (9600)), и факт в том, что если я положу что -то вроде:
serial_debug.Печать ("Привет, гром o-scope");
serial_debug.println ("Super Thunder O-Scope");
под
void loop ()
{ ...
Тогда я получаю непрерывный выход на терминале, поэтому определение порта в порядке. Но ни одно из взаимодействий O-Scope не работает. Итак, я думаю, мне нужно посмотреть, что не началось, или, может быть, эта библиотека SerialCommand не работает. Опубликует мои дальнейшие результаты.

Громовой двор
Ср 28 декабря 2016 г. 22:39
Успех! Я получил серийное взаимодействие, работая по умолчанию USB «Maple Serial» порта (на борту USB -сокета). Проблема была одной строкой, которая присутствует в исходном файле ino github, а также позже в INO File для Fancy Miniature TFT. Эта линия (под "void setup"):
serial_debug.начинать();
Чтобы получить сериал, я должен сделать это так:
serial_debug.начало (115200);
Или даже комментировать это вообще работает, по какой -то волшебной причине!
Итак, мое дикое предположение - может быть, это делает рабочую бинарную с помощью этой оригинальной линии в системах "не -плинтусов", но удивляет под окнами? В любом случае, я с критическим, я получил эту работу, это ел мой разум (но в хорошем смысле, это интересно).
Что было бы правильным способом рассказать об этом на вики или что -то в этом роде?
И когда это разобралось - я уверен, что лучше иметь физический управление, например, энкодер или кнопки. Новый червь, чтобы просверлить мой разум :-D Общий, черт... идите сюда... ;)

П.С.: Я использую терминальную программу »Термит 3.2 ", Com-порт скорость 115200, управление потоком DTR/DSR, добавление CR-LF.

Ахулл
Чт 29 декабря 2016 г. 12:13
Thunderowl написал:Успех! Я получил серийное взаимодействие, работая по умолчанию USB «Maple Serial» порта (на борту USB -сокета). Проблема была одной строкой, которая присутствует в исходном файле ino github, а также позже в INO File для Fancy Miniature TFT. Эта линия (под "void setup"):
serial_debug.начинать();
Чтобы получить сериал, я должен сделать это так:
serial_debug.начало (115200);
Или даже комментировать это вообще работает, по какой -то волшебной причине!
Итак, мое дикое предположение - может быть, это делает рабочую бинарную с помощью этой оригинальной линии в системах "не -плинтусов", но удивляет под окнами? В любом случае, я с критическим, я получил эту работу, это ел мой разум (но в хорошем смысле, это интересно).
Что было бы правильным способом рассказать об этом на вики или что -то в этом роде?
И когда это разобралось - я уверен, что лучше иметь физический управление, например, энкодер или кнопки. Новый червь, чтобы просверлить мой разум :-D Общий, черт... идите сюда... ;)

П.С.: Я использую терминальную программу »Термит 3.2 ", Com-порт скорость 115200, управление потоком DTR/DSR, добавление CR-LF.

Громовой двор
Чт 29 декабря 2016 г., 7:33 утра
Мы должны опубликовать это на Wiki, для других с «неапротив оперативных систем» :)
Энди, вы также собираетесь попробовать кодировать кодеры/контроль сенсорного управления, или я должен просто выкопать работу mausi_mick?

РЕДАКТИРОВАТЬ: Об этой решенной проблеме, я уверен, что раньше попробовал (в то время как эта линия была "Serial_Debug.Begin () ") Каждая мыслимая комбинация бодратов и настройки потока и текста в нескольких терминальных программах (не только термит), ничего.
Позже я также проведу эксперименты с Adnughation Serial1, опубликую, как это пойдет туда.

Ахулл
Чт 29 декабря 2016 г. 9:22 утра
Thunderowl написал:Мы должны опубликовать это на Wiki, для других с «неапротив оперативных систем» :)

mausi_mick
Пт 30 декабря 2016 г., 3:13
Привет, гром,

Здесь мой последний код с прикосновением, я предпочитаю эту версию по сравнению с энкодером (и).
Я могу использовать энкодеры для других вещей, возможно, можно интегрировать DDS (AD9850/1) изменение частоты с помощью кодера.

STM32-O-SCOPE-05.Ино
(36.73 киб) скачано 204 раза

Громовой двор
Пт 30 декабря 2016 г. 9:04
Всем здравствуйте,
Здесь отредактирован оригинальный файл Энди, он сейчас хорошо работает с последовательным взаимодействием (Windows 7 64-битная), используя «Bluepill» на бортовом USB («Maple Serial»):
П.С.: Это действительно просто изменение "serial_debug.begin () "to" serial_debug.Начните (115200) », ничего больше (кроме комментариев).

Громовой двор
Пт 30 декабря 2016 г. 9:06
mausi_mick написал: Здесь мой последний код с прикосновением, я предпочитаю эту версию по сравнению с энкодером (и). STM32-O-SCOPE-05.Ино

Пито
Пт 30 декабря 2016 г. 10:52 утра
STM32-O-Scope-он же "
Pigol.jpg
Пигол.JPG (21.63 киб) просмотрено 1264 раза

Громовой двор
Пт 30 декабря 2016 г. 11:09
Да, мы хотим, чтобы Pig-o-Scope вырастил как самую пользующуюся и любимую область в 2017 году !! 8-)

Рекснанет
Пт 30 декабря 2016 г. 11:39
Пито написал:STM32-O-Scope-он же " Пигол.JPG

Громовой двор
Пт 30 декабря 2016 г., 11:48
Рекснанет написал: Я только что получил MT Encoders и собираюсь поработать над MT Vision of Encoder Option.
Я думаю, что использование прикосновения такого маленького экрана не очень практично...

mausi_mick
Пт 30 декабря 2016 г. 16:57
Я думаю, что с небольшими дисплеями это не так удобно с прикосновением, но с 2.8 "Это не чертовски, но возможно.
Но я буду тестировать с двумя кодерами в следующем году.

Crtsuznik
Пт 30 декабря 2016 г., 8:05 вечера
Привет, ребята

Наконец -то получил экран через два месяца и загрузил рабочую версию осциллографа. Ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооа. Может быть, возможно, что я USB в TTL для загрузки и прочтения с STM32? (Я использую тот, который выглядит так http: // www.eBay.com/itm/reply-pl2303- ... Swhabwi4tv )

Я подключен к PA9 и PA10, чтобы загрузить данные (а затем прочитать их), с обычными набросками, по крайней мере, по крайней мере. С эскизом Oscilloskope я ничего не получаю на серийном мониторе, но сам осциллограф (он же дисплей), кажется, работает должным образом.

Я пробовал только оригинальную версию без ротари.

Кто -нибудь знает, как решить мою проблему? Также...Должен ли я просто купить ротационные переключатели и подключить их таким образом? Как скорость в этой версии (а также ошибки?)

Громовой двор
Пт 30 декабря 2016 г., 8:35 вечера
Смотрите мои недавние посты. Получил последовательное взаимодействие, работающее только на бортовом USB-сериале («Maple Serial» в Windows Device Manager). На аппаратных серийных (A9, A10) эксперименты не являются неудачными, пока.

Громовой двор
Сб 31 декабря 2016 11:21
С Новым Годом !! 8-)

mausi_mick
Солнце 01 января 2017 13:55
С Новым годом из Мюнхена !

Я делаю версию NE, изменяя функции с двумя переключателями (прерывание) и параметры с одним вращающимся энкодером.

В настоящее время я реализовал это для функциональной временной базы (= 1) и yposition (02).
P1020605.jpg
P1020605.JPG (100.16 киб) просмотрено 1213 раз

Громовой двор
Солнце 01 января 2017 г. 15:07
Отлично, mausi_mick! Дайте Санте свой код и больше фотографий строительства, чтобы он мог принести нам этот подарок! :)

mausi_mick
Солнце 01 января 2017 16:13
Привет, гром,

Я изменил код, я думаю, что в ISR-функциях было много кода.
Теперь ISR и функции энкодеров меньше, я переместил TFT-код в начале цикла ().

И изменил TFT.Размер текста до 2.
И есть еще несколько функций !

Если есть некоторые ошибки, возможно, это из -за короткой ночи (от 3 до 8) :ржу не могу:
STM32-O-SCOPE-10.Ино
(32.38 киб) скачано 75 раз

mausi_mick
Солнце 01 января 2017 г. 16:59
Вот несколько фотографий:

Textsize (2) для областей обновления:
STM32_O_SCOPE_FUNC_PAR_TXT (2) .jpg
STM32_O_SCOPE_FUNC_PAR_TXT (2).JPG (117.72 киб) просмотрено 1379 раз

Громовой двор
Солнце 01 января 2017 г., 17:12
Спасибо, mausi_mick! Я думаю, что попробую ваш код позже сегодня вечером, или завтра, на работе.
РЕДАКТИРОВАТЬ: И вот какая -то новая игрушка, которую я сейчас должен сыграть :)
http: // bildites.lv/a/sn5wkzax#ers3t9uf
http: // bildites.lv/a/7npmye3q#ytm6u5ku

Бьянкифан
Пн, 02 января 2017 г. 10:36
mausi_mick написал:Вот несколько фотографий:...

mausi_mick
Пн, 02 января 2017 12:07
Привет, Бьянкифан,

Поздравления с Новым годом Wuppertal, я стоял там в начале октября, только на несколько часов.

Я думаю, что переключатели старые, но могут быть легко установлены.

У меня тоже есть SW-разборка в программе, но я думаю, что в ISR не так хорошо ждать долго...

Ахулл
Пн, 02 января 2017 г. 13:17
Бьянкифан написал:mausi_mick написал:Вот несколько фотографий:...

mausi_mick
Пн, 02 января 2017 13:52
Я думаю, что одно большое преимущество версии с кодером (и 2 переключателями) заключается в том, что вы можете непосредственно увидеть влияние изменений параметра на экране. С прикосновением вам нужно много экрана (небольшого экрана) для редактирования или отдельного меню, и вы должны закрыть меню, чтобы найти эффект.
Кроме того, энкодер и переключатели работают с ISR, а не с опросом (я не знаю, как работает Touch / urtouch).

Рекснанет
Пн, 02 января 2017 14:29
Вчера я сделал некоторую Teste с моим энкодером KY-040, но с небольшим успехом.
Я добавил конденсаторы развязки (попробовал 1 UF и 100NF), и я видел больше подпрыгивающего шума с 1UF на растущих краях, вероятно, из -за медленного времени.

Изображение

Я пробую подход прерывания. Добавлен одно прерывание к каждому падающему краю каждого штифта.
Проблема в том, что я получаю ложные триггеры от шума от восходящих краев.
И из -за быстрой скорости обновления я получаю много импульсов от этого шума...

Любые идеи?

Я мог бы попробовать код энкодера Mausi_mick (еще не сделал этого... :) ), чтобы увидеть, есть ли какое -либо улучшение.


Также работает над новым макетом :) картинки последних на

Громовой двор
Пн, 02 января 2017 г. 15:12
Рекснанет написал: Также работает над новым макетом :) картинки последних на

mausi_mick
Пн, 02 января 2017 г. 15:13
Привет, Рекснанет,

У меня есть только 10 NF керамика непосредственно на фиксаторах энкодера, на переключателях/кнопках у меня есть RC-комбинирование:

На входной питке ST32F103 A 100NF (и 1 мкф (только для теста)) и 4.99 ком между булавками STM32F103 и переключателями.

Но для кодера я немного изменил код:
void encCnt() { if (s_enc == 1) return; if (digitalRead(encA_16) && !digitalRead(encB_17)) { if (encoderpos < maxp[actFunc]) { encoderpos++; actPos = encoderpos; s_enc = 1; } } if (digitalRead(encA_16) && digitalRead(encB_17)) { // subtract 1 from count for CCW if (encoderpos > minp[actFunc]) { encoderpos--; actPos = encoderpos; s_enc = 1; } } if (s_enc == 1) setValue(actPos); }

mausi_mick
Пн, 02 января 2017 г. 15:42
Теперь у меня есть на переключателях/кнопках 100NF и 5 ком и уменьшил задержку до 140 мс. Это нормально.
Кодеры энкодера ограничены зависимым от SW функции по таблице:
//####################################################################################### // functions: // //=========== functions =============================== // 6 - Triggertype: ---------------------------------6 // 5 - Triggervalue/position ----------------------5 | // 4 - xZoomfactor ----------------------------4 | | // 3 - yZoomfactor ------------------------3 | | | // 2 - yPosition -----------------------2 | | | | // 1 - timeBase----------------------1 | | | | | // | | | | | | // V V V V V V volatile int16_t fold[8] = {0, 1, 2, 3, 4, 5, 6, 0}; // old values volatile int8_t const maxp[8] = {0,19,13, 2, 19, 15, 2, 0}; // max. switch positions volatile int8_t const minp[8] = {0, 0, 1, 0, 0, 0, 0, 0}; // minimal switch position volatile int8_t const stpw[8] = {0, 1, 1, 1, 1, 0, 0, 0}; // step-width (not used) volatile int8_t curp[8] = {0, 1, 6, 1, 0, 6, 0, 0}; // current switch position volatile uint32_t const t_time[20] = {100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000}; volatile int16_t const t_ypos[13] = {-240,-200,-160,-120,-80,-40,0,40,80,120,160,200,240}; volatile uint32_t const t_triv[16] = {256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3328,3584,3840,4096}; volatile int16_t const t_trty[3] = {0,1,2}; volatile int16_t const t_yzfa[3] = {100,200,300}; volatile int16_t const t_xzfa[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; // ??? volatile uint8_t s_but_18=0; // 0=function fixed, 1=decrement function volatile uint8_t s_but_19=0; // 0=function fixed, 1=increment function volatile uint8_t s_enc = 1; //############################################################################################################

Ахулл
Пн, 02 января 2017 г. 15:59
Переключить De-Bounce -> http: // chackaday.com/2015/12/09/inced-wi ... NS-Part-I/
: D

mausi_mick
Вторник 03 января 2017 г. 3:20 утра
Теперь я изменил программу с двумя кодерами (и без кнопок) и только 10NF для дебатации.
Задержка, которую я уменьшил до 0.

Монтаж еще предварительный . :ржу не могу:
P1020612.jpg
P1020612.JPG (64.96 киб) просмотрено 1312 раз

mausi_mick
Вторник 03 января 2017 г. 8:17 утра
Я установил второй энкодер на месте кнопки функции (возможно, другая кнопка, которую я могу использовать для сброса (проблемы с TriggerValue, если сигнал снаружи))).

Здесь видео:

https: // youtu.be/lqiv3iarmcy


новейший источник:
STM32-O-SCOPE-11.Ино
(31.75 киб) скачано 102 раз

Громовой двор
Вторник 03 января 2017 г. 8:51 утра
Спасибо, mausi_mick. Как только прибудет моя следующая промежуточная плата STM, я сделаю некоторую полупрокаменную конструкцию, с кодерами, кнопками. Я думаю, что второй энкодер для изменения режима хороша (один энкодер выбирает, что изменить, другой - делает изменения), пока на экране есть информация, на какой опции я сейчас являюсь прямо сейчас.

Rogerclark
Вторник 03 января 2017 г. 8:58 утра
Ребята

У кодеров, которые я использовал (в различных проектах), также есть функция кнопки.

Я в зависимости от того, какая функциональность вы хотите, вы, вероятно, могли бы использовать один и тот же энкодер для чувствительности, а также для вертикального положения, в зависимости от того, была ли кнопка нажата на повернуту выбор, если он был нажат во время вращения.

mausi_mick
Вторник 03 января 2017 г. 9:31
Rogerclark,

Я также проверил его с одним энкодером и интегрированным пуш,
Но я думаю, что для службы это легче с двумя кодерами, один для «functiuon»: 1 = временная база, 2 = yposition, ...6)
и другой для «параметров» внутри функции (различные позиции, например, триггертип только 3 (0,1,2), для базы 15 ... 30, как тебе нравится).
В версии программы 11 мне не нужна кнопка.

Рекснанет
Вторник 03 января 2017 г. 10:11
Rogerclark написал:Ребята

У кодеров, которые я использовал (в различных проектах), также есть функция кнопки.

Я в зависимости от того, какая функциональность вы хотите, вы, вероятно, могли бы использовать один и тот же энкодер для чувствительности, а также для вертикального положения, в зависимости от того, была ли кнопка нажата на повернуту выбор, если он был нажат во время вращения.

Промывание мозгов
Ср. 04 января 2017 г. 8:07
Rogerclark написал:@brainewashed

Будет ли это своего рода Bluetooth с помощью дисплея через iOS или Android ?
Или он все еще сохранит дисплей ?

mausi_mick
Ср. 04 января 2017 г. 9:09
Привет, Рекснанет,

Я протестировал его с одним энкодером в PGM-версии 6, но я сделал это на три шага, это было действительно неудобно.
Теперь я изменил его, как ваша версия, это легко использовать .
Но я думаю, что кнопка (в кодере) не так хорош, как переключения кодеров, ему нужно больше времени для дебайта (о факторе 10).

Рекснанет
Ср. 04 января 2017 г. 9:19
mausi_mick написал:Привет, Рекснанет,

Я протестировал его с одним энкодером в PGM-версии 6, но я сделал это на три шага, это было действительно неудобно.
Теперь я изменил его, как ваша версия, это легко использовать .
Но я думаю, что кнопка (в кодере) не так хорош, как переключения кодеров, ему нужно больше времени для дебайта (о факторе 10).

Громовой двор
Ср. 04 января 2017 г. 9:53
Рекснанет написал: Я сталкиваюсь с той вещью, которая находится в хорошем ценовом диапазоне, и это «то же самое», как мы здесь делаем... вроде....
https: // pt.aliexpress.com/item/digital- ... Ryid = 50502

mausi_mick
Ср. 04 января 2017 г. 10:20
Я думаю, что это проблема с инициализацией переменной Lost_time, вы должны установить ее на micros () в setup () или позади Loop () ?

Я решил это немного другое, потому что я показываю новые функции/параметры на дисплее, прямо позади Loop ()
void loop() { // last_time = micros(); if ((s_encp == 1) || (s_encf == 1) || s_sw >= 1) { showEncVal(); // display encoder values }

Рекснанет
Ср. 04 января 2017 г. 11:11
mausi_mick написал: и в ShowenCval () я вставляю задержку (150), если кнопка касается:

Рекснанет
Ср. 04 января 2017 г. 11:26
Thunderowl написал:Рекснанет написал: Я сталкиваюсь с той вещью, которая находится в хорошем ценовом диапазоне, и это «то же самое», как мы здесь делаем... вроде....
https: // pt.aliexpress.com/item/digital- ... Ryid = 50502

Ахулл
Ср. 04 января 2017 12:49
Рекснанет написал:Thunderowl написал:Рекснанет написал: Я сталкиваюсь с той вещью, которая находится в хорошем ценовом диапазоне, и это «то же самое», как мы здесь делаем... вроде....
https: // pt.aliexpress.com/item/digital- ... Ryid = 50502

Mrburnette
Ср. 04 января 2017 13:36
Когда я впервые задумал $ 10 Arduino O'Scope Это было просто как образовательный инструмент, что -то, что учитель или дома, любитель, могло бросить на сумму менее 10 долларов из общепринятых деталей eBay - и очень немногих деталей!

Как показал Энди, блестящее программное обеспечение может превратить демонстрационное устройство в действительно полезный инструмент. Его программное обеспечение для свиньи продвигает полезные характеристики далеко за пределы демонстрации в классе.

Но я нахожу небольшую ценность в обсуждении развевания схватки за пределы диапазона за 10 долларов, так как дешевое китайское оборудование разработано специально. Я думаю, что привлечение кода Энди и замена прошивки китайского масштаба интересно, но я не уверен, что какая -либо реальная ценность будет получена ... Интересный проект дождливого дня, возможно,: используйте ардуиноид и основные файлы STM32Duino F1 для перепрограммирования китайского прицела.

В любом случае, возможно, такие дискуссии лучше всего перенесены в их собственную домашнюю тему, так как они не в духе масштаба $ 10.


Луча

Громовой двор
Ср. 04 января 2017 13:58
Моя точка зрения здесь такова, что все дело в том, чтобы делать что -то. Не обязательно достигать некоторых разумных целей. Для таких людей, как я, это хобби, чтобы припаять вещи вместе, пересекайте несколько устройств, «взломать» здесь и там. И для меня это определенно не о «стоимости за устройство». Хобби - это расходы на деньги, как будто завтра нет, а не сэкономить! : D В любом случае, о затратах-я купил так много дисплеев, Dev Boards и т. Д., И т.д. На самом деле мне не нужна такая область :) И у меня есть на работе, что я тоже могу забрать домой. Это радость творения. Быть создателем, а не просто потребителем (сильные слова, эх? 8))
О, и мне все еще нужно сделать несколько непредоходных постов о списке DIY-прицелов, помимо O-Scope, что я смотрю на. Но вот краткое понимание:
http: // bildites.LV/пользователи/Thunderjuris/Albums

Ахулл
Ср. 04 января 2017 г. 16:27
Осциллографы и мультимеры, у вас никогда не будет слишком много ни одного из них. : D

Чжанкс
Чт 05 января 2017 г., 19:45
Мой взгляд на эскиз с областью здесь..

https: // github.com/pingumacpenguin/stm32-o-scope

Это забавный маленький проект, и он стоит построить только для развлечения. В настоящее время полоса пропускания немного ограничена, но с небольшим количеством дополнительных усилий можно было бы сделать полностью функциональную область 2 МГц, почти ничего. Идеально подходит для исследования I2C, аудио и других низкоскоростных сигналов.

Энди, ты все еще сохраняешь git в этом?

Уточ изменил название библиотеки и
#include URTouch myTouch( PB12, PB13, PB14, PB15, PA8); #endif

Громовой двор
Чт, 05 января 2017 г., 21:02
Чжанкс написал: Уточ изменил название библиотеки ...

Ахулл
Чт, 05 января 2017 11:36
Чжанкс написал:Мой взгляд на эскиз с областью здесь..

https: // github.com/pingumacpenguin/stm32-o-scope

Это забавный маленький проект, и он стоит построить только для развлечения. В настоящее время полоса пропускания немного ограничена, но с небольшим количеством дополнительных усилий можно было бы сделать полностью функциональную область 2 МГц, почти ничего. Идеально подходит для исследования I2C, аудио и других низкоскоростных сигналов.

Энди, ты все еще сохраняешь git в этом?

Уточ изменил название библиотеки и
#include URTouch myTouch( PB12, PB13, PB14, PB15, PA8); #endif

mausi_mick
Пт 06 января 2017 г. 16:41
Я подключил последний ? Бесплатные булавки Maple Mini с платой AD9851 DDS.
И с небольшой модификацией (функция 7: установленная частота AD9851) я могу установить частоту AD9851
и отображать его на O-Scope:
P1020613.jpg
P1020613.JPG (31.06 киб) просмотрено 1326 раз

Рекснанет
Пт, 6 января 2017 г. 16:58
mausi_mick написал:Я подключил последний ? Бесплатные булавки Maple Mini с платой AD9851 DDS.
И с небольшой модификацией (функция 7: установленная частота AD9851) я могу установить частоту AD9851
и отображать его на O-Scope:

mausi_mick
Пт, 6 января 2017 г., 17:22
Это только тест с некоторой частотой исправления (0,1,2,....20 кГц, 0: DDS остановился), возможно, можно изменить частоту через второй кодер.
STM32-O-SCOPE-AD9851_00.Ино
(33.92 киб) скачано 213 раз

Громовой двор
Пт 06 января 2017 г. 8:40 вечера
Отлично, mausi_mick! Это настолько логично и в конечном итоге полезное дополнение! Нужно получить такой модуль для себя, я думаю.

Rogerclark
Пт, 6 января 2017 г., 11:15 вечера
mausi_mick написал:Я подключил последний ? Бесплатные булавки Maple Mini с платой AD9851 DDS.
И с небольшой модификацией (функция 7: установленная частота AD9851) я могу установить частоту AD9851
и отображать его на O-Scope:
P1020613.JPG

Громовой двор
Пт, 6 января 2017 г., 23:19
Свинья-Gen-O-Scope ...

Редактировать:
Mausi_mick и любой другой, кто использовал такие генераторные модули (из «обычных источников», я полагаю), вопрос - они Allright? Я спрашиваю, потому что чипсы, скорее всего, китайские копии, я прав? Обычно здравый смысл выглядит так: цифровые копии ICS в порядке, но аналоговые устройства IC лучше купить форму Официальные источники. Итак, работают ли эти чипы китайского генератора хорошо? Спасибо.

Rogerclark
Сб 07 января 2017 г. 12:49
Thunderowl написал: Итак, работают ли эти чипы китайского генератора хорошо? Спасибо.

mausi_mick
Сб 07 января 2017 г. 2:35
Я изменил немного больше и интегрирую сенсорную функцию для типа частоты.
Это из примера в urtouch-lib. Если вы вращаетесь с энкодером для функции 7 (DDS-частота) и выберите параметры, дисплей изменился на Touch Mask. Вы можете набрать частоту и коснуться кнопки «Enter»,
OSCI показывает функцию синуса с этой частотой:
P1020614.jpg
P1020614.JPG (55.74 киб) просмотрено 1270 раз

mausi_mick
Сб, 07 января 2017 г. 3:06
Привет, гром,

Я думаю, что модули в порядке для хобби, у меня есть один с AD9850 на нано Arduino с частотой (10 Гц ... 4 МГц).
На картинке его в нижней части дисплея. Справа вы можете увидеть ширину шага (изменяющаяся с красными и зелеными кнопками) для роторного энкодера.
P1020618.JPG
P1020618.JPG (54.41 киб) просмотрено 1265 раз

Громовой двор
Сб 07 января 2017 г. 7:50 утра
Отличный новый аванс, mausi_mick! Спасибо за вашу работу!! Я только что понял, что нужно добавить - немного звука. Если это не замедляет основную цель, измерение и отображение. С Beeper мы четко знаем, нажимали ли мы номер на экране, повернули ли мы кодировщик, нажали ли мы кнопку. И с немного разными звуками для всего этого - это очень полезно, эргономично. Что думают другие?

mausi_mick
Сб 07 января 2017 г. 10:52
Хорошая идея, гром, и я думаю, что не сложно реализовать.

Но я думаю, что, возможно, нам понадобятся далеко достижение целей, как

- Второй канал
- речевая команда ...

Я немного протестировал это в начале восьмидесятых на Sinclair ZX80, но нет реального успеха.
Только для чисел, но у меня были проблемы, чтобы дифференцировать слова с похожей фонемой, как 2 и 3 (на немецком языке «Zwei» и «drei»).
Но это был медленный процессор с 1 КБ оперативной памяти и микро-ввод через розетку из музыкальной кассеты (как «гибкая» компенсация).

mausi_mick
Сб 07 января 2017 12:58
Теперь я изменил «функцию» 7: активируйте AD9851 DDS:

Положение P = 1: Нет сигнала (по умолчанию)
Позиция p = 2,3,...255 F (AD9851) = (P-1) x 1 кГц
Положение P = 0: переключатель на сенсорный экран, верните с «Enter», F = входные цифры в Гц

Если вы хотите отключить сигнал, это возможно только через сенсорную панель.

Здесь код:
STM32-O-SCOPE-AD9851_01.Ино
(40.81 киб) скачано 47 раз

Громовой двор
Сб, 07 января 2017 г. 14:52
MAUSI_MICK, что именно является управляющим сигналом (и) взаимодействие с модулем DDS? Я хочу сказать, что я хочу посмотреть таблицы данных, могу ли я использовать какой -то другой модуль на основе чипов, такие как AD9833, AD9850 и т. Д. Спасибо!

mausi_mick
Сб, 07 января 2017 г. 15:09
Я думаю, что с AD9850 это похоже на AD9851, другой, который я не знаю.

Громовой двор
Чт 12 января 2017 г. 14:45
Счастливого китайского Нового года! а.k.а., "Не могу ничего заказать сейчас". В любом случае, небольшой вопрос, прежде чем я попробую (я знаю, я должен сначала попробовать себя, но позвольте мне сначала задать умным людям :) ). Вопрос: могу ли я переназначить невидимые сигналы TFT на другие порты STM32, не вызывая глобальные бедствия? А именно, я хотел бы перенести TFT_DC PA0 в PC13, TFT_CS PA1 в PA12. Я считаю, что могу так много редактировать код, вопрос - если я должен? Почему я хочу, чтобы - устанавливать подключения одинаково с другим проектом STM32F103+TFT, чтобы я мог просто поменять фирму на эксперименты. Кроме того, TFT_RST в «O-Scope» на самом деле делает что-либо? В некоторых других проектах он просто подтянут +V. Спасибо за возможные предложения!

П.С.: Для любопытного, вот ссылка
https: // yadi.SK/D/QJMF7P2BYAYMA

Рекснанет
Чт 12 января 2017 г. 15:29
Thunderowl написал: Вопрос: могу ли я переназначить невидимые сигналы TFT на другие порты STM32, не вызывая глобальные бедствия? А именно, я хотел бы перенести TFT_DC PA0 в PC13, TFT_CS PA1 в PA12.

Громовой двор
Чт 12 января 2017 г. 15:45
Рекснанет написал: Вы нашли этот код!!! Я искал это :) Спасибо! ;)

Рекснанет
Чт 12 января 2017 г. 18:03
Вы нашли код GFXSCOPE :)

Это было в посте от вас (я думаю :) ) где вы опубликовали несколько фотографий и еще несколько областей (Thunderjuris) именно эта последняя ссылка :)
Тогда я пытался получить код, чтобы получить «некоторые идеи», но ничего не смог найти. А потом Бэм! Вы публикуете это :)

Мой антивирус блокирует ссылку cvs.aiq.Ру говорит, что это опасно :( Возможно, я попробую с этим на секунду, лол

Громовой двор
Чт 12 января 2017 г. 18:15
Рекснанет написал:Вы нашли код GFXSCOPE :)

Это было в посте от вас (я думаю :) ) где вы опубликовали несколько фотографий и еще несколько областей (Thunderjuris) именно эта последняя ссылка :)
Тогда я пытался получить код, чтобы получить «некоторые идеи», но ничего не смог найти. А потом Бэм! Вы публикуете это :)

Мой антивирус блокирует ссылку cvs.aiq.Ру говорит, что это опасно :( Возможно, я попробую с этим на секунду, лол

mausi_mick
Пт 13 января 2017 г. 3:29
Я протестировал дисплей ILI9341 с различными булавками на Maple Mini, все комбинации в порядке:
// Additional display specific signals (i.e. non SPI) for STM32F103C8T6 (Wire colour) //#define TFT_DC PA0 // (Green) 11 maple mini //#define TFT_CS PA1 // (Orange) 10 maple mini //#define TFT_RST PA2 // (Yellow) 9 maple mini //#define TFT_DC PB4 // (Green) 18 maple mini //#define TFT_CS PB3 // (Orange) 19 maple mini //#define TFT_RST PA15 // (Yellow) 20 maple mini #define TFT_DC PA15 // (Green) 20 maple mini #define TFT_CS PA14 // (Orange) 21 maple mini #define TFT_RST PA13 // (Yellow) 22 maple mini

Рекснанет
Пт 13 января 2017 г. 9:49
Thunderowl написал:Все картинки под Thunderjuris (я) в портале бильдитов.LV - мои эксперименты, так что вы могли бы просто спросить меня, где именно я получил те коды, которые находятся в проектах на моих фотографиях :) ]

mausi_mick
Сб 14 января 2017 г. 14:32
У меня были проблемы с запуском O-Scope. После составления /загрузки программа начинается прямо, но только с USB -соединением или 5 В на VIN Экран был заморожен в течение около 30 секунд.
Я думаю, что программа петли в триггер-рутине.
Если я поставлю сигнал на входную пинку, программа начинает прямо.

С помощью Generator Generator DDS и внешнего генератора я сделал несколько снимков:
STM32_O_SCOPE_SINIUS_222HZ_3KHZ.JPG
STM32_O_SCOPE_SINIUS_222HZ_3KHZ.JPG (52.61 киб) просмотрено 1323 раза

Громовой двор
Сб 14 января 2017 г. 14:40
Спасибо за обновление, mausi_mick.

Громовой двор
Сб 14 января 2017 г. 15:32
mausi_mick написал:Теперь я изменил «функцию» 7: активировать AD9851 DDS ....

mausi_mick
Сб 14 января 2017 г. 15:49
Привет, гром,

Я думаю, что у меня есть эта доска:

http: // www.eBay.de/itm/ad9851-dds-signa ... Swimrywb6b

Он имеет измерение от 2.5 см х 4.5 см, отверстия находятся на расстоянии от около 2 см х 4 см.

Квадратный сигнал от 0 до 1 МГц, который я не видел (нет перемычки на борту ?).
Возможно, вы / я должны смотреть в таблице данных.
Я использую последовательный порт для установки частоты.

Громовой двор
Сб 14 января 2017 г. 15:58
mausi_mick написал:Привет, гром,
Он имеет измерение от 2.5 см х 4.5 см, отверстия находятся на расстоянии от около 2 см х 4 см.

mausi_mick
Сб 14 января 2017 г. 16:25
Теперь у меня все задержка () устранена в области кодера и переключения, только на сенсорном режиме вы должны ждать «Введите», чтобы вернуться в Osci-Mode.
Если вы переключитесь (с кнопкой на кодере), чтобы функционировать, первое число (для функции 1...7 = временная база ... AD9851)
Красный освещен, если вы снова прикоснитесь, второе число (для параметров) - желтый освещен. Третий номер показывает текущее значение параметра.

Промывание мозгов
Сб 14 января 2017 г. 9:40 вечера
У меня проблемы с получением серийного вывода. На самом деле, проблема заключается в соединении сериала, используя плату «чертепилл».
Чтобы проверить, я только что загрузил аналогичный пример, и он работает нормально: Win10, 72 МГц, Boot0 - 1 для программирования, 0 в противном случае. Я пробовал с serial_debug.Начните (115200), и это не работает для меня, но serial_debug.begin () работает. Arduino 1.8.1.

Кроме того, не уверен, что случилось с этими платами или загрузчиком, но на начальных Windows USB USB Device не распознается. Поскольку я использую USB -концентратор с питанием, я просто отключаю USB от компьютера (в то время как доска остается под властью), а затем он узнает. Возможно, я что -то упускаю, или я должен мигать другого загрузчика. Я только что использовал доску как есть, и в противном случае она работает нормально.

Кстати, после того, как устройство успешно перечислено, с основным примером, скорость передачи не игнорируется и автоматическая с помощью Windows, поэтому не имеет значения, какой скорость бода вы выберете. Использование реального времени для отладки. Я могу использовать Linux (либо виртуальная машина, либо автономная), но я чувствую, что что -то не так.

Оффтопический, но в последнем исходном коде от GIT есть синтаксическая ошибка:

-#Если определено touch_screen_available
должно быть:
+#ifdef touch_screen_available

Если я тоже что -то не упускаю.

Громовой двор
Сб 14 января 2017 г. 22:09
Промывание мозгов, проверьте мои сообщения, я думаю, 29 декабря (стр. 42). Здесь я могу репост:
Успех! Я получил серийное взаимодействие, работая по умолчанию USB «Maple Serial» порта (на борту USB -сокета). Проблема была одной строкой, которая присутствует в исходном файле ino github, а также позже в INO File для Fancy Miniature TFT. Эта линия (под "void setup"):
serial_debug.начинать();
Чтобы получить сериал, я должен сделать это так:
serial_debug.начало (115200);
Или даже комментировать это вообще работает, по какой -то волшебной причине!

Squonk42
Сб 14 января 2017 г. 22:22
Промывание мозгов писало:Кроме того, не уверен, что случилось с этими платами или загрузчиком, но на начальных Windows USB USB Device не распознается.

Ахулл
Сб 14 января 2017 г. 22:26
Промывание мозгов писало:Оффтопический, но в последнем исходном коде от GIT есть синтаксическая ошибка:

-#Если определено touch_screen_available
должно быть:
+#ifdef touch_screen_available

Если я тоже что -то не упускаю.

Промывание мозгов
Сб 14 января 2017 г. 11:28
Я прочитал их, но оба комментируют и добавили 115200 к сериалу.Begin Line просто блокирует USB -сериал полностью. Оставляя его в покое перечисляет, но данные не проходят. Я протестировал как минимум 20 различных видов последовательных устройств на своей машине и все работали, за исключением USB -серийного на синей таблетках с этим проектом.
Моя главная цель - сделать его выходные данные о последовательных (как написано несколько страниц назад), поэтому я прокомментировал большую часть прикосновения и ЖК -кода. Теперь, когда я думаю больше, возможно, он висит в некоторой функции ЖК -дисплея.

РЕДАКТИРОВАТЬ: не видел все посты, не знал, что «#ifdef» такой же, как «#if определено».
Заглядывая в проблему с аппаратным обеспечением USB сейчас также.

Промывание мозгов
Солнце 15 января 2017 г. 13:45
Извините, каким -то образом, когда я просмотрел уведомление, я видел только один пост раньше, после обновления (день спустя!) Теперь я видел ответы. Я отредактировал свой последний пост.
Однако я должен спросить об этом в отдельном посте: каким -то образом не изменяет ЖК -дисплей? я.эн. SPI ждет некоторых команд, которые не прибывают? Должен ли я беспокоиться об этом или кто -то уже проверил его без подключенного ЖК -дисплея?

Я «прокомментировал» линии RTC через какое-то препроцессорное поведение, поскольку я хочу, чтобы это было максимально автономным (минимальное оборудование):
#ifndef RTC_AVAILABLE int hour(long time){return 0;} int minute(long time){return 0;} int second(long time){return 0;} int day(long time){return 0;} int month(long time){return 0;} int year(long time){return 0;} void setTime(int time){} long now(){return millis();} #endif

Ахулл
Солнце 15 января 2017 г. 16:12
Я не пробовал версию "без головы". В маловероятном случае, когда я получу лишний момент на следующей неделе или около того, я могу попробовать. Я не могу думать, почему код будет особенно заботиться, если вы комментируете все биты, которые выводят что -либо на экран (Graticule, сюжет, кредиты, этикетки и т. Д.).

Громовой двор
Солнце 15 января 2017 г. 16:25
Ахулл написал:Thunderowl написал:... У меня есть несколько DIY-прицел, экспериментирующие по строительству, идут параллельно, так что нет определенных временных шкал для любого из них, в частности, в частности :) Если кто -то интересуется другими проектами, я нахожу интересным - напишите мне сообщение, я думаю. Или, если стартер захочет этого, я могу опубликовать все здесь (некоторые из них не являются STM32, например, клон дешевых USB -Scopes Hantek/Instrustar - они основаны на кипарисе).

mausi_mick
Пн 16 января 2017 г. 2:35
это хороший Оска из Бобдависа:

http: // bobdavis321.блог.de/2013/06/ ... S-Per.HTML


...

Но вернемся к O-Scope:

У меня были проблемы с AD9851, чтобы отменить 0 Гц, ему нужно более 400 мс.
Поэтому я изменил код и сбросить/инициировать AD9851 в этом случае. Это стабильно и быстрее.

Как быстро и удобно вы можете изменить частоту, которую вы можете увидеть на видео:

[urlhttps: // youtu.be/g8aow6rrulm] [/url]

mausi_mick
Пн 16 января 2017 г. 2:37 утра
извини


https: // youtu.be/g8aow6rrulm

Рекснанет
Пн 16 января 2017 г. 11:34
mausi_mick написал:У меня были проблемы с запуском O-Scope. После составления /загрузки программа начинается прямо, но только с USB -соединением или 5 В на VIN Экран был заморожен в течение около 30 секунд.
Я думаю, что программа петли в триггер-рутине.
Если я поставлю сигнал на входную пинку, программа начинает прямо.
STM32-O-SCOPE-AD9851_01.Ино

mausi_mick
Пн 16 января 2017 г. 12:52
Привет, Рекснанет,

Спасибо за код,

Я установил триггеренсивность до 100 ?? (10 был маленьким):

uint32_t triggersEnsitivity = 100; // ######################### ????????

и изменился в функции ...Triggerboth ()
«или» в коде, чтобы || .

Я думаю, что это начинается сейчас быстро, но для волны синусовой волны я думаю, что это запускается (с TriggerBoth ()) не стабильной.

Рекснанет
Пн 16 января 2017 г. 13:48
Привет mausi_mick,

Такой подход с использованием триггеренсивности не идеален, потому что у вас не будет стабильного триггера. Это может работать нормально для синуса и других подобных волн, но для других сигналов это не сработает, как и ожидалось.
И на этом коде вы не можете установить значение триггера.

Промывание мозгов
Пн 16 января 2017 г., 19:39
Вернуться снова с моими проблемами. Припаянный 1.Резистор 8K сверху R10 (10K), приносящий эквивалентное сопротивление 1.55K, так что сейчас это спецификация. Но доска ведет себя одинаково.
Просто чтобы быть ясным: 72 МГц, загрузка0 установлен на 1 во время программирования, 0 при загрузке, программирование через последовательный. Это правильно?

Если я оставлю serial_debug.begin () Как мне нужно сначала питать плату, а затем подключить ее к USB, в противном случае я получаю «неизвестное устройство». Светодиод PC13 мигает около 5 раз в секунду (триггер?), Я могу подключиться к серийному порту USB, типа 's', но ничего не получено. Если я печатаю «H», я ожидаю, что мигание остановится, но это не так. Так что нет ответа из серийного порта USB.

Если я сделаю serial_debug.Begin (115200) PC13 остается освещенным в любое время после загрузки, USB -сериал не распознается. То же самое происходит, если я переключу частоту на 48 МГц.

Просто чтобы быть ясным, пробовать простой набросок с серийным выводом USB работает.

Я попробую поместить все код, связанные с TFT и SPI в блоки #IFDEF.

Редактировать: Это связано с серийным портом USB (CDC), каким -то образом он не работает. Не уверен, что делать, у меня такая же проблема на обеих досках. Связанный с водителем? Должен ли я прошить еще один загрузчик?

Громовой двор
Пн 16 января 2017 г., 21:15
Промывание мозгов писало: Связанный с водителем? Должен ли я прошить еще один загрузчик?

Промывание мозгов
Пн 16 января 2017 г., 22:07
Thunderowl написал:Промывание мозгов писало: Связанный с водителем? Должен ли я прошить еще один загрузчик?

Громовой двор
Пн 16 января 2017 г., 22:16
Промывание мозгов писало: Спасибо! Это сделало трюк, я использовал загрузку GitHub до этого.
Я все еще должен сначала включить плату, а затем подключить USB (или сбросить плату, отключить концентратор от компьютера, подключить к компьютеру), но это незначительное раздражение.

Громовой двор
Вт 17 января 2017 г. 9:53
mausi_mick, я хотел бы спросить вас, помогите мне решить: о DDS -модуле. Заказ или нет? : D
Я имею в виду - что вы думаете, это добавление достаточно хорошее, или, может быть, не стоит того? Я не знаю качества этих модулей, стоит ли это около 12 долларов? Просто твои личные мысли, пожалуйста :)

mausi_mick
Вт 17 января 2017 12:42
Привет, гром,

Я думаю, что это нормально для этой цены, но я не нашел подробную информацию для доски или схемы.

Их два синусовых выхода и два для квадратных волн (0-1 МГц), но нет сигнала на нем ?

Я хочу генерировать из синуса других сигнальных форм с помощью триггера Schmitt (и интегратора ?).

Здесь я нашел больше Infos для AD9851:

http: // www.Эдн.com/design/test-and-meas ... -генератор

Промывание мозгов
Вт 17 января 2017 г. 13:09
Преобразование квадратной волны с переменной частотой в синус. Вам нужны настраиваемые фильтры, есть выделенные чипы, которые делают это. Это разница между 10, 50 и 5000 $ Generators. Плюс импеданс и стабильность фазы, THD, смещение, защита.
Для низких частот вам лучше с помощью вашего телефона или компьютера. Для частот низкого среднего я купил 3200-х ею за ~ 70 $. Для чего-либо еще единственным доступным вариантом является подержанная лаборатория.
Модуль DDS - это просто игрушка, хорошо, если вы хотите играть и выяснить, как работает DDS и его ограничения. Он также выведет используется Сигнал низкого уровня, если вы даете ему правильный вход, а звезды выровняются. Чтобы улучшить его, вам нужен сильный фильтр LP (для синусоидальных волн), как в связанной статье, и хорошо разработанный выходной буфер.
Просто мой 2с.

Громовой двор
Вт 17 января 2017 г. 13:29
Это (прикреплено) выглядит как китайская схема модуля. В любом случае, чип в основном генерирует только синусоидальную волну, и эта опция квадратной волны просто подает синусоидальную волну одному из внутренних входов компаратора и устанавливает значение постоянного тока (пороговое значение, вроде как) к другому входу. Сравнить. Есть горшок для этого уровня постоянного тока. Проверьте соединения вокруг контактов, также, возможно, просто горшок в одном из мин или максимальных позиций.
Некоторые уроки предполагают, что вам лучше использовать внешний компаратор более высокого качества для формирования квадратной волны, если это необходимо.

Рекснанет
Вт 17 января 2017 г. 13:43
Промывание мозгов писало:Преобразование квадратной волны с переменной частотой в синус.

mausi_mick
Вторник 17 января 2017 г. 14:30
Привет,
С HC14 это нормально для более низкой частоты (20 МГц?), но у вас есть какое -то отношение к соотношению обязанностей:
ST M32_O_SCOPE_AD9851_HC14_SCHMITTTRIGER.JPG
ST M32_O_SCOPE_AD9851_HC14_SCHMITTTRIGER.JPG (37.76 киб) просмотрено 1501 раз

Громовой двор
Ср 18 января 2017 г. 11:05
Эй, все! Я только что нашел еще один проект OSCI (опять же, в чрезвычайно широких полях русскоязычных DIY-эвер), и, в некотором смысле, он очень похож на нашу «O-Scope»-это в основном только STM32 «Bluepill», Bluepill Poard, и у него есть возможность использовать DDS Module AD9851. Странно, а? ... Но что отличается - это устройство подключения Bluetooth/USB, а также Android APK, а также Gui Windows. Я уверен, что добавил его в свои Glods (гигантский список DIY Scopes):
Я только что нашел еще один, и это STM32, и действительно простой и интересный - я определенно собираюсь его построить! Ну, не так много, чтобы на самом деле «построить» там, действительно. Это этот в списке:
S-14- (RU) STM32F103, Bluetooth, Android, Windows
https: // www.YouTube.com/watch?v = dqiyses2jts (Исправлена ​​неправильная ссылка, сейчас хорошо)
http: // форум.EasyElectronics.ru/viewtop ... 17&T = 27404
Архивы на форуме имеют схемы, готовые .Гекс, готов .Apk, готовые окна .EXE
Последняя запись на форуме - октябрь 2016 года, так что теперь я собираюсь присоединиться к дискуссии, скажем, «Boljshoe Spasibo», и спросите, есть ли запланированные авансы, и, возможно, источники общие. Есть одна важная вещь, которую мы (O-Scopists) могли бы адаптироваться с этого устройства: входной стадию с дешевым программируемым усилением OPAPM (MCP6S21). Другой Opamp (любой рельс-рельс) в том, что схема предназначена для перемещения отображаемого графического вверх/вниз.
Ну, я выходит на этот вывод. Собираюсь попробовать очень скоро. И похоже, что мне действительно нужен несколько модулей DDS (ы)...
Редактировать Jaunary 22:
Мои первоначальные тесты, без входной схемы:
http: // bildites.lv/a/7cup2kep#2k6sm4rg
Протестировано на двух разных модулях China STM32 (показано на фотографиях)

Рекснанет
Ср 18 января 2017 г. 14:10
Ссылка на видео неверна, она указывает на O-Scope на основе FPGA на основе FPGA...

У меня уже есть дополнение MCP6S21/2 в моем списке «дел» :) но все еще делать...

Vitorbnc
Чт 19 января 2017 г. 12:06
Привет всем!
Я закончил прицел на основе оригинального STM32-O-Scope, и он отлично работает! Тем не менее, я хотел бы знать, как реализовать частоту, чтобы мы могли видеть как форму волны, так и частоту. Любые идеи?

Martinayotte
Чт 19 января 2017 г. 12:25
Для этого вы должны найти пики высоким и низким, а затем рассчитать дельту во времени, вы сможете отображать частоту.
Может быть, вам понадобится в среднем это значение и обновлять отображение этого значения только один раз, если оно слишком много дрейфует, в противном случае будет трудно прочитать трудно.

Vitorbnc
Чт 19 января 2017 г. 16:04
Я нашел эту библиотеку для Arduino и Teensy https: // www.PJRC.com/teensy/td_libs_freqcount.HTML Это считается циклами во время справочного времени, но, похоже, он пишет в регистрах напрямую, поэтому я не знаю, как это сделать в STM32.

Rogerclark
Чт 19 января 2017 г. 8:04 вечера
Vitorbnc написал:Я нашел эту библиотеку для Arduino и Teensy https: // www.PJRC.com/teensy/td_libs_freqcount.HTML Это считается циклами во время справочного времени, но, похоже, он пишет в регистрах напрямую, поэтому я не знаю, как это сделать в STM32.

Ахулл
Чт 19 января 2017 г. 22:53
Есть довольно много способов сделать это, некоторые более точные и некоторые быстрее, чем другие.

Если вы хотите немного провести время с легкой кроватью ;) ->

https: // en.Википедия.org/wiki/hilbert%e ... _transform
https: // en.Википедия.org/wiki/fourier_transform
https: // en.Википедия.org/wiki/instantan ... _частота

Rogerclark
Чт 19 января 2017 г. 11:24
Ахулл написал:Есть довольно много способов сделать это, некоторые более точные и некоторые быстрее, чем другие.

Если вы хотите немного провести время с легкой кроватью ;) ->

https: // en.Википедия.org/wiki/hilbert%e ... _transform
https: // en.Википедия.org/wiki/fourier_transform
https: // en.Википедия.org/wiki/instantan ... _частота

Vitorbnc
Чт 19 января 2017 г. 11:27
Спасибо за помощь, после небольшого исследования он работает! Решение, которое я обнаружил, было использовать еще один вывод для подсчета частоты и подключить его к входу области. Я приложу код, который я написал, если кто -то заинтересован ;)

Ахулл
Чт 19 января 2017 г. 23:59
Хорошо, это гораздо более умный способ сделать это, я подозреваю. : D

Vitorbnc
Пт 20 января 2017 г. 1:07
Это просто намного ленивый способ : D

Громовой двор
Пт 20 января 2017 г. 5:25 утра
Vitorbnc написал:Это просто намного ленивый способ : D

Промывание мозгов
Пт 20 января 2017 г. 8:56 утра
Vitorbnc написал:Спасибо за помощь, после небольшого исследования он работает! Решение, которое я обнаружил, было использовать еще один вывод для подсчета частоты и подключить его к входу области. Я приложу код, который я написал, если кто -то заинтересован ;)

Vitorbnc
Пт 20 января 2017 г., 19:25
Да, я тоже думал об этих проблемах. Может, я попробую использовать аппаратный таймер, чтобы сделать подсчет позже и посмотреть, улучшит ли он точность.

Рекснанет
Пн 23 января 2017 г. 10:52 утра
Предварительный просмотр работы в процессе: :)
Изображение

Громовой двор
Пн 23 января 2017 г. 10:58 утра
Рекснанет написал:Предварительный просмотр работы в процессе: :)

Рекснанет
Пн 23 января 2017 г. 11:19
Thunderowl написал:Рекснанет написал:Предварительный просмотр работы в процессе: :)

Громовой двор
Пн 23 января 2017 г. 11:25
Приступают великие дела ... :) С удовольствием пожелает здесь!

Громовой двор
Чт, 02 февраля 2017 г., 7:52 утра
Привет всем! Привет, Рекснанет, Маузимик, Энди - Что нового? ;-) Я собираюсь сделать «Тестовый слой» для вариантов O-Scope, или, почти все, что основано на «Bluepill»+TFT SPI Combo. Итак, мне интересно, что такое, ребята, ваши текущие версии? Я рассматриваю количество кодеров и кнопок в этом тесте "Rig". Не могли бы вы, ребята, поделитесь своими текущими конструкциями? Спасибо!
О, и для тех, кто следовал подобным проектам (чтобы получить вдохновение, а что нет) - есть новая вещь от пользователя «GFX», Scope v3.0 (форум радиокот.Ру). Взгляд, если интересно. Материалы находятся в подписи пользователя "GFX".

Рекснанет
Чт, 02 февраля 2017 г. 10:16 утра
Привет, гром,

Я работал над изменениями, которые я упоминал раньше.
Они довольно много, и я не смог двигаться так быстро, как желательно, но я двигался вперед.

Наверное, в эти выходные я смогу поработать над этим и выпустить рабочую версию с большинством функций.
Я использую один энкодер, и я думаю, что этого будет достаточно, но, возможно, 2 или 3 будут более «удобными для пользователя» :)

Что касается строительства, то это все еще еще не «ограждено» :) к сожалению...

"GFX"? Я проверю это :)

Вот статус :)

Работа (разумно : D ):
- Меню Навигация
- Значения меню изменяются
- триггер край (но форма волны не меняется соответственно! LOL должен взглянуть на это, может быть, с синусовой волной)
- уровень триггера (значения от 0 до 4096.быть исправленным на вольт позже)

- Индикация уровня триггера!!!! (этот красный след слева от волны : D. нужно изменить его на стрелу или что -то в этом роде)

Реализовано, но все еще не проверено:
- режим триггера (автоматическое, нормальное, одиночное)
- Бежать/остановиться
- Шкала временной базы (модифицирована, чтобы показать «50US»..."100us"...«1 мс» и т. Д. И отражает реальную временную базу :) )
- Vols/Div (модифицировано, чтобы показать «50 мВ»..."100 МВ"..."1V" и т. Д. Только факторы масштабирования. MCP6S22 придет последним, поэтому придется внести некоторые коррективы...)

Еще предстоит сделать:
- Двойной канал (на пути) (отсутствует: захват ADC, чертеж, 2 -й канал триггер)

Громовой двор
Чт, 02 февраля 2017 г. 10:26 утра
Спасибо за информацию, rexnanet! О двойном канале - не будет ли он жертвовать скоростью отбора проб для каждого?

Об этой новой версии 3.0 (это F407), пользователь GFX и друзья:
https: // www.YouTube.com/watch?v = y64b1hw ... e = youtu.быть
http: // radiokot.ru/forum/viewtopic.PHP? ... &начало = 820
https: // yadi.SK/D/QJMF7P2BYAYMA

Рекснанет
Чт, 02 февраля 2017 г. 11:20
Thunderowl написал:Спасибо за информацию, rexnanet! О двойном канале - не будет ли он жертвовать скоростью отбора проб для каждого?

Рекснанет
Пн, 06 февраля 2017 г. 12:12
Ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо,
Как было объявлено ранее... Вот предварительная версия моего подхода к STM32-O-Scope.

- Volts/Div все еще Wip. (больше похоже на функцию масштабирования...)
- Двойной канал тоже все еще.

Я столкнулся с неожиданной проблемой с вертикальными грибациями, так как я думал, что у меня 200 пикселей, но это действительно 220, а математика немного отключена, используя настоящий метод.
Поэтому я, вероятно, снижу его до 200 пикселей и создам информационную область ниже (или выше).
STM32-O-Scope-Byrex-V0.9.Ино
(41.22 киб) скачано 87 раз

Громовой двор
Пн, 06 февраля 2017 12:37
And, soooooo... Большое спасибо :) У меня много параллельных вещей (например, создание телевизора для себя, проверьте мой портал изображений), но попробуйте Advances O-Scope-один из приоритетов. Спасибо, Rexnanet!

Ахулл
Пн, 06 февраля 2017 г. 13:14
MCP6S22 выглядит довольно полезно, мне, возможно, придется играть с этим. Что вы намереваетесь сделать в переднем конце, чтобы не взорвать бедную вещь?

ИзображениеMSP6S22 Односторонний, вводный/вывод с железной дорогой, PGA с низким усилением

Рекснанет
Пн, 06 февраля 2017 г. 13:42
Ахулл написал:MCP6S22 выглядит довольно полезно, мне, возможно, придется играть с этим. Что вы намереваетесь сделать в переднем конце, чтобы не взорвать бедную вещь?

Громовой двор
Пн, 06 февраля 2017 г. 13:52
Я просто помесчу диод в «+» и диод в «GND», при входе. И, чип MCP на панели, для быстрой замены после взрывов :))) (У меня есть случай DIP MCP6S21). Может быть, эта схема может быть использована напрямую?
http: // форум.EasyElectronics.ru/downloa ... &mode = view (часть «1» изображения)
То, что нижний опал используется для перемещения сигнала вверх/вниз на экране, может быть опущено, C4 должен быть сокращен. Если используется этот опор, это может быть любой железнодорожный RAIL.

Рекснанет
Пн, 06 февраля 2017 г. 14:28
Да, я думаю, что эта схема кажется в порядке. Добавление диодов и это сделано.

Я думаю, что добавление VCC/2 в этот резистор 100K (где подключен opamp) позволит нам иметь измерение + и - напряжение вместо положительного.

Так что, возможно, эта схема может быть полезна :) Спасибо!

Громовой двор
Пн, 06 февраля 2017 г. 15:23
Рекснанет написал:... Так что, возможно, эта схема может быть полезна :) Спасибо!

Рекснанет
Пн, 06 февраля 2017 г. 16:33
Это больше похоже на «Bluetooth All в одном инструменте» :) с генератором сигнала и всем...

У него есть приложение для Android и версия для ПК?

РЕДАКТИРОВАТЬ: только что увидел это, да, сейчас я помню :) хорошо выглядит.

Громовой двор
Пн, 06 февраля 2017 г. 16:56
Я ищу более или менее прямую замену для MPC6S92, 91, 62, 61-но из «аналоговых устройств». И я не уверен насчет результатов поиска... Любой компетентный может сказать мне наверняка, есть ли заменители, созданные «аналоговыми устройствами»? Если вы спросите - почему? Хорошо... В образцах может быть что -то... (подмигивание.. ;)

Рекснанет
Пн, 06 февраля 2017 г., 17:30
;) Вот почему здесь используется MCP6SXX ;)

Из быстрого поиска на дядя Google:
http: // www.аналоговый.com/en/products/ampli ... T-Overview

У него нет шага 32, но кажется более или менее полезным в этой цели.

Громовой двор
Вт. 07 февраля 2017 г. 8:55 утра
Рекснанет написал: У него нет шага 32 усиления ....

Рекснанет
Вт, 07 февраля 2017 г. 9:56 утра
Да, я думал, что это был i2c, но я проверил, и это параллельный автобус с CS и CLK.
Я думаю, не большая проблема.

Вы пробовали программу Microchip $ Ample, и она не прошла или еще не пробовала ее?
Все, что вам нужно, это «не общий» почтовый адрес.

Громовой двор
Вт. 07 февраля 2017 г. 10:22
Прямо сейчас они (Microchip) вообще не отправляются в Латвию. Я получал от них образцы в прошлом, но сейчас Латвия не в списке (это может измениться время от времени). Но я успешно заказал образцы из AD и STM в прошлом году. Вот почему мне было интересно о замене рекламы. В случае MCP6S61 это не трагедия в любом случае, она стоит менее 2 евро на местной официальной сети здесь, уже получил один для тестов.

Громовой двор
Ср. 08 февраля 2017 г. 16:10
Рекснанет написал:Ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо,
Как было объявлено ранее... Вот предварительная версия моего подхода к STM32-O-Scope.

Рекснанет
Ср. 08 февраля 2017 г. 16:44
Хумм, так что бортовое светодиод мигает? Означает, что триггер в порядке.

Вы уверены, что булавки SPI такие же?
Я изменил их из исходных, не уверен, что Mausi_mick также использует эту конфигурацию... Я предполагаю, что нет.
Они все одинаковы, но порядок изменился... :)

Громовой двор
Ср. 08 февраля 2017 г. 16:50
Я действительно не вижу различий.... Если вы не использовали SPI 2 ? ИЛИ... Теперь SPI1 на самом деле 2 ?
----------------------Оригинал:----------------------------
// дополнительные специфические сигналы отображения (я.эн. non spi) для STM32F103C8T6 (цвет провода)
#define tft_dc pa0 // (зеленый)
#define tft_cs pa1 // (оранжевый)
#define tft_rst pa2 // (желтый)
// Аппаратный SPI1 на STM32F103C8T6 * также * должен быть подключен, а выводы следующие.
// spi1_nss (pa4) (LQFP48 PIN 14) (n.в.)
// SPI1_SCK (PA5) (LQFP48 PIN 15) (коричневый)
// spi1_moso (PA6) (LQFP48 PIN 16) (Белый)
// spi1_mosi (pa7) (LQFP48 PIN 17) (серый)
//

----------------------Ваш iNO:------------------------
// Аппаратный SPI1 на STM32F103C8T6 * также * должен быть подключен, а выводы следующие.
Варианты/generic_stm32f103c/poard/poard.H: #define
Board_nr_spi 2
Board_spi1_nss_pin pa4
Board_spi1_mosi_pin pa7
Board_spi1_miso_pin pa6
Board_spi1_sck_pin pa5

Board_spi2_nss_pin pb12
Board_spi2_mosi_pin pb15
Board_spi2_miso_pin pb14
Board_spi2_sck_pin pb13
*/

// дополнительные специфические сигналы отображения (я.эн. non spi) для STM32F103C8T6 (цвет провода)
#define tft_dc pa2 // pa0
#define tft_cs pa0 // pa1
#define tft_rst pa1 // pa2

Рекснанет
Ср. 08 февраля 2017 г., 17:42
#define tft_dc PA0
#define tft_cs ПА1
#define tft_rst PA2

против.

#define tft_dc PA2
#define tft_cs PA0
#define tft_rst ПА1

Посмотри внимательно :)

Громовой двор
Ср. 08 февраля 2017 г. 18:20
Рекснанет написал:
Посмотри внимательно :)

Рекснанет
Ср. 08 февраля 2017 г. 18:28
Thunderowl написал: (Помимо гипнотизации меня, то есть)?

Громовой двор
Ср. 08 февраля 2017 г. 8:33 вечера
... AaaAnd, конечно же, теперь он работает (rexnanet 0.9). Завтра несколько фотографий. Теперь слишком устал (я боролся.. )..
Спасибо, rexnanet.

Рекснанет
Чт, 09 февраля 2017 г. 9:45
Thunderowl написал:... AaaAnd, конечно же, теперь он работает (rexnanet 0.9). Завтра несколько фотографий. Теперь слишком устал (я боролся.. )..
Спасибо, rexnanet.

Громовой двор
Чт, 09 февраля 2017 г. 10:07
Рекснанет написал: Вчера я собирал MCP6S92 на крошечной макете....

Рекснанет
Чт, 09 февраля 2017 г. 10:26 утра
Да, обычно не занимает больше времени, чем неделю, если я помню.
Но если у вас есть один, чтобы проверить, это здорово.

MCP6S61, похоже, не существует :) MCP6S91 или MCP6S21 :)

Громовой двор
Чт, 09 февраля 2017 г., 11:05
Извините, конечно "21". Я думаю, все еще демоны вокруг, я думаю. Я также предполагаю, что это может быть побочным эффектом, не выпивая ничего более сильного, чем кофе в течение двух лет... : D Мозг все еще должен быть испорчен... : D

Громовой двор
Чт, 09 февраля 2017 г., 16:11
Здесь мой прогресс в GenericBlackbox-O-Scope, с загруженным кодом «rex»:
http: // bildites.LV/A/684AF4CB#4WNS5UJQ
(и некоторые другие показатели - http: // bildites.LV/пользователи/Thunderjuris/Albums , Если скучно, проверьте Sharp TV e-emake)
Об этой прошивке O -Scope - в моем случае манипуляции с кодером не очень стабильны. У меня есть резисторы 10K от боковых пинтов Encoder и выключателя - до +3V3. Кстати, у меня изначально не было резистора на штифте переключателя, и это привело к датчику энкодера, и включил прикосновение (без этой ручки на изображениях). Теперь Switch-это нормально, но левое правое немного со своим умами. Это только моя установка или общая проблема?

Рекснанет
Чт, 09 февраля 2017 г., 17:24
Вау, хорошая коробка : D

Да, энкодер не очень отзывчивый. Имеет свой собственный разум.

Мой энкодер имеет 10K резисторов в +VCC, и я добавил 100 -нФ -конденсаторы в GND. (Пытался 1 UF, но был еще хуже)

Проблема в том, что на падении нет заметного шума, но на восходящем краю его много.
Я пытался прыгнуть в этот шум, игнорируя импульсы в течение около 4 мс. Но даже в этом случае есть беспорядочное поведение.

Возможно, придется сделать тестовый код и отладку, используя некоторые булавки и логический анализатор...
Или попробуйте другой подход...

Громовой двор
Чт, 09 февраля 2017 г., 17:32
Я бы сказал - украсть где -нибудь части энкодера от iNOS, оставшихся без охраны :)

Рекснанет
Пт 10 февраля 2017 г. 10:48 утра
Да, но код, который я вижу, предназначен для Ардуино, и я думаю, что они получают хорошую производительность из -за медленной скорости обработки, прыгает с глюков...

Я попробую код, который показывает, сколько прерываний произошло и время каждого, чтобы помочь диагностировать проблему.

Ответ энкодера из кода MAUSI_MICK OK?
Но частота обновления от его кода не так быстро... это может повлиять на это также.

Громовой двор
Пт 10 февраля 2017 г. 11:53 утра
Мне еще предстоит попробовать последний код Маузи (привет, Маузимик, может быть, сейчас есть что -то еще более позднее? :) ). Я оставил свою коробку-капюшн дома, самое раннее (это даже слово?) будет поздно вечером, когда я смогу продолжить эксперименты. О жертвах (обновление TFT, прикосновение, чтения энкодера), я думаю, некоторые неизбежны с этим конкретным чипом, который мы используем. Похоже, авторы (Alex2, Yurick, GFX) GFXSCOPE 3.0, например, устал от оборудования и мигрировал на F407, с дисплеем вдали от SPI. Кстати, может быть, любой использование этого перевода (он о прикосновении, но все же):
"Применение, когда вы нажимаете на ощупь, перестает делать синхронизацию, он задумал, чтобы каким -то образом реагировать на прикосновение, так быстро, но без синхронизации. В высокочастотном сигнале вы не чувствуете, что, поскольку существует также синхронизация программного обеспечения, но переход к времени 1 мс и несколько раз в секунду вы увидите, что он начинает не работать должным образом. Дело в том, что для небольшого сканирования на 40 мс или более прикосновений почти не отвечает - это факт, но что делать? Собирайте буфер ADC или ответьте на прикосновение? ..."(с русского языка" GFX ").

Рекснанет
Пт 10 февраля 2017 г. 13:54
Да, 407 - более способная платформа, а параллельный дисплей быстрее, чем этот, но и более дорогой :)
Несмотря на то, что на Aliexpress есть доски около 14 €... это не плохо.

Прикосновение немного сложно, но этот текст предполагает, что они выиграют от захвата ADC, управляемых прерыванием. Или используя Timmer для тех медленных времен сканирования.

Громовой двор
Пт 10 февраля 2017 г. 14:03
Просто быстрая мысль (не исследованная на самом деле) - может ли некоторая задача оборудования для определения чипов решить кодер (или кнопки)? Просто теоретически, а не цены или что -то, что учитывают.
О, и я хотел спросить, разве не было возможности активировать внутренние подтягивания на этих булавках STM32?

Рекснанет
Пт 10 февраля 2017 г. 14:14
Да, вероятно, триггер Шмитта поможет избежать переходного шума...
Использование падающего края для подсчета, вероятно, поможет, но поддержание времени дискриминации по растущим краям.
Только больше тестирования улучшит это... (необходима капсула путешествия во времени :) )
Резисторы на энкодере уже являются подтягиванием, не думайте, что внутренний будет что-то сделать здесь...

Громовой двор
Пт 10 февраля 2017 г. 14:34
Рекснанет написал: Резисторы на энкодере уже являются подтягиванием, не думайте, что внутренний будет что-то сделать здесь...

Рекснанет
Пт 10 февраля 2017 г. 15:22
О, да.

У меня есть это:
https: // pt.aliexpress.com/item/free-shi ... 9342E4B279

Единственный должен был добавить резистор для SW и добавить конденсатор на каждый из них в GND.

Без конденсатора: общий CAO :) Я проверил его на логическом анализатора (клон Saelae).

Rogerclark
Пт 10 февраля 2017 г., 19:48
Ребята,

Есть поток о том, как дебаутировать эти вращающиеся кодеры.

Я использую их сам и использую внешний CR Debince.

Я использую внешний резистор и конденсатор, но у меня были проблемы с этим. Поэтому я бы посоветовал использовать 2 внешних резистора и один конденсатор. (Как обсуждалось в другой ветке)

КСТАТИ. Я не думаю, что тебе нужны триггеры Шмитта. Внешней цепи R, C, R было достаточно.

Пса. Не пытайтесь использовать внутреннюю подтягивание (как я это сделал), так как его значение определяется в спецификации, как что -то вроде 40K плюс или минус 10K, что слишком высока, чтобы не быть склонным к глючам.

Рекснанет
Солнце 12 февраля 2017 г. 15:05
Я сделал более подробное тестирование с логическим анализатором.

В конце концов, на поднимающихся импульсных краях не существует многократного прерывания. Это было замечено только на логическом анализаторе.

Но у меня есть ложные прерывания растущих прерываний по падению краев, поэтому я решил использовать падающие прерывания, и теперь это очень просто и минималистично (как и должно было быть с самого начала :) )
Сейчас отлично работаю :)

Добавил код MCP6S92, но все же как тривиальная демонстрация. Циклы через все выгоды, поэтому «Volt/Div» не реально. Но доказывает смысл.

Немного улучшить триггер. Режим триггера работает лучше.

Этого достаточно на сегодня :)
STM32-O-SCOPE_BYREX-V0.91.rar
(11.37 киб) скачано 115 раз

Громовой двор
Солнце 12 февраля 2017 г. 16:26
Спасибо, Рекс! Скоро протестируется, если не появится даже более новая версия очень скоро :)
Здесь, не по теме или нет - на что способен «почти нулевая цена»
https: // www.YouTube.com/watch?v = 7pfui4tvjbe&t = 0s
Правда, эта графическая удивительность находится на параллельном TFT, а не SPI (можем ли мы иметь версию на параллельном TFT?), но все же, выглядит так... :)

Рекснанет
Солнце 12 февраля 2017 г. 20:38
Thunderowl написал:Спасибо, Рекс! Скоро протестируется, если не появится даже более новая версия очень скоро :)

Громовой двор
Солнце 12 февраля 2017 г. 8:50 вечера
У меня также есть один тип «Uno Щит», и я знаю, что он работает, тестируется с проектом "Pultoskop":
http: // bildites.lv/a/daxkuzd2#8stbtwj7
Если это похоже на ваше, я могу указать вам на код, так что, вероятно, вы увидите, какие библиотеки (какие чипсет) используются.

Рекснанет
Солнце 12 февраля 2017 г. 9:29 вечера
Продавец говорит, что это ILI9481, но у меня есть сомнения...

https: // pt.aliexpress.com/item/3-2 дюйма ... 19747.HTML

У меня сейчас мега (3D -принтер проект :) ), вероятно, легче проверить это на нем...

Zoomx
Пн 13 февраля 2017 г. 14:15
Очень часто эти Shields TFT MCUFRIENT прибывают с печати, которая говорит, какой чип используется внутри. Я считаю, что используется ручная тембра.

В библиотеке TFT David Prentice есть эскиз, способный идентифицировать чип в большинстве случаев.

Громовой двор
Ср. 15 февраля 2017 г. 14:35
Сегодня я получил хороший пакет от "Microchip":
http: // bildites.lv/images/vf8ywtw5/19940/original.JPG
Что ж, это не бесплатные образцы (я писал ранее, почему), но все еще цены производители со специальным предложением - бесплатная доставка (с Fast Express).
Если ничего другого - я вроде как уверен, это оригиналы, а не некоторые переоборудованные китайские подделки : D

mausi_mick
Солнце 19 февраля 2017 г. 14:49
Привет, гром,

Я вернулся, я был в отпусках рядом с "антиподами" ? - В Шриланке это действительно теплее в это время как погода в Германии или в Литве !

У меня есть программа с AD9851 немного изменен и интегрирую функцию частотного отслеживания (на PA15) с форума. Поэтому я переместил выводы дисплея CD / CS в PA14 / PA13.
STM32_O_SCOPE_AD9851_FREQCOUNTER_PA15.JPG
STM32_O_SCOPE_AD9851_FREQCOUNTER_PA15.JPG (47.08 киб) просмотрено 1509 раз

Ахулл
Солнце 19 февраля 2017 г. 20:13
Хороший! : D

Кстати, что ближе к истине? 3384 Гц или 3400 Гц ? Сказав это... 99.Точность 529% не плохо для нас, любители. ;)

Громовой двор
Солнце 19 февраля 2017 г. 9:11 вечера
Добро пожаловать назад, Маузи Мик! :)
Хм, мне, вероятно, нужно будет сделать несколько прыгунов в моей конструкции, чтобы попробовать Энди, Рекснанет и ваши версии. Или, может быть, сделайте Remap в файлах ino, к некоторым унифицированным подключениям к экрану, Encoder. Должен изучить это.

mausi_mick
Пн 20 февраля 2017 г., 4:53
Привет, Энди,

Я несколько раз слышал, что последние 1% точений стоят более 95% денег/времени !
(Я думаю, что это было для точности леопарда танка). Но теперь у меня есть время ? :ржу не могу:

Точность счетчика была наиболее лучше, чем 7 Гц, но с некоторой частотой (3000 Гц -> 3095, 5000 Гц -> 4762, 7000 Гц -> 7205, 9000 Гц -> 8538...)
ошибка была очень большой.
Я думаю, что это была проблема с AD8951, возможно, с генерируемой частотой от 180 МГц на 3.3В.

Я изменил SW:
http: // www.Чанпук.CH/Electronics/AD9851.PHP

и немного изменил его (DDS_CLOCK 120 МГц) ...

Теперь его работа стабильна с ошибкой менее 1 Гц до 10 кГц и 7 Гц до 300 кГц.

mausi_mick
Пн 20 февраля 2017 г. 7:10
Здесь картина:
DSC00012.jpg
DSC00012.JPG (59.11 киб) просмотрено 1467 раз

mausi_mick
Чт 23 февраля 2017 г. 8:24
Привет, гром, привет, rexnanet,

Различные булавки могут быть проблемой, я изменил их частично для более коротких проводов или сохранить булавки (e.глин. для перезапуска PIN -кода на 3.3 В).

Другая проблема заключается в том, что не все контакты чипа STM32F103 подключены к плате, ни на синей таблетке, ни на Maple Mini:
На Maple Mini, например, они не являются PIN для PB9, который нуждается в REXNANET для Encoder-Buttom.

Я пытаюсь проверить его (rexnanat) программу для MCP6S92 ... И я надеюсь, что это скоро продолжится со вторым каналом ...

Громовой двор
Чт 23 февраля 2017 г. 9:00 утра
Понятно, PB9 на платах типа Mapple используется для «USB включить» переключение. Итак, я думаю, резистор на борту можно найти, где припаять. В любом случае, но как насчет того, чтобы вы 3 «основные разработчики» на этот момент :), Собирайтесь вместе и согласитесь с едиными соединениями? :) Тогда у нас будет «аппаратная платформа» с легко обменным программным обеспечением. Я думаю, что у Рекснанета есть хорошая точка зрения его версии TFT -проводов, чтобы иметь это в качестве основы, вероятно, можно договориться о входах энкодера, управляемых контактах генератора (необязательно), управляемых контактов Ampliation (для MPC)?

Рекснанет
Чт 23 февраля 2017 г. 9:37
Thunderowl написал:Понятно, PB9 на платах типа Mapple используется для «USB включить» переключение. Итак, я думаю, резистор на борту можно найти, где припаять. В любом случае, но как насчет того, чтобы вы 3 «основные разработчики» на этот момент :), Собирайтесь вместе и согласитесь с едиными соединениями? :) Тогда у нас будет «аппаратная платформа» с легко обменным программным обеспечением. Я думаю, что у Рекснанета есть хорошая точка зрения его версии TFT -проводов, чтобы иметь это в качестве основы, вероятно, можно договориться о входах энкодера, управляемых контактах генератора (необязательно), управляемых контактов Ampliation (для MPC)?

mausi_mick
Чт 23 февраля 2017 г. 9:56 утра
Rexnanet, Thunderowl,

можно изменить ландшафтную формат на портрет,
Чем мы могли бы отобразить сигнал с полным 8-битным разрешением (256) в высоком уровне и имели место для применений (задержка, триггер, ...) в собственном поле 84 x 240 сверху или на земле ?

Рекснанет
Чт 23 февраля 2017 г. 13:34
mausi_mick написал:Rexnanet, Thunderowl,

можно изменить ландшафтную формат на портрет,
Чем мы могли бы отобразить сигнал с полным 8-битным разрешением (256) в высоком уровне и имели место для применений (задержка, триггер, ...) в собственном поле 84 x 240 сверху или на земле ?

mausi_mick
Чт 23 февраля 2017 г. 15:01
Рекснанет,

Я думаю, что с 8 битами это тоже сложно, потому что MCP6.. имеет только 1 % точности, и вы должны выбрать другие компоненты лучше, чем 0,5 %.

И я думаю, что лучше, чем 7bit, это достаточно для любителя . :ржу не могу:

Рекснанет
Пт 24 февраля 2017 г. 9:50 утра
Эта проблема с выводом может быть решена путем создания #ifdef bluepill_board и #ifdef maple_board и поместите все назначения PIN.

Таким образом, мы можем просто установить желаемую переменную, и это все :)

Что вы думаете?

Рекснанет
Пт 24 февраля 2017 г. 10:05
mausi_mick написал: MCP6.. имеет только 1% точности

Громовой двор
Пт 24 февраля 2017 г. 10:10
Рекснанет написал:Эта проблема с выводом может быть решена путем создания #ifdef bluepill_board и #ifdef maple_board и поместите все назначения PIN

Zoomx
Пт 24 февраля 2017 г. 11:38 утра
Thunderowl написал: Это звучит для меня умным. Что говорят другие? :) (кто на самом деле понимает кодирование, в отличие от меня : D Хорошо, я немного понимаю... :) )

mausi_mick
Пт 24 февраля 2017 г. 13:22
Шум, да, небольшими сигналами.

Но я думаю, что область применения больше для формы сигнала и т. Д., Не для точности (если амплитуда 2.5 В или 2.516 В) .

Mrburnette
Сб 25 февраля 2017 г. 15:42
mausi_mick написал:Шум, да, небольшими сигналами.

Но я думаю, что область применения больше для формы сигнала и т. Д., Не для точности (если амплитуда 2.5 В или 2.516 В) .

Willfly1
Солнце 26 февраля 2017 г., 17:29
Я намеревался заменить стоковую прошивку на Oscope DSO-138, который основан на STM32F103 с аналоговым передним концом. Проработала какое -то время, но, наконец, получила возможность почистить и опубликовать. Ключевыми областями для улучшения были - получить данные о форме волны из последовательного порта и добавить второй канал (цифровой и аналоговый)

Моя первоначальная разработка была на BluePill, поэтому кодовая база может быть адаптирована для работы с общими платами F103.

Я начну еще одну ветку для этого.
Pic2.png
PIC2.PNG (164.74 киб) просмотрено 1752 раз

Громовой двор
Солнце 26 февраля 2017 г. 18:18
Очень интересно, WillFly1 !

Рекснанет
Пн 27 февраля 2017 г. 9:16 утра
Willfly1 написал: Моя первоначальная разработка была на BluePill, поэтому кодовая база может быть адаптирована для работы с общими платами F103.

Я начну еще одну ветку для этого.

mausi_mick
Пн 27 февраля 2017 г. 9:57 утра
супер !
и SW очень хороший структурированный !

Я попытался изменить его на Maple Mini и на SPI-TFT-Display ILI9341:
STM32-O-SCOPE_DSO-138.JPG
STM32-O-SCOPE_DSO-138.JPG (51.33 киб) просмотрено 1713 раз

Willfly1
Пн 27 февраля 2017 г. 14:17
Рекснанет написал: Пожалуйста, добавьте ссылку здесь позже.
Но эта версия использует правое параллельное отображение?

Willfly1
Пн 27 февраля 2017 г. 14:20
mausi_mick написал:супер !
и SW очень хороший структурированный !

Я попытался изменить его на Maple Mini и на SPI-TFT-Display ILI9341:

STM32-O-SCOPE_DSO-138.JPG

Но я изменился только в это время, фиксаторы (CS, RST, DC, CLK) и выводы от энкодера.

Чтобы перемещать входные данные АЦП (PA0, PA4) для меня трудным или невозможным, потому что они написаны в ассемблере.

Но я думаю, что должен заняться вторым STM32F103 ...

Рекснанет
Пн 27 февраля 2017 г. 14:44
mausi_mick написал:супер !
и SW очень хороший структурированный !

Я попытался изменить его на Maple Mini и на SPI-TFT-Display ILI9341:

Но я изменился только в это время, фиксаторы (CS, RST, DC, CLK) и выводы от энкодера.

Чтобы перемещать входные данные АЦП (PA0, PA4) для меня трудным или невозможным, потому что они написаны в ассемблере.

Но я думаю, что должен заняться вторым STM32F103 ...

mausi_mick
Вт 28 февраля 2017 г. 12:35
Привет, Рекснанет,

У меня были некоторые проблемы, чтобы сделать программу стабильной, я должен изменить много булавок, и некоторые булавки должны быть PWM-шпильки.

Теперь у меня есть PA4 бесплатно для SPI, и аналоговые входы находятся на PA0 и PB0.

Это не так много работы,
- Удалить полную SRC LIB в загрузке DLO-138
- изменить либера... в DLO-138.Ино и вставить <SPI.час>
- Изменение в дисплее.Ино:
Adafruit_ili9341_stm tft = adafruit_ili9341_stm (tft_cs, tft_dc, tft_rst); // Использование аппаратного SPI
// adafruit_tftlcd_8bit_stm32 tft;
- Удалить их TFT.сбросить () и изменить TFT.Начните (0x9341) до TFT.начинать
- изменить глобальный.h (разные клена/синяя пиль)

Здесь мой кленовый глобальный h: // comment out following line to use DSO push buttons instead of encoder #define USE_ENCODER // serial print macros #define DBG_INIT(...) { Serial.begin(__VA_ARGS__); } #define DBG_PRINT(...) { Serial.print(__VA_ARGS__); } #define DBG_PRINTLN(...) { Serial.println(__VA_ARGS__); } #define SERIAL_BAUD_RATE 115200 // analog and digital samples storage depth #define NUM_SAMPLES 2048 // TFT_SCK PA5 // D6 ##### // TFT_MOSI PA7 // D4 ##### #define TFT_CS PA4 // D7 ##### PA14 // PA14 D21 #define TFT_DC PA15 // D20 ##### #define TFT_RST 112 // 112 ##### //PA13 // 3.3V // display colours #define AN_SIGNAL1 ILI9341_YELLOW #define AN_SIGNAL2 ILI9341_MAGENTA #define DG_SIGNAL1 ILI9341_RED #define DG_SIGNAL2 ILI9341_BLUE // pin definitions (DSO138) #define BOARD_LED PC13 // D14 ##### PA15 #define TEST_WAVE_PIN PA9 // D26 ##### PA7 D4 // PWM 1KHz square wave output #define TRIGGER_IN PA8 #define TRIGGER_LEVEL PB8 #define VGEN PA10 // D25 ###### PB9 // used to generate negative voltage in DSO138 // captured inputs #define AN_CH1 PA0 // D11 analog channel 1 #define AN_CH2 PB0 // D3 ###### //PA4=D7 // analog channel 2 #define DG_CH1 PA13 // digital channel 1 - 5V tolerant pin. Pin mask throughout code has to match digital pin #define DG_CH2 PA14 // digital channel 2 - 5V tolerant pin. Pin mask throughout code has to match digital pin // misc analog inputs #define VSENSSEL1 PA2 #define VSENSSEL2 PA1 #define CPLSEL PA3 // switches #define ENCODER_A PB3 // D19 ##### // PB13 //################################## #define ENCODER_B PB4 // D18 ##### // PB14 //################################## #define ENCODER_SW PB5 // D17 ##### // PB12 //################################## #define BTN4 PB6 // D16 ##### // PB15 /* // switches #define ENCODER_SW PB12 #define ENCODER_A PB13 #define ENCODER_B PB14 #define BTN4 PB15 */ // TFT pins are hard coded in Adafruit_TFTLCD_8bit_STM32.h file // TFT_RD PB10 // TFT_WR PC15 // TFT_RS PC14 // TFT_CS PC13 // TFT_RST PB11 // FLASH memory address defines #define PARAM_PREAMBLE 0 #define PARAM_TIMEBASE 1 #define PARAM_TRIGTYPE 2 #define PARAM_TRIGDIR 3 #define PARAM_XCURSOR 4 #define PARAM_YCURSOR 5 // 5,6,7,8 - 4 params #define PARAM_WAVES 9 // 9,10,11,12 - 4 params #define PARAM_TLEVEL 13 #define PARAM_STATS 14 #define PARAM_ZERO1 15 #define PARAM_ZERO2 16 #define LED_ON digitalWrite(BOARD_LED, LOW) #define LED_OFF digitalWrite(BOARD_LED, HIGH) // number of pixels waveform moves left/right or up/down #define XCURSOR_STEP 25 #define YCURSOR_STEP 5 #define BTN_DEBOUNCE_TIME 350

Громовой двор
Вт 28 февраля 2017 г. 12:42
Делая отличную работу, mausi_mick!

mausi_mick
Вт 28 февраля 2017 г. 13:28
на YouTube:

https: // youtu.be/p3nr-wi-jna

Willfly1
Вт 28 февраля 2017 г. 15:19
mausi_mick написал:на YouTube:

https: // youtu.be/p3nr-wi-jna

mausi_mick
Ср. 01, 2017 13:49
Возможно ли взять тот же SPI-BUS, что и дисплей ?
Или это быстро ?


Чем мне нужен только один вывод для cs_mcp6sx

Рекснанет
Ср. 01, 2017 14:09
MCP6S92 обрабатывает скорость SPI до 10 МГц.
У драйвера уже есть опция HW-SPI, но я еще не тестировал его.
Теоретически это было бы возможно, пока скорость SPI перенастроена каждый раз, когда обращается к MCP.

Стивестронг
Ср. 01, 2017, 16:25
Различные настройки для той же SPI обслуживаются SPI.BEGINTRANCACTION ().

Громовой двор
Ср. 8 марта 2017 г. 10:39
Привет еще раз здесь.
Сегодня я сделал какую -то причудливую вещь, которую я планировал в течение некоторого времени. Заменил чип на одной из моих «Bluepill» с микроконтроллером STM32F303.
Конечно, я не первый, что делает это, я знаю. У многих есть мысли, которые были бы неплохо, если бы китайские производители сделали бы дешевые «таблетки F303», но их нет (AFAIK). Итак, мы можем сделать один, разгоны такие же, как F103. Здесь мои фотографии:
http: // bildites.lv/a/pjuhvaf5#6jv5nwen
На одном из фотографий показывает, что эта доска работает в Tomeko.Чистая прошивка "Miniscope V2D".
Я подумал, может быть, это то, что нужно учитывать здесь в наших вариациях "O-Scope". Если кто-то пишет код для F303 (лучшие АЦП и т. Д.), При таком преобразовании чертежа у нас есть «Включение, совместимое с PIN-контактом» оборудование.
Технически я сделал «взорвать» старый фип с пистолетом горячего воздуха и припаянный STM32F303CBT6 на месте.
Мысли, кто -нибудь? :)

Рекснанет
Ср. 8 марта 2017 г. 11:29
Я заказал несколько F303, но они облагались налогом на таможню, и я отказался от них... Придется ждать новой партии... :)
Я думал то же самое... Замените чип на синей таблетках.
Но для этой цели разве код от GFX лучше? Это уже функционально правильно?

Громовой двор
Ср. 08, 2017 12:06
Рекснанет написал: Я думал то же самое... Замените чип на синей таблетках.
Но для этой цели разве код от GFX лучше? Это уже функционально правильно?

Рекснанет
Ср. 08 марта 2017 13:52
Thunderowl написал: GFXSCOPE версия V2.0 (на основе F303) не бесплатно. Ну, для меня это так, потому что я купил «права» на V3.0 прошивка и V2 выступают в качестве бонуса, если это необходимо. Но невозможно «одолжить» кому -то (даже если бы я хотел), это конкретный фиш. Но да - если вы купили v2.0 прошивка, затем такая «Bluepill Pro» облегчает экспериментирование.

mausi_mick
Ср. 08 марта 2017 г. 14:19
Громовой двор,

Вы видели GD32BluePill (с 120 МГц):

http: // www.eBay.de/itm/272292269104

Rogerclark
Ср. 8 марта 2017 г., 21:25
mausi_mick написал:Громовой двор,

Вы видели GD32BluePill (с 120 МГц):

http: // www.eBay.de/itm/272292269104

Рекснанет
Чт, 09 марта 2017 г. 9:41
mausi_mick написал:Громовой двор,

Вы видели GD32BluePill (с 120 МГц):

http: // www.eBay.de/itm/272292269104

Громовой двор
Чт, 09 марта 2017 г. 9:59 утра
Горжусь мной 8-) , Я фамилия в Томеко.сеть (внизу страницы "V2D"):

http: // tomeko.net/miniscope_v2d/index.PHP?lang = en

Рекснанет
Чт, 09 марта 2017 г. 10:37 утра
Thunderowl написал:Горжусь мной 8-) , Я фамилия в Томеко.сеть (внизу страницы "V2D"):

http: // tomeko.net/miniscope_v2d/index.PHP?lang = en

mausi_mick
Сб 11 марта 2017 г. 15:34
привет,

к GD32F103 «Blueepill» существует схема:
Gd32f103c8t6_coreboard (new_version).PDF
(52.24 киб) скачано 176 раз

Рекснанет
Пн 20 марта 2017 г. 9:23 утра
Код работал нормально : D
Проблема заключалась в том, что он прыгнул на «нормальный» триггер, и он остановился (это ошибка, потому что он должен работать, потому что у него был действительный триггер, но... :) )
Если вы перейдете в меню Trigger и выберите «Авто», он работает ОК.

Я протестировал 2 MCP6S серии, и он тоже работает в порядке. Все еще нужно проверить, в порядке ли настройки усиления, но они работают.
Заметил, что на максимальном увеличении второй MCP6s немного повышает уровень GND. Может быть, где -то есть проблема с компенсацией... Но у вас нет возможности измерить его :ржу не могу:

Вот код, если кто -то не будет проверять его:
STM32-O-Scope-Byrex-V0.92.rar
(11.81 киб) скачано 158 раз

Громовой двор
Пн 20 марта 2017 г. 9:34
Спасибо, Рекснанет, за интересные новости! Я где -то пропустил схему соединения MCP, какие схемы вы используете? Или предположительно просто выяснить это из файла ino?
О опциях DDS (S) у меня есть модуль с чипом ADS9833 (не 9850/51), я думаю, что он имеет контроль SPI. Интересно, будет ли это работать с предстоящим кодом, хмм. Еще не заказывал ADS9851, может быть, позже...

Рекснанет
Пн 20 марта 2017 г. 10:50 утра
Не, не пропустил, без схемы, но... Это немного объяснено в .INO -файл.

MCP6S92_A1_CS PA9
MCP6S92_A1_DIN PB10
MCP6S92_A1_CLK PB11

MCP6S92_A2_CS PA10
MCP6S92_A2_DIN PB10
MCP6S92_A2_CLK PB11

Другие +3.3V, GND и VIN и Vout...

Тем временем я постараюсь что -то нарисовать.

mausi_mick
Чт 23 марта 2017 г. 3:26 утра
Привет, Рекснанет,

Спасибо за код.

В настоящее время я тестирую аппаратное обеспечение усилителя, смесь от DSO150 Reducer и усилитель с MCP6S91.
У меня есть некоторые проблемы с шумом, поэтому я должен защитить его. Для негативного напряжения питания я беру MAX660, он «лучше, чем ICL7660 (меньшая частота R-на и более высокую частоту коммутатора (около 80 кГц))).

Для AD9850 существует SPI-LIB для Arduino Uno, но я думаю, что у нас есть его для изменения ...

Рекснанет
Чт 23 марта 2017 12:07
Привет mausi_mick,

Почему вы используете рельсы с негативным снабжением?
MCP6S - это только положительный запас, если я помню. Я собираюсь добавить VCC/2 на входной усилитель, чтобы он мог принять отрицательное напряжение и уже находиться в диапазоне напряжений ADC.
Может быть несколько недостатков, но это проще в других аспектах.

mausi_mick
Чт 23 марта 2017 г. 15:16
Рекснанет,

Я знаю это, это должно быть проще, но я попытался скопировать редуктор из DSO150 только с небольшими изменениями:
Отдельный переключатель для AC/DC и C для переменного тока MAX 230-50 В, на первой стадии большие расстояния между компонентами и в сопротивлении Divider 2 для одного (из-за электрической прочности :ржу не могу: ) .

Видео с предусилителем в действии здесь:

https: // www.YouTube.com/watch?v = slfzlb7 ... e = youtu.быть

Рекснанет
Чт 23 марта 2017 г., 17:18
Отличная работа!

Я видел видео до поста :) Это отлично. кроме как к концу :) что случилось?

mausi_mick
Пт 24 марта 2017 г. 11:03
Я приходил в «одинокий»-мод (маленький сенсорный экран с толстыми пальцами :ржу не могу: ) и тогда он идет автоматически, чтобы «удерживать» (красный в левом верхнем углу). И почти все заморожено. Я должен перейти от одиночного на авто и нажав переключатель на энкодере его запуска снова.

Теперь экранирование предусилителя лучше:
Dlo138-spi_display_shielded_preamp.jpg
Dlo138-spi_display_shielded_preamp.JPG (57.71 киб) просмотрено 1424 раза

Рекснанет
Пт 24 марта 2017 г. 11:14
Выглядит очень хорошо!

Уровни шума кажутся в порядке. Вы используете макет или сделали для нее доску?
Необходимость в экранировании может указывать на некоторые проблемы с наземным или слишком большим ослаблением+усиление...

Теперь вы можете сделать некоторые меры, чтобы увидеть, соответствуют ли уровни напряжения реальным сигналом :)

Imo, вы также можете сделать видео немного дольше :) Приятно видеть это в действии

mausi_mick
Пт 24 марта 2017 г. 12:09
Я сделал небольшую макет для него (нож ! :ржу не могу: ).
Dlo138-spi_display_preamp.jpg
Dlo138-spi_display_preamp.JPG (46.18 киб) просмотрено 1418 раз

Даргас
Пт 24 марта 2017 г. 14:25
ПОМОЩЬ :!: :!: :!: :!: Я пытаюсь понять этот осциллограф. Я использую код STM32-O-Scope-Byrex. Не загружает код в STM32.. Я получаю следующее сообщение об ошибке, которое я не могу решить. :?: Возможно, вы можете предоставить ссылки на правильные библиотеки или загрузить в один архив. ;)
Спасибо

https: // drive.Google.com/open?id = 0b6eh8 ... Jkujvub1zr

Рекснанет
Пт 24 марта 2017 г. 14:45
Даргас написал:ПОМОЩЬ :!: :!: :!: :!: Я пытаюсь понять этот осциллограф. Я использую код STM32-O-Scope-Byrex. Не загружает код в STM32.. Я получаю следующее сообщение об ошибке, которое я не могу решить. :?: Возможно, вы можете предоставить ссылки на правильные библиотеки или загрузить в один архив. ;)
Спасибо

https: // drive.Google.com/open?id = 0b6eh8 ... Jkujvub1zr

Рекснанет
Пт 24 марта 2017 г. 14:53
mausi_mick написал:Я сделал небольшую макет для него (нож ! :ржу не могу: ).
Dlo138-spi_display_preamp.JPG
Я снял новое видео (с лучшим синусом над разделителем (10K/3.3K) и изменение усиления MCP6S91 между 1 ... 8).
https: // www.YouTube.com/watch?v = grtzcdl ... load_owner

mausi_mick
Пт 24 марта 2017 г. 16:15
Да, справа находится стабилизация с помощью LM7806 (и 2 диода, чтобы уменьшить до 5 В) и
MAX660.
Есть 3 соединения с предусилителям для -5V, 0V и +5V.

Слева находится аналогичный DSO150 с TLC072, а справа-MCP6S91
и усилитель / уровень ...+5 В до 0 В...+3.3В

Громовой двор
Солнце 26 марта 2017 г. 14:56
Обновление для этой простой области BT/USB "Bluepill" (запись S-14 в моем списке DIY Scopes). Почти законченная версия от меня:
http: // bildites.lv/a/xfjbphbf#33yk2zed
Форум проекта здесь:
http: // форум.EasyElectronics.ru/viewtop ... 4&начало = 75

mausi_mick
Пн 27 марта 2017 г., 3:17
Я теперь активировал канал 2 со вторым MCP6S91 ...
На экране (внизу справа) теперь является вторым сенсорным полем для активации усилителя.
Сигналы от внешних генераторов.

Видео на YouTube:

https: // youtu.be/8ukkunrkve0

mausi_mick
Пн 27 марта 2017 г., 5:34 утра
Громовой двор,

Это что -то вроде этого:


https: // www.краудсуплат.com/aeroscope-l ... -112434141

Громовой двор
Пн 27 марта 2017 г., 6:21
MAUSI_MICK, проверьте мои картинки, это просто Bluepill STM32 с MCP6S21 в коробке ;-)

mausi_mick
Пн 27 марта 2017 г. 8:35 утра
Громовой двор,

Что вы сделаете с HC05/HC06 ?

Громовой двор
Пн 27 марта 2017 г. 9:59
mausi_mick написал: Что вы сделаете с HC05/HC06 ?

Громовой двор
Пн 27 марта 2017 г., 11:06
mausi_mick написал: Что вы сделаете с HC05/HC06 ?

mausi_mick
Пн 27 марта 2017 г., 17:55
Thunderbowl, очень красивые картинки !

Передаете ли вы DACPE-DATA через Bluetooth на Android, чтобы отобразить его там ?
Это достаточно быстро ?

Что -то другое, вы попросили AD9850/51, связанный со SPI. Я проверил это, но не с успехом. Было возможно генерировать частоту, и я вижу ее на экране, но если я попытаюсь изменить частоту, их хаос . Иногда появляется очень высокая частота, и если я попытаюсь установить 100 Гц, он дает очень низкую частоту обратно. Я проверил некоторое различное программное обеспечение (из Arduino), но я думаю, что трудно перенести частотный заказ.

Возможно, другие имеют больший успех, но я остановил это.
Теперь я пытаюсь интегрировать два усилителя в область:
Dlo138-spi_display_preamp_2.jpg
Dlo138-spi_display_preamp_2.JPG (57.99 киб) просмотрено 1835 раз

mausi_mick
Чт 30 марта 2017 г., 17:42
Громовой двор,

У меня были проблемы со SPI для ADS9851, но теперь мне нужно всего три булавки, я поместил PIN AD_RST на землю.
Теперь я установил два предусилителя:
Dlo138-spi-display_front_plate.jpg
Dlo138-spi-display_front_plate.JPG (33.96 киб) просмотрено 1782 раз

mausi_mick
Солнце 02 апреля 2017 3:20 вечера
Теперь я построил синус до квадратной волны с 50% -ным рабочим циклом.
Первый реализован с помощью моментного триггера и перерыва в перегородке (HC7474). Следовательно, входной частота умножается на два на
Устранить делитель.
Dlo138-spi-display_sinussquarewave.jpg
Dlo138-spi-display_sinussquarewave.JPG (42.74 киб) просмотрено 1677 раз

mausi_mick
Ср. 05 апреля 2017 г., 3:30
Громовой двор,

Теперь SPI TFT DLO-138 почти готов (мне нужно интегрировать trigger_level для правильного запуска).

Но я имею успех с DDS AD9850/1 с SPI.

Теперь мне нужна только одна дополнительная строка для FQ_UD (соответствует CS), данные -> SPI-MOSI, AD_CLK -> SPI-CLK, AD_RST-> Земля.
Вот несколько фотографий из теста:
DLO138SSPI_DISPLAY_TEST_AD9850_51_SPI.JPG
DLO138SSPI_DISPLAY_TEST_AD9850_51_SPI.JPG (50.7 киб) просмотр 1981 раз

AG123
Ср. 05, 2017, 21:51
Я думаю, что в конце концов, как «Добавить», мы могли бы интегрировать аудио I2S
http: // www.STM32duino.com/viewtopic.PHP?t = 519
Воспроизведите файл MP3 с SD -карты, добавьте FFT для отображения частоты танцев)
:ржу не могу:

mausi_mick
Чт, 06 апреля 2017 г. 13:17
Извините, я не Pt8211 ?

Теперь я изменил прикосновение для DDS AD9851, чтобы колебаться частоту между начальной частотой и остановкой.
Вы можете ввести частотную ширину в Гц и время /шаг в MS.

Видео на YouTube:

https: // youtu.BE/5VU442V46LS

Рекснанет
Чт, 06 апреля 2017 г. 13:21
Хорошая работа :)

Я не мог работать над этим...

Andrew25
Пн 10 апреля 2017 г., 7:24
Извините за вопрос новичка. Я делаю осциллограф из этой темы с двумя кодерами.
До этого у меня был только аналоговый осциллограф в моей жизни. У меня есть несколько вопросов. Что такое временная база? Как рассчитать частоту сигнала? Что такое xzoom?

Громовой двор
Пн 10 апреля 2017 г., 7:44
Эндрю25 написал:Извините за вопрос новичка. ... Что такое временная база?

Andrew25
Пн 10 апреля 2017 г. 12:41
IMG_20170410_160223.jpg
IMG_20170410_160223.JPG (145.03 киб) просмотрено 1838 раз

Efftek
Пн 17 апреля 2017 г. 10:18 утра
Я сделал прототипную доску для своего проекта, но это также было бы достаточно для O-Scope
WP_20170417_10_46_28_PRO.JPG
WP_20170417_10_46_28_PRO.JPG (184.87 киб) просмотрено 1756 раз

Громовой двор
Пн 17 апреля 2017 г. 11:00 утра
Ух ты...

Efftek
Вт 18 апреля 2017 г. 9:49
Обновлять ....

V2 poard воля иметь зарядную зарядку для батарей Lipo от USB. Я также подумал, чтобы поместить ссылку для подключения CS к EEPROM или SD -карте на TFT Shield - все использовались булавки, поэтому у меня не было CS для обоих.

Как только я это сделаю, и я знаю, что не сделал бубу, я поставлю файлы Eagle на GitHub.

Я также думаю о продаже нескольких на eBay, готовом собранном с EEPROM, и загрузчика сгорает в синей таблетке. Стоимость составит около 25 фунтов стерлингов, может быть, меньше в зависимости от того, смогу ли я получить детали дешевле.

Стив

Ахулл
Чт 20 апреля 2017 г. 13:38
Эффтек написал:@Andy Hull, я хотел бы отправить вам одну из моих досок, чтобы вы могли поиграть с ним и посмотреть, что вы можете придумать, используя TFT Shield, а не Spi TFT. Если вам будет интересно, пожалуйста, пожалуйста, напишите мне. Я подхожу в компоненты, вам просто нужен экран.

Ахулл
Чт 20 апреля 2017 г. 14:25
BW есть схема? Несмотря на то, что это выглядит довольно самостоятельно, это может избежать того, чтобы я делал какой -либо дым, выпуская предположения.

Efftek
Чт 20 апреля 2017 г. 15:31
Ахулл написал:BW есть схема? Несмотря на то, что это выглядит довольно самостоятельно, это может избежать того, чтобы я делал какой -либо дым, выпуская предположения.

Ахулл
Чт 20 апреля 2017 г. 22:44
.rorrim eht ni ti ta kool ot vah ot gnitcepxe t'nsaw i, ddo tib a s'taht llew

Изображение

.. Также размещение чертежа на той же стороне доски, что и дисплей... ты прав.. Это был не хороший ход.

Кроме этих двух выпусков.. это работает нормально. : D

Рик Кимбалл
Пт 21 апреля 2017 г. 2:03
Я думаю, ты не был назван Леонардо в прошлой жизни :)

Рекснанет
Пт 21 апреля 2017 г. 8:28 утра
Thunderowl написал:Привет еще раз здесь.
Сегодня я сделал какую -то причудливую вещь, которую я планировал в течение некоторого времени. Заменил чип на одной из моих «Bluepill» с микроконтроллером STM32F303.
Конечно, я не первый, что делает это, я знаю. У многих есть мысли, которые были бы неплохо, если бы китайские производители сделали бы дешевые «таблетки F303», но их нет (AFAIK). Итак, мы можем сделать один, разгоны такие же, как F103. Здесь мои фотографии:
http: // bildites.lv/a/pjuhvaf5#6jv5nwen
На одном из фотографий показывает, что эта доска работает в Tomeko.Чистая прошивка "Miniscope V2D".
Я подумал, может быть, это то, что нужно учитывать здесь в наших вариациях "O-Scope". Если кто-то пишет код для F303 (лучшие АЦП и т. Д.), При таком преобразовании чертежа у нас есть «Включение, совместимое с PIN-контактом» оборудование.
Технически я сделал «взорвать» старый фип с пистолетом горячего воздуха и припаянный STM32F303CBT6 на месте.
Мысли, кто -нибудь? :)

Efftek
Солнце 23 апреля 2017 г. 15:08
PIN -конфигурация для платы GP (с правильными метками). Если бы моя память была больше 32 тыс., ID помнила, чтобы сделать это в пятницу!

Стив
GP01 PINS.JPG
GP01 PINS.JPG (164.99 киб) просмотрено 2125 раз

Рик Кимбалл
Солнце 23 апреля 2017 г., 19:38
Почему люди здесь постоянно загрязняют темы не связанными вопросами? Становится смешно сейчас.

... Оглядывается вокруг панели управления модератором и кнопку Delete Post ...

Efftek
Вт 25 апреля 2017 г., 21:20
Рик Кимбалл написал:Почему люди здесь постоянно загрязняют темы не связанными вопросами? Становится смешно сейчас.

Martinayotte
Вт 25 апреля 2017 г., 21:36
Эффтек написал:Кого вы имеете в виду Рика?

Rogerclark
Ср. 3 мая 2017 г., 6:07
Рик Кимбалл написал:Почему люди здесь постоянно загрязняют темы не связанными вопросами? Становится смешно сейчас.

... Оглядывается вокруг панели управления модератором и кнопку Delete Post ...

Ахулл
Чт 15 июня 2017 г. 22:50
Привет... Мы знамениты... снова. : D

http: // chackaday.com/2017/06/15/chackaday ... он массы/
https: // chackaday.IO/Project/20821-Multiscope

Изображение

Rogerclark
Чт 15 июня 2017 г. 11:03
КСТАТИ. Я опубликовал отдельную ветку об этой статье Hackaday

ViewTopic.PHP?f = 3&t = 2203

Рекснанет
Пт 16 июня 2017 г. 9:43 утра
Ахулл написал:Привет... Мы знамениты... снова. : D

http: // chackaday.com/2017/06/15/chackaday ... он массы/
https: // chackaday.IO/Project/20821-Multiscope

Изображение

Ахулл
Пт 16 июня 2017 г. 10:02
Рекснанет написал: Поздравляю! : D

РЕДАКТИРОВАТЬ: (Если кредиты присутствуют в сообщении Hackaday...)

Rogerclark
Ср 30 августа 2017 г. 12:59
Seeed Studio рекламирует это как новый продукт

Изображение

https: // www.Seeedstudio.com/dso-shell-d ... -2929.HTML

Еще один DSO на основе STM32F103 (вероятно, клон)

Рекснанет
Ср 30 августа 2017 г. 8:16
$ 28 против 18 долларов в Aliexpress :ржу не могу: может быть более быстрой возможностью доставки : D

Ахулл
Ср 30 августа 2017 г. 9:30
YouTuber 12 VoltVIDS сделал и обзор этого





У него есть другие хорошие видео по ремонту и тестирование.

Рекснанет
Ср 30 августа 2017 г. 12:45
Громовой двор написал: Ср. 08, 2017 12:06

Rogerclark
Ср 30 августа 2017 г., 21:12
[Рекснанет - Ср 30 августа 2017 г. 12:45] -
Есть ли поддержка F303'duino?
Используйте STMS Core или STM32Generic

Рекснанет
Четверг 31 августа 2017 г. 13:44
[Rogerclark - Ср 30 августа 2017 г., 21:12] -
[Рекснанет - Ср 30 августа 2017 г. 12:45] -
Есть ли поддержка F303'duino?
Используйте STMS Core или STM32Generic
Спасибо!
Я попробую, когда припаю F303 на доске Bluepill.

Громовой двор
Четверг 31 августа 2017 г. 14:24
[Рекснанет - Четверг 31 августа 2017 г. 13:44] -
[Rogerclark - Ср 30 августа 2017 г., 21:12] -
[Рекснанет - Ср 30 августа 2017 г. 12:45] -
Есть ли поддержка F303'duino?
Используйте STMS Core или STM32Generic
Спасибо!
Я попробую, когда припаю F303 на доске Bluepill.
Мои наилучшие пожелания таких экспериментов. У меня есть два чертежи «модифицированные» с F303, один с отделенными цифровыми и аналоговыми питаниями, один остался, как это было, подключено. Оба бесплатно прямо сейчас для тестов чего -то интересного.

Рекснанет
Чт 31 августа 2017 г. 16:41
Спасибо, Громовой, БОЛЬШЕ!

У вас есть видео с версией осциллографа F303 с этого форума ("Мурцик")?

Громовой двор
Четверг 31 августа 2017 г., 8:21 вечера
[Рекснанет - Четверг 31 августа 2017 г., 16:41] - Спасибо, Громовой, БОЛЬШЕ!

У вас есть видео с версией осциллографа F303 с этого форума ("Мурцик")?
У меня сейчас нет видео, но я могу сделать видео или некоторые скриншоты с определенными частотами, отображаемыми в следующие дни.
Вот экраны моей странной конструкции, но нет никаких фотографий, которые бы показывали бы производительность:
http: // bildites.lv/a/sfkqpxdx#tjbrytfu

Рекснанет
Пт, сентябрь 01, 2017 8:59 утра
[Громовой двор - Челёт 31 августа 2017 г. 20:21] - У меня сейчас нет видео, но я могу сделать видео или некоторые скриншоты с определенными частотами, отображаемыми в следующие дни.
Вот экраны моей странной конструкции, но нет никаких фотографий, которые бы показывали бы производительность:
http: // bildites.lv/a/sfkqpxdx#tjbrytfu
Видео с его работой было бы здорово! Лучше увидеть скорость обновления и общий графический вид и отзывчивость пользовательского интерфейса.

На фотографиях это выглядит хорошо. Вы пошли с адаптером LQFP вместо платы Bluepill, почему это было? Не тратить доску?
Корпус TFT выглядит великолепно. Он включает в себя бустер 5 В и аккумулятор от других фотографий, справа?

Что это за 8 -контактный чип? Входная опция? Или это этот переключатель переменного/постоянного тока?

Громовой двор
Пт, сентябрь 01, 2017, 9:08
Чип - это переключатель переменного тока/постоянного тока. Что касается Opamps, этот простой вариант использует opamp, который встроен в F303.
Адаптерная доска - я думаю, что у меня было это предыдущее из любых китайских досок, которые я приобрел позже.

Громовой двор
Пт, сентябрь 01, 2017 9:23
Сделали несколько быстрых снимков на 3 частотах, "Murzik-1" (от пользователя по имени Fusion), F303:

Громовой двор
Пт, сентябрь 01, 2017 9:23
продолжение...

Громовой двор
Пт, сентябрь 01, 2017, 9:29
П.С.: О чипе STM32 и адаптере - используется чип с низким содержанием выводов, 32 -контактный. «Нормальные» чипсы - 48 штифтов. Но этого было достаточно для такой версии. Сейчас есть моды, с селекторами усиления ввода и т. Д.

Рекснанет
Пт, сентябрь 01, 2017 10:18
Спасибо :)
Может, мы должны перенести этот разговор с другим постом... :)

Арпрос
Пн, 02 октября 2017 г. 9:10 вечера
Кстати, возвращаясь к исходной области STM32F1, стоит отметить, что если кто -то отключает прерывания во время отбора проб, можно получить полную максимальную скорость выборки (1.7 мс с) без DMA, просто считывая чередующиеся данные в плотном цикле в непрерывном режиме: void fetch() { int channel = PIN_MAP[analogInPin].adc_channel; adc_set_sample_rate(ADC1, ADC_SMPR_1_5); adc_set_sample_rate(ADC2, ADC_SMPR_1_5); adc_set_reg_seqlen(ADC1, 1); adc_set_reg_seqlen(ADC2, 1); ADC1->regs->SQR3 = channel; ADC2->regs->SQR3 = channel; ADC1->regs->CR1 |= 0x70000; // ADC_CR1_FASTINT; ADC1->regs->CR2 |= ADC_CR2_CONT | ADC_CR2_SWSTART; ADC2->regs->CR2 |= ADC_CR2_CONT | ADC_CR2_SWSTART; ADC2->regs->CR1 |= 0x70000; // ADC_CR1_FASTINT; nvic_globalirq_disable(); for (int j = 0; j < maxSamples ; j+=2 ) { while (!(ADC1->regs->SR & ADC_SR_EOC)) ; dataPoints[j] = ADC1->regs->DR & ADC_DR_DATA; while (!(ADC2->regs->SR & ADC_SR_EOC)) ; dataPoints[j+1] = ADC2->regs->DR & ADC_DR_DATA; } nvic_globalirq_enable(); }

Александрос
Вт 3 октября 2017 г. 6:24 утра
Я смотрю на код O-Scope, и я пытаюсь понять, как я могу добавить второй канал для получения образцов.
нравиться
void setADCs () { int pinMapADCinA = PIN_MAP[analogInPinA].adc_channel; int pinMapADCinB = PIN_MAP[analogInPinB].adc_channel; adc_set_sample_rate(ADC1, ADC_SMPR_1_5); //7_5 13_5 adc_set_sample_rate(ADC2, ADC_SMPR_1_5); // adc_reg_map *regs = dev->regs; adc_set_reg_seqlen(ADC1, 1); ADC1->regs->SQR3 = pinMapADCinA; ADC1->regs->CR2 |= ADC_CR2_CONT; // | ADC_CR2_DMA; // Set continuous mode and DMA ADC1->regs->CR1 |= ADC_CR1_FASTINT; // Interleaved mode ADC1->regs->CR2 |= ADC_CR2_SWSTART; adc_set_reg_seqlen(ADC2, 1); ADC2->regs->SQR3 = pinMapADCinB; ADC2->regs->CR2 |= ADC_CR2_CONT; // ADC 2 continuos ADC1->regs->CR1 |= ADC_CR1_FASTINT; // Interleaved mode ADC1->regs->CR2 |= ADC_CR2_SWSTART; }

Арпрос
Ср. 04 октября 2017 г. 20:32
Вы не можете сделать два канала, используя переоцененный режим. Если вы хотите два канала, вы будете ограничены с скоростью до половины максимума.

Рекснанет
Сб, 07 октября 2017 г. 18:24
Я думаю, что это может быть как «2 отдельного канала, чередование». Вы можете получить образцы ADC2 на вторых 16 битах каждого 32 -битного блока.
Но канал 2 не будет отображаться в то же время, что и канал 1. Он будет смещен на 7 часов АЦП.
Если настройка ADC2 на PINB работает, то, что я уже говорил, должно быть действительным.

РЕДАКТИРОВАТЬ: Читать http: // www.ул.com/content/ccc/resource/ ... 258017.PDF

Рекснанет
Солнце 17 декабря 2017 г. 22:15
[Громовой двор - Чт, 9 марта 2017 г. 9:59 утра] - Горжусь мной 8-) , Я фамилия в Томеко.сеть (внизу страницы "V2D"):

http: // tomeko.net/miniscope_v2d/index.PHP?lang = en
Сделал мою «первую» попытку воспроизвести ваши подвиги!
Это простой случай, когда вы остановляете F103 и пайку F303? Ничего больше?

Как вы проверили, что поменяли?

Я спрашиваю, потому что я успешно обменял их, а затем открыл «мигающий» пример на Keil Uvision 5, и после некоторой проб и ошибок заставили программиста обнаружить плату, переключив один из прыгунов на «1» (один рядом с кнопкой сброса) и через несколько секунд без светодиодов мигает, «волшебный дым» начинает появляться! : o Я увидел, что светодиод мигает один раз, но после выключения доски он больше не работал, и волшебный дым продолжает появляться, если я его включу (используя программист ST-Link).

Squonk42
Солнце 30 сентября 2018 г. 9:43 утра
Извините за мой глупый вопрос: я не вижу ни одного фильтра с анти-алиатами на входе АЦП, эта функция выполняется резистором 1 мох?

Ахулл
Солнце 30 сентября 2018 г., 19:38
[Squonk42 - Солнце 30 сентября 2018 г. 9:43] - Извините за мой глупый вопрос: я не вижу ни одного фильтра с анти-алиатами на входе АЦП, эта функция выполняется резистором 1 мох?
В значительной степени да. Целостность сигнала - это не то, что мы фактически проанализировали в каких -либо деталях. Было бы возможно добавить некоторую защиту и фильтрацию входной защиты и фильтрацию, однако, учитывая, что существуют другие проблемы с дизайном (например, общий ADC и основание для сигнала), абсолютная немерность того, что появляется на дисплее, в некоторой степени неизвестно.

Достаточно хорошо для государственной работы, хотя ;)

Mrburnette
Солнце 30 сентября 2018 г., 19:40
[Ахулл - Солнце 30 сентября 2018 г., 19:38] - ...
Достаточно хорошо для государственной работы, хотя ;)
+1
.... от предыдущего 2x "Gov. работник."

Луча

Squonk42
Солнце 30 сентября 2018 г., 21:43
Ну, это был глупый вопрос : D

Но все сигналы в полосе частот между частотой отбора проб и половиной ее упадут при полной амплитуде в низкочастотную полосу. SPI был бы хорошим кандидатом.

Я просто думал о лучшем (самого ленивого) способа квалификации нашего аналогового дизайна платы F4 Bluepill (Ferrite Bead Vs. аналоговый LDO, 2 против. 4-слойная печатная плата...) и сравнить его с другими досками на основе STM32: «Оригинальный» Bluepill, Baite Mani, ST Nucleo F103.

Для этого мне нужно было бы захватить с максимально возможной скоростью отбора проб и выполнить БПК (возможно, не на борту) для измерения SNR, шумового пола, PSRR-DC, PSRR-AC и PMSR. Начиная с Pig-O-Scope был одним из моих вариантов, но мне понадобится фильтр с анти-альцами, чтобы получить какой-либо значимый результат.

Стивестронг
Пн, 01 октября 2018 г. 8:23 утра
Я могу сказать вам по своему опыту на синих таблетках и Maple Mini (клон): SPI очень сильно влияет на образцы АЦП.
Быть проверенным на черных и мини -досках F4.

Маркб
Пн, 01 октября 2018 г. 13:55
[Squonk42 - Солнце 30 сентября 2018 г. 9:43 вечера] - Для этого мне нужно было бы захватить с максимально возможной скоростью отбора проб и выполнить БПК (возможно, не на борту) для измерения SNR, шумового пола, PSRR-DC, PSRR-AC и PMSR. Начиная с Pig-O-Scope был одним из моих вариантов, но мне понадобится фильтр с анти-альцами, чтобы получить какой-либо значимый результат.
Не будет измерен шум шума, PSRR-DC и PSRR-AC с заземленным входом? Для этих случаев нет ничего от входного сигнала к псевдониванию, и я ожидаю, что внутренне сгенерированные ложные помехи, E.глин. SPI, чтобы в основном вводить после любого фильтра с анти-алиями.

Для SNR вам не понадобится фильтр с анти-альцами, если источник тональ свободен от гармоник (это может быть проблематично), а частота выбирается таким. Обычная проблема здесь - бесплатный динамический диапазон.

Мне не ясно, что может быть PMSR.

Mrburnette
Пн, 01 октября 2018 г., 14:04
«Дешевые клоны» имеют двухстороннюю плату для ПК, нет отдельных аналоговых и отдельных цифровых самолетов. Оригинальный дизайн клена был 4-х слойной доской. На пол шума для аналоговых сигналов в настоящее время влияет внутренняя динамика цифровой логики, а также емкостная и индуктивная связь на внешней плате ПК.

Луча

Squonk42
Пн, 01 октября 2018 г. 14:18
[Маркб - Пн, 01 октября 2018 г. 13:55] -
[Squonk42 - Солнце 30 сентября 2018 г. 9:43 вечера] - Для этого мне нужно было бы захватить с максимально возможной скоростью отбора проб и выполнить БПК (возможно, не на борту) для измерения SNR, шумового пола, PSRR-DC, PSRR-AC и PMSR. Начиная с Pig-O-Scope был одним из моих вариантов, но мне понадобится фильтр с анти-альцами, чтобы получить какой-либо значимый результат.
Не будет измерен шум шума, PSRR-DC и PSRR-AC с заземленным входом? Для этих случаев нет ничего от входного сигнала к псевдониванию, и я ожидаю, что внутренне сгенерированные ложные помехи, E.глин. SPI, чтобы в основном вводить после любого фильтра с анти-алиями.

Для SNR вам не понадобится фильтр с анти-альцами, если источник тональ свободен от гармоник (это может быть проблематично), а частота выбирается таким. Обычная проблема здесь - бесплатный динамический диапазон.

Мне не ясно, что может быть PMSR.
Да, вы правы на PSRR-DC и PSRR-AC, но для тестирования PSMR (коэффициент модуляции питания, извините за опечатку), вам необходимо привести к входу АЦП и одновременно добавить возмущение к источнику питания, см http: // www.аналоговый.com/en/technical-arti ... D-ADC.HTML.

Для SNR мой план состоял в том, чтобы использовать чистую синусоидальную волну на половине частоты отбора проб) в качестве худшего случая и проверить оба с/без SPI.

Squonk42
Пн, 01 октября 2018 г., 14:34
[Mrburnette - Пн, 01 октября 2018 г., 14:04] - «Дешевые клоны» имеют двухстороннюю плату для ПК, нет отдельных аналоговых и отдельных цифровых самолетов. Оригинальный дизайн клена был 4-х слойной доской. На пол шума для аналоговых сигналов в настоящее время влияет внутренняя динамика цифровой логики, а также емкостная и индуктивная связь на внешней плате ПК.

Луча
К сожалению, у меня нет оригинальной кленовой доски, только клон байте, который действительно отличается. Я принимаю пожертвования для науки :)

Тем не менее, проблема не обязательно 2-слойной против. 4-х слоя или отдельные самолеты, но путь возврата заземления и общий источник питания для аналогового/цифрового в сочетании с плохой производительности PSRR ADC STM32 (я видел цифры до 20 дБ, но не могу получить в свои руки прямо сейчас).

Конечно, мы могли бы пойти на 4-слойный с отдельным аналоговым LDO, чтобы быть в безопасности, но 1) это добавит 1 доллар США на счет <Доска $ 10, 2) Я видел много других MCU, работающих нормально только с 2-слойным и без отдельного LDO, и 3) даже ST рекомендует только шин феррита и реализовал его как таковой на своей плате F103 только с 2-слойной платой.

Вот почему мы хотим проверить, что на самом деле имеет значение здесь.

Маркб
Пн, 01 октября 2018 г. 15:05
[Squonk42 - Пн, 01 октября 2018 г., 14:18] - Для SNR мой план состоял в том, чтобы использовать чистую синусоидальную волну на половине частоты отбора проб) в качестве худшего случая и проверить оба с/без SPI.
Правильно, я предположил, что использование чего -то менее половины частоты отбора проб, поэтому гармоники искажения не приземляются друг на друга после БПФ.

Например, с 0.45*fs, вторая гармоника появится в 0.9*fs (псевдоним до 0.1*fs), третья гармоника в 1.35*fs (псевдоним до 0.35*fs), и так далее.

Squonk42
Пн, 01 октября 2018 г., 15:10
[Маркб - Пн, 01 октября 2018 г., 15:05] -
[Squonk42 - Пн, 01 октября 2018 г., 14:18] - Для SNR мой план состоял в том, чтобы использовать чистую синусоидальную волну на половине частоты отбора проб) в качестве худшего случая и проверить оба с/без SPI.
Правильно, я предположил, что использование чего -то менее половины частоты отбора проб, поэтому гармоники искажения не приземляются друг на друга после БПФ.

Например, с 0.45*fs, вторая гармоника появится в 0.9*fs (псевдоним до 0.1*fs), третья гармоника в 1.35*fs (псевдоним до 0.35*fs), и так далее.
Да, очень хорошая идея, спасибо!