6.7. Квадратурный декодер
В систему событий входит три квадратурных декодера (QDEC). С их помощью система событий может декодировать квадратурный вход на линиях ввода-вывода и отправлять информационные события таймеру-счетчику, который после его дешифрации выполнить соответствующее действие события: инкрементирование счетчика, декрементирование счетчика или индекс/сброс. В таблице 6.2 показано, какие информационные события квадратурного декодера доступны, как их дешифрировать и генерировать. Квадратурные декодеры и связанные с ними возможности, регистры статуса и управления доступны в каналах событий 0, 2 и 4.
Таблица 6.2. Информационные события квадратурного декодера
STROBE |
DATA |
Получатель информационного события |
Получатель сигнального события |
0 |
0 |
Нет события |
Нет события |
0 |
1 |
Индекс/сброс |
Нет события |
1 |
0 |
Декрементир. счетчика |
Сигнальное событие |
1 |
1 |
Инкрементир. счетчика |
Сигнальное событие |
6.7.1. Работа квадратурного декодера
Квадратурные сигналы - это два сигнала со сдвинутыми по отношению друг к другу на 90° прямоугольными импульсами. Счетом фронтов любого из этих сигналов можно контролировать угловое движение, а по соотношению фаз сигналов - направление вращения.
Рисунок 6.4. Квадратурные сигналы углового энкодера
На рисунке 6.4 показаны типичные квадратурные сигналы углового энкодера. Сигналы QDPH0 и QDPH90 - два квадратурных сигнала. Когда QDPH90 опережает QDPH0, вращение считается в прямом направлении. Если же QDPH0 опережает QDPH90, то вращение считается в обратном (реверсном) направлении. Последовательность состояний двух различающихся по фазе сигналов называется квадратурным состоянием или фазовым состоянием.
Чтобы определить абсолютную величину углового движения можно использовать третий, индексный сигнал (QDINDX), который сигнализирует о выполнении каждого оборота.
6.7.2. Настройка квадратурного декодера
Для полной настройки QDEC необходимо выполнить следующее:
- Линии портов ввода-вывода - вход квадратурного сигнала
- Система событий - квадратурная дешифрация
- Таймер-счетчик - счет вперед, назад и опциональный индексный счет
Для настройки QDEC необходимо выполнить следующие процедуры:
- Выбрать два соседних вывода порта в качестве входов QDEC.
- Указать, что выводы QDPH0 и QDPH90 являются входами.
- Настроить выводы QDPH0 и QDPH90 на обнаружение низкого уровня.
- Выбрать вывод QDPH0 в качестве входа мультиплексора канала событий n.
- Разрешить квадратурную дешифрацию и цифровую фильтрацию в канале события.
- Опционально:
- Настроить индексный вход QDEC (QINDX).
- Выбрать третий, индексный, вход QINDX.
- Указать, что QINDX является входом.
- Настроить вывод QINDX на обнаружение обоих фронтов.
- Выбрать QINDX в качестве входа мультиплексора канала событий n+1
- Установить бит разрешения квадратурного индекса в канале событий n+1.
- Выбрать режим распознавания индекса в канале событий n+1.
- Указать, что квадратурная дешифрация является действием события для таймера-счетчика.
- Выбрать таймер-счетчик источником событий для канала событий n.
- Настроить регистр периода таймера-счетчика равным ('число меток' * 4 - 1), где число меток - параметр квадратурного энкодера.
- Разрешить работу таймера-счетчика настройкой бит CLKSEL в регистре CLKSEL_DIV1.
В результате, величину углового перемещения квадратурного энкодера, генерирующего сигналы QDPH0, QDPH90 (и QINDX) можно будет считать непосредственно из счетного регистра таймера-счетчика. Если значение в счетном регистре отличается от значения BOTTOM, по которому распознается индекс, устанавливается флаг ошибки таймера-счетчика. Аналогичным образом, установка флага ошибки происходит, если счетчик положения пересекает значение BOTTOM без распознавания индекса.
|