UART

From
Leo Yuriev ()
To
ilja minich ()
Date
2003-01-23T19:05:10Z
Area
SU.WINDOWS.NT.PROG
From: "Leo Yuriev" <ly@elcat.kg>

Thu Jan 23 2003 14:27, ilja minich wrote to All:

 im> From: "ilja minich" <fr@onego.ru>

 im> Привет All.

 im> Есть некое внешнее устройство которое по RS-485 имеет коннект с
 im> компьютером.
 im> Устройство по приему последовательности с некоторой задержкой передает
 im> ответ.

 im> На компе:  fRtsControl=RTS_CONTROL_TOGGLE

 im> Вопрос в том, что если задержка перед передачей данных от устройства
 im> компу

 >> = 10 милисек,

 im> то комп принимает, а если меньше то нет.

 im> На компе прога написана на LCCWin32.

 im> Это как понять, медленная схема UARTa компа или что-то еще.
 im> Мне то в идеале необходима такая задержка не более 10-ов микросек.

Дело в том что RTS_CONTROL_TOGGLE обслуживается драйвером. Драйвер использует
таймеры и другие сервисы ОС. Обслуживание таймеров в ядре NT привязано к
системным тикам - прерываниям от таймера. Частоту системных тиков (точность
системного таймера) можно менять (в разумных пределах), по умолчанию интервал
составляет 10-15 миллисекунд.

Соответствующие функции не документированны, но доступны в ntdll.dll:
 - NtQueryTimerResolution/ZwQueryTimerResolution
 - NtSetTimerResolution/ZwSetTimerResolution
В ядре ОС:
 - ExSetTimerResolution

Если установить системный тик очень маленьким, то точность таймеров возрастет,
но больше времени будет съедено планировшиком задач. W2K и XP не устанавливают
тик меньше некоторого предела, который вычисляется в зависимости от скорости
процессора ~ 1 ms.

http://leo.yuriev.ru

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)