IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Работа с таймером., Таймер высокого разрешения
Shub
сообщение 9.04.2004 9:30
Сообщение #1


Гость






И так такт таймера по умолчанию составляет 55 мс. Но в жизни есть такие чудесные моменты, когда требуется, что-нибудь периодически выполнять через 20 мс, 10 мс или даже 1 мс. В сети выложены примеры быстрых таймеров, но, честно говоря, что к чему в них я так понять и не смог. Из не проверенных данных я знаю, что изменить такт таймера с 55 мс на 10 мс условно говоря просто, вот только ни где не сказано как это сделать. Как получают более мелкие такты для меня большая загадка.
Просветите, пожалуйста.

Примеры перепрограммирования частот системного таймера находятся здесь:
http://pascal.sources.ru/datetime/index.htm

PS Я не программист, так балуюсь, С и Асм’у не обучен.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
xds
сообщение 11.03.2005 4:20
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


f = 1193180 Гц / c

где с = коэффициент деления (число 0..65535).

Отсюда

f[max] = 1193180 Гц / 1 = 1193180 Гц (T[min] ~= 838 нс);
f[min] = 1193180 Гц / 0 (?) = 1193180 Гц / 65536 ~= 18.2 Гц (T[max] ~= 54,9 мс).

Почему 65536 = 0? Логика работы таймера заключется в уменьшении на 1 по каждому тактовому импульсу значения во внутреннем 16-разрядном регистре, предварительно инициализированном коэффициентом деления. При переполнении, микросхема таймера выполняет некоторые манипуляции - в зависимости от режима, на который она запрограммирована. Т. о. максимальный интервал между последовательными переполнениями счетчика достижим при коэффициенте деления 0. Исходя из того, что частота тактирования таймера ~1193180 Гц, получаем указанные выше формулы и диапазоны частоты и периода.

Напрямую таймер в среде Windows не программируется, поскольку ОС монопольно использует его для переключения нитей. Тем не менее, Windows эмулирует в DOS-приложениях таймер и IRQ0 (правда, для некоторого "разумного" диапазона частот).


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Shub   Работа с таймером.   9.04.2004 9:30
Altair   А здесь можно узнать, как программировать таймер с...   16.04.2004 6:30
Shub   Спасибо, хоть там и много асма, но сообщения Vespe...   19.04.2004 10:30
Altair   Кстати очень интересную ссылку подкинул Shub, заме...   19.04.2004 14:02
Shub   Попробовал то, что предложил Vesper (имеется в вид...   19.04.2004 17:06
Altair   Хм .... Надо попробовать самому. Я тоже интерисую...   19.04.2004 17:45
Altair   Так, так .... читаем, что тут: http://www.dklab.r...   19.04.2004 18:53
Shub   Так добавлю еще одну ссылку: http://www.vcl.ru/htm...   20.04.2004 8:53
Shub   Мои попытки ускорить таймер потерпели фиаско. Port...   21.04.2004 16:56
Altair   Вот, что у Питера Нортона написано: Т.е. программ...   21.04.2004 19:52
Shub   Е-е-е, получилось. Значиться так: 43h - управляющ...   22.04.2004 9:57
Shub   Сорри, в моем примере надо вводить не 256, а 1, то...   22.04.2004 12:27
Altair   Shub, высший класс! А выше скорость не выйдет,...   22.04.2004 13:36
Guest   Спасибо :), я в курсе, что скорость выше не буде...   22.04.2004 14:17
Altair   нашел.... Пишем модуль для работы с системным тайм...   10.03.2005 22:29
xds   f = 1193180 Гц / c где с = коэффициент деления (ч...   11.03.2005 4:20
xds   Пример программирования таймера (используется для ...   11.03.2005 4:45
Aelita   А как переделать Вашу программу, если нужно еще в ...   14.11.2010 5:13
Lapp   А как переделать Вашу программу, если нужно еще в ...   14.11.2010 9:25
Aelita   Я работаю, как ни странно, под DOS32 (Free Pascal)...   15.11.2010 7:01
Lapp   Я работаю, как ни странно, под DOS32 (Free Pascal)...   15.11.2010 9:17
TarasBer   Что же это за код такой, что его работа так сильно...   15.11.2010 12:59


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 13:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"