Делается это примерно так...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено MIKE_ 23 октября 2004 г. 19:01
В ответ на: Как в писишке считать время с точностью выше чем 0.01 сек? отправлено колян безпарольныи 23 октября 2004 г. 02:11

Программируется канал 2 таймера в режим 3 и грузится к-либо делителем X:

outportb(0x43,0xb6);
outportb(0x42,X);
outportb(0x42,X>>8);

Разрешается счет импульсов:

outportb(0x61,inportb(0x61)|1);

После этих мероприятий счетчик начинает крутиться от X до 0 с частотой 1193180*2 Гц, а при достижении 0 снова грузит в себя X и продолжает считать. Соответственно для измерения интервала необходимо считать значения счетчика в начале и конце интервала и отследить все переходы через 0 в промежутках.
Для считывания применяется такая последовательность:

outportb(0x43,0x80);
Y= inportb(0x42); // младший байт
Y+=((unsigned int)inportb(0x42))<<8; // старший байт

Каналы 0 и 1 лучше не трогать, ими система пользуется.

Литература: Библиотека системного программиста, том 2,
А.В.Фролов, Г.В.Фролов. Аппаратное обеспечение IBM PC
в сети где-то есть.


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

Ответы



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

E-mail: info@telesys.ru