![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Shub |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
И так такт таймера по умолчанию составляет 55 мс. Но в жизни есть такие чудесные моменты, когда требуется, что-нибудь периодически выполнять через 20 мс, 10 мс или даже 1 мс. В сети выложены примеры быстрых таймеров, но, честно говоря, что к чему в них я так понять и не смог. Из не проверенных данных я знаю, что изменить такт таймера с 55 мс на 10 мс условно говоря просто, вот только ни где не сказано как это сделать. Как получают более мелкие такты для меня большая загадка.
Просветите, пожалуйста. Примеры перепрограммирования частот системного таймера находятся здесь: http://pascal.sources.ru/datetime/index.htm PS Я не программист, так балуюсь, С и Асм’у не обучен. |
![]() ![]() |
xds |
![]()
Сообщение
#2
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
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.
|
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 13:27 |