|
|
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Уважаемые гуру. Подскажите пожалуйста каким образом организовать программный таймер средствами DDK с интервалом менее(или хотя бы) 1 миллисекунды в драйвере Windows? Может быть "посадить" обработчик прерывания на системные часы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 12:29 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
http://msdn2.microsoft.com/en-us/library/twchhe95(vs.80).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 13:24 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
__rdtsc() вснго лишь возвращает тики. А причём здесь таймер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 13:49 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
А при том, что заня тики и их частоту (т.е. частоту процессора) можно очень точно считать время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 18:39 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Я в режиме ядра создал таймер оповещения с DPC, то есть события от таймера срабатывают на IRQL DISPATCH_LEVEL. Так вот минимальный интервал между событиями примерно 15 миллисекунд. Меньшего система не позволила. Дело то не в тиках, а как добиться минимального интервала между событиями таймера! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 19:42 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
а разме можно получить интервал короче 10мс на стандартной винде? Насколько я знаю - это в принципе невозможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2007, 20:13 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
А кто-нибудь подключал обработчик прерывания на часы? Драйвер часов не захватывает их монопольно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2007, 22:45 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Если кого интересует, то таймер в режиме ядра можно организовать следующим образом, правда при этом пожертвовав одним из CОM портов: "Вешаем" обработчик прерывания на один из портов. У порта запрещаем все прерывания, за исключением готовности приёма следующего байта. Пишем в порт байт, получаем прерывание, пишем снова - снова получаем прерывание ... Причём интервал такого таймера настраивается скоростью передачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 07:37 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
SPA_OSAЕсли кого интересует, то таймер в режиме ядра можно организовать следующим образом, правда при этом пожертвовав одним из CОM портов: "Вешаем" обработчик прерывания на один из портов. У порта запрещаем все прерывания, за исключением готовности приёма следующего байта. Пишем в порт байт, получаем прерывание, пишем снова - снова получаем прерывание ... Причём интервал такого таймера настраивается скоростью передачи. Ну и получится интервал где-то 15мс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 22:50 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Для Lelikk. Если Вы понимаете разницу между PASSIVE_LEVEL и IRQL равным или выше DISPATCH_LEVEL, то данное высказывание неверно. Если не понимаете - давайте объясню, почему Windows в режиме ядра может работать как ОС "мягкого реального времени". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2007, 22:32 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
SPA_OSAДля Lelikk. Если Вы понимаете разницу между PASSIVE_LEVEL и IRQL равным или выше DISPATCH_LEVEL, то данное высказывание неверно. Если не понимаете - давайте объясню, почему Windows в режиме ядра может работать как ОС "мягкого реального времени". Уровни приоритета выполнения я знаю. Комментарий относился вот к чему: SPA_OSA ...Причём интервал такого таймера настраивается скоростью передачи... Признаюсь, странновато разделил: 152000/8000=19 , откуда минимальный интервал действичтельно 1/19 милисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2007, 15:28 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
Я так и понял, что это простое недоразумение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2007, 21:39 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
а вы не могли бы показать сам код, мне такая скорость очень нужна, но я не знаю как запрещать прерывания и писать байт в порт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 21:58 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
LelikkПризнаюсь, странновато разделил: 152000/8000=19 , откуда минимальный интервал действичтельно 1/19 милисекунды. минимум винды - 1/18-я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 22:08 |
|
||
|
Таймер: интервал менее 1 миллисекунды.
|
|||
|---|---|---|---|
|
#18+
galazolineа вы не могли бы показать сам код, мне такая скорость очень нужна, но я не знаю как запрещать прерывания и писать байт в порт. Организовать такой таймер можно в режиме ядра, то есть в теле драйвера. А писать в порт можно так: void CRs485::WriteByte(ULONG addr, UCHAR value) { WRITE_PORT_UCHAR((PUCHAR)addr, value); } WRITE_PORT_UCHAR - функция DDK. где addr - адрес порта в который пишете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2007, 17:16 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34600418&tid=1345994]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 532ms |

| 0 / 0 |
