
- •Содержание
- •Глава 9 блок таймеров
- •9.1 Краткий обзор
- •9.1.1 Сигналы и регистры tcu
- •9.2 Функционирование tcu
- •9.2.1 Режим 0 – Прерывание по отсчету уставки
- •Р исунок 9-4. Режим 0 - Запись новой уставки
- •9.2.2 Режим 1 - Аппаратно возобновляемый отсчет интервала.
- •9.2.3 Режим 2 - Генератор базового такта
- •9.2.4 Режим 3 – Прямоугольный имульс.
- •9.2.5 Режим 4 – Программная инициализация cтроба
- •9.2.6 Режим 5 - Аппаратная инициализация строба
- •9.3 Программирование
- •9.3.1 Конфигурирование входных и выходных сигналов
- •9.3.2 Инициализация таймеров
- •9.3.3. Запись в таймеры
- •9.3.4 Чтение таймера
- •9.3.4.1. Простое чтение
- •9.3.4.2. Команда защелки счетчика
- •9.3.4.3. Команда обратного чтения.
- •9.3.5 Предупреждения при программировании
9.3.4.3. Команда обратного чтения.
Используйте регистр TMRCON в формате обратного чтения (Рисунок 9-30), чтобы фиксировать значение счетчика и/или состояние одного или более таймеров. Фиксируйте состояние таймера для того, чтобы проверить, в каком режиме функционирования он был запрограммирован, формат уставки, выбор формата чтения/записи и определить, загружена ли в счетчик последняя уставка, записанная в регистр таймера.
Управление таймером (формат обратного считывания) Расширенный Адрес: F043H
TMRCON Адрес PC / АТ: 0043H
Состояние по сбросу: 00H
7 0
1 |
1 |
COUNT# |
STAT# |
|
CNT2 |
CNT1 |
CNT0 |
- |
Номер бита |
Обозначение бита |
Функция |
7-6 |
- |
Запишите единицы в эти биты, чтобы выбрать формат обратного считывания. 00, 01 и 10 не являются корректными опциями для TMRCON в формате обратного считывания |
5 |
COUNT# |
Защелка счетчика: обнуление этого бита запоминает счетчик для каждого выбранного таймера. Используйте биты 1-3, чтобы выбрать один или более таймеров. |
4 |
STAT# |
Защелка состояния: обнуление этого бита фиксирует состояние для каждого выбранного таймера. Используйте биты 1-3, чтобы выбрать один или более таймеров. |
3 |
CNT2 |
Выбор таймера 2: Если установлен этот бит, действия, предписываемые битами 4 и 5, относятся к таймеру 2. В противном случае, действия не относятся к таймеру 2. |
2 |
CNT1 |
Выбор таймера 1: Если установлен этот бит, действия, предписываемые битами 4 и 5, относятся к таймеру 1. В противном случае, действия не относятся к таймеру 1. |
1 |
CNT0 |
Выбор таймера 0: Если установлен этот бит, действия, предписываемые битами 4 и 5, относятся к таймеру 0. В противном случае, действия не относятся к таймеру 0 |
0 |
- |
Резервный. Этот бит не определен. |
Рисунок 9-30. Регистр управления таймера (Формат обратного считывания)
Команда обратного считывания может фиксировать значение счетчика и состояние нескольких таймеров. Одна эта команда функционально эквивалентна нескольким командам защелки счетчиков, каждая из которых запоминает значение одного счетчика. Для каждого таймера счетчик и состояние остаются зафиксированными до тех пор, пока они не будут прочитаны, или пока Вы не реконфигурируете таймер. Запирание значения счетчика или состояния таймера автоматически отменяется при чтении, но зафиксированные значения других таймеров остаются, запертыми до тех пор, пока они не будут прочитаны.
После фиксации состояния и значения счетчика таймера командой обратного считывания, чтение TMRn производится в формате состояния (Рисунок 9-31). Последующее чтение TMRn происходит в формате чтения. Если фиксируются и значение счетчика и состояние таймера, то первое чтение TMRn указывает состояние таймера, а следующие один или два (в зависимости от выбора формата чтения таймера) указывают значение счетчика таймера. Если запирается только счетчик таймера, то первые один или два чтения TMRn указывают счетчик таймера. Если таймер запрограммирован на выбор формата чтения с двумя байтами, Вы должны читать два байта.
Таймер n (Формат состояния) Расширенный Адрес: F040H, F041H
TMRn (n = 0-2) F042H
Адрес PC/АТ: 0040H, 0041H
0042H
Состояние по сбросу: XX
7 0
OUTPUT |
NULCNT |
RW1 |
RW0 |
M2 |
M1 |
M0 |
CNTFMT |
Номер бита |
Обозначе-ние бита |
Функция |
7 |
OUTPUT |
Состояние выхода: Этот бит указывает текущее состояние выходного сигнала таймера. 1 = OUTn высокий 0 = OUTn низкий |
6 |
NULCNT |
Состояние счетчика: Этот бит указывает загружена ли в счетчик последняя уставка, записанная в таймер. Некоторые режимы требуют наличия защелки перед тем, как загрузить в счетчик новую уставку 1 = Уставка записана в таймер, но еще не загружена в счетчик 0 = Последняя уставка, записанная в таймер, загружена в счетчик. |
5-4 |
RW1-0 |
Состояние выбора чтение/запись: Эти биты указывают на запрограммированный выбор формата чтение/запись таймера. 01 = чтение/запись только младшего байта 10 = чтение/запись только старшего байта 11= чтение/запись сначала младшего байта, а затем старшего байта |
3-1 |
M2-0 |
Режим: Эти биты указывают запрограммированный режим функционирования таймера. 000 = режим 0 001 = режим 1 X10 = режим 2 X11 = режим 3 100 = режим 4 101 = режим 5 X - безразлично. |
0 |
CNTFMT |
Состояние формата уставки: Этот бит указывает запрограммированный формат уставки таймера. 0 = двоичный (16 бит) 1 = двоично- десятичное число (4 цифры) |
Рисунок 9-31. Регистр n-го таймера ( Формат состояния )
Командой обратного считывания Вы можете одновременно фиксировать и значение счетчика и состояние одного или более таймеров. Функционально – это то же самое, что выдача двух отдельных команд обратного считывания. В этом случае, первая операция чтения регистра этого таймера возвращает зафиксированное состояние этого таймера, независимо от того, что запиралось первым. Следующие одно или два чтения (в зависимости от выбора чтения таймера) возвращает зафиксированное значение счетчика. Последующие чтения возвращают незафиксированное значение счетчика.
Когда таймер получает многократные команды обратного считывания, он игнорирует все, кроме первой команды; состояние/счетчик, которые читает CPU – это состояние/счетчик, зафиксированные первой командой обратного считывания (см. Таблицу 9-5).
Таблица 9-5. Результаты неоднократной выдачи команд обратного считывания без чтения
Последовательность команд |
Команда обратного считывания |
Результат выполнения команды |
1 |
Запирание счетчика и состояния для 0-го таймера |
Для 0-го таймера фиксируются значение счетчика и состояние |
2 |
Запирание состояния для 1-го таймера |
Для 1-го таймера фиксируется состояние |
3 |
Запирание состояния для 1-го и 2-го таймеров |
Для 2-го таймера фиксируется состояние. Для 1-го таймера команда запирания состояния игнорируется, т.к. она уже была выдана командой 2. |
4 |
Запирание счетчика для 2-го таймера |
Для 2-го таймера фиксируется значение счетчика. |
5 |
Запирание счетчика и состояния для 1-го таймера |
Для 1-го таймера фиксируется значение счетчика. Для 1-го таймера команда запирания состояния игнорируется, т.к. она уже была выдана командой 2. |
6 |
Запирание счетчика для 0-го таймера |
Для 0-го таймера команда запирания счетчика игнорируется, т.к. она была уже выдана командой 2. |