Автор работы: Пользователь скрыл имя, 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
Список использованных источников ……………………………………………………………
Важное замечание относительно регистров захвата/сравнения: При записи 16-разрядного значения в регистры захвата/сравнения модуля ПМС младший байт всегда необходимо записывать первым. Запись в регистр PCA0CPLn сбрасывает в 0 бит ECOMn; запись в регистр PCA0CPHn устанавливает в 1 бит ECOMn.
Рисунок 18.5. Структурная схема ПМС в режиме программного таймера
18.2.3. Режим высокоскоростного выхода
В этом режиме каждый раз, когда происходит совпадение значения таймера/счетчика ПМС и значения 16-разрядного регистра захвата/сравнения (PCA0CPHn and PCA0CPLn), логический уровень выходного сигнала на относящемся к модулю выводе CEXn будет инвертироваться. Режим высокоскоростного выхода включается установкой в 1 битов TOGn, MATn и ECOMn регистра PCA0CPMn.
Важное замечание относительно регистров захвата/сравнения: При записи 16-разрядного значения в регистры захвата/сравнения модуля ПМС младший байт всегда необходимо записывать первым. Запись в регистр PCA0CPLn сбрасывает в 0 бит ECOMn; запись в регистр PCA0CPHn устанавливает в 1 бит ECOMn.
Рисунок 18.6. Структурная схема ПМС в режиме высокоскоростного выхода
Примечание: Начальным состоянием выхода CEXn является лог. ‘1’. Выход CEXn инициализируется этим значением в момент перехода модуля в режим высокоскоростного выхода.
18.2.4. Режим выхода заданной частоты
В режиме выхода заданной частоты на связанном с конкретным модулем выводе CEXn генерируется сигнал прямоугольной формы с программируемой частотой. Содержимое старшего байта регистра захвата/сравнения (PCA0CPHn) определяет количество циклов тактирования ПМС, отсчитываемых до инвертирования состояния сигнала на выходе CEXn. Таким образом, частота прямоугольного сигнала определяется в соответствии с уравнением 18.1:
Уравнение 18.1. Частота прямоугольного сигнала в режиме выхода заданной частоты
FCEXn = FPGA / (2 × PCA0CPHn),
где FPGA - частота сигнала тактирования, задаваемая битами CPS2-0 регистра режима ПМС (PCA0MD).
Примечание: значение 0х00 регистра PCA0CPHn равно значению 256 для этого уравнения. содержимое младшего байта регистра захвата/сравнения (PCA0CPLn ) сравнивается с младшим байтом счетчика ПМС (PCA0L); при их совпадении сигнал на выводе CEXn инвертируется и значение смещения, хранящееся в старшем байте (PCA0CPHn), добавляется к значению регистра PCA0CPLn. Режим выхода заданной частоты включается установкой в 1 битов ECOMn, TOGn и PWMn и регистра PCA0CPMn.
Важное замечание относительно регистров захвата/сравнения: При записи 16-разрядного значения в регистры захвата/сравнения модуля ПМС младший байт всегда необходимо записывать первым. Запись в регистр PCA0CPLn сбрасывает в 0 бит ECOMn; запись в регистр PCA0CPHn устанавливает в 1 бит ECOMn.
Рисунок 18.7. Структурная схема ПМС в режиме выхода заданной частоты
18.2.5. Режим 8-разрядного широтно-импульсного модулятора
Каждый модуль захвата/сравнения можно использовать независимо от других для генерации на соответствующем ему выводе CEXn выходного сигнала с широтно-импульсной модуляцией (ШИМ). Частота этого выходного сигнала зависит от частоты сигнала тактирования таймера/счетчика ПМС. Для изменения коэффициента заполнения (скважности) выходного ШИМ-сигнала используется регистр захвата/сравнения PCA0CPLn соответствующего модуля.
Когда значение младшего байта таймера/счетчика ПМС (PCA0L) становится равным значению регистра PCA0CPLn, на внешнем выводе CEXn устанавливается сигнал высокого уровня. Когда регистр PCA0L переполнится, на выводе CEXn установится сигнал низкого уровня (см. рисунок 18.8). Кроме этого, при переполнении младшего байта таймера/счетчика (PCA0L) из состояния 0xFF в состояние 0x00 регистр PCA0CPLn автоматически перезагружается значением, хранящимся в регистре PCA0CPHn, без вмешательства со стороны программы. Режим 8-разрядного широтно-импульсного модулятора включается установкой в 1 бит ECOMn и PWMn регистра PCA0CPMn. Скважность выходного сигнала в режиме 8-разрядного ШИМ определяется уравнением 18.2.
Уравнение 18.2. Скважность выходного сигнала в режиме 8-разр. ШИМ
DutyCycle = (256 – PCA0CPHn) / 256
В соответствии с уравнением 18.2 максимальная скважность составляет 100% (PCA0CPHn = 0), а минимальная скважность составляет 0,39% (PCA0CPHn = 0xFF). Сигнал со скважностью, равной 0%, можно получить, сбросив в 0 бит ECOMn.
Важное замечание относительно регистров захвата/сравнения: При записи 16-разрядного значения в регистры захвата/сравнения модуля ПМС младший байт всегда необходимо записывать первым. Запись в регистр PCA0CPLn сбрасывает в 0 бит ECOMn; запись в регистр PCA0CPHn устанавливает в 1 бит ECOMn.
Рисунок 18.8. Структурная схема ПМС в режиме 8-разр. ШИМ
18.2.6. Режим 16-разрядного широтно-импульсного модулятора
Каждый модуль захвата/сравнения можно также использовать в режиме 16-разрядного ШИМ. В этом режиме 16-разрядное значение регистров захвата/сравнения (PCA0CPHn : PCA0CPLn) определяет количество циклов тактирования ПМС, в течение которых выходной сигнал ШИМ удерживается на низком логическом уровне. Когда значение счетчика ПМС сравняется с содержимым регистров захвата/сравнения (PCA0CPHn: PCA0CPLn), на выходе CEXn установится сигнал высокого уровня; когда счетчик ПМС переполнится, на выходе CEXn установится сигнал низкого уровня. Чтобы выводить сигнал с изменяемой скважностью, запись новых значений необходимо синхронизировать с прерываниями от флага CCFn модуля ПМС.
Режим 16 - разрядного широтно-импульсного модулятора включается установкой в 1 бит ECOMn, PWMn и PWM16n регистра PCA0CPMn. Для получения сигнала с изменяемой скважностью следует разрешить прерывания (ECCFn = 1 и MATn = 1), чтобы обеспечить возможность синхронизации операций записи регистра захвата/сравнения. Скважность выходного сигнала в режиме 16-разрядного ШИМ определяется уравнением 18.3.
Важное замечание относительно регистров захвата/сравнения: При записи 16-разрядного значения в регистры захвата/сравнения модуля ПМС младший байт всегда необходимо записывать первым. Запись в регистр PCA0CPLn сбрасывает в 0 бит ECOMn; запись в регистр PCA0CPHn устанавливает в 1 бит ECOMn.
Уравнение 18.3. Скважность выходного сигнала в режиме 16-разр. ШИМ
DutyCycle = (65536 – PCA0CPn) / 65536
В соответствии с уравнением 18.3 максимальная скважность составляет 100% (PCA0CPHn = 0), а минимальная скважность составляет 0,0015% (PCA0CPHn = 0xFFFF). Сигнал со скважностью, равной 0%, можно получить, сбросив в 0 бит ECOMn.
Рисунок 18.9. Структурная схема ПМС в режиме 16-разр. ШИМ
18.3. Режим сторожевого таймера
Модуль 5 ПМС можно использовать в режиме программируемого сторожевого таймера (WDT). WDT используется для генерации системного сброса в случае, если время между операциями записи в регистр обновления WDT (PCA0CPH5) превышает заданное значение. WDT можно программно настраивать, а также включать/отключать при необходимости.
Если бит WDTE в регистре PCA0MD установлен в 1, то модуль 5 функционирует как сторожевой таймер (WDT). Старший байт модуля 4 сравнивается со старшим байтом счетчика ПМС; младший байт модуля 4 содержит смещение, которое используется при обновлении WDT. При сбросе сторожевой таймер WDT включается. Пока WDT включен, доступ к некоторым регистрам ПМС ограничен.
18.3.1. Функционирование сторожевого таймера
Если WDT включен, то:
• Счетчик ПМС считает.
• Запись в регистры PCA0L и PCA0H запрещена.
• Биты выбора источника тактирования ПМС (CPS2-CPS0) «заморожены».
• Бит управления состоянием ожидания ПМС (CIDL) «заморожен».
• Модуль 4 переведен в режим программного таймера.
• Операции записи в регистр режима модуля 4 (PCA0CPM4) запрещены.
Если WDT включен, то запись бита CR не изменит состояния счетчика ПМС; счетчик будет считать до тех пор, пока WDT не будет запрещен. Бит управления запуском счетчика ПМС (CR) будет читаться как ‘0’, если WDT включен, но не программа пользователя включает счетчик ПМС.
Если произойдет совпадение значений регистров PCA0CPH5 и PCA0H, когда WDT включен, то будет сгенерирован системный сброс.
Если требуется предотвратить сброс от WDT, то WDT можно обновить путем записи любого значения в регистр PCA0CPH4. При записи PCA0CPH4 в регистр PCA0CPH4 будет загружаться значение регистра PCA0H плюс смещение, содержащееся в регистре PCA0CPL4 (см. рисунок 18.10).
Следует иметь ввиду, что 8-разрядное смещение, хранимое в регистре PCA0CPL5, сравнивается со старшим байтом 16-разрядного счетчика ПМС. Это значение смещения представляет собой количество переполнений PCA0L до сброса. Перед первым переполнением PCA0L может пройти до 256 циклов тактирования счетчика ПМС, в зависимости от значения PCA0L при выполнении обновления. Таким образом, общее смещение определяется (в циклах ПМС) уравнением 18.4, где PCA0L – значение регистра PCA0L в момент обновления.
Уравнение 18.4. Смещение WDT в циклах ПМС
Смещение = (256 . PCA0CPL4) + (256 – PCA0L)
Сброс от WDT будет сгенерирован, если PCA0L переполнится в тот момент, когда значения регистров PCA0CPH4 и PCA0H совпадают. Программа может вызвать сброс от WDT, установив в 1 бит CCF5 (PCA0CN.5), когда WDT включен.
18.3.2. Использование сторожевого таймера
Чтобы настроить WDT, необходимо выполнить следующую последовательность действий:
1. Отключить WDT, сбросив в 0 бит WDTE.
2. Выбрать необходимый источник тактирования ПМС (с помощью бит CPS2-CPS0).
3. Загрузить в регистр PCA0CPL5 необходимое значение смещения, используемое при
обновлении WDT.
4. Настроить режим ожидания ПМС (установить бит CIDL в 1, если WDT должен останавливаться
при переходе CPU в режим ожидания).
5. Включить WDT, установив в 1 бит WDTE.
6. Записать значение в регистр PCA0CPH4, чтобы перезагрузить WDT.
Источник тактирования ПМС и выбор режима ожидания нельзя изменить, пока WDT включен. Сторожевой таймер включается установкой в 1 битов WDTE или WDLCK в регистре PCA0MD. Если WDLCK = 1, то WDT нельзя отключить до следующего системного сброса.
Если WDLCK = 0, то WDT можно отключить, сбросив в 0 бит WDTE. WDT включается после любого сброса. По умолчанию счетчик ПМС тактируется сигналом SYSCLK/12, PCA0L = 0x00, PCA0CPL5 = 0x00. Отсюда следует, что по умолчанию таймаут WDT составляет 3072 системных тактовых цикла (см. уравнение 18.4). В таблице 18.3 приведены некоторые значения таймаутов WDT для типичных частот системного тактового сигнала.
Таблица 18.3. Значения таймаута сторожевого таймера1
Примечания:
1. Предполагается использование SYSCLK/12 в качестве сигнала тактирования ПМС и PCA0L = 0x00 в момент обновления. 2. Частота сброса внутреннего генератора.
18.4. Описание регистров модуля ПМС
Ниже приводится описание регистров специального назначения, связанных с работой модуля ПМС.
SFR-описание 18.1. PCA0CN: Регистр управления ПМС
SFR-адрес: 0xD8 (доступен в битовом режиме адресации)
Бит 7: CF: Флаг переполнения Таймера/Счетчика ПМС.
Устанавливается в 1 аппаратно, когда Таймер/Счетчик ПМС переполняется из состояния
0xFFFF в состояние 0x0000. Если прерывание от Таймера/Счетчика ПМС (от флага CF)
разрешено, то установка этого бита приведет к переходу на процедуру обслуживания
прерывания от флага CF. Этот бит не сбрасывается аппаратно и должен быть сброшен
программно.
Бит 6: CR: Управление запуском Таймера/Счетчика ПМС.
Этот бит включает/отключает Таймер/Счетчик ПМС.
0: Таймер/Счетчик ПМС отключен.
1: Таймер/Счетчик ПМС включен.
Бит 5: CCF5: Флаг захвата/сравнения модуля 5 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF5 разрешено, то установка этого бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот бит не сбрасывается аппаратно и должен быть сброшен программно.
Бит 4: CCF4: Флаг захвата/сравнения модуля 4 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF4 разрешено, то установка этого
бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот
бит не сбрасывается аппаратно и должен быть сброшен программно.
Бит 3: CCF3: Флаг захвата/сравнения модуля 3 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF3 разрешено, то установка этого
бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот
бит не сбрасывается аппаратно и должен быть сброшен программно.
Бит 2: CCF2: Флаг захвата/сравнения модуля 2 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF2 разрешено, то установка этого бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот бит не сбрасывается аппаратно и должен быть сброшен программно.
Бит 1: CCF1: Флаг захвата/сравнения модуля 1 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF1 разрешено, то установка этого
бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот
бит не сбрасывается аппаратно и должен быть сброшен программно.
Бит 0: CCF0: Флаг захвата/сравнения модуля 0 ПМС.
Этот бит устанавливается в 1 аппаратно, если происходит захват или совпадение
сравниваемых значений. Если прерывание от флага CCF0 разрешено, то установка этого
бита приведет к переходу на процедуру обслуживания прерывания от модуля ПМС. Этот
бит не сбрасывается аппаратно и должен быть сброшен программно.
SFR-описание 18.2. PCA0MD: Регистр режима ПМС
SFR-адрес: 0xD9
Бит 7: CIDL: Управление режимом простоя (ожидания) Таймера/Счетчика ПМС.
Это бит определяет поведение ПМС в то время, когда CPU находится в режиме простоя (ожидания).
0: ПМС продолжает нормально
режиме простоя (ожидания).
1: Работа ПМС приостанавливается
в то время, когда МК
(ожидания).
Бит 6: WDTE: Включение сторожевого таймера.
Если WDTE = 1, то Модуль 5 ПМС используется как сторожевой таймер.