В компе не COM порт тормозит, а программа, которая с ним работает.
Я выше выложил конфиги порта из своей DLL-ки. Но у меня другое наблюдалось.
Я наверное алгоритм просто в программе не так сделал. Если нагрузить процессор почти до полной(90% и выше) то у меня программа срывалась и шла дальше не успев принять весь пакет.
Если бы пакеты были у меня фиксированной длинны, то было бы проще, но пакеты у меня динамические и подкрутка таймаутов только частично решала проблему. Решил проблему выведением приёма данных в отдельный поток, в котором я сначала всё принимал, ждал конца пакета, проверял CRC и только тогда, если всё правильно, отдавал команду основной программе на выполнение операций с принятыми данными.
I am DX168B and this is my favourite forum on internet!
В той программе акромя работы с СОМ ничего более и не было, так что тормозить там тоже собственно нечему было.
У меня настройки порта были аналогичные. Да и что-то терзают меня смутные сомнения, что есть какие-либо хитрые настройки порта увеличивающие скорость его работы, баудрэйт не в счет.
В свою защиту могу еще сказать, что наблюдав этот эффект у меня естественно возник вопрос шо за нах?
Ответ естественно нашелся в инете. И оказалось что весь сыр бор именно из-за переключений.
Если кому интересно, дойдет дело до железа, обязательно повторю эксперимент.
Может он и переключается, я не спорю, просто говорю то, что по моему опыту и про то, что видел и чего не видел.
На счёт тормозов: У COM портов есть параметры таймаутов.
По этим таймаутам он ждёт те или иные события. Тормозить может из-за них.
Приёмный регистр и регистр передачи раздельные. Буферы передачи и приёма тоже раздельные. Физические линии обмена тоже отделены друг от друга. Так, что это только ускоряет работу порта.
Тормоза могут вызвать процессы, использующие терминальный режим и использование линий DTR и RTS. В конфигах их можно отрубить. Для сопряжения с МК нужны всего 3 провода и преобразователь уровней. (передача, приём и GND)
Всё, что я написал выше, касается реальных, встроенных в материнку COM портов.
А вот USBишные переходники могут и переключаться и тормозить. У них ведь программная реализация порта.
Если есть возможность задействовать Ethernet с протоколом TCP IP, то лучше его и использовать.
Другой вопрос. А как на счёт скорости исполнения команды механизмом? Очень быстро механизм выполняет команды или нет? Просто если механизм выполняет команды от одной секунды и выше, то думаю, что ПК справится с передачей команд по UART. Главное для ПК, это быстро отправить микроконтроллеру как можно больше данных, пока механизм совместно с ядром МК будут жевать их и выплёвывать. А управлением механизмом пусть МК занимается.
I am DX168B and this is my favourite forum on internet!
Исполнительный механизм - пускатель. Скорость срабатывания у него очень не плохая.
Буду работать с нормальным USB, и не буду его во что-то виртуализировать. Сделаю его HID'ом и буду гнать байтики. Даже сделаю еще красивее, преобразователь, тот что стоит со стороны ПК, будет не просто преобразователь. Он еще будет следить за тем, получило ли устройство пакет в целости и сохранности, и если что, пересылать самостоятельно заново, не трогая ПК.
З.Ы. Скачал ту приблуду для Винды, что делает ее реал тайм ОС. Интересно....
Вопрос ко всем: Можно ли найти исходники от примеров в протеусе?
Интересует проект Ethernut из протеуса 7.6 SP0. Там на AVRе и на чипе Realtek Ethernet сделан простенький веб - сервер.
I am DX168B and this is my favourite forum on internet!
BCluster писал(а):ну это механика. Она достаточно медленная по определению.
Я бы не сказал, самый большой нагруженный пускатель у нас захлопывается за 5 мс.
ploop писал(а):Скорее, делает видимость RTOS.
Все лучше чем голая винда.
DX168B писал(а):Вопрос ко всем: Можно ли найти исходники от примеров в протеусе?
Интересует проект Ethernut из протеуса 7.6 SP0. Там на AVRе и на чипе Realtek Ethernet сделан простенький веб - сервер.
Исходников не встречал, а вот где-то подобная реализация мне попадалась. Или только мысль ее создания, уже не помню.
З.Ы. Скачал ту приблуду для Винды, что делает ее реал тайм ОС. Интересно....
Скорее, делает видимость RTOS.
я бегло-бегло почитал про эту приблуду, и у меня сложилось впечатление, что она встраивается на уровень ядра и подменяет собой шедулер винды, делаяя последний своей подзадачей, ну или как-то похоже его обманывая... получается типа ОС внутри ОС. сдается мне, в этом случае реальность времени будет весьма жесткой... но все равно интересно узнать результат испытаний "в натуре"
битва с дураками проиграна, победители торжествуют. слава победителям!
Винда скорее всего тормозить будет, если повесить на "преблуду" ещё одну задачу, помимо винды. Но в ПК проц поддерживает многозадачность на аппаратном уровне, в отличии от МК.
По этому, вероятно, что тормозов может и не быть.
I am DX168B and this is my favourite forum on internet!
я бегло-бегло почитал про эту приблуду, и у меня сложилось впечатление, что она встраивается на уровень ядра и подменяет собой шедулер винды, делаяя последний своей подзадачей, ну или как-то похоже его обманывая... получается типа ОС внутри ОС. сдается мне, в этом случае реальность времени будет весьма жесткой... но все равно интересно узнать результат испытаний "в натуре"
ааа, ну это еще может быть. Только какой смысл? Все задачи, которым нужен реалтайм, проще вынести в железку, даже если они довольно объёмные. Особенно, учитывая сегодняшние цены на всякие ARM'ы и тому подобное.
DX168B писал(а):Вопрос ко всем: Можно ли найти исходники от примеров в протеусе?
Интересует проект Ethernut из протеуса 7.6 SP0. Там на AVRе и на чипе Realtek Ethernet сделан простенький веб - сервер.