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

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 27 сентября 2005 г. 11:06
В ответ на: 0xFF. Кто пишет под Винду? Просветите? отправлено <font color=gray>Tech</font> 27 сентября 2005 г. 06:57

Мне нужно было формировать импульс с интервалом порядка 100-1000мс, причем длительность импульса 0.1 - 50 мс с шагом 0.1с.
1.Сделал подзадачу (использовал клас TThread).
2.Поставил ей приоритет time_critical
3.На время паузы переводил ее в sleep(time_ms) на время меньше заданног на несколько ms, при этом она другим задачам не мешает.
4.Чтобы точно установить длительность импульса использовал функцию
QueryPerformanceCounter и QueryPerformanceFrequance (в 98-х она читает регистры таймера на плате, разрешение 1.2мкс, в новых - специальный счетчик внутри процессора.

Проверили в 98-х и 2000-ных на осциллографе - дрожание меньше 0.05мс.
Правда, если в это время обратиться к дискете - будут провалы, но чтобы не было пропусков сделать легко - если прошло больше времени вызвать несколько событий подряд.
Исходников сейчас под рукой нет, но написал все где-то за час.


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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru