Во всех 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)
Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 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)
Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 40 Килогерц.
Тогда для чего пишите о передаче на скорости 2 Мбод? Чем выше скорость, тем большая производительность должна быть.
astrahard писал(а):
На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально
В смысле программный? Какая частота и разрядность получилась? Что мега кроме шима успевает сделать и как это сказывается на "дрожании" импульсов шима и на задержках выполнения других задач?
В файле /usr/include/asm-generic/termbits.h есть параметр B1000000 → скорость в 1Мбит является вполне себе стандартной! Другое дело, что все кончается B4000000, т.е. для скоростей выше 4Мбит нужно править модуль ядра и задавать свои параметры...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Я же говорю, у меня МЕГА работает с прерыванием АЦП со скоростью 40 Килогерц.
Тогда для чего пишите о передаче на скорости 2 Мбод? Чем выше скорость, тем большая производительность должна быть.
astrahard писал(а):
На Меге тренировался чисто из спортивного интереса сделать цифровой ШИМ на процике на котором все говорили что это не реально
В смысле программный? Какая частота и разрядность получилась? Что мега кроме шима успевает сделать и как это сказывается на "дрожании" импульсов шима и на задержках выполнения других задач?
Разрядность ШИМ 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)
Заголовок сообщения: Re: Принять данные на ПК со скоростью 1 Мбит
Добавлено: Чт ноя 21, 2019 13:06:03
Друг Кота
Карма: 107
Рейтинг сообщений: 1302
Зарегистрирован: Вс май 25, 2008 19:47:47 Сообщений: 4683 Откуда: РФ
Рейтинг сообщения:0 Медали: 7
То что нельзя выбрать нужную скорость в визуальном компоновщике или даже в списке предоставляемом драйвером ничего не значит. Никто не мешает прописать любую поддерживаемую железом скорость в программе и оно с большой вероятностью будет работать Тоже самое касается и "залоченного" ком порта прописывайте напрямую и будет вам счастье
Я понял, визуальных компонент вряд-ли кто подкинет, да и проблемы с ними. Зачем спрашивается так писать, когда список скоростей спрашивают не у драйвера а зашивают свой?
_________________ "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)
Из первого сообщения ясно следует что речь про винду.
И что? Прошивка для игровых приставок не умеет скорость 1Мбит/с? Ну-ну...
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Плохо, все плохо. Не нашел сквозного описания прохождения данных по пути, как я себе представляю, 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)
Зачем вообще городить дополнительный тормозной буфер, если можно просто взять микроконтроллер с аппаратным USB, поднять на нем CDC ACM и гонять хоть 4 мегабита?
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Ну зачем Вы так "Usb-uart не обязательно низкоскоростное устройство, никто не запрещает ему общаться с компом на 480 мегабитах." Конечно может теоретически, но практических дешевых реализаций нет. Лучше бы сказали про путь прохождения данных правильно-ли я его представил себе?
Зачем вообще городить дополнительный тормозной буфер, если можно просто взять микроконтроллер с аппаратным USB, поднять на нем CDC ACM и гонять хоть 4 мегабита?
Затем, что часть работы уже сделана, и это самое дешевое решение. Мне нужно именно 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)
Мне нужно именно 2 мегабита, вернее 80 килобайт в секунду без потерь
С аврки? Да ладно! У нее же практически все время выжрет отправка данных. А как их получать в этом случае? Или у аврки есть DMA, чтобы пока очередная порция данных отправляется, получить следующую?
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
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)
Жду из Китая такую штуку. Впрочем, Вы не поняли, у меня есть контроллер где успешно крутиться задача цифрового ШИМ контроллера. Контроллер МЕГА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)
Это только на первый взгляд кажется что 2 Мбит не подъемно для МЕГИ16
Передайте непрерывный поток на этой скорости, а не несколько байт. Передачу выполняет аппаратный UART и его скорость не важна. Важно сколько байт будет отправлено за определенное время.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения