- •Тема 6 порты ввода/вывода и периферийные устройства
- •6.1 Порты ввода/вывода
- •6.3. Перезагружаемый таймер/счётчик
- •6.4.3. Модуль захвата входных событий
- •6.5. Программируемый генератор импульсов
- •6.6. Модуль звукового генератора
- •6.7. Модуль управления шаговым двигателем
- •6 .8. Модуль аналого-цифрового преобразователя
- •6.9. Система прерываний микроконтроллера
- •6.9.1. Аппаратные прерывания
- •6.9.2. Прерывания по сервису ei2os
- •6.9.3 Внешние прерывания
6.3. Перезагружаемый таймер/счётчик
Модуль перезагружаемого таймера содержит 16-битный вычитающий счётчик, 16-битный регистр перезагрузки и регистр управления.
На вывод TIN, в зависимости от режима, могут подаваться тактовые импульсы, импульс запуска счетчика или сигнал приостановки счёта. На внешнем выводе ТOUT формируются прямоугольные импульсы с полупериодом, равным длительности одного цикла счёта.
Бит CNTE разрешает работу перезагружаемого таймера. Запуск счетчика выполняется программно, установкой бита TRG регистра управления, либо внешним сигналом с входа TIN.
На вход счетчика могут подаваться тактовые импульсы с частотой, кратной частоте машинного цикла (f/2, f/8, f/32), или импульсы с вывода TIN. В последнем случае модуль может использоваться для подсчёта числа внешних событий. В качестве событий рассматривается появление переднего фронта положительного импульса на входе, появление заднего фронта, или появление любого фронта импульса на входе TIN. Тип детектируемого события определяется битами MOD1 и MOD0.
При обратном переполнении счетчика устанавливается флаг UF и происходит перезагрузка счетчика содержимым регистра перезагрузки (если установлен бит RELD). При установленном бите разрешения прерывания INTE генерируется запрос прерывания.
Для подключения модуля к внешнему выводу TOT нужно установить бит OUTE. В режиме перезагрузки (RELD=1) значение на выводе будет инвертироваться после каждой перезагрузки. Начальное значение выхода TOT задаётся битом OUTL. В режиме однократного счёта (RELD=0) после запуске счётчика значение выхода инвертируется и не меняется во время счёта. После обратного переполнения выход возвращается в исходное состояние.
В функции затвора (только при внутреннем тактировании) активный уровень сигнала TIN разрешает счёт.
Внутреннее тактирование
Функции TIN (Внутреннее тактирование).
-Запуск
Функции TIN (Внутреннее тактирование).
-Затвор
Функции перезагрузки
Функции TOT (OUTE=1)
6.4. Таймер ввода/вывода
Таймер ввода/вывода объединяет 16-битный таймер/счётчик, модуль выходных компараторов и модуль захвата внешних событий.
6.4.1. Таймер/счётчик.
На вход счетчика, через пределитель (:4, :16, :64, :256), подаются тактовые импульсы с частотой f.
Счетчик обнуляется программно (установка бита CLR), при переполнении или при совпадении содержимого счетчика с «регистром сравнения 0» (установка бита MODE=1). При обнулении счетчика устанавливается флаг запроса прерывания.
Таймер может быть программно остановлен (установка бита STOP). В состоянии останова счетчик может быть установлен в произвольное состояние записью 16-разрядного слова.
6.4.2. Модуль выходного компаратора
Модуль выходного компаратора объединяет два выходных канала и включает два 16-битных «регистра сравнения 0, 1» и два регистра управления.
При совпадении текущего значения счётчика/таймера и содержимого регистра сравнения происходит инвертирование состояния выхода канала. Модуль может генерировать два запроса прерывания, при совпадении текущего значения счётчика/таймера и содержимого регистров сравнения.
В ыход канала 1 может управляться обоими регистрами совпадения. При этом инвертирование выхода будет происходить при совпадении таймера/счётчика с любым регистром. Для установки совместной работы регистров нужно установить бит CMOD.