MSB LSB
- | ЕСОМn | САРРn | CAPNn | МАТn | TOGn | PWMn | ECCFn |
Бит | Поз. | Функция присвоения приоритета прерывания |
- | ССАРМn.7 | Зарезервирован для дальнейшего использования |
ЕСОМn | ССАРМn.6 | ЕСОМn=1 разрешение компаратора (функции сравнения) |
САРРn | ССАРМn.5 | САРРn=1 разрешает сравнение по положит. фронту |
CAPNn | ССАРМn.4 | CAPNn=1 разрешает сравнение по отрицат. фронту |
МАТn | ССАРМn.3 | Равенство. Когда МАТn=1, при равенстве счётчика РСА и соответствующего эегистра хранения/фиксации, устанавливается флаг прерывания CCF |
TOGn | ССАРМn.2 | Переключение. При TOGn=1 равенство счётчика РСА и соответствующего регистра хранения/фиксации вызывает изменение уровня на соответствующем выводе СЕХп |
PWMn | ССАРМn.1 | Режим широтно-импульсного модулятора. При PWM=1 происходит выдача модулированного сигнала на вывод СЕХn |
ECCFn | ССАРМn.0 | Разрешение прерывания по флагу CCF. При ECCFn=1 разрешается генерация прерывания по флагу CCFn регистра CCON. |
Рис. 2.19. Регистр управления PCA
Каждый модуль имеет пару байтных регистров сравнения/фиксации - ССАРnН (старший байт) и CCAPnL (младший байт). В данных регистрах происходит фиксация значения счётчика при наступлении события, соответствующего режиму работы модуля. В режиме "широтно-импульсного модулятора" (PWM) регистр ССАРпН управляет циклом выдачи импульсов. PCA имеет 5 режимов работы модулей (табл. 2.6).
Режимы работы модулей сравнения/фиксации
Таблица 2.6
- | ЕCОМn | CAPPn | CAPNn | МАТn | TOGn | PWMn | ECCFn | Функция модуля |
х | Операций нет | |||||||
х | Х | Х | 16-битная фиксация по положительному фронту СЕХn | |||||
х | Х | Х | 16-битная фиксация по отрицательному фронту СЕХn | |||||
х | X | Х | 16-битная фикцация по изменению состояния СЕХn | |||||
х | Х | 16-битный программный таймер | ||||||
х | Х | 16-битный высокоскоростной выход | ||||||
х | 8-битовый широтно-имлульсный модулятор | |||||||
х | X | Х | сторожевой таймер |
16-битный режим фиксации.
Фиксация содержимого РСА может происходить как по отрицательному, так и по положительному фронту (рис. 2.20), что делает РСА весьма гибким средством для измерения периодов, ширины импульсов, разности фаз и многого другого - сразу по 5-ти каналам. Установка битов CAPPn и/или CAPNn в соответствующем регистре ССАРМn влияет на выбор типа перепада (положительного или отрицательного) сигнала на входе СЕХ0n, по которому происходит фиксация значения счётчика. При определении на вышеуказанном выводе модуля РСА заданного перепада (отрицательного, положительного, либо и того и другого), 16-битное значение счётчика РСА (регистры CH/CL) аппаратно загружается в регистр хранения/фиксации CCAPnH/CCAPnL. Оно отражает состояние таймера/счётчика РСА в момент перепада.
Рис. 2.20. 16-битный режим фиксации РСА
После фиксации значения таймера в регистре происходит установка флага события модуля CCFn. Если установлен бит ECCFn регистра ССАРМn, то данный флаг может использоваться для генерации прерывания от РСА (если разрешено регистром IЕ). Произошедшее прерывание не очищает данный флаг, это должно делаться программно. В процессе обработки прерывания по фиксации значения, оно, естественно, должно быть сохранено в ОЗУ до прихода следующего момента "фиксации".
Режим 16-битного программного таймера
В режиме сравнения 16-битное значение таймера РСА сравнивается с 16-битным значением, предварительно загруженным в регистры хранения/фиксации ССАРnН и CCAPnL. Это сравнение производится 3 раза за машинный цикл (с частотой, эквивалентной максимальной входной, т.е 1/4 частоты тактового генератора). Данная функция включается установкой бита ЕСОМn в регистре режима. Функциональная схема работы модуля РСА в этом режиме изображена на рис. 2.21.
Для режима программного таймера необходимо также установить и бит МАТn. При достижении равенства между таймером РСА и соответствующими регистрами CCAPnH/CCAPnL генерируется флаг события CCFn. При установлении флага прерывания ECCFn производится генерация прерывания от РСА. Флаг CCFn должен очищаться программно до возможного наступления следующего активного события.
Во время процедуры обработки прерывания в регистры CCAPnH/CCAPnL могут быть записаны новые значения. Отметим, однако, что запись нового значения в регистр CCAPnL очищает бит ЕСОМn, временно запрещая функцию сравнения с целью недопущения неверного результата сравнения при обновлении этого регистра. Запись значения снова устанавливает данный бит и разрешает сравнение. На основании вышесказанного, пользовательское программное обеспечение должно вначале производить запись в регистр CCAPnL, а затем - в ССАРnН.
Рис. 2.21. 16-битный режим сравнения: программный таймер и высокоскоростной выход
Высокоскоростной выход - HSO
В случае равенства значений таймера РСА и соответствующего регистра хранения/фиксации происходит изменение состояния СЕХn. Для переключения модуля в этот режим, помимо битов МАТn и ЕСОМn, должен быть установлен бит TOGn (Рис. 27). Как и в предыдущем режиме установка флага прерывания может быть разрешена установкой в "1" бита ECCFn. Инициирование прерывания происходит только после изменения состояния вывода СЕХn. Поэтому продолжительность выполнения процедуры обработки прерывания не влияет на точность выходного сигнала. Если пользовательская программа не изменяла значение регистров CCAPnH/CCAPnL во время обработки прерывания новое переключение произойдет после переполнения таймера РСА и достижения нового равенства со старым значением регистров хранения/фиксации.
Режим сторожевого таймера (рис. 2.22)
Сторожевой таймер предназначен для автоматического сброса системы в случае, если она не производит регулярных обращений к нему с целью изменения его значения. Эта функция применяется в программах, функционирующих в условиях электрических помех, электростатических наводок и требующих повышенной надёжности работы микроконтроллера. Данный режим доступен лишь для модуля 4. В этом режиме каждый раз, когда значения таймера РСА и регистра хранения/фиксации модуля 4 достигают равенства, генерируется сигнал внутреннего сброса процессора. Для включения режима WDT необходимо установить бит WDTE CMOD.6. Модуль 4 может быть сконфигурирован как программный таймер или HSO.
Когда сторожевой таймер достигает своего граничного значения, он сбрасывает микроконтроллер точно так же, как и сигнал аппаратного сброса, за исключением того, что вывод RST остаётся в состоянии логической "1".
Для недопущения сброса микроконтроллера требуется произвести одно из следующих 3-х действий:
периодически менять значение регистров хранения/фиксации модуля 4, чтобы оно не стало равно значению таймера РСА;
периодически изменять значение таймера РСА, чтобы оно не стало равно значению регистров хранения/фиксации модуля 4;
запретить WDT путём очистки бита WDTE непосредственно перед наступлением события равенства значений, а позже - вновь разрешить данную функцию.
Рис. 2.22. Режим сторожевого таймера
Первые 2 способа - предпочтительные по сравнению с 3-м способом. Второй способ не рекомендуется в том случае, если в работе используются остальные модули РСА (поскольку в этом случае для всех модулей существует единственный таймер, значение которого не должно изменяться произвольно). Таким образом, в большинстве случаев наиболее пригоден 1-й способ. В случае, когда режим WDT не используется, 4-й модуль может работать в любом другом режиме.
Широтно-импульсный модулятор — PWM (рис.2.23, рис.2.24)
Любой модуль РСА из 5-ти имеющихся может быть запрограммирован как "широтно-импульсный модулятор". Этот режим может использоваться для преобразования дискретного выходного значения в аналоговый сигнал посредством какого-либо внешнего преобразователя (например, интегрирующей цепи). Частота выходного сигнала зависит от частоты тактирования таймера/счётчика РСА, т.е., для тактовой частоты 16КГц, максимально возможная выходная частота составит 15.6 Кгц.
РСА генерирует частотно-модулированный сигнал путём сравнения младшего байта счётчика/таймера CL с младшим байтом соответствующего регистра фиксации/хранения CCAPnL (Рис.2-23). Когда CL меньше CCAPnL, выход СЕХn имеет низкий уровень; при CL большем или равном CCAPnL - выход СЕХn имеет высокий уровень. Таким образом, значение регистра CCAPnL управляет длительностью импульсов, поступающих на вход СЕХn. Для изменения значения CCAPnL "на лету", без сопровождающих это действие выбросов выходного сигнала, пользователь должен производить запись этого значения в регистр ССАРnН. Значение старшего байта регистра фиксации/хранения сдвигается в младший байт аппаратно в момент перехода значения счётчика/таймера из 0FFh в 00h - начала следующего периода выходного сигнала. Регистр ССАРnН может содержать любое значение от 0 до 255, что варьирует ширину отрицательного импульса от 100 до 0.4%.
Рис. 2.23. Регистр CCAOMn
Рис. 2.24. Режим широтно-импульсного модулятора
PCA1
Однако описываемая микросхема, содержит и второй набор РСА, аналогичный первому, названный РСА1. Отличия РСА1 от РСА заключаются в следующем:
· модуль 4 РСА1 не поддерживает сторожевой таймер;
· внешними выводами РСА1 являются ножки Р4.2-Р4.7 (все альтернативные функции портов микросхемы перечислены при описании её выводов);
· названия всех регистров РСА1 и их битов содержат символ "1" в своём имени;
· в регистре управления РСА1 СICON, в 5-й позиции имеется дополнительный бит CRE (битовый адрес 0EDh). При установке данного бита в "1", разрешение работы РСА1 происходит посредством совместной установки битов CR и CR 1.
Соответствие имён регистров и битов узлов РСА и РСА1
РСА | РСА1 |
SFR-регистры | |
CCON | С1CON |
CMOD | C1MOD |
ССАРМ0 | С1САРМ0 |
ССАРМ1 | С1САРМ1 |
ССАРМ2 | С1САРМ2 |
ССАРМЗ | С1САРМЗ |
ССАРМ4 | С1САРМ4 |
CL | CL1 |
CCAP0L | C1CAP0L |
CCAP1L | C1CAP1L |
CCAP2L | C1CAP2L |
CCAP3L | C1CAP3L |
CCAP4L | C1CAP4L |
СН | СН1 |
ССАР0Н | С1САР0Н |
ССАР1Н | С1САР1Н |
ССАР2Н | С1САР2Н |
ССАРЗН | С1САРЗН |
ССАР4Н | С1САР4Н |
Биты | |
ECI | ECI1 |
СЕХ0 | С1ЕХ0 |
СЕХ1 | С1ЕХ1 |
СЕХ2 | С1ЕХ2 |
СЕХЗ | С1ЕХЗ |
СЕХ4 | С1ЕХ4 |
CCF0 | C1CF0 |
CCF1 | C1CF1 |
CCF2 | C1CF2 |
CCF3 | C1CF3 |
CCF4 | C1CF4 |
CR | CR1 |
CF | CF1 |
Дата добавления: 2015-10-09; просмотров: 959;