F20-23 (1041603), страница 50
Текст из файла (страница 50)
Бит EXEN4 должен быть установлен в 1, чтобы срезы внешнего сигнала навыводе T4EX распознавались и использовались для осуществления захвата или перезагрузки.Если RCLK1 =1 или TCLK1 = 1, то этот бит игнорируется и Таймер 4 работает в режимеавтоперезагрузки.0: При переполнении Таймера 4 или под воздействием перехода из 1 в 0 входного сигнала навнешнем выводе T4EX происходит автоперезагрузка (если EXEN4 = 1).1: Под воздействием перехода из 1 в 0 входного сигнала на внешнем выводе T4EX происходитзахват (если EXEN4 = 1).247Ред.
1.4C8051F020/1/2/3Рисунок 22.29. RCAP4L: Младший байт регистра захвата Таймера 4R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xE4Биты 7-0: RCAP4L: Младший байт регистра захвата Таймера 4.Регистр RCAP4L захватывает младший байт Таймера 4, если Таймер 4 работает в режимезахвата. Если Таймер 4 работает в режиме автоперезагрузки, то этот регистр содержитмладший байт перезагружаемого значения.Рисунок 22.30. RCAP4H: Старший байт регистра захвата Таймера 4R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xE5Биты 7-0: RCAP4H: Старший байт регистра захвата Таймера 4.Регистр RCAP4H захватывает старший байт Таймера 4, если Таймер 4 работает в режимезахвата. Если Таймер 4 работает в режиме автоперезагрузки, то этот регистр содержитстарший байт перезагружаемого значения.Рисунок 22.31.
TL4: Младший байт Таймера 4R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xF4Биты 7-0: TL4: Младший байт Таймера 4.Регистр TL4 содержит младший байт 16-разрядного Таймера 4.Рисунок 22.32. TH4: Старший байт Таймера 4R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xF5Биты 7-0: TH4: Старший байт Таймера 4.Регистр TH4 содержит старший байт 16-разрядного Таймера 4.Ред. 1.4248C8051F020/1/2/323. ПРОГРАММИРУЕМЫЙ МАССИВ СЧЕТЧИКОВПрограммируемый массив счетчиков (ПМС) реализует расширенные таймерные функции, при этомтребует меньшего вмешательства со стороны процессорного ядра, чем стандартные таймеры/счетчикиархитектуры 8051.
ПМС состоит из специального 16-разрядного таймера/счетчика и пяти 16-разрядныхмодулей захват/сравнение. Каждый модуль захват/сравнение имеет свою собственную линию ввода/вывода(CEXn), которая через матрицу соединяется, если разрешено, с портом ввода/вывода (подробная информация онастройке матрицы приведена в разделе 17.1). Таймер/счетчик тактируется программируемым внутреннимсигналом, в качестве которого могут использоваться:- внутренний сигнал с частотой, равной системной тактовой частоте;- внутренний сигнал с частотой, равной 1/4 системной тактовой частоты;- внутренний сигнал с частотой, равной 1/12 системной тактовой частоты;- сигнал от внешнего генератора, деленный по частоте на 8;- переполнение Таймера 0;- входной сигнал на внешнем выводе ECI.Каждый модуль можно независимо настроить для работы в одном из шести режимов: инициируемый по фронтусигнала захват, программный таймер, высокоскоростной выход, выход заданной частоты, 8-разрядныйширотно-импульсный модулятор и 16-разрядный широтно-импульсный модулятор (описание каждого режимаприведено в разделе 23.2).
Для управления модулем ПМС и его настройки используются связанные с ним SFRрегистры. Структурная схема модуля ПМС показана на рис.23.1.Рисунок 23.1. Структурная схема ПМСSYSCLK/4Переполнение Таймера 0ECISYSCLKВнешний тактовый сигнал/8МодульЗахват/сравнение 0Мультиплексортактовыхимпульсов ПМСSYSCLK/1216-разрядныйтаймер-счетчикМодульЗахват/сравнение 1МодульЗахват/сравнение 2249Ред.
1.4МодульЗахват/сравнение 4CEX4ПортВвода/выводаCEX3CEX2CEX1CEX0ECIКоммутирующая матрицаМодульЗахват/сравнение 3C8051F020/1/2/323.1. Таймер/счетчик модуля ПМС16-разрядный таймер/счетчик модуля ПМС состоит из двух 8-разрядных SFR регистров: PCA0L иPCA0H. PCA0H является старшим байтом (СЗБ) 16-разрядного таймера/счетчика, а PCA0L образует младшийбайт (МЗБ). При чтении регистра PCA0L значение регистра PCA0H автоматически фиксируется в регистрезащелке; последующее чтение регистра PCA0H возвратит данные именно из этого регистра-защелки.
Такимобразом, для обеспечения точности считывания полного 16-разрядного значения таймера/счетчика ПМСнеобходимо сначала прочитать регистр PCA0L, а затем регистр PCA0H. Чтение регистров PCA0H или PCA0Lне препятствует функционированию счетчика. Выбор внутреннего сигнала тактирования таймера/счетчикаосуществляется битами CPS2 - CPS0 регистра PCA0MD, как показано в табл.23.2. Следует иметь ввиду, чтоесли для тактирования таймера/счетчика ПМС используется сигнал от внешнего генератора, деленныйпо частоте на 8, то этот сигнал синхронизируется с системным тактовым сигналом и поэтому не долженпревышать его по частоте.При переполнении таймера/счетчика из состояния 0xFFFF в состояние 0x0000 устанавливается в 1 флагпереполнения счетчика (CF) в регистре PCA0MD и, если прерывание от флага CF разрешено, генерируетсязапрос прерывания.
Установка в 1 бита ECF в регистре PCA0MD разрешает генерацию запроса прерываний приустановке флага CF. Бит CF не сбрасывается аппаратно при переходе к процедуре обслуживания прерывания идолжен быть сброшен программно. Следует иметь ввиду, что прерывания от флага CF распознаются только втом случае, если прерывания от модуля ПМС разрешены глобально. Прерывания от ПМС разрешаютсяглобально установкой в 1 битов EA (IE.7) и EPCA0 (EIE1.3). Сброс в 0 бита CIDL регистра PCA0MD позволяетПМС продолжать нормальное функционирование в то время, когда МК переведен в режим ожидания.Таблица 23.1. Выбор тактового сигнала для ПМСВнутренний сигнал тактирования ПМСSYSCLK/12SYSCLK/4Переполнение Таймера 0Срез (переход из 1 в 0) входного сигнала на внешнем выводе ECI**011(макс.
частота = SYSCLK/4)100SYSCLK101Сигнал от внешнего генератора, деленный по частоте на 8** Сигнал от внешнего генератора, деленный по частоте на 8, синхронизируется с системным тактовымсигналом** Минимальная длительность удержания высокого или низкого уровней сигнала на входе ECIсоставляет 2 системных тактовых цикла.CPS2000CPS1001CPS0010Рисунок 23.2. Структурная схема таймера/счетчика модуля ПМСПРОСТОЙ (ОЖИДАНИЕ)PCA0MDCWWI D DD T LL E CKCPS2CPS1CEPCSF0PCA0CNCCFRCCF4CCF3CCF2CCF1CCF0К SFR шинеЧтениеPCA0LРегистрзащелкаSYSCLK/12SYSCLK/4Переполнение Таймера 0ECISYSCLKВнешний такт. сигнал/800000101000111PCA0HPCA0LПереполнение К блоку прерываниймодуля ПМСCF100101К модулям захват/сравнение ПМСРед.
1.4250C8051F020/1/2/3Важное замечание относительно регистра PCA0CN: если основной счетчик ПМС (PCA0H : PCA0L)переполняется во время выполнения команды типа чтение-модификация-запись (поразрядные операции SETBили CLR, ANL, ORL, XRL), которые адресуют регистр PCA0CN, то флаг переполнения CF не будетустанавливаться. При выполнении поразрядных операций с регистром PCA0CN необходимо придерживатьсяследующей последовательности действий:1.
Запретить глобально все прерывания (ЕА = 0).2. Прочитать PCA0L. При этом значение PCA0H будет зафиксировано.3. Прочитать PCA0H и сохранить полученное значение.4. Выполнить битовую операцию над CCFn (например, CLR CCF0, или CCF0 = 0;).5. Прочитать PCA0L.6. Прочитать PCA0H и сохранить полученное значение.7. Если значение PCA0H, прочитанное в п.3, равно 0xFF, а значение PCA0H, прочитанное в п.6, равно0x00, то необходимо в программе явным образом установить в 1 бит CF (например, SETB CF, илиCF = 1;).8.
Разрешить глобально все прерывания (ЕА = 1).251Ред. 1.4C8051F020/1/2/323.2. Модули захват/сравнениеКаждый модуль можно независимо настроить для работы в одном из шести режимов: инициируемыйпо фронту сигнала захват, программный таймер, высокоскоростной выход, выход заданной частоты, 8разрядный широтно-импульсный модулятор и 16-разрядный широтно-импульсный модулятор. Каждый модульимеет связанные с ним регистры специального назначения, которые используются для обмена данными смодулем и для настройки режимов работы.В табл.23.2 приведены комбинации бит в регистрах PCA0CPMn, используемые для перевода модулейзахват/сравнение в различные режимы работы. Установка в 1 бит ECCFn в регистрах PCA0CPMn разрешаетгенерацию прерываний при установке в 1 флагов CCFn регистра PCA0CN.
Следует иметь ввиду, чтоиндивидуальные CCFn прерывания распознаются только в том случае, если прерывания от модуля ПМСразрешены глобально. Прерывания от ПМС разрешаются глобально установкой в 1 битов EA (IE.7) и EPCA0(EIE1.3). Схема формирования прерываний от модуля ПМС приведена на рис.23.3.Таблица 23.2. Настройка модулей захват/сравнение в регистре PCA0CPMPWM16ECOMCAPPCAPNMATTOGPWMECCFхх10000ххх01000ххх11000хххх11100000011х011001ххх0100х01х1100х01хOperation ModeЗахват инициируется положительнымфронтом сигнала на линии CEXnЗахват инициируется отрицательнымфронтом сигнала на линии CEXnЗахват инициируется изменениемсигнала на линии CEXnПрограммный таймерВысокоскоростной выходВыход заданной частоты8-разр.
широтно-импульсныймодулятор16-разр. широтно-импульсныймодуляторх = не имеет значенияРисунок 23.3. Схема формирования прерывания от ПМС(для n = 0 … 4)PCA0CNPCA0CPMnP ECWCAMOP1 MP6 n nnCAPNnMT PAOWTGMn n nECCFnCCF RCCF4CCF3CCF2CCF1PCA0MDCCF0CIDLCPS2CPS1CEPCS F00ПереполнениеТаймера/СчетчикаПМС1ECCF0EA(IE.7)EPCA0(EIE1.3)0ПМС модуль 01ECCF10011Декодерприоритетовпрерываний0ПМС модуль 11ECCF20ПМС модуль 21ECCF30ПМС модуль 31ECCF4ПМС модуль 401Ред.
1.4252C8051F020/1/2/323.2.1. Режим захвата по фронту сигналаВ этом режиме активный фронт сигнала на внешнем выводе CEXn приведет к захвату значениятаймера/счетчика ПМС и загрузке его в 16-разрядный регистр захвата/сравнения (PCA0CPLn и PCA0CPHn)соответствующего модуля. Биты CAPPn и CAPNn регистра PCA0CPMn определяют, по какому фронту будетосуществляться захват: по положительному (переход из 0 в 1), по отрицательному (переход из 1 в 0) или полюбому фронту. Когда происходит захват, флаг захвата/сравнения (CCFn) в регистре PCA0CN устанавливаетсяв 1 и, если CCF прерывание разрешено, генерируется запрос прерывания. Бит CCFn не сбрасывается аппаратнопри переходе к процедуре обслуживания прерывания и должен быть сброшен программно.Рисунок 23.4.
Структурная схема ПМС в режиме захватаПрерывание отмодуля ПМСPCA0CPMnPCA0CNCCFR0Портввода/выводаМатрицаCEXnCCCCCCCCCCFFFFF4 3 2 1 0(к CCFn)P ECCMT P EWC A A AOWCMOPP TGMC1 MP N n n n F6 n n nnn1PCA0CPLnPCA0CPHnЗахват01Сигналтактированиямодуля ПМСPCA0LPCA0HПримечание: Минимальная длительность удержания высокого или низкого уровней сигнала на входеCEXn составляет 2 системных тактовых цикла, что необходимо для обеспеченияправильного функционирования модуля ПМС.253Ред. 1.4C8051F020/1/2/323.2.2.