В ПЭВМ каналы таймера имеют следующее назначение:
Канал 0 - системные часы (IRQ0), режим 3, счетчик n=0 (65536)
Тактовая частота каждого канала равна 1,19318 МГц, т.е. каждый такт имеет длительность 0,84 мксек.
Вход GATE канала 0 всегда имеет высокий уровень, поэтому счет на этом канале разрешен всегда.
При начальной загрузке BIOS инициализирует этот канал для работы в режиме 3 со счетчиком 0 (т.е. 65536 декрементов на цикл счета).
Поэтому частота системных часов равна 1193182 / 65536 = 18.2 Гц, а сигнал на выходе канала 0 – Out 0, воспринимаемый контроллером прерываний, как сигнал прерывания IRQ0, инициирует вектор прерывания Int8 18,2 раз в секунду (т.е. каждые 55 мсек).
Канал 1 - Регенерация памяти, режим 2, значение счетчика n = 18.
Вход GATE канала 1 также, как и канала 0 всегда имеет высокий уровень, поэтому счет на этом канале также разрешен всегда.
Выход счетчика связан со входом DRQ0 контроллера прямого доступа к памяти на захват канала 0 в режиме блочного приема-передачи данных из памяти в память.
Сигнал DRQ0 имеет приоритет над другими запросами прямого доступа к памяти.
|
|
Сигнал GATE представляет собой подтверждение контроллера прямого доступа к памяти на захват канала 0 – DACK0
Канал 1 работает в режиме 2 со счетчиком 18, поэтому регенерация памяти происходит каждые 18 мксек или 66288 раз в секунду.
Перепрограммировать счетчик канала 1 не рекомендуется, т.к. это приведет к потере данных в ОЗУ и зависанию ПЭВМ.
Канал 2 - генератор звука системного динамика или другое назначение пользователя (например, генерация псевдослучайных чисел), режим 3, значение счетчика n задается пользователем при программировании.
При генерации звука значение счетчика n канала 2 вычисляется по формуле n = 1193181 / f, где f - требуемая частота звука в герцах.
Системный таймер имеет следующие программно доступные регистры:
Адрес порта Операция Назначение
0040h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0
0041h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1
0042h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2
0043h запись Запись управляющего слова
в регистр режима канала
Программирование канала осуществляется путем ввода управляющих слов в регистр режима каналов и начального значения в его счетчики.
Назначение битов управляющего слова показано на следующем экране.
Существует два способа чтения текущего значения счетчика канала.
1. Чтение с остановом счетчика. Для обеспечения стабильных показаний необходимо приостановить работу канала либо подачей сигнала низкого уровня на вход GATE (кроме режима 1), либо блокированием тактовых импульсов.
|
|
2. Чтение "на лету ". Для считывания счетчика без остановки процесса счета используется посылка в порт 43h управляющего слова в режиме "защелкивания". Это управляющее слово фиксирует текущее значение счетчика в буфере, а затем считывается младший байт, потом старший.
Управляющее слово имеет следующий формат:
в порт 43h
бит 0 – режим кодирования значения n
0 - двоичный код, 1 - двоично-десятичный код
биты 1-3 - режим работы канала:
000 - режим 0; 001 - режим 1; X10 - режим 2; X11 - режим 3; 100 - режим 4
101 - режим 5
биты 4-5 - вид загрузки и чтения счетчика:
00 - "защелкивание" (биты 0-3 безразличны);01 - только младший байт
10 - только старший байт; 11 - младший байт, затем старший
биты 6-7 - номер канала:
00 - канал 0; 01 - канал 1; 10 - канал 2; 11 – запрещенная комбинация