Программирование таймера

в начало

После включения питания состояние таймера неопределенное. Режим работы каждого счетчика определяется при его программировании. Каждый счетчик должен быть запрограммирован, прежде чем он будет использоваться. Неиспользуемые счетчики не нуждаются в программировании.

При программировании счетчика сначала записывается управляющее слово, а затем константа счета (рисунок 4.4).

Рис.4.4. Формат управляющего слова

Запись управляющего слова происходит при записи в порт 43 (A1, A0=11), а запись констант счета в каналы 0, 1, 2 - при записи в порты 40, 41, 42 (A1, A0=00, 01, 10) соответственно при активных сигналах CS и VR (CS=0, VR=0).

Процедура программирования таймера очень гибкая. Необходимо запомнить два правила:

1) в каждый счетчик управляющее слово должно быть записано перед загрузкой счета;

2) счетчик должен загружаться тем количеством байтов значения счета, которое указано в управляющем слове (младший байт, старший байт, младший байт и старший байты). Так как RCW каждого канала имеет свой адрес (SC1, SC0) и загружаемый в CVR код хранится до следующего программирования, то не требуется специальной последовательности программирования. Приемлема любая последовательность, следующая приведенным выше правилам.

Новая константа счета может быть записана в счетчик в любой момент времени и должна соответствовать запрограммированному формату счета. Следует помнить, что при записи констант счета они поступают в CR, а непосредственно в счетчик попадают по входному сигналу GATE.

Если счетчик запрограммирован для чтения/записи двух байтов счета, программа загрузки не должна передавать управление между записью первого и второго байтов другой программе, которая тоже записывает данные в этот счетчик.

В следующей таблице приведены операции, выполняемые при различных комбинациях на входах CS, RD, VR, A0, A1 таймера.

Таблица 4.1.

 

Часто желательно читать содержимое счетчика без нарушения процесса счета. Имеется три метода чтения счетчиков:

1) Простое чтение. Этот метод чтения счётчика реализуется простой операцией чтения. При чтении счетчика , выбираемого А1, А0, работа счетчика должна быть приостановлена подачей GATE=0 либо внешним логическим устройством, блокирующим подачу CLK на выбранный счетчик. В противном случае счет может быть изменен в процессе чтения и его результат будет неопределенным.

2) Чтение "на лету" командой CLC (защелкивание содержимого счетчиков). Формат управляющего слова соответствующей команды показан на следующем рисунке.

Рис.4.5. Формат команды CLC-чтение «на лету»

Эта команда позволяет прочитать текущее значение счетчика в любой момент времени без останова счета. Команда "Чтение" на лету" не влияет на содержимое регистра RCW. При выполнении этой команды текущее значение счета защелкивается в выходной защелке OL и находится там до начала выполнения первой команды считывания этого счетчика.

Адрес защелкиваемого счетчика определяется разрядами SC1, SC0 команды. Если в таймер поступает несколько команд "Чтение "на лету" для одного и того же счетчика без последующих считываний, то результатом чтения будет счет, защелкнутый первой командой "Чтение "на лету".

При любом методе значение счета должно читаться согласно формату программирования: если счетчик программируется на два байта считывания, два байта и должны быть прочитаны. Необходимо помнить, что если операция считывания выполнена не до конца, новая команда "Чтение "на лету" не воспринимается, а пока константа счета не загружена в CE, она не может быть прочитана. Два байта не обязательно считывать сразу один за другим, между их считываниями могут быть выполнены операции чтения или записи других счетчиков.

Другая особенность таймера: чтение может прерываться записью в тот же счетчик. Например, если счетчик программируется на два байта счета, возможна следующая последовательность:

1) читать младший байт,

2) записать новый младший байт,

3) читать старший байт

4) записать новый старший бай.

 

3) Обратное чтение командой RBC (защелкивание содержимого счетчиков и/или RSTAT). Этот метод предполагает использование команды RBC - "Обратное чтение". Формат управляющего слова для этой команды показан на следующем рисунке.

Рис.4.6. Формат команды RBC - "Обратное чтение"

По этой команде могут выполняться две операции: защелкивание текущего значения счетчика (ов) и/или защелкивание текущего значения RS канала (ов). Эти операции выполняются либо независимо, либо совмещаются.

Эта команда эквивалентна нескольким командам "Чтение "на лету" CLC (по одной на каждый счетчик).

При COUNT=0 содержимое счетчика (ов) защелкивается в OL и сохраняется там до его считывания или перепрограммирования. Считываемый счетчик автоматически "отщелкивается", когда будет полностью прочитан, но другие счетчики остаются защелкнутыми, пока не будут прочитаны.

При STATUS=0 содержимое RS указанного канала (ов) защелкивается в STATL и сохраняется там до его считывания. Если до считывания в таймере поступит еще одна или несколько команд "Обратное чтение" для защелкивания RS, они будут игнорироваться, пока не будет прочитано состояние таймера по первой команде "Обратное чтение". Формат RS показан на следующем рисунке:

Рис.4.7. Формат регистра состояния RS

Разряды D5-D0 соответствуют текущему значению регистра CVR, разряд D7 (OUT) - текущему состоянию выхода OUT, разряд D6 (NULL COUNT)индуцирует, произошла загрузка константы счета из CR в CE или нет. Если NULL COUNT=0 , то это означает, что ранее загруженная в CR константа передана в CE. В этом случае можно выполнить загрузку новой константы, не нарушая счета. Изменение NULL COUNT при работе и программировании показано в следующей таблице.

Таблица 4.2. Изменение состояния NULL COUNT

 

Счет и состояние выбранного счетчика (ков) могут быть одновременно защёлкнуты при COUNT=0 и STATUS=0. Это функционально то же самое, что и выполнение двух команд "Обратное чтение" последовательно одна за другой.

Если счет и состояние счетчика защелкнуты, по первой операции чтения будет считываться защелкнутое состояние счетчика независимо оттого, что защелкнуто первым. Следующие одна или две операции (один или два байта счета) реализуют считывание защелкнутого счета.