Перейти к содержанию
    

MSVC задать задержку МЕНЕЕ мс

PC, Windows-XP, MSVS-2008

----

Есть простая задача реализовать на базе LPT интерфейс SPI методом ногодрыга.

Все в общем-то работает, но вопрос в организации временных задержек.

while   // небольшая частота - сотни - тысячи Гц
{    _outp(0x378, 0x00);
    Sleep(1);
    _outp(0x378, 0xFF);    
    Sleep(1);
}

 

while   // большая частота (период порядка единиц-десятков мкс)
{
    _outp(0x378, 0x00);
    _asm { nop };
    _asm { nop };
    _asm { nop };
    _outp(0x378, 0xFF);    
    _asm { nop };
    _asm { nop };
    _asm { nop };
}
(понятно, что в этот цикл периодически вмешивается планировщик OS)

 

(?) реализация задержек на _asm { nop } не по феншую.

Меня бы устроила скорость ногодрыга 2-20 кГц

 

Каким образом правильнЕЕ организовывать задержки ?

(Win32API)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

double get_timer(){
  static LARGE_INTEGER f;
  if (f.QuadPart == 0)QueryPerformanceFrequency(&f);
  LARGE_INTEGER t;
  QueryPerformanceCounter(&t);
  return (double)t.QuadPart / (double)f.QuadPart;
}

void delay(double sec){
  sec += get_timer();
  while (get_timer() < sec);
}

только планировщик вмешиваться всё равно будет.

можно чуть улучшить, если задрать приоритет SetPriorityClass и отсадить в другое ядро SetProcessAffinityMask.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . . .

только планировщик вмешиваться всё равно будет.

можно чуть улучшить, если задрать приоритет SetPriorityClass и отсадить в другое ядро SetProcessAffinityMask.

 

Все Ok, накрутил на 10 кГц. Мне вполне достаточно.

То что планировщик отрабатывает нестрашно.

Спасибо.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...