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)