Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / DOS. Задержка менее 50 мс. / 12 сообщений из 12, страница 1 из 1
11.04.2006, 14:40
    #33658495
matsic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
ОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.
...
Рейтинг: 0 / 0
11.04.2006, 14:53
    #33658530
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
Можно программно изменить частоту таймера. Подробностей не помню, смотри Джордейна
...
Рейтинг: 0 / 0
11.04.2006, 16:27
    #33658954
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
Смутно помнится, что с 43 порта можно было снять время точнее.
...
Рейтинг: 0 / 0
11.04.2006, 17:11
    #33659142
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
matsicОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.

мона по разному...
постоянным сканированием с порта PIT (8253)...это то что осталось от делителя там...
Либо перепрограммируя данный девайс получить прерывание от него не 1/18 раз в секунду а чаще. В принцепе что и делали многие игры.

Такая точность мягко говоря - редко встречается в задачах. Форточки к примеру имеют именно этот (10 мс.) порог точности, на всевозможных слипах.


с уважением
(круглый)
...
Рейтинг: 0 / 0
11.04.2006, 20:19
    #33659615
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
muk07Смутно помнится, что с 43 порта можно было снять время точнее.

Ага, именно на 43 порт он прямо и передается непосредственно из института метрологии в Петербурге.
...
Рейтинг: 0 / 0
12.04.2006, 06:00
    #33659887
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
Да!? А мне говорили, что по средам из Гринвича.
...
Рейтинг: 0 / 0
12.04.2006, 10:22
    #33660279
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
Ну это зависит от того, где был компьютер произведен. Китайские желтые материнки вообще по звездам время мерили, на основе старинных китайских философских теорий.
...
Рейтинг: 0 / 0
12.04.2006, 15:32
    #33661674
matsic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
круглыймона по разному...
постоянным сканированием с порта PIT (8253)...это то что осталось от делителя там...
Либо перепрограммируя данный девайс получить прерывание от него не 1/18 раз в секунду а чаще.
А пример можно?:)
...
Рейтинг: 0 / 0
12.04.2006, 16:13
    #33661850
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
matsicА пример можно?:)


опс...тут Вы мня и поймали... под рукой примеров нема...
а вот поиск в инете катит...
для затравки дам ссылку на примеры и описание по данной тематике.. Кстати похоже на выдержки из Джордена (как тут выше прозвучало - кстати не плохая книга, в своё время многие по ней учились...правда в электронном виде её больше знают, чем печатном)...

PIT (программируемый интервальный таймер - 8253

там же, заметки про прерывания под досом

если будут проблемы - спрашивайте. отвечу, но не сразу. нуна будет не забыть подтащить сидюк с кодом под досик...правда код на азме...

с уважением
(круглый)
...
Рейтинг: 0 / 0
12.04.2006, 17:59
    #33662299
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
MasterZivАга, именно на 43 порт он прямо и передается непосредственно из института метрологии в Петербурге.
Не поленился достать из закромов DOS help:

HELP6 Ports 40H-43H control the PC timer circuits. There are three timer
channels:

0) Channel 0 is used as a general system timer. It handles the periodic
"timer-tick". It is initialized by the BIOS to invoke INT 08H
(IRQ 0) 18.206 times per second (once every 54.936 milliseconds).

1) Channel 1 is used in a dedicated manner to support the memory refresh
function. The output is used to generate a direct-memory access
(DMA) cycle request on DMA channel 0. This DMA channel is used to
refresh the systems RAM by performing a dummy memory-read every so
often (once every 15 microseconds on the original PC).

This is critical to system operation, so we are usually advised to
keep "hands off". However, I have seen experiments in which this
timer was slowed down a bit in order to increase overall system
performance by a few percent. Too slow of a value eventually causes
fatal memory errors.

2) Channel 2 is used to drive the audio speaker on the system board (it
originally handled cassette-tape I/O, but that is surely moot). The
output of channel 2 can be directed to control the speaker via I/O
port 61H (see PPI Ports and Speaker Control).

Channel 2 is available for application-controlled timing tasks;
however, it is a global resource. Rather than using direct port I/O
you are advised to use fns such as INT 1aH and INT 15H 86H for timed
operations.

Port Description
ЯЯЯЯ ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
40H Read/Write: Count value for counter 0
Port 43H bits 4-5 control the way the counter is set.
41H Read/Write: Count value for counter 1
41H Read/Write: Count value for counter 2
ДДДД ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
43H Write: set channel's mode of operation
Ц7В6В5В4В3В2В1В0·
єch#іr/lіmode і є
УДБДБДБДБДБДБДБТЅ bits mask
АТЩ АТЩ АДТДЩ ИН 0: 01H 0=process count as binary
є є є 1=process counts as BCD
є є ИННННН1-3: 0eH select timer mode:
є є 000 = mode 0: interrupt on terminal count
є є 001 = mode 1: programmable one-shot
є є x10 = mode 2: rate generator
є є x11 = mode 3: square-wave rate generator
є є 100 = mode 4: software-triggered strobe
є є 101 = mode 5: hardware-triggered strobe
є ИНННННННННН4-5: 30H select read/load sequence:
є 00 = latch counter for stable read
є 01 = read/load most significant byte only
є 10 = read/load least significant byte only
є 11 = read/load LSB then MSB
ИНННННННННННННН6-7: c0H specify counter to affect:
00 = counter 0, 01= counter 1
10 = counter 2, 11= counter 3

See Also: Speaker Control
PPI Ports
I/O Port Map
--

Иногда полезно придержать сарказм - может вернуться.
...
Рейтинг: 0 / 0
13.04.2006, 12:22
    #33663883
Agent 007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
matsicОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.

Есть более тупой способ - задаеш параметр честота процесора и делаеш цикл ... до 10,000 - 100,000 - 1,000,000 ... сколько нужно.
...
Рейтинг: 0 / 0
13.04.2006, 13:26
    #33664211
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS. Задержка менее 50 мс.
muk07
Иногда полезно придержать сарказм - может вернуться.

Да ради бога !!!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / DOS. Задержка менее 50 мс. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]