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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать документ)

На рисунке 5.5 показаны эквивалентные схемы входов АЦП0 для дифференциального и  однофазного режимов работы. Следует  отметить, что эквивалентная постоянная времени для обеих схем одинакова. Требуемое время установления для заданной точности установления (settling accuracy – SA) можно приблизительно определить из уравнения 5.1. При измерении выходного сигнала датчика температуры или VDD относительно GND, сопротивление RTOTAL уменьшается до величины RMUX. Требования к минимальному времени установления (время выборки/хранения) для АЦП0 приведены в таблице 5.1.

Уравнение 5.1. Время установления сигнала АЦП0

t = ln(2n/SA) × RTOTALCSAMPLE

где: SA – точность установления, задаваемая в долях МЗР (например, 0.25 для установления в пределах ¼ МЗР).

t – требуемое время установления в секундах.

RTOTAL – сумма входного сопротивления мультиплексора AMUX0 и сопротивления внешнего источника сигнала.

n - разрешение АЦП в битах (10).

 

Рисунок 5.5. Эквивалентные  схемы входов АЦП0

Дифференциальный  режим    Однофазный режим

Выбор канала                     Выбор канала

Мультиплексора                      мультиплексора

 

5.3.3.Описание SFR регистров АЦП0

 

SFR-описание 5.1. AMX0P: Регистр выбора положительного канала AMUX0

SFR-адрес: 0xBB

Биты 7-5: Не используются: читаются как 000b. Запись не оказывает никакого влияния.

Биты 4-0: AMX0P4-0: Биты выбора положительного входа AMUX0.

 

SFR-описание 5.2. AMX0N: Регистр выбора отрицательного канала AMUX0

SFR-адрес: 0xBA

Биты 7-5: Не используются: читаются как 000b. Запись не оказывает никакого влияния.

Биты 4-0: AMX0N4-0: Биты выбора отрицательного входа AMUX0.

Следует иметь  ввиду, что если в качестве отрицательного входа выбрано GND, то АЦП0 работает в

однофазном  режиме. Во всех других случаях АЦП0 работает в дифференциальном режиме.

 

SFR-описание 5.3. ADC0CF: Регистр конфигурации АЦП0

SFR-адрес: 0xBC

Биты 7-3: AD0SC4-0: Биты установки периода сигнала дискретизации АЦП0.

Частота сигнала  дискретизации АЦП0 определяется частотой системного тактового сигнала в  соответствии со следующим уравнением:

AD0SC = (SYSCLK/CLKSAR) – 1,

где AD0SC – 5-разрядное  значение, задаваемое битами AD0SC4-0;

CLKSAR – необходимая частота сигнала дискретизации АЦП0.

Максимальное  значение частоты дискретизации  АЦП0 приведено в таблице 5.1.

Бит 2: AD0LJST: Бит  выравнивания результата преобразования

0: Данные в  регистровой паре ADC0H:ADC0L выровнены  вправо.

1: Данные в  регистровой паре ADC0H:ADC0L выровнены влево.

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

 

 

SFR-описание 5.4. ADC0H: Регистр старшего байта слова  данных АЦП0

SFR-адрес: 0xBE

Биты 7-0: Старшие  биты слова данных АЦП0.

Для AD0LJST = 0: Биты 7-2 являются знаковым расширением бита 1. Биты 1-0 представляют собой старшие 2 бита 10-разрядного слова данных АЦП0. Для AD0LJST = 1: Биты 7-0 являются старшими 8 битами 10-разрядного слова данных АЦП0.

 

 

SFR-описание 5.5. ADC0L: Регистр младшего байта слова данных АЦП0

SFR-адрес: 0xBD

Биты 7-0: Младшие  биты слова данных АЦП0

Для AD0LJST = 0: Биты 7-0 являются младшими 8 битами 10-разрядного слова данных АЦП0.

Для AD0LJST = 1: Биты 7-6 представляют собой младшие 2 бита 10-разрядного слова данных

АЦП0. Биты 5-0 всегда читаются как ‘0’.

 

 

SFR-описание 5.6. ADC0CN: Регистр  управления АЦП0

SFR-адрес: 0xE8

(доступен в  битовом режиме адресации)

Bit7: AD0EN: Бит включения  АЦП0.

0: АЦП0 отключен. АЦП0 находится в режиме пониженного  энергопотребления.

1: АЦП0 включен. АЦП0 находится в активном режиме и готов к преобразованию данных.

Бит 6: AD0TM: Бит  установки режима слежения (выборки-хранения) АЦП0.

0: Нормальный  режим: Когда АЦП0 включен, слежение  осуществляется всегда, за исключением 

момента преобразования.

1: Энергосберегающий  режим: Режим слежения определяется  битами AD0CM2-0 (см. ниже).

Бит 5: AD0INT: Флаг прерывания от АЦП0 (устанавливается  при завершении преобразования).

0: АЦП0 не  закончил преобразование данных (с момента последнего обнуления  этого флага).

1: АЦП0 закончил  преобразование данных.

Бит 4: AD0BUSY: Бит  занятости АЦП0.

Чтение:

0: Преобразование  данных завершено или в данный  момент преобразование не осуществляется.

При аппаратном обнулении этого бита флаг AD0INT устанавливается  в 1.

1: Идет процесс преобразования данных.

Запись

0: Не оказывает  никакого влияния.

1: Инициирует  запуск преобразования АЦП0, если  биты AD0CM2-0 = 000b.

Бит 3: AD0WINT: Флаг прерывания от детектора диапазона  АЦП0.

0: Преобразованные  данные не соответствуют заданному  диапазону (с момента последнего

обнуления этого  флага).

1: Преобразованные  данные соответствуют заданному  диапазону.

Биты 2-0: AD0CM2-0: Биты выбора режима запуска преобразования АЦП0.

    Если AD0TM = 0:

000: Запуск преобразования  осуществляется установкой в 1 бита AD0BUSY.

001: Запуск преобразования  осуществляется при переполнении  Таймера 0.

010: Запуск преобразования  осуществляется при переполнении  Таймера 2.

011: Запуск преобразования  осуществляется при переполнении  Таймера 1.

100: Запуск преобразования  осуществляется нарастающим фронтом внешнего сигнала CNVSTR.

101: Запуск преобразования  осуществляется при переполнении  Таймера 3.

11х: Зарезервировано.

    Если AD0TM = 1:

000: слежение (выборка)  начинается в момент установки  в 1 бита AD0BUSY и длится 3 периода

сигнала дискретизации  АЦП0, затем начинается преобразование данных.

001: слежение (выборка)  начинается при переполнении  Таймера 0 и длится 3 периода сигнала

дискретизации АЦП0, затем начинается преобразование данных.

010: слежение (выборка)  начинается при переполнении Таймера 2 и длится 3 периода сигнала

дискретизации АЦП0, затем начинается преобразование данных.

011: слежение (выборка)  начинается при переполнении  Таймера 1 и длится 3 периода сигнала

дискретизации АЦП0, затем начинается преобразование данных.

100: слежение (выборка)  происходит лишь при низком  уровне сигнала на входе CNVSTR;

преобразование  запускается нарастающим фронтом  сигнала на входе CNVSTR.

101: слежение (выборка)  начинается при переполнении  Таймера 3 и длится 3 периода сигнала

дискретизации АЦП0; затем начинается преобразование данных.

11х: Зарезервировано.

 

5.4. Программируемый детектор  диапазона АЦП0

Программируемый детектор диапазона  АЦП0 постоянно проверяет результаты преобразований АЦП0 на соответствие заданному  пользователем диапазону значений и уведомляет систему при обнаружении несоответствия. Это особенно эффективно в управляемых прерываниями системах, т.к. позволяет уменьшить объем кода и улучшить производительность при одновременном уменьшении времени реакции системы. Флаг прерывания от детектора диапазона (бит AD0WINT в регистре ADC0CN) можно использовать также в режиме программного опроса. Старшие и младшие байты граничных значений загружаются в регистры нижней (ADC0GTH, ADC0GTL) и верхней (ADC0LTH и ADC0LTL) границ диапазона АЦП0. Следует отметить, что флаг прерывания от детектора диапазона может устанавливаться как при попадании, так и при непопадании результата преобразования в заданный диапазон, в зависимости от значений, записанных в регистры ADC0GTx и ADC0LTx.

 

SFR-описание 5.7. ADC0GTH: Регистр старшего байта нижней границы диапазона АЦП0

SFR-адрес: 0xC4

Биты 7-0: Старший  байт нижней границы диапазона АЦП0.

 

SFR-описание 5.8. ADC0GTL: Регистр младшего байта нижней  границы диапазона АЦП0

SFR-адрес: 0xC3

Биты 7-0: Младший байт нижней границы диапазона АЦП0.

 

 

SFR-описание 5.9. ADC0LTH: Регистр старшего байта верхней  границы диапазона АЦП0

SFR-адрес: 0xC6

Биты 7-0: Старший  байт верхней границы диапазона  АЦП0.

 

SFR-описание 5.10. ADC0LTL: Регистр младшего байта верхней границы диапазона АЦП0

SFR-адрес: 0xC5

Биты 7-0: Младший  байт верхней границы диапазона  АЦП0.

 

 

 

5.4.1. Детектор  диапазона в однофазном режиме.

На рисунке 5.6 показаны два примера  использования детектора диапазона  при измерении однофазного входного сигнала и выравнивании результата преобразования вправо (ADC0LTH:ADC0LTL = 0x0080 (128d) и ADC0GTH:ADC0GTL = 0x0040 (64d)). В однофазном режиме напряжение входного сигнала может быть от 0 до VREF × (1023/1024) относительно GND, а результат преобразования представлен в виде 10-разрядного целого числа без знака. На примере слева прерывание от флага AD0WINT будет генерироваться в том случае, если результат  преобразования АЦП0 (ADC0H:ADC0L) попадает в диапазон, определяемый значениями регистров ADC0GTH:ADC0GTL и ADC0LTH:ADC0LTL (т.е. если 0х0040 < ADC0H:ADC0L < 0х0080). На примере справа  прерывание от флага AD0WINT будет генерироваться в том случае, если результат преобразования АЦП0 (ADC0H:ADC0L) не попадает в диапазон, определяемый значениями регистров ADC0GTH:ADC0GTL и ADC0LTH:ADC0LTL (т.е. если ADC0H:ADC0L < 0х0040 или ADC0H:ADC0L > 0х0080). На рисунке 5.7 показан пример использования детектора диапазона с такими же значениями регистров границ диапазона при измерении однофазного входного сигнала и выравнивании результата преобразования влево.

Рисунок 5.6. Пример использования детектора диапазона 10-разрядного АЦП0

(данные выровнены  вправо, вход однофазный)

 

Рисунок 5.7. Пример использования детектора диапазона 10-разрядного АЦП0

(данные выровнены  влево, вход однофазный)

 

5.4.2. Детектор  диапазона в дифференциальном  режиме.

На рисунке 5.8 показаны два примера  использования детектора диапазона  при измерении дифференциального  входного сигнала и выравнивании результата преобразования вправо (ADC0LTH:ADC0LTL = 0x0040 (+64d) и ADC0GTH:ADC0GTL = 0xFFFF (-1d)). В дифференциальном режиме измеряемое напряжение между дифференциальными входами АЦП может быть от .VREF до VREF × (511/512). Результат преобразования представлен в дополнительном коде в виде 10-разрядного целого числа со знаком. На примере слева прерывание от флага AD0WINT будет генерироваться в том случае, если результат преобразования АЦП0 (ADC0H:ADC0L) попадает в диапазон, определяемый значениями регистров ADC0GTH:ADC0GTL и ADC0LTH:ADC0LTL (т.е. если 0xFFFF (-1d) < ADC0H:ADC0L < 0x0040 (+64d)). На примере справа прерывание от флага AD0WINT будет генерироваться в том случае, если результат преобразования АЦП0 (ADC0H:ADC0L) не попадает в диапазон, определяемый значениями регистров ADC0GTH:ADC0GTL и ADC0LTH:ADC0LTL (т.е. если ADC0H:ADC0L < 0xFFFF (-1d) или ADC0H:ADC0L > 0x0040 (+64d)). На рисунке 5.9 показан пример использования детектора диапазона с такими же значениями регистров границ диапазона при измерении дифференциального входного сигнала и выравнивании результата преобразования влево.

 

 

Рисунок 5.8. Пример использования детектора диапазона 10-разрядного АЦП0

(данные выровнены  вправо, вход дифференциальный)

 

Таблица 5.1. Электрические  характеристики АЦП0

VDD = 3.0В, VREF = 2.4В (REFSL = 0), Т = – 40 ºС … +85 ºС, если не указано иное (н/д – нет данных).

 

6. Источник опорного  напряжения 

В качестве опорного напряжения в МК C8051F310 можно использовать либо напряжение от внешнего источника, подаваемое через вывод VREF, либо напряжение питания VDD (см. рисунок 6.1). Выбор источника опорного напряжения (ИОН) осуществляется с помощью бита REFSL регистра управления REF0CN. Для выбора внешнего ИОН бит REFSL следует сбросить в 0; для выбора напряжения питания VDD в качестве опорного напряжения бит REFSL следует установить в 1.

Бит BIASE включает внутренний генератор  напряжения смещения, который необходим  для работы АЦП, датчика температуры, внутренних тактовых генераторов и  ЦАП. Этот генератор напряжения смещения автоматически включается при включении  любого из вышеупомянутых модулей. Генератор напряжения смещения можно также включить вручную: для этого необходимо установить в 1 бит BIASE в регистре REF0CN (подробное описание регистра REF0CN приведено в SFR-описании 6.1). Электрические параметры схемы ИОН приведены в таблице 6.1.

Важное замечание относительно использования вывода VREF: Вывод порта Р0.0 в МК C8051F310 и вывод порта Р0.0 в МК C8051F310 используются как вход внешнего опорного напряжения VREF и как выход внутреннего опорного напряжения VREF. В любом случае этот вывод должен быть настроен как аналоговый вход и должен пропускаться матрицей при назначении выводов. Чтобы настроить Р0.0 как аналоговый вход, следует сбросить в 0 соответствующий бит в регистре P0MDIN. Чтобы заставить матрицу пропускать вывод VREF при назначении выводов, следует установить в 1 соответствующий бит в регистре P0SKIP. Подробная информация о настройке портов ввода/вывода приведена в разделе «17. Порты ввода/вывода» на стр. 189. Бит TEMPE в регистре REF0CN включает/отключает датчик температуры. Если датчик температуры отключен, то он по умолчанию переводится в высокоимпедансное состояние. Любые аналого-цифровые измерения (посредством АЦП0) показаний отключенного датчика температуры возвратят незначащие данные.

 

Рисунок 6.1. Структурная схема ИОН

 

 

 

SFR-описание 6.1. REF0CN: Регистр управления  ИОН

SFR-адрес: 0xD1

Биты 7-4: Не используются. Читаются как 0000b. Запись не оказывает  никакого влияния.

Бит 3: REFSL: Бит выбора источника  опорного напряжения.

С помощью этого бита осуществляется выбор источника опорного напряжения.

0: В качестве опорного  напряжения используется напряжение  с внешнего вывода VREF.

1: В качестве опорного  напряжения используется напряжение  питания VDD.

Бит 2: TEMPE: Бит включения  датчика температуры.

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