----
Есть простая задача реализовать на базе LPT интерфейс SPI методом ногодрыга.
Все в общем-то работает, но вопрос в организации временных задержек.
Код
while // небольшая частота - сотни - тысячи Гц
{ _outp(0x378, 0x00);
Sleep(1);
_outp(0x378, 0xFF);
Sleep(1);
}
{ _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)
{
_outp(0x378, 0x00);
_asm { nop };
_asm { nop };
_asm { nop };
_outp(0x378, 0xFF);
_asm { nop };
_asm { nop };
_asm { nop };
}
(понятно, что в этот цикл периодически вмешивается планировщик OS)
(?) реализация задержек на _asm { nop } не по феншую.
Меня бы устроила скорость ногодрыга 2-20 кГц
Каким образом правильнЕЕ организовывать задержки ?
(Win32API)