Перейти к содержанию
    

Можно ли поменять в драйвере Com порта значения пинов?

В большинстве своем выпускают железки с урезанным Com-портом, мне нужна ножка DCD, с помощью нее, я завожу метку времени от GPS приемника и получаю достаточно сносную нестабильность NTP сервера, без нее все хуже на порядок, смотри рисунки.

Думаю как переиначить драйвер com-порта, чтобы я подавал сигнал на CTS, а драйвер был уверен, что это DCD. Хотел попробовать сначала на винде, но в целом мне это на юбунту надо положить.

Пробовал usb-rs микруху с полным Uart, но за счет уже драйвера USB, хорошую стабильность получить не удалось.

DCD.jpg

без DCD.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Gvozdidir сказал:

В большинстве своем выпускают железки с урезанным Com-портом, мне нужна ножка DCD, с помощью нее, я завожу метку времени от GPS приемника и получаю достаточно сносную нестабильность NTP сервера,

Просто какой-то поток сознания или фраза выдранная разговора с самим собой из середины... 

Что за железки? Кто выпускает? Чем это плохо? О чём вообще речь? И при чём тут NTP???  :wacko2:

1 час назад, Gvozdidir сказал:

Думаю как переиначить драйвер com-порта, чтобы я подавал сигнал на CTS, а драйвер был уверен, что это DCD.

Что за драйвер? Зачем его "переиначивать"? И почему невозможно подать что-то на CTS и как этому мешает "драйвер"??

1 час назад, Gvozdidir сказал:

Пробовал usb-rs микруху с полным Uart, но за счет уже драйвера USB, хорошую стабильность получить не удалось.

К концу сообщения выясняется что видимо об USB-UART чипе.... или нет?

 

PS: Может изложите вопрос вразумительно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, jcxz said:

Просто какой-то поток сознания или фраза выдранная разговора с самим собой из середины... 

Что за железки? Кто выпускает? Чем это плохо? О чём вообще речь? И при чём тут NTP???  :wacko2:

Что за драйвер? Зачем его "переиначивать"? И почему невозможно подать что-то на CTS и как этому мешает "драйвер"??

К концу сообщения выясняется что видимо об USB-UART чипе.... или нет?

 

PS: Может изложите вопрос вразумительно?

Извиняйте, действительно сумбурно и не связно описал проблему, так как сам долгое время копался, думал, что данных сведений достаточно.
Железка не важна, я поднимаю сервер точного времени от GPS приемника по Com порту на винде 10, но также и на RockChip`e 3399, и на Nvidia nano. В конечном итоге все будет крутиться на RK3399 под Юбунтой, а у него есть только 4 пина(Rx,Tx,CTS,RTS).

На винде проще всего тестить. Так как есть полный Rs232, в котором есть первый пин DCD(Наличие несущей (Carrier Detect)).

Метка времени имеет стабильность в 10 нс. Подавая ее на DCD я здорово повышаю стабильность времени NTP сервера от Meinberg. http://www.satsignal.eu/ntp/NTP-on-Windows-serial-port.html 

про USB-Uart чип я имел ввиду, что пробовал такой путь, подключал юсб свисток, а к нему подключал навигационный приемник, но он не решил моих проблем.

Вопрос заключается в следующем, могу ли я обмануть драйвер Com порта, и заставить систему думать, что ножка CTS, на самом деле DCD. По описанию порта, у нее только 2 и 3 ноги(Rx,TX)железно прописаны и переназначить их нельзя, а вот оставшиеся вроде можно, но не смог найти как.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если переосмыслить задачу?

Не "обмануть драйвер", а сконфигурировать либо пересобрать ту программу, которая потребляет данные от драйвера.

Чтобы она ожидала импульсы pps не по DCD но CTS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Gvozdidir сказал:

про USB-Uart чип я имел ввиду, что пробовал такой путь, подключал юсб свисток, а к нему подключал навигационный приемник, но он не решил моих проблем.

Вопрос заключается в следующем, могу ли я обмануть драйвер Com порта, и заставить систему думать, что ножка CTS, на самом деле DCD. По описанию порта, у нее только 2 и 3 ноги(Rx,TX)железно прописаны и переназначить их нельзя, а вот оставшиеся вроде можно, но не смог найти как.

Ну во-первых: Зачем обманывать? Можно работать с COM-портом без управления потоком (см. SetCommState()), а изменение ножки CTS (да и любой другой) ловить через WaitCommEvent().

А во-вторых: Часто GPS-приёмники (с UART-интерфейсом) синхронизируют начало выдачи данных по TXD с сигналом PPS. Так что может и CTS не нужен (смотря где, под RTOS - не нужен, можно получать PPS по TXD).

А в-третьих: Самая главная проблема под виндой будет то, что винда - не RTOS (не ОС реального времени). А значит на уровне прикладной задачи ни о каком гарантированном времени реакции на аппаратное событие (шевеление ноги CTS или шевеление TXD) нельзя говорить. И если нужно такое время реакции, то тогда нужно спускаться на уровень драйверов и писать свой драйвер. Имха.

 

PS: Про USB я вообще молчу - там кроме времени реакции прикладной задачи на аппаратное событие (внутри ОС), есть ещё и время реакции на сигнал чипа USB-UART и время передачи этим чипом сообщения о событии через всю цепочку USB-хабов к хосту (время это - неопределённое). И о наносекундах и даже о мкс - можно вообще сразу забыть, а о мс думать только если ваше устройство - единственное на USB-хабе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, Vladivolt said:

А если переосмыслить задачу?

Не "обмануть драйвер", а сконфигурировать либо пересобрать ту программу, которая потребляет данные от драйвера.

Чтобы она ожидала импульсы pps не по DCD но CTS.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, jcxz said:

А во-вторых: Часто GPS-приёмники (с UART-интерфейсом) синхронизируют начало выдачи данных по TXD с сигналом PPS. Так что может и CTS не нужен (смотря где, под RTOS - не нужен, можно получать PPS по TXD).

А в-третьих: Самая главная проблема под виндой будет то, что винда - не RTOS (не ОС реального времени). А значит на уровне прикладной задачи ни о каком гарантированном времени реакции на аппаратное событие (шевеление ноги CTS или шевеление TXD) нельзя говорить. И если нужно такое время реакции, то тогда нужно спускаться на уровень драйверов и писать свой драйвер. Имха.

 

Я для того картинки и приложил, существенная разница с сигналом DCD и без под виндой. Да, ОС не реального времени, но мне хватает.
Сам приемник по TxD не может дать толковый pps так как привязан к обслуживающему ее контроллеру, как правило АРМ с не самым стабильным тактовым генератором, а вот PPS он генерит от коррелятора с высокостабильным генератором. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, gosha-z said:

Я правильно понимаю, что борьба идет за реализацию fudge???

именно. Устройство предполагается метрологическим. Поэтому стремлюсь выжать самый сок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, Gvozdidir сказал:

Да, ОС не реального времени, но мне хватает.

А теперь попробуйте посвёртывать/поразворачивать различные окошки.  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, gosha-z said:

Так я так и сделал, для точной pps использовал DCD. Но на платах которые в будущем предполагается использовать нет DCD, есть только (Rx,Tx,CTS,RTS), хочу переназначить драйвер Com порта, чтобы CTS воспринимал как DCD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 hours ago, Gvozdidir said:

Сам приемник по TxD не может дать толковый pps так как привязан к обслуживающему ее контроллеру, как правило АРМ с не самым стабильным тактовым генератором, а вот PPS он генерит от коррелятора с высокостабильным генератором

наверное можно завести PPS прямо на RX (второго порта)? с правильной полярностью и возможно его удлиннить придётся. 

а у Rockchipa таймеры есть для правильного захвата pps.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 minutes ago, jcxz said:

А теперь попробуйте посвёртывать/поразворачивать различные окошки.  :wink:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, _pv said:

наверное можно завести PPS прямо на RX (второго порта)? с правильной полярностью и возможно его удлиннить придётся. 

а у Rockchipa таймеры есть для правильного захвата pps.

У меня программисты заняты другими задачами, и пока я не докажу им что это работает на винде, за Рокчип и не возьмутся, чтобы не распыляться, по таймерам на Рокчипе не задумывался, тут тоже может быть и проблема.
Насчет второго порта возможно хорошая идея, но вижу нюанс, он скорее всего не поймет, что я подаю PPS на RX, так как ждет ее именно с DCD. Покурю мануал, может что и получится...

мой конфиг для NTP сервера:

server 127.127.20.4 mode 80 minpoll 3 maxpoll 3 iburst prefer #80-скорость RS-232 ->115200
fudge   127.127.20.4 flag1 1 flag3 1 Flag2 1
server 127.127.22.4 mode 80 minpoll 4 
fudge   127.127.22.4  flag3 1 #flag2 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...