[an error occurred while processing this directive] [an error occurred while processing this directive]
А вот еще один способ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено пионер Вася 11 апреля 2002 г. 12:08
В ответ на: В продолжение темы прошлой страницы - временные задержки на C++ Builder вопрос (+) отправлено Make_Pic 11 апреля 2002 г. 08:54

Известно, что начиная с процессора Пентиум в процессоре имеется счетчик, который непрерывно в течении каждого такта процессора инкрементируется на единичку. Счетчик обнуляется только в момент ресета процессора и на частоте один гигагерц 64 разряда перекидываются через ноль, по моим прикидкам, один раз на 50000 суток. Недостатки этого метода -- необходимо знать тактовую частоту процессора. Измерения могут быть неэффективными из-за потери квантов времени задачей в операционных системах выделяющих задаче/потоку кванты времени с дискретностью 18.2 миллисекунды (Виндоза). Ниже приведен текст (BCB50) функции позволяющей считывать значение этого счетчика(проверено электроникой -- W98,NT,W2K,XP).

__int64 getxclk(void)
{
union _dwi64{
struct _dw32{
DWORD lodw;
DWORD hidw;
}dw32;
__int64 i64;
}dwi64;
__asm rdtsc
dwi64.dw32.lodw=_EAX;
dwi64.dw32.hidw=_EDX;
return dwi64.i64;

}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru