ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.04.2025
Просмотров: 396
Скачиваний: 1
Формат команды чтение состояния таймера RBC:
Номер |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Значение |
1 |
1 |
⌐Count |
⌐Status |
CNT2 |
CNT1 |
CNT0 |
0 |
Биты:
-7,6 - код команды чтение состояния RBC,
-⌐ Count - указывает, должны ли защелкиваться выходные регистры счетчиков: 0/1 – защелкнуть / не защелкивать,
-⌐ Status - определяет необходимость защелкивания выходных регистров состояния: 0/1 – защелкнуть / не защелкивать,
-CNT2, CNT1, CNT0 - задают каналы таймера, для которых выполняется защелкивание выходных регистров: 1/0 – выполнить / не выполнять операцию.
Внутренний регистр состояния SR (Status Register), хранит режим работы канала таймера, состояние выхода OUT и состояние счетчика. Регистр 8 разрядный, для ЦП не доступен.
Выходной регистр состояния SL (Status Latch), 8 разрядный,
процессору доступен для чтения, предназначен для чтения текущего состояния таймера (только в Intel 8254). Информация из SR может переписываться в SL по команде чтение состояния таймера RBC. Формат байта состояния канала (только в Intel 8254):
Номер |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Значение |
OUT |
Count |
RW |
Mode |
BCD |
||||
Биты:
-OUT – определяет состояние выхода канала таймера: 1/0 – высокий/низкий уровень.
-Count – описывает состояние счетчика: 0/1 – выходной регистр счетчика отражает текущее значение счетного элемента канала / неопределенное состояние (например, когда счет в канале не выполняется).
-Остальные биты – аналогичны соответствующим битам, задаваемым в управляющем байте при инициализации канала.
Входной регистр счетчика CR (Count Register), 16 разрядный,
доступен ЦП для записи, предназначен для хранения начального значения счетчика канала – константы пересчета. Содержимое CR может загружаться в CE для счета, если это требуется в текущем режиме работы таймера.
Счетный элемент CE (Counting Element) 16 разрядов, процессору не доступен, работает в режиме вычитания. Содержимое СЕ уменьшается по заднему фронту сигнала CKL при условии, что на входе GATE установлен уровень логической 1. Счетный элемент CE может загружаться из входного регистра счетчика CR и считываться посредством передачи его содержимого в выходной регистр счетчика OL. В зависимости от режима
28
работы ПИТ, при достижении счетным элементом нуля тем или иным образом изменяется выходной сигнал OUT.
Выходной регистр счетчика OL (Output Latch), 16 разрядный,
всегда доступен ЦП для чтения, сопровождает счетный элемент при работе канала. Выходной регистр счетчика может использоваться для запоминания текущего содержимого счетного элемента CE без остановки процесса счета.
Режимы работы таймера разделяются на три группы по правилам загрузки счетного элемента CE содержимым входного регистра счетчика CR.
1) Режимы 0, 4 - однократное выполнение функций.
При GATE=1 константы из CR передаются в CE по первому тактовому импульсу CLK. С приходом последующих импульсов на вход CLK происходит уменьшение содержимого CE. Если во время счета на вход GATE подать 0, то это приведет к останову счета. Новый положительный сигнал GATE (не вызывает перезагрузку счетного элемента, а только) разрешает продолжение счета. По окончании счета выполнение действий заканчивается. При необходимости повторения функции требуется новое программирование – загрузка новой константы пересчета. После достижения нулевого значения счет не прекращается, а продолжается с переходом через 0 (т.е. 65535) Далее содержимое счетчика уменьшается на 1 на каждом такте CLK.
2) Режимы 1, 5 - работа с перезапуском.
Для них характерна возможность повторения запрограммированных функций без перепрограммирования. Загруженная константа сохраняется в CR, а ее передача в CE осуществляется по переднему фронту сигнала на входе GATE независимо от завершения счета. После загрузки управляющего слова CBR на выходе OUT устанавливается высокий уровень сигнала OUT=1. Загрузка константы в счетный элемент CE выполнится при положительном фронте сигнала на входе GATE . Каждый фронт сигнала на входе GATE приводит к загрузке счетного элемента CE из входного регистра CR.
3) Режимы 2, 3 - работа с автозагрузкой.
Здесь регистр CR автоматически переписывается в регистр CE после завершения счета. Эти режимы используются для создания импульсных генераторов и генераторов меандра. При GATE=1 на выходе OUT формируются импульсы: частотой FOUT = FCLK / N, или, соответственно, с периодом TOUT = TCLK*N.
29
При GATE=0 на выходе OUT устанавливается напряжение высокого уровня и счет приостанавливается. При GATE=1 счет продолжается. Перезагрузка канала новой константой не влияет на текущий счет. Новый счет начинается по окончании предыдущего.
Управление ПИТ включает:
1.Инициализацию одного или нескольких каналов.
2.Чтение текущего значения счетного элемента канала таймера.
3.Чтение состояния таймера (только Intel 8254).
Инициализация ПИТ включает:
-Запись управляющих байтов, определяющих режимы работы каналов, в регистр управляющего байта CBR.
-Запись констант пересчета во входные регистры счетчиков CR. Управляющие слова загружаются в один тот же регистр CBR. Адрес
канала указывается в самом формате управляющего байта. Управляющие слова каналов сохраняются во все время работы до следующего программирования. Константа пересчета может быть задана одним байтом (младшим или старшим) или 16-разрядным словом, как определено в поле RW управляющего байта. Константа пересчета загружается во входной регистр счетчика CR выбранного канала. В процессе работы канала константа пересчета может загружаться многократно, если это необходимо по условиям функционирования канала.
Общие обязательные требования при инициализации канала:
1.Загрузка регистра управляющего байта CBR должна опережать загрузку константы пересчета.
2.Загрузка константы пересчета во входной регистр счетчика CR всегда
должна выполняться до конца, как это определено полем RW.
Сразу после инициализации канала, таймер начнет выполнять заданную функцию.
Чтение текущего значения счетного элемента CE.
Существуют следующие варианты чтения содержимого счетного элемента. В процессе работы ПИТ внутренний счетный элемент CE любого канала отображается в выходной регистр счетчика OL. Это означает, что содержимое выходного регистра счетчика идентично содержимому внутреннего счетного элемента. Выходной регистр счетчика можно читать в любой момент времени. При таком чтении считывается младший байт счетчика, либо старший байт (если константа задана в виде одного байта), либо сначала младший, а затем старший байты (если константа задана в виде 16-и разрядного слова), как это определено режимом чтения-записи, указанном в управляющем байте канала при его инициализации.
30
Необходимо, помнить, что операция чтения должна быть выполнена до конца. Такой метод чтения счетного элемента канала не считается корректным, т.к. значения младшего и старшего байта счетчика, считываются в разные моменты времени и могут быть рассогласованы между собой.
Рекомендуется, следующие способы чтения счетчика канала таймера: 1) Приостановка работы канала с помощью сигнала GATE=0 и
считывание значения выходного регистра счетчика OL.
2) Чтение по команде CLO ("Защелка") позволяет прочитать состояние CE в любой момент времени без остановки счета.
После загрузки команды CLO "Защелка", операция чтения выполняется так же, как в предыдущем случае. Фактически команда CLO защелкивает выходной регистр счетчика OL и он перестает сопровождать счетный элемент. Выходной регистр счетчика OL остается в таком состоянии до тех пор, пока не будет считан или пока соответствующий канал не будет перепрограммирован. Информация из OL может быть считана в любое время. Сразу после чтения выходного регистра счетчика (одного или двух байтов), регистр автоматически расщелкивается, т.е. возвращается в состояние сопровождения внутреннего счетного элемента.
Чтение состояния таймера (только Intel 8254).
Команда позволяет прочитать следующие параметры любого канала или нескольких каналов: текущее значение регистра состояния SR, из выходного регистра состояния SL и текущее значение счетного элемента CE (еще один вариант чтения счетного элемента) из выходного регистра счетчика.
При выполнении команды чтения состояния (табл. 3.4), содержимое внутреннего регистра состояния SR заносится в выходной регистр состояния SL, а значение счетного элемента защелкивается в выходном регистре счетчика OL. Команда чтения состояния может быть выполнена для нескольких каналов одновременно.
Пример: Запись в регистр управляющего байта (табл. 3.4.) значения CEh (11001110) – защелкивает выходные регистры счетчиков и выходные регистры состояния всех каналов.
Сразу после записи в регистр управляющего байта команды чтения состояния RBC для каждого из указанных каналов таймера выполняются следующие действия:
-в выходные регистры состояния каналов заносится информация о состоянии каналов;
-в выходных регистрах счетчиков защелкиваются текущие значения счетных элементов.
Выходные регистры канала остаются в таком состоянии до тех пор, пока не будут считаны или пока соответствующий канал не будет
31
перепрограммирован.
Считывание выполняется из адреса регистра канала. Сначала считывается значение из выходного регистра состояния (если было запрошено чтение состояния), а затем из выходного регистра счетчика (если было запрошено защелкивание этого регистра).
3.4. Системный таймер ЭВМ семейства IBM PC
ВЭВМ семейства IBM PC в качестве системного таймера применена микросхема Intel 8254 (рис. 3.3).
“1” |
Адрес 40h |
||||||||||||||||||||||||
GATE 0 |
|||||||||||||||||||||||||
Генератор |
CNT 0 |
OUT 0 На вход IR0 |
|||||||||||||||||||||||
1.193182 МГц |
CLK0 |
CLK0 |
|||||||||||||||||||||||
GATE 1 |
Адрес 41h |
||||||||||||||||||||||||
CNT 1 |
OUT 1 Регенерация ОЗУ |
||||||||||||||||||||||||
CLK 1 |
|||||||||||||||||||||||||
CLK 2 |
Адрес 42h |
OUT 2 |
|||||||||||||||||||||||
GATE 2 |
CNT 2 |
||||||||||||||||||||||||
61h |
|||||||||||||||||||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||||||||||||||||||
Управляющий |
регистр |
||||||||||||||||||||||||
Рис. 3.3. Схема включения ПИТ Intel 8254 в ЭВМ семейства IBM PC
Базовый адрес ПИТ в пространстве адресов ввода-вывода ЭВМ равен 40h. Адреса регистров каналов ПИТ принимают значения: 40h – канал 0 , 41h – канал 1, 42h – канал 2, 43h – CBR.
Входы CLK всех каналов подсоединены к выходу генератора импульсов F=1,193182 МГц, на входы GATE каналов 0 и 1 подан разрешающий потенциал – разрешен счет.
Выход OUT нулевого канала соединен с линией IRO программируемого контроллера прерываний и вырабатывает прерывание таймера (номер типа прерывания 8). При инициализации канала он программируется BIOS для работы в режиме 3 (или 2) с двухбайтовым начальным значением счетчика равным N=0. При таком режиме период таймера составляет Т0 ~55мс.
Канал 0 таймера используется для отсчета текущего времени в системных часах времени суток, а также для синхронизации некоторых дисковых операций.
32