Принять данные на ПК со скоростью 1 Мбит

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Во всех USB-UART преобразователях используется кварц на 12 мегагерц. Выходит и скорость ровно 1 Мегабит должна быть доступна и, напротив, скорость 921600 непонятно как как получить из 12 МГц?. Слышал, что в реестре Windows драйверу можно указать нестандартную скорость. Может кто объяснит подробности? Например ATMEGA с кварцем 16 Мгц прекрасно позволяет установить скорость UART 1 Мбит делитель на 16 или 2 Мбит с удвоенной скоростью но, как принять поток на ПК? Мне нужно для отправки пары байт из прерывания вызываемого с частотой 40 Килогерц. Кстати, видел 2 разных драйвера для PL2303HX в одном список скоростей был до 6 Мбит и, я проверил осциллографом, что PL2303HX на самом деле передает и принимает на скорости 6 Мегабит, а после обновления опять только 128 000 максимум, мне лень писать что-то свое для общения с СОМ использовал компонент визуальный для Борланд С++ 6.0. Может есть иной компонент потому как в моем нестандартные скорости не принимаются к сожалению.

P.S. Может поставить старый драйвер, но вот незадача, в визуальном компоненте Борланд С++ нет возможности выбрать скорость 6 Мегабит. Подскажите путь решения. Оптимально было-бы общаться с ATMEGA на скорости 2 Мбит, так как она просто устанавливается в Меге и, присутствует в списке драйвера PL2303HX старого драйвера 2008 года. Высокая скорость 2 и 6 Мбит для PL2303HX была мной протестированна из терминальной программы осциллографом посмотрел тайминги на PL2303HX (TTL) и терминал принимал эхо правильно. Выходит все должно срастись. Только компонент для Borland C++ 6 бы кто помог найти с полным списком скоростей. Писать обращаясь к, как ее DCB лениво. Или может кто исходник подкинет с программированием СОМ в Борланде через DCB. А то заколебался я ограничивать себя скорость 56 000 максимум что сумел согласовать между Мегой и приложением на Борланде С++. Памагите кто може, кто может памагите очень нужно для продолжения экспериментов с полностью цифровым ШИМ для управления преобразователем. Нужно из процессора на комп полуцить осциллограмму, для этого отправлять пару байт непрерывным потоком со скоростью прерывания 40 Килогерц.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

astrahard писал(а):Оптимально было-бы общаться с ATMEGA на скорости 2 Мбит, так как она просто устанавливается в Меге
Подумайте о том хватит ли у меги производительности для работы с потоком 256 КБ/с и что мега кроме этого успеет сделать.
Реклама
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 40 Килогерц. В прерывании есть еще запас 10 микросекунд, там нужно вставить отправку 2 байт. Итого все успевает, а принимать мне нужно только запросы ModBus со скоростью 100 в секунду, даже на скорости порта 56 000 все работает и еще остается 30 процентов свободного процессорного времени, которое я меряю в цикле Idle осциллографом. (Весь рабочий код у меня в обработчиках прерываний, в Майн() только инициализация и простой цикл Idle где я дергаю свободной ногой для осциллографа, чтобы свободное время видеть визуально)

P.S. Вообще, я Мегой больше заниматься не буду. На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально, в результате предсказатели опозорены. Я также упростил выражение векторного регулирования для обобщенного электродвигателя, опозорив авторов векторного регулирования немцев, до меня считалось что упростить выражение НЕВОЗМОЖНО!!!!! Кстати этим я раскрыл тайный секрет фирмы Ti, Возможно? хотя я не уверен, может я их опередил????

Добавлено after 11 minutes 19 seconds:
Вообще, я больше философ (наиболее общие вопросы познания) и математик чем программист и кодер, поэтому и задаю вопросы.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

astrahard писал(а):Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 40 Килогерц.
Тогда для чего пишите о передаче на скорости 2 Мбод? Чем выше скорость, тем большая производительность должна быть.
astrahard писал(а):На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально
В смысле программный? Какая частота и разрядность получилась? Что мега кроме шима успевает сделать и как это сказывается на "дрожании" импульсов шима и на задержках выполнения других задач?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Eddy_Em »

В файле /usr/include/asm-generic/termbits.h есть параметр B1000000 → скорость в 1Мбит является вполне себе стандартной!
Другое дело, что все кончается B4000000, т.е. для скоростей выше 4Мбит нужно править модуль ядра и задавать свои параметры...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

Эдя расслабьтся. Из первого сообщения ясно следует что речь про винду.
Реклама
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

[uquote="Мурик",url="/forum/viewtopic.php?p=3740672#p3740672"]
astrahard писал(а):Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 40 Килогерц.
Тогда для чего пишите о передаче на скорости 2 Мбод? Чем выше скорость, тем большая производительность должна быть.
astrahard писал(а): На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально
В смысле программный? Какая частота и разрядность получилась? Что мега кроме шима успевает сделать и как это сказывается на "дрожании" импульсов шима и на задержках выполнения других задач?[/uquote]
Project1.rar
(6.51 КБ) 352 скачивания
Исходник. Программа на Хост.
ModBus.rar
(245.67 КБ) 331 скачивание
Разрядность ШИМ 8Бит, разрядность АЦП 10 Бит. Умеет ПИД регулирование и общение по ModBus для ввода уставок, я также получаю диагностику и кусочки осциллограммы. Вот хочу осциллограмму получить полностью.От Меги не потребуется больше чем в прерывании передать 2 байта. Напротив увеличение скорости UART сократит издержки на протокол ModBus. Одновременнная работа почти не отражается на дрожании импульсов, но, поскольку у меня осциллограмма не непрерывная, я смотрел толкно цифровым запоминающим осциллографом, серьезных сбоев не обнаружил. в этой теме подробнее https://radiokot.ru/forum/viewtopic.php?f=57&t=162148
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
nds
Друг Кота
Сообщения: 4747
Зарегистрирован: Вс май 25, 2008 19:47:47
Откуда: РФ
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение nds »

То что нельзя выбрать нужную скорость в визуальном компоновщике или даже в списке предоставляемом драйвером ничего не значит. Никто не мешает прописать любую поддерживаемую железом скорость в программе и оно с большой вероятностью будет работать
Тоже самое касается и "залоченного" ком порта прописывайте напрямую и будет вам счастье
2B OR NOT 2B = FF
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Я понял, визуальных компонент вряд-ли кто подкинет, да и проблемы с ними. Зачем спрашивается так писать, когда список скоростей спрашивают не у драйвера а зашивают свой?
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Eddy_Em »

[uquote="Мурик",url="/forum/viewtopic.php?p=3740744#p3740744"]Из первого сообщения ясно следует что речь про винду.[/uquote]
И что? Прошивка для игровых приставок не умеет скорость 1Мбит/с? Ну-ну...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Плохо, все плохо. Не нашел сквозного описания прохождения данных по пути, как я себе представляю, TTL сигнал > буфер микросхемы USB-UART 384 или 256 байт > собственно конечные точки USB со скоростью 12 мегабит и темпом 1000 опросов в сек > прерывание USB > файл ОС. Как Вы думаете? правильно представил себе путь данных? И еще, если в микросхеме USB-UART буфер на прием 256 байт, то скорость будет 256*1000(темп USB HOST)=256 Kb/Sec? это если без потерь?

P.S. Кстати, если, как говорит nds , бестолку смотреть на список скоростей в Windows интерфейсе драйвера. То, может существует утилита которая его прочешет на предмет того, что драйвер может запрограммировать в USB-UART микросхему. Тут не так все однозначно, так как я встречал утверждение, что драйвер хранит этот список в реестре Windows в виде соответствия скорость-число делитель для USB-UART (для PL2303HX встречал такое утверждение) микросхемы. Короче мутно как-то. Хочу все знать...
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
nds
Друг Кота
Сообщения: 4747
Зарегистрирован: Вс май 25, 2008 19:47:47
Откуда: РФ
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение nds »

Usb-uart не обязательно низкоскоростное устройство, никто не запрещает ему общаться с компом на 480 мегабитах.
ЗЫ все знать не получится
2B OR NOT 2B = FF
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Eddy_Em »

Зачем вообще городить дополнительный тормозной буфер, если можно просто взять микроконтроллер с аппаратным USB, поднять на нем CDC ACM и гонять хоть 4 мегабита?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Ну зачем Вы так "Usb-uart не обязательно низкоскоростное устройство, никто не запрещает ему общаться с компом на 480 мегабитах." Конечно может теоретически, но практических дешевых реализаций нет. Лучше бы сказали про путь прохождения данных правильно-ли я его представил себе?

Добавлено after 2 minutes 28 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3740871#p3740871"]Зачем вообще городить дополнительный тормозной буфер, если можно просто взять микроконтроллер с аппаратным USB, поднять на нем CDC ACM и гонять хоть 4 мегабита?[/uquote]
Затем, что часть работы уже сделана, и это самое дешевое решение. Мне нужно именно 2 мегабита, вернее 80 килобайт в секунду без потерь. Кроме того в этом случае дешевле выполнить гальваническую изоляцию, чем на USB. Вообще, я планирую освоить передачу данных Манчестерским кодом через пластиковое оптоволокно как Toslink S/PDIF там как раз Манчестер бегает. Изоляция будет Мегавольты. Для ЧПУ и Энергетики сгодиться.

Добавлено after 12 minutes 8 seconds:
Вот еще мысль пришла. Должно-же быть недорогое решение для скоростей порядка 2-20 Мегабит как Toslink S/PDIF к примеру. Эта ниша не заполнена примерами решений. USB интерфейс на очень короткие дистанции с ужасно плохой помехоустойчивостью и без изоляции. Есть еще Ethernet, но опять-же это значительно дороже. Теперь надеюсь все понятно?
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

astrahard писал(а):Исходник.
Используется аппаратный ШИМ. Тогда непонятно что подразумевалось под этим.
astrahard писал(а):На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально
Eddy_Em писал(а):И что? Прошивка для игровых приставок не умеет скорость 1Мбит/с?
Я что-то подобное писал?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Eddy_Em »

astrahard писал(а): Мне нужно именно 2 мегабита, вернее 80 килобайт в секунду без потерь
С аврки? Да ладно! У нее же практически все время выжрет отправка данных. А как их получать в этом случае?
Или у аврки есть DMA, чтобы пока очередная порция данных отправляется, получить следующую?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

ComPort->CustomBaudRate=2000000; Все заработало. Оказывается драйвер поддерживает 2 Мбит. Атмега справляется тоже. В смысле все время выжрет? Отправляю через прерывание. Время передачи одного байта 8 микросекунды на 2000 000. А время прерывания 31 микросекунда, мне нужно 16 микросекунд чтобы передать два байта с частотой 31 Килогерц и они нашлись.

Добавлено after 9 minutes 13 seconds:
Проверил сейчас осциллографом. PL2303HX работает на скорости 2 Мегабит, вижу импульсы по 400 наносекунд и это из приложения на С++ билдере. Ура работает!!!

Добавлено after 22 minutes 3 seconds:
Кстати, с такой задачей справляется только Prolific Pl2303HX. CP2102, FT232R и CH340 не тянут 4 Мбит!!!! Ат Мега работает портом в Аsynchronous Mode тоже на 2 Мегабит с кварцем 16 мегагерц. Все срослось как нельзя лучше.

Добавлено after 23 minutes 7 seconds:
Prolific Pl2303HX самая дешевая Китайская со старым драйвером 2008 года. Все равно 6 мбит умеет, кажеться она и 12 Мбит тянет. Надо проверить. Кроме того, как я понял, непрерывный поток зависит от величины буфера в и вряд-ли больше 6 Мбит потянет. Для Меги предел 2 Мбит. Вот на TMS320F28016 завтра обкатаю скорость 12 Мегабит и 6 Мегабит. Где непрерывный поток получиться там и остановлюсь. Это мне для осциллографирования работы цифрового ШИМ нужно. 6 Мегабит/16 это 375 Килобайт/секунда, а мне нужно 4*2*20000= 160 Килобайт в секунду. Это 4 канала АЦП по 2 байта и на частоте 20 Килогерц.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

astrahard писал(а):Это мне для осциллографирования работы цифрового ШИМ нужно.
Проще взять. https://ru.aliexpress.com/item/4000257258147.html
Аватара пользователя
astrahard
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение astrahard »

Жду из Китая такую штуку. Впрочем, Вы не поняли, у меня есть контроллер где успешно крутиться задача цифрового ШИМ контроллера. Контроллер МЕГА16 подключен к компьютерному БП заместо выпаяноq TL494. Контроллер помимо задачи ШИМ и ПИД параллельно выполняет задачу протокол ModBus, я еще добавлю осциллографирование. Уже мне подсказали, как, и проверил что работает, и проблема исчерпана. Я запустил в микроконтроллере задачу осциллограф, добавив в прерывание две строчки. Комп тоже справляется с потоком, поток 2 Мбит непрерывный. Мне помог VladislavS с изиэлектроникс и radteh местный, спасибо им большущее!!!!.

P.S. Исходники я выкладывал в теме https://radiokot.ru/forum/viewtopic.php?f=57&t=162148 Исправления выложу попозже. Скорость получилась 2 Мбит.... Это только на первый взгляд кажется что 2 Мбит не подъемно для МЕГИ16, на самом деле оказалось сущие пустяки...
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Принять данные на ПК со скоростью 1 Мбит

Сообщение Мурик »

astrahard писал(а): Это только на первый взгляд кажется что 2 Мбит не подъемно для МЕГИ16
Передайте непрерывный поток на этой скорости, а не несколько байт. Передачу выполняет аппаратный UART и его скорость не важна. Важно сколько байт будет отправлено за определенное время.
Ответить

Вернуться в «Интеграция с ПК»