Здравствуйте, гость ( Вход | Регистрация )
2.12.2011, 14:01
Сообщение
#1
|
|
![]() Киса |
есть дивайс, который с микрофона пишет сигнал и отдает в усб(ну грубо говоря 24 бита 130 кГц два канала, лучше 4), есть виндуз це машинка, которая должна засосать в себя этот сигнал по усб, но часть потока куда-то иногда деваицца, а если в простовиндуз, то не деваицца. Надо быстро понять куда-чего. Кто-нить понимает в вапросе напредмет посмотреть-поговорить по делу?
все разложено на столе и спаяно проводами, все байты разложены на экране -------------------- это мнение является частным и никоим образом не служит руководством к действию
|
|
|
|
![]() |
2.12.2011, 14:10
Сообщение
#2
|
|
![]() Продвинутый |
Чисто интуитивно, в цевиндовс мелкий буффер. И надо самому рисовать программку по приему сигнала. Начиная прямо с аппаратной части на уровне обработки события при появлении данных. А быстродействия может и не хватить
-------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 14:40
Сообщение
#3
|
|
![]() Живет здесь. Катается там. |
Винуз це, похоже, не может этот поток схавать. 130кГц*24 бита*2 канала = 780 килобайт/сек. Многовато. Частоту дискретизации можно снаружи уменьшить, для проверки? Почему аппаратано нельзя поджать в девайсе? Каким образом в це забирается поток?
|
|
|
|
2.12.2011, 14:43
Сообщение
#4
|
|
![]() Киса |
можно и уменьшить... у це там стоит двуядреный гигагерцовый или полуторагигагерцовый процессор. а вот поджать в девайсе никак - там ничо нет, чем жать...
-------------------- это мнение является частным и никоим образом не служит руководством к действию
|
|
|
|
2.12.2011, 14:50
Сообщение
#5
|
|
![]() Живет здесь |
В давние времена делал я USB 1 driver для windows-95, и поддержку USB с довольно низкого уровня вручную в девайсе. Насколько я помню, порядка 700 KB/s получалось тогда для bulk transfer с разумного размера буферами.
Речь о USB1? (там всего 11Mbit/s) Bulk или isochronous transfer? Драйвер самописный? А в девайсе как реализовано? Или это типа виртуальный компорт через конвертер типа от FTDI? (в последнем случае проблем могут быть много в разных местах, начиная от буферизации в девайсе, в сопряжении с кривым чипом). USB-analyzer есть? Но умного я все равно вряд ли что скажу |
|
|
|
2.12.2011, 14:59
Сообщение
#6
|
|
![]() Живет здесь |
Ну есс-но из девайса вместо аудиоданных гораздо полезнее счетчик передавать типа 1,2,3..., это позволит понять, что/как пропадает, и навести на доп. мысли.
|
|
|
|
2.12.2011, 15:00
Сообщение
#7
|
|
![]() Киса |
народ у нас грит, что 2 мегабайта передать нивапрос, то есть это пользуется в полный рост. щаз работают на полтора мегабайта в секунду...
а так да FTDI контроллер, к нему библиотека под це. Причем все работает почти всегда Что пропадает понятно - кадры пропадают. Случайным образом... Ну представь себе что передаешь синус, а на выходе из него куски пропали -------------------- это мнение является частным и никоим образом не служит руководством к действию
|
|
|
|
2.12.2011, 15:04
Сообщение
#8
|
|
![]() Живет здесь |
Если два мегабайта -- то это USB2 или круче. Правда чтоли?
Про це ничего не скажу; но в windows обычном можно задавать размер буферов для компорта. Размер пропадающих кусков может навести на мысли, пропадает буфер в устройстве, в USB/драйвере на нижнем уровне, или на верхнем уровне в программени. |
|
|
|
2.12.2011, 15:07
Сообщение
#9
|
|
![]() Продвинутый |
Я п сделал. что. Я б написал две программулины unix-style. Одна тупо занимается приемом данных из порта и передает их rуда угодно. Хоть в pid-file, хоть по сети на localhost, хоть куда. Это запускается в виде службы с хорошим таким приоритетом. Вторая софтина смотрит/слушает некий порт на локалхосте или смотрит этот pid-file (ксати, а в винде есть такая фигня?) и делает их этого выводы. А еще лучше, чтобы вторая софтина смотрела по сети на этот промежуточный цевиндовс. Но один фик может не хватить скорострельности - сеть тоже кушает процессорное время, причем в зависимости от глючности железа и драйверов весьма сильно может это делать
-------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 15:07
Сообщение
#10
|
|
![]() Живет здесь |
Еще всякие flow control надо повключать, не знаю или не помню, насколько они криво сделаны в этих драйверах.
|
|
|
|
2.12.2011, 15:08
Сообщение
#11
|
|
![]() Продвинутый |
Случайным образом... Ну представь себе что передаешь синус, а на выходе из него куски пропали Преобразование Фурье натрави - пропажи кадра никто не заметит -------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 15:09
Сообщение
#12
|
|
![]() Продвинутый |
Еще всякие flow control надо повключать, не знаю или не помню, насколько они криво сделаны в этих драйверах. Этого никто не знает. -------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 15:11
Сообщение
#13
|
|
![]() Живет здесь |
Не, не, это должен знать тот, кто этим занимается. Ну по крайней мере работает оно вообще или нет выясняется быстро, я думаю что работает (и соотв-но надо аккуратно проследить, что по всей цепочке используется нормально).
|
|
|
|
2.12.2011, 15:12
Сообщение
#14
|
|
![]() Киса |
Преобразование Фурье натрави - пропажи кадра никто не заметит гы... именно для фурье это все и делается, но когда у тя 120дБ динамического диапазитива в целях и задачах, то пропажа кадра тебе такой уровень нелинейных помех принесет в фурье, что пол диапазитива можно смело вынести на помойку... Именно так и отловили - прет нелинейщина, начали разбираться откуда - оказалось пропуски в сигнале. -------------------- это мнение является частным и никоим образом не служит руководством к действию
|
|
|
|
2.12.2011, 15:15
Сообщение
#15
|
|
![]() Продвинутый |
гы... именно для фурье это все и делается, но когда у тя 120дБ динамического диапазитива в целях и задачах, то пропажа кадра тебе такой уровень нелинейных помех принесет в фурье, что пол диапазитива можно смело вынести на помойку... Именно так и отловили - прет нелинейщина, начали разбираться откуда - оказалось пропуски в сигнале. Если пропусков немного, то можно забить. Скажем, три процента точно можно забить. Всплески и пропажи сигнала просто устанавливаются в ближайший слева или справа или в среднее между ними, или в среднее по трем, пяти, семи точкам. Могу еще пачку вариантов сглаживания данных предложить перед тем как отдавать это всё Фурье Я пропуски сигнала проходил, весьма похожие. Так и решал вопросы. На результат влияли только в смысле улучшения точности измерений -------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 15:16
Сообщение
#16
|
|
![]() Живет здесь |
Потому что все подобное надо начинать не с нелинейщины, а с отладки транспорта, и передачи счетчика для проверки
|
|
|
|
2.12.2011, 15:22
Сообщение
#17
|
|
![]() Продвинутый |
Потому что все подобное надо начинать не с нелинейщины, а с отладки транспорта, и передачи счетчика для проверки Начинать это надо с портирования всего с цевиндовс на QNX. И не будет ни пропаж, ни нелинойстей. И будет работа в реальном времени. Цевиндовс - это для страдающих начальной стадией геморроя -------------------- Старые мосты могут еще пригодиться... Сжигайте лучше старые грабли.
|
|
|
|
2.12.2011, 15:26
Сообщение
#18
|
|
![]() Киса |
Если два мегабайта -- то это USB2 или круче. Правда чтоли? FT2232HL припаяли. и в нормальном виндусе это все работает с ба-а-альшим запасом.... вопрос чтобы заработало на маленьком виндусе -------------------- это мнение является частным и никоим образом не служит руководством к действию
|
|
|
|
2.12.2011, 15:26
Сообщение
#19
|
|
![]() Живет здесь |
Начинать это надо с портирования всего с цевиндовс на QNX. И не будет ни пропаж, ни нелинойстей. И будет работа в реальном времени. Цевиндовс - это для страдающих начальной стадией геморроя Это все утопии и мечты. А отлаживать сначала транспортный уровень, а потом заниматься обработкой того, что по нему ходит -- единственная разумная методология безотносительно платформ и инструментов. |
|
|
|
2.12.2011, 15:32
Сообщение
#20
|
|
![]() Живет здесь |
FT2232HL припаяли. Крута. До чего дошел прогресс И со стороны устройства все корректно с flow control? Я к тому, что вполне верю, что скажем имеет место такое: - ce подзатыкается по какой-то своей причине (замучали его чем-то, переключается, хз что еще, не обязан - ce соответственно не принимает данные по USB - ftdi соотв-но не передает данные, буферизует в своем 4KB буфере. - буфер заполняется, ftdi выставляет CTS (или как его там называют), что типа "девайс, не надо в меня лить данные больше, я полон". - а real-time данные с ADC прут, жизнь не остановишь. - как дальше девайс себя ведет, он это диагностирует хоть входом в вечный цикл с ярким миганием светодиода с кодом ошибки? |
|
|
|
![]() ![]() |
|
Текстовая версия | Сейчас: 28.8.2026, 8:00 |