Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 11:18   #1
tiger()
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 49
По умолчанию задержка в мкс

Компонент TTimer устанавливает минимальную задержку в 1 мс.
Как еще можно сделать задержки, нужно в микросекундах?
tiger() вне форума Ответить с цитированием
Старый 07.10.2011, 20:34   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от tiger() Посмотреть сообщение
Компонент TTimer устанавливает минимальную задержку в 1 мс.
Как еще можно сделать задержки, нужно в микросекундах?
А что за задача позвольте узнать? Чисто теоретически можно считывать значения с системного таймера. Однако Windows старше 98 не позволяют сделать это без драйвера. Хотя возможно это можно каким то образом провернуть в более старших версиях. вот регистр [0000:1132].
в общем как то так.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.10.2011, 23:18   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
TTimer устанавливает минимальную задержку в 1 мс
под виндами до 55 мс, а число 1 мс лишь номинально. Используйте мультимедийный таймер.

Но все равно, точности в микросекунды практически недостижимы, слишком зависит от железа.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.06.2015, 12:14   #4
omk
Новичок
Джуниор
 
Регистрация: 17.04.2015
Сообщений: 1
По умолчанию

Делал задержку в мкс, используя тактовую частоту процессора.
Код:
void Sleep_mks(double time)
{
  unsigned clock0 = 0;
  unsigned clock = 0;
  extern int FcpuMHz;                 //частота процессора в МГц
 
  __asm rdtsc;                        //получаем текущий такт процессора (в eax)
  __asm mov [clock0], eax;            //переписываем eax в clock0
  do
  {
    __asm rdtsc;                      //получаем текущий такт процессора (в eax)
    __asm sub eax, [clock0];          //eax = eax - clock0
    __asm mov [clock], eax;           //переписываем eax в clock
  }
  while (clock < (FcpuMHz * time));   
}
omk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МКС. Онлайн-трансляция raxp Свободное общение 28 30.06.2012 18:23
Задержка в С++ cyberandom Помощь студентам 8 13.12.2010 01:15
NASA выложило в интернет видеотур по МКС _Dmitry Свободное общение 3 26.06.2009 17:41
LPT и 1 мкс задержки! MadGest Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.04.2009 13:59
NASA объявило конкурс на название обзорного модуля для МКС _Dmitry Свободное общение 5 23.02.2009 23:41