Лекции по «Проектированию и программированию микропроцессорных систем управления»

Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 22:23, курс лекций

Краткое описание

К началу 70-х годов были созданы сложные системы. Возникла потребность в передаче части функций управления периферийным устройствам, расположенным рядом с объектом управления. К концу 60-х годов в технике стала проявляться тенденция к децентрализации управления. Для этого требовались недорогие, малогабаритные и надежные вычислители. С другой стороны электрическая промышленность к этому времени способна была производить интегральные микросхемы (ИМС) до 3-го уровня интеграции.

Содержание

1. Введение, цели и задачи курса ……………………………………………………………… 3
2. Историческая справка …………………………………………………………………………. 4
3. Структурная организация типового микроконтроллера МК51 …………………………….. 7
4. Методология проектирования систем на основе МП и МЭВМ ……………………………. 8
Описание микроконтроллера C8051F310/311 ……………………………………………… 12
1. Краткий обзор ……………………………………………………………………………… 12
2. Предельно допустимые параметры ……………………………………………………… 24
3. Основные электрические параметры …………………………………………………… . 25
4. Описание корпусов и выводов …………………………………………………………… 26
5. 10-разрядный АЦП ………………………………………………………………………… 30
6. Источник опорного напряжения ………………………………………………………… 44
7. Компараторы …………………….………………………………………………………… 46
8.4. Режимы управления электропитанием ……………………………………………… 53
9. Источники сброса ………………………….……………………………………………… 55
10. Flash-память ……………………………………………………………………………… 60
11. Встроенная память XRAM ……………………………………………………………… 70
12. Генераторы …………………………………………………………….………………… 72
13. Порты ввода/вывода ……………………..……………………………………………… 76
14. SMBus ……………………………………..……………………………………………… 87
15. UART0 ……………………………………..……………………………………………… 103
16. Модуль расширенного SPI (SPI0) ……..……………………………………………… 111
17. Таймеры ……………………………………………………………………………………… 122
18. Программируемый массив счетчиков ……………………………………………………… 137
Список использованных источников ……………………………………………………………

Прикрепленные файлы: 1 файл

Лекции по курсу МК.doc

— 4.57 Мб (Скачать документ)

17.3.1. 16-разрядный таймер  с автоперезагрузкой

Если T3SPLIT (TMR3CN.3) = 0, то Таймер 3 функционирует  как 16-разрядный таймер с автоперезагрузкой. Для тактирования Таймера 3 можно  использовать сигналы SYSCLK, SYSCLK/12 или EXTCLK/8. При переполнении Таймера 3 из состояния 0xFFFF в состояние 0x0000 16-разрядное значение регистров перезагрузки Таймера 3 (TMR3RLH:TMR3RLL) загружается в регистр Таймера 3, как показано на рисунке 17.6, и устанавливается в 1 флаг переполнения старшего байта Таймера 3 (TMR3CN.7).

Если прерывания от Таймера 3 разрешены (если EIE1.7 = 1), то прерывание будет генерироваться при каждом переполнении Таймера 3. Кроме того, если прерывания от Таймера 3 разрешены и бит TF3LEN (TMR3CN.5) установлен в 1, то прерывание будет генерироваться каждый раз при переполнении младших 8 бит (регистр TMR3L) из состояния 0xFF в состояние 0x00.

 

 

 

 

 

Рисунок 17.6. Структурная  схема Таймера 3 в 16-разрядном режиме

17.3.2. 8-разрядные таймеры  с автоперезагрузкой

Если T3SPLIT = 1, то Таймер 3 функционирует  как два 8-разрядных таймера (TMR3H и TMR3L). Оба 8-разрядных таймера функционируют в режиме с автоперезагрузкой, как показано на рисунке 17.7. TMR3RLL содержит значение перезагрузки для TMR3L; TMR3RLH содержит значение перезагрузки для TMR3H. Бит TR3 в регистре TMR3CN управляет запуском TMR3H; TMR3L, работающий в 8-разрядном режиме, запущен всегда. Для тактирования каждого 8-разрядного таймера можно использовать сигналы SYSCLK, SYSCLK/12 или EXTCLK/8. Биты выбора источника тактирования Таймера 3 (T3MH и T3ML в регистре CKCON) выбирают либо SYSCLK, либо сигнал тактирования, определяемый битом выбора внешнего источника тактирования Таймера 3 (T3XCLK в регистре TMR3CN), следующим образом:

Если TMR3H переполняется из 0xFF в 0x00, то бит TF3H устанавливается в 1; если TMR3L переполняется из 0xFF в 0x00, то бит TF3L устанавливается в 1. Если прерывания от Таймера 3 разрешены (EIE1.7), то прерывание будет генерироваться при каждом переполнении TMR3H.

Если прерывания от Таймера 3 разрешены  и бит TF3LEN (TMR3CN.5) установлен в 1, то прерывание будет генерироваться каждый раз при переполнении либо TMR3L, либо TMR3H.

Если TF3LEN = 1, то программа должна проверять  флаги TF3H и TF3L, чтобы определить источник прерывания от Таймера 3. Флаги прерывания TF3H и TF3L не сбрасываются аппаратно и  должны сбрасываться программно.

 

Рисунок 17.7. Структурная схема Таймера 3 в 8-разрядном режиме

 

SFR-описание 17.13. TMR3CN: Регистр  управления Таймера 3

SFR-адрес: 0x91

Бит 7: TF3H: Флаг переполнения старшего байта Таймера 3.

Этот бит аппаратно устанавливается в 1 при переполнении старшего байта Таймера 3 из

состояния 0xFF в состояние 0x00. В 16-разрядном  режиме это будет происходить  при 

переполнении Таймера 3 из состояния 0xFFFF в состояние 0x0000. Если прерывание от

Таймера 3 разрешено, то установка  этого бита приведет к переходу на процедуру

обслуживания прерывания от Таймера 3. Этот бит не сбрасывается аппаратно, он должен

быть сброшен программно.

Бит 6: TF3L: Флаг переполнения младшего байта Таймера 3. Этот бит аппаратно  устанавливается 

в 1 при переполнении младшего байта Таймера 3 из состояния 0xFF в состояние 0x00. При

установке этого бита прерывание будет  генерироваться в том случае, если TF3LEN = 1 и 

прерывания от Таймера 3 разрешены. Бит TF3L устанавливается в 1 при переполнении

младшего байта независимо от режима работы Таймера 3. Этот бит не сбрасывается

аппаратно.

Бит 5: TF3LEN: Флаг разрешения прерывания от переполнения младшего байта Таймера 3. Этот

бит разрешает/запрещает прерывания от переполнения младшего байта Таймера 3. Если

TF3LEN = 1 и прерывания от Таймера 3 разрешены, то при переполнении младшего байта

Таймера 3 будет генерироваться прерывание.

0: Прерывания от переполнения  младшего байта Таймера 3 запрещены.

1: Прерывания от переполнения  младшего байта Таймера 3 разрешены.

Бит 4: TF3CEN: Включение режима захвата частоты НЧ-генератора для Таймера 3.

Этот бит включает/отключает  режим захвата частоты НЧ-генератора для Таймера 3. Если TF3CEN = 1 и прерывания от Таймера 3 разрешены, то прерывание будет генерироваться по спадающему фронту выходного сигнала НЧ-генератора, а текущее значение 16-разрядного таймера (в TMR3H:TMR3L) будет скопировано в регистровую пару TMR3RLH:TMR3RLL. См. более подробную информацию в разделе «16. Генераторы» на стр. 175.

0: Режим захвата частоты НЧ-генератора для Таймера 3 отключен.

1: Режим захвата частоты НЧ-генератора  для Таймера 3 включен.

Бит 3: T3SPLIT: Выбор раздельного режима работы для Таймера 3.

Если этот бит установлен в 1, то Таймер 3 функционирует как два 8-разрядных  таймера с

автоперезагрузкой.

0: Таймер 3 функционирует в 16-разрядном  режиме с автоперезагрузкой.

1: Таймер 3 функционирует как два  8-разрядных таймера с автоперезагрузкой.

Бит 2: TR3: Бит управления запуском Таймера 3.

Этот бит включает/отключает  Таймер 3. В 8-разрядном режиме этот бит

включает/отключает только TMR3H; TMR3L в этом режиме включен всегда.

0: Таймер 3 отключен.

1: Таймер 3 включен.

Бит 1: Не используется. Читается как 0b. Запись не оказывает никакого влияния.

Бит 0: T3XCLK: Выбор внешнего источника  тактирования для Таймера 3. Этот бит выбирает

внешний источник тактирования для  Таймера 3. Если Таймер 3 работает в 8-

разрядном режиме, то этот бит выбирает внешний источник тактирования для  обоих 

байтов таймера.

Однако все равно можно использовать биты выбора источника тактирования Таймера 3 (TM3H и TM3L в регистре CKCON) для выбора между внешним источником тактирования и системным тактовым сигналом (для любого таймера).

0: В качестве внешнего источника  тактирования для Таймера 3 выбран  системный 

тактовый сигнал, деленный по частоте на 12.

1: В качестве внешнего источника  тактирования для Таймера 3 выбран  сигнал внешнего 

генератора, деленный по частоте на 8. Следует иметь ввиду, что сигнал EXTCLK/8 синхронизируется с системным  тактовым сигналом SYSCLK.

 

SFR-описание 17.14. TMR3RLL: Младший байт регистра перезагрузки Таймера 3

SFR-адрес: 0x92

Биты 7-0: TMR3RLL: Младший байт регистра перезагрузки Таймера 3.

TMR3RLL содержит младший байт перезагружаемого  значения Таймера 3.

 

SFR-описание 17.15. TMR3RLH: Старший  байт регистра перезагрузки Таймера 3

SFR-адрес: 0x93

Биты 7-0: TMR3RLH: Старший байт регистра перезагрузки Таймера 3.

TMR3RLH содержит старший байт перезагружаемого  значения Таймера 3.

 

SFR-описание 17.16. TMR3L: Младший  байт Таймера 3

SFR-адрес: 0x94

Биты 7-0: TMR3L: Младший байт Таймера 3.

В 16-разрядном режиме регистр TMR3L содержит младший байт 16-разрядного Таймера 3.

В 8-разрядном режиме регистр TMR3L содержит 8-разрядное значение младшего байта 

таймера.

 

SFR-описание 17.17. TMR3H: Старший  байт Таймера 3

SFR-адрес: 0x95

Биты 7-0: TMR3H: Старший байт Таймера 3.

В 16-разрядном режиме регистр TMR3H содержит старший байт 16-разрядного Таймера 3.

В 8-разрядном режиме регистр TMR3H содержит 8-разрядное значение старшего байта 

таймера.

 

18. Программируемый  массив счетчиков

Программируемый массив счетчиков (ПМС) реализует расширенные таймерные  функции, при этом требует меньшего вмешательства со стороны процессорного  ядра, чем стандартные таймеры/счетчики архитектуры 8051. ПМС состоит из специального 16-разрядного таймера/счетчика и пяти 16-разрядных модулей захвата/сравнения. Каждый модуль захвата/сравнения имеет свою собственную линию ввода/вывода (CEXn), которая через матрицу соединяется, если разрешено, с внешним портом ввода/вывода (см. раздел «17.3. Порты ввода/вывода общего назначения» на стр. 196). Таймер/счетчик ПМС тактируется программируемым внутренним сигналом, в качестве которого могут использоваться:

- внутренний сигнал с частотой, равной системной тактовой частоте;

- внутренний сигнал с частотой, равной 1/4 системной тактовой частоты;

- внутренний сигнал с частотой, равной 1/12 системной тактовой частоты;

- сигнал от внешнего генератора, деленный по частоте на 8;

- переполнение Таймера 0;

- входной сигнал на внешнем  выводе ECI.

Каждый модуль захвата/сравнения можно независимо настроить для работы в одном из шести режимов: инициируемый по фронту сигнала захват, программный таймер, высокоскоростной выход, выход заданной частоты, 8-разрядный широтно-импульсный модулятор и 16-разрядный широтно-импульсный модулятор (описание каждого режима приведено в разделе «18.2. Модули захвата/сравнения»). Для управления модулем ПМС и для его настройки используются связанные с ним SFR-регистры. Структурная схема модуля ПМС показана на рисунке 18.1.

Важное примечание: Модуль 4 захвата/сравнения можно использовать как сторожевой таймер WDT (этот режим включается после системного сброса). Если режим WDT включен, то доступ к некоторым регистрам ПМС ограничен. Подробная информация приведена в разделе 18.3.

Рисунок 18.1. Структурная схема ПМС

18.1. Таймер/счетчик модуля  ПМС

16-разрядный таймер/счетчик модуля  ПМС состоит из двух 8-разрядных  SFR-регистров: PCA0L и PCA0H. PCA0H является  старшим байтом (СЗБ) 16-разрядного  таймера/счетчика, а PCA0L образует  младший байт (МЗБ). При чтении регистра PCA0L значение регистра PCA0H автоматически фиксируется в регистре - защелке; последующее чтение регистра PCA0H возвратит данные именно из этого регистра-защелки. Таким образом, для обеспечения точности считывания полного 16-разрядного значения таймера/счетчика ПМС необходимо сначала прочитать регистр PCA0L, а затем регистр PCA0H. Чтение регистров PCA0H или PCA0L не препятствует функционированию счетчика. Выбор внутреннего сигнала тактирования таймера/счетчика осуществляется битами CPS2 - CPS0 регистра PCA0MD, как показано в таблице 18.1. При переполнении таймера/счетчика из состояния 0xFFFF в состояние 0x0000 устанавливается в 1 флаг переполнения счетчика (CF) в регистре PCA0MD и, если прерывание от флага CF разрешено, генерируется запрос прерывания.

Установка в 1 бита ECF в регистре PCA0MD разрешает генерацию запроса  прерываний при установке флага CF. Бит CF не сбрасывается аппаратно  при переходе к процедуре обслуживания прерывания и должен быть сброшен  программно. Следует иметь ввиду, что прерывания от флага CF распознаются только в том случае, если прерывания от модуля ПМС разрешены глобально. Прерывания от ПМС разрешаются глобально установкой в 1 битов EA (IE.7) и EPCA0 (EIE1.4). Сброс в 0 бита CIDL регистра PCA0MD позволяет ПМС продолжать нормальное функционирование в то время, когда МК переведен в режим ожидания (Idle).

Таблица 18.1. Выбор тактового  сигнала для ПМС

* Примечание: Сигнал от внешнего генератора, деленный по частоте на 8, синхронизируется

с системным тактовым сигналом.

Рисунок 18.2. Структурная схема таймера/счетчика модуля ПМС

18.2. Модули захвата/сравнения

Каждый модуль можно независимо настроить для работы в одном  из шести режимов: инициируемый по фронту сигнала захват, программный таймер, высокоскоростной выход, выход заданной частоты, 8 - разрядный широтно-импульсный модулятор и 16-разрядный широтно-импульсный модулятор. Каждый модуль имеет связанные с ним регистры специального назначения, которые используются для обмена данными с модулем и для настройки режимов его работы.

В таблице 18.2 приведены комбинации бит в регистрах PCA0CPMn, используемые для перевода модулей захвата/сравнения  в различные режимы работы. Установка  в 1 битов ECCFn в регистрах PCA0CPMn разрешает  генерацию прерываний при установке  в 1 флагов CCFn. Следует иметь ввиду, что индивидуальные прерывания от флагов CCFn распознаются только в том случае, если прерывания от модуля ПМС разрешены глобально. Прерывания от ПМС разрешаются глобально установкой в 1 битов EA (IE.7) и EPCA0 (EIE1.4).

Схема формирования прерываний от модуля ПМС приведена на рисунке 18.3.

Рисунок 18.3. Схема формирования прерывания от ПМС

Таблица 18.2. Настройка  модулей захват/сравнение в регистре PCA0CPM

18.2.1. Режим захвата  по фронту сигнала

В этом режиме активный фронт сигнала  на внешнем выводе CEXn приведет к захвату значения таймера/счетчика ПМС и загрузке его в 16-разрядный регистр захвата/сравнения (PCA0CPLn и PCA0CPHn) соответствующего модуля. Биты CAPPn и CAPNn регистра PCA0CPMn определяют, по какому фронту будет осуществляться захват: по положительному (переход из 0 в 1), по отрицательному (переход из 1 в 0) или по любому фронту. Когда происходит захват, флаг захвата/сравнения (CCFn) в регистре PCA0CN устанавливается в 1 и, если прерывание от флага CCFn разрешено, генерируется запрос прерывания. Бит CCFn не сбрасывается аппаратно при переходе к процедуре обслуживания прерывания и должен быть сброшен программно.

Если оба бита CAPPn и CAPNn установлены  в 1, то состояние вывода порта, связанного с CEXn, можно прочитать непосредственно, чтобы определить, каким фронтом (положительным или отрицательным) вызван захват.

Рисунок 18.4. Структурная  схема ПМС в режиме захвата

Примечание: Минимальная длительность удержания высокого или низкого уровней сигнала на входе CEXn должна быть не менее двух системных тактовых циклов, что необходимо для обеспечения его корректного распознавания модулем ПМС.

 

18.2.2. Режим программного  таймера (сравнения)

В режиме программного таймера значение таймера/счетчика ПМС сравнивается со значением 16- разрядного регистра захвата/сравнения (PCA0CPHn и PCA0CPLn) соответствующего модуля. Когда происходит совпадение, флаг захвата/сравнения (CCFn) в регистре PCA0CN устанавливается в 1 и, если прерывание от флага CCFn разрешено, генерируется запрос прерывания. Бит CCFn не сбрасывается аппаратно при переходе к процедуре обслуживания прерывания и должен быть сброшен программно. Режим программного таймера включается установкой в 1 битов ECOMn и MATn регистра PCA0CPMn.

Информация о работе Лекции по «Проектированию и программированию микропроцессорных систем управления»