Современные модели микроконтроллеров MCS-51
PAGE 7
Дисциплина «Микроконтроллеры в системах управления», 3-й курс, семестр 6. Модуль 3 Тема 3
Модуль 3 Тема 3 Современные модели микроконтроллеров MCS-51
3.1 Обзор современных моделей микроконтроллеров MCS-51
Первые микроконтроллеры с ядром MCS-51 были разработаны в 70-х годах прошлого столетия фирмой Intel одновременно с микропроцессорами серии i8086, которые являются «предками» современных МП для ПЭВМ. С тех пор ядро
MCS-51 приобрело огромную популярность, и в настоящее время десятки корпораций по всему миру производят несколько сотен моделей микроконтроллеров этого семейства. Хотя фирма Intel свернула производство контроллеров MCS-51, другие известные производители (Atmel, Philips, Siemens, Analog Devices, Silicon Labs) продолжают развивать это направление.
В модуле 2 уже упоминались некоторые базовые модели семейства MCS-51 разработки Intel. Напомним, что модели отличаются типом РПП (по послендним цифрам обозначения):
31 без резидентной памяти программ;
51 с РПП однократного электрического программирования;
751 с РПП на основе репрограммируемого ПЗУ с ультрафиолетовым
стиранием.
Остальные характеристики в этих моделях совпадают с базовой моделью.
В контроллерах с цифрами 52/752 реализован еще один таймер Т2, который функционирует в 16-битовой конфигурации и обеспечивает такие режимы:
автоперезагрузка 16-битового стартового числа;
захват текущего содержимого счетных регистров по внешнему сигналу, т.е.
копирование состояния таймера в специальную пару регистров;
генерация внешних импульсов;
тактирование порта UART.
Существенным недостатком всех контроллеров MCS-51 младших моделей является сложная технология перепрограммирования РПП контроллер нужно извлекать из схемы, использовать специальные программаторы.
Данная проблема впервые была устранена в контроллерах семейства хх89xxxxx, в частности, в МК AT89xxxxx, разработанных фирмой Atmel, благодаря использованию Flash-памяти программ. Это позволяет выполнять перепрограммирование контроллеров непосредственно в целевой системе, в том числе в процессе работы. Такая возможность получила название ISP in-system programmability.
Технология ISP может быть реализована в двух вариантах:
- через последовательный интерфейс SPI serial peripheral interface, для которого использованы несколько линий порта P1; SPI реализован в моделях AT89Sxxxx; интерфейс SPI может также использоваться для обмена данными между двумя и более микроконтроллерами;
- через последовательный порт UART, который переводится в режим программирования; для поддержки процесса используется также специальная загрузочная программа, предварительно размещенная во Flash-памяти; эта технология реализована, в частности, в модели AT89C5115.
Микроконтроллеры с обозначением AT89Cxxxx программируются через параллельный интерфейс, для которого используются практически все линии портов. Процедура выполняется на внешних программаторах, т.е. возможность ISP не поддерживается.
Flash-память микроконтроллеров AT89 может быть перепрограммирована до 1000 раз, что существенно удешевляет процесс отладки программного обеспечения на реальной системе. Особенность протокола программирования Flash стирание и перезапись всего массива памяти.
Другие возможности, реализованные в различных моделях серии AT89:
- расширенное внутренне ОЗУ до 256 байт;
- наличие памяти XRAM дополнительное ОЗУ на кристалле, по способу доступа соответствующее внешней памяти т.е. по командам MOVX;
- энергонезависимая память данных типа EEPROM; в отличие от Flash, допускает перезапись каждой отдельной ячейки непосредственно из прикладной программы; количество циклов перезаписи до 100000 раз;
- WD сторожевой таймер (Watchdog Timer), сигнал переполнения с которого вызывает «сброс» процессора; таким образом предотвращается «зависание» программы;
- PCA programmable counter array многорежимные программируемые таймеры, обычно используемые в системах управления как ШИМ-генераторы;
- наличие двух регистров DPTR во всех моделях AT89Sxxxx.
Микроконтроллеры AT89 имеют единственное ограничение их широкого использования в системах сбора аналоговых данных отсутствие встроенного АЦП (кроме моделей AT89C5115 и AT89C51AC2 в которых реализован АЦП, но определенной проблемой является загрузка программ через UART).
Поэтому достаточно большую популярность для создания систем сбора аналоговых данных приобрели микроконтроллеры ADuC8xx фирмы Analog Devices. Дополнительно к уже упомянутым возможностям в этих МК реализованы (в модели ADuC812): 8-канальный 12-разрядный АЦП с временем преобразования 5 мкс, два потенциальных 12-разрядных ЦАП, шинный последовательный интерфейс I2C.
Большое разнообразие Flash-микроконтроллеров создано фирмой Philips. В контроллерах семейства P89C51Rx+ реализованы объемы Flash от 8к до 64к, WDT, PCA, XRAM, 8- и 10-разрядные АЦП, 8-разрядные ЦАП, ШИМ, интерфейсы программирования SPI, шинные I2C и CAN.
Сравнительно недавно появилась на рынке очень разнообразная серия МК MCS-51 разработки фирмы Silicon Labs обозначение C8051Fxxx. По ресурсам они даже превосходят упомянутые МК Philips (РПП до 128К, РПД до 4К, быстродействие до 100MIPS, два многоканальных (8..24)-разрядных АЦП со скоростью 100500ksps, 12-разрядные ЦАП, интерфейсы JTAG и USB). Цена от 40 до 1500 грн.
Из других производителей, выпускающих МК семейства MCS-51, можно упомянуть Winbond, ISSI, SST, Cygnal и др.
3.2 Характеристика микроконтроллера модели AT89S8252
Данная модель использована в качестве основного микроконтроллера в двухпроцессорной системе УУМС, созданной на каф. 301 ХАИ для проведения лабораторных работ.
В модели AT89S8252 реализованы:
- Flash-память программ объемом 8К, программируемая через SPI;
- EEPROM данных объемом 2К;
- внутреннее ОЗУ объемом 256 байт;
- три 16-битовых таймера (Т0, Т1 и Т2);
- поддержка 9-ти источников прерываний;
- последовательные интерфейсы UART и SPI;
- программируемый сторожевой таймер WDT;
- два регистра DPTR для работы с внешним адресным пространством.
Нижние 128 байт внутреннего ОЗУ имеют структуру, стандартную для MCS-51. Верхние 128 байт по значениям адресов (80hFFh) совпадают с адресами области РСФ. Поэтому служебные регистры в РСФ доступны через прямую адресацию (т.е. по именам регистров), а байты ОЗУ только через косвенную адресацию.
Flash-память программ занимает адресное пространство 0000h1FFFh. При программировании через интерфейс SPI перезаписывается весь массив памяти.
3.2.1 Управление сторожевым таймером и доступом к EEPROM
Проводится с помощью регистра WMCON, который не имеет битовой адресации.
Имя бита |
Номер |
Назначение бита |
PS2 PS1 PS0 |
7 6 5 |
Задание периода срабатывания сторожевого таймера: при “000” 16 мс, |
EEMWE |
4 |
Разрешение записи в EEPROM. Перед записью нужно установить в “1”. |
EEMEN |
3 |
Разрешение доступа к EEPROM. При установке в “1” команды MOVX на основе DPTR работают с областью EEPROM. При сбросе в “0” команды |
DPS |
2 |
Выбор активного регистра DPTR. При DPS = 0 (по умолчанию) активен основной DPTR (DP0H:DP0L). При DPS = 1 активен (DP1H:DP1L) |
WDTRST |
1 |
Сброс сторожевого таймера / признак занятости EEPROM. При записи в этот бит “1” сторожевой таймер сбрасывается, а данный бит автоматически переходит в “0” (это не влияет на состояние EEPROM). При чтении бита анализируется состояние EEPROM: если бит равен “0”, |
WDTEN |
0 |
Бит запуска сторожевого таймера. При WDTEN = 1 таймер запускается и будет генерировать сброс МК через интервал времени, определяемый |
Особенность использования сторожевого таймера состоит в том, что он должен быть настроен на период TWD > T0 max, где T0 max максимальный из периодов дискретности, реализуемый в данной системе.
В каждом периоде дискретности T0 max нужно выполнять сброс сторожевого таймера для того, чтобы он начинал новый период контроля TWD.
Предположим, что в микроконтроллерной системе T0 max = 100 мс. Тогда период сторожевого таймера должен составлять, как минимум TWD = 128 мс. Соответствующая двоичная комбинация для разрядов [PS2PS0] = 011.
В инициализирующем блоке программы нужно выполнить настройку:
mov WMCON,#01100000b
Перед началом циклических действий по алгоритму запускаем WDT установкой в “1” бита WDTEN:
orl WMCON,#00000001b
В подпрограмме, обслуживающей завершение основного периода дискретности T0 max , нужно выполнить сброс сторожевого таймера (бит WDTRST = 1):
orl WMCON,#00000010b
Обращение к блоку памяти данных EEPROM выполняется, как к внешней памяти, командами MOVX A,@DPTR и MOVX @DPTR,A по адресам от 0000h до 07FFh (2 кбайта). Для указания, что обращение производится к EEPROM, нужно в программе установить бит EEMEN:
mov WMCON,#00001000b
Особенность обращения к EEPROM состоит в том, что цикл записи происходит гораздо дольше, чем во внешнюю память (около 2,5 мс). Поэтому в программе нужно ожидать завершения текущего цикла записи в EEPROM перед последующей записью или чтением. Для этого служит бит RDY/BSY. Кроме того, запись стробируется установкой бита EEMWE = 1. Чтение из EEPROM занимает столько же времени, как и чтение из внешней памяти (2 МЦ). Пример процедуры записи одного байта в EEPROM следующий:
mov A,#data ; Данные для записи
mov DPTR,#Address ; Задаем нужный адрес памяти
orl WMCON,#00011000b ; Установка EEMWE=1 и EEMEN=1
movx @DPTR,A ; Инициируем запись
wt: mov A,WMCON ; Цикл ожидания завершения записи
. . . ;
jnb ACC.1,wt ; Проверяем бит RDY/BSY
anl WMCON,#11100111b ; Сброс битов EEMWE и EEMEN
В цикле ожидания можно выполнять любые другие действия по обработке данных, не связанные с обращением к EEPROM и внешней памяти.
3.2.2 Структура и использование таймера Т2
Программная модель таймера Т2 содержит следующие регистры:
- счетные регистры TH2 и TL2;
- регистры RCAP2H и RCAP2L для (стартового числа) / (захвата значения);
- регистр выбора режимов и управления T2CON;
- регистр дополнительных режимов T2MOD.
Регистры (TH2, TL2) и (RCAP2H, RCAP2L) всегда работают в парах, поэтому таймер Т2 является полностью 16-разрядным.
Для работы таймера Т2 по внешним сигналам служат линии порта Р1:
линия Р1.0 (имя Т2) вход импульсов для режима счетчика или выход генератора;
линия Р1.1 (имя T2EX) вход управления захватом/перезагрузкой таймера Т2.
Основное управление таймером Т2 выполняют с помощью регистра Т2CON. Данный регистр имеет битовую адресацию.
Имя бита |
Номер |
Назначение бита |
TF2 |
7 |
Флаг переполнения таймера Т2 (при переходе из FFFFh в 0000h). Должен обнуляться программно. В режиме тактирования порта UART этот флаг не устанавливается (т.е. при RCLK=1 или TCLK=1). |
EXF2 |
6 |
Флаг внешнего события таймера Т2. Устанавливает по перепаду 10 на входе T2EX (линия Р1.1), если бит EXEN2=1. Обрабатывается как прерывание. Должен обнуляться программно. |
RCLK |
5 |
Выбор источника синхронизации для приемника UART в режимах 1 и 3. |
TCLK |
4 |
Выбор источника синхронизации для передатчика UART в режимах 1 и 3. |
EXEN2 |
3 |
Разрешение внешнего события таймера Т2. При EXEN2=1 разрешено восприятие перепада 10 на входе T2EX и установка бита EXF2. |
TR2 |
2 |
Бит запуска/останова таймера T2. При TR2 = 1 таймер запускается и работает в соответствии с настройками C_T2, CP_RL2, RCLK и TCLK. |
C_T2 |
1 |
Выбор режима работы: при C_T2 = 0 таймирование (счет импульсов от ГТИ), при C_T2 = 1 счетчик внешних импульсов по входу Т2 (линия Р1.0 микроконтроллера) |
CP_RL2 |
0 |
Выбор конфигурации таймера Т2. При CP_RL2 = 0 автоперезагрузка стартового числа. Копирование значений из пары (RCAP2H, RCAP2L) в счетные регистры (TH2, TL2) происходит или по переполнению таймера (при EXEN2=0), или по перепаду 10 внешнего сигнала T2EX (при EXEN2=1). При CP_RL2 = 1 захват текущего состояния таймера. По перепаду 10 внешнего сигнала T2EX (при EXEN2=1) происходит копирование текущего состояния счетных регистров (TH2, TL2) в пару регистров (RCAP2H, RCAP2L). Если RCLK=1 или TCLK=1 (тактирование UART), бит CP_RL2 игнорируется, а таймер Т2 работает в конфигурации автоперезагрузки по переполнению. |
Таким образом, захват текущего состояния таймера Т2 может быть инициирован только внешним сигналом T2EX.
Обобщенная таблица режимов таймера Т2 следующая:
RCLK+TCLK |
CP_RL2 |
Режим работы (при включении по TR2=1) |
0 |
0 |
16-разрядный таймер/счетчик (в зависимости от C_T2) с автоперезагрузкой стартового числа из регистров (RCAP2H, RCAP2L) |
0 |
1 |
16-разрядный таймер/счетчик (в зависимости от C_T2) с захватом текущего состояния таймера в регистры (RCAP2H, RCAP2L) |
1 |
x |
Задающий генератор для последовательного порта |
В регистре T2MOD нет битовой адресации, используются только два разряда:
Имя бита |
Номер |
Назначение бита |
T2OE |
1 |
Разрешение выдачи сигнала программируемой частоты от таймера Т2 на внешний вывод P1.0 |
DCEN |
0 |
Разрешение задания направления счета таймера Т2 в режиме автоперезагрузки стартового числа. При DCEN = 0 таймер Т2 всегда считает в прямом направлении от стартового числа, взятого из регистров (RCAP2H, RCAP2L), до FFFFh. При достижении максимума формируется флаг прерывания TF2 ипроисходит перезагрузка стартового числа. При DCEN = 1 направление счета таймера Т2 зависит от сигнала на внешнем входе T2EX. Состояние входа T2EX фиксируется в разряде EXF2, который в этом случае не является флагом прерывания. Значение EXF2 можно использовать для программного определения, в каком направлении считает таймер. |
Приемник и передатчик последовательного порта в микроконтроллерах AT89S8252 могут управляться от разных источников (таймер Т1 или Т2).
При использовании таймера Т2 для тактирования UART (при RCLK=1 или TCLK=1) или генератора внешней частоты (при T2OE=1) значения частоты генерации определяются соотношениями:
FУАПП = FQ / [32 (65536 (RCAP2H,RCAP2L))] и
FOUT = FQ / [4 (65536 (RCAP2H,RCAP2L))] соответственно.
При тактовой частоте FQ = 11,0592 МГц наборы значений стартовых чисел:
для скорости передачи через UART 9600 бит/с FFDCh, 19200 бит/с FFEEh, 38400 бит/с FFF7h; 57600 бит/с FFFAh, 115200 бит/с FFFDh. При FQ = 12 МГц для скорости 9600 бит/с FFD9h, другие значения скорости точно не реализуются.
Прерывание TF2 от таймера Т2 в обоих случаях обрабатывать не нужно.
Перепад 10 на входе T2EX фиксируется в разряде EXF2 (при EXEN2=1) и обрабатывается как дополнительное внешнее прерывание (вектор 002Bh).
Как указывалось ранее, таймер Т2 в принципе может формировать два запроса на прерывание TF2 (от таймера) и EXF2 (от внешнего входа P1.1 T2EX). Оба запроса связаны с одним вектором 002Bh. Поэтому идентификацию источника запроса нужно проводить программно. По этой же причине флаги запросов также должны сбрасываться программой (по аналогии с запросами от УАПП).
В регистр разрешения прерываний IE добавлен бит с номером 5 имя ET2, который разрешает обработку прерывания от таймера Т2. В регистр управления приоритетами IP добавлен бит с именем PT2 для задания высокого приоритета этого прерывания.
Кроме того, в МК AT89S8252 есть дополнительный регистр задания приоритетов IPH, имеющий такую же битовую структуру, как IP. Имена всех битов имеют дополнительную букву “H” в названии (PT2H, PSH, …, PX0H). Таким образом, за счет комбинации значений в разрядах с одинаковым номером в регистрах IP и IPH можно задавать 4 уровня приоритетов:
(IPH.x = 0, IP.x = 0) уровень 0 (низший)
(IPH.x = 0, IP.x = 1) уровень 1
(IPH.x = 1, IP.x = 0) уровень 2
(IPH.x = 1, IP.x = 1) уровень 3 (высший)
Приоритеты внутри уровня такие же, как в базовой модели 80С51, а новые прерывания TF2 и T2EX имеют приоритет ниже, чем у последовательного порта.
3.3 Интерфейс внутрисистемного программирования SPI
В микроконтроллерах AT89Sxxxx реализована возможность изменения содержимого памяти программ даже при работе МК в целевой системе ISP in-system programmability. Эта возможность обеспечивается наличием последовательного интерфейса SPI. Этот интерфейс, кроме целей программирования, в некоторых моделях может также обеспечивать обмен данными между несколькими микроконтроллерами. Скорость обмена до 1,5 Мбит/с.
Согласно стандарту интерфейса SPI, в нем присутствуют такие сигналы (в скобках указана соответствующая физическая линия порта МК):
MOSI (P1.5) master output slave input информационный выход контроллера, инициирующего обмен (ведущего) вход ведомого контроллера;
MISO (P1.6) master input slave output информационный вход контроллера, инициирующего обмен (ведущего) выход ведомого контроллера;
SCK (P1.7) serial clock линия синхронизации; тактовые импульсы формирует ведущий контроллер;
SS (P1.4) slave select линия выбора ведомого устройства; ведомое устройство должно формировать на этом выходе “0”.
Настройка интерфейса SPI для обмена данными с другими микроконтроллерами производится путем установки битов специальных РСФ:
SPCR SPI control register, SPSR SPI status register и SPDR SPI data register. Битовая структура этих регистров в данной теме не рассматривается.
Для целей физического программирования Flash-памяти интерфейс SPI используется совместно с сигналом Reset, а линия SS не задействована. При подаче высокого уровня на вход Reset контроллер переходит в режим сброса и одновременно в режим записи памяти программ.
Физическое программирование Flash-памяти может быть выполнено непосредственно с ПЭВМ. Для выдачи сигналов программирования можно использовать LPT-порт, а необходимый протокол (последовательность команд, адресов и данных для записи) реализуется специальным программным обеспечением. Таким образом, через линии параллельного LPT-порта происходит побитовая передача данных.
Программирование выполняется через кабель, построенный по схеме:
Линия |
Линия МК |
Линия LPT-порта |
MOSI |
P1.5 (6) |
7 |
MISO |
P1.6 (7) |
10 |
SCK |
P1.7 (8) |
8 |
RST |
Reset (9) |
6 |
GND |
GND (20) |
18-25 (все соединить) |
Кабель рекомендуется изготовить таким образом, чтобы каждый сигнальный провод образовывал витую пару с проводником GND (можно использовать плоский многожильный кабель с индивидуальной экранировкой проводов). Длина кабеля не должна превышать 1,5 м.
В качестве специализированного программного обеспечения можно использовать, например, программу-загрузчик AEC_ISP.exe, свободно распространяемую фирмой AEC Corp. Входной информацией для загрузчика AEC_ISP является скомпилированный файл прикладной программы, представленный в формате Intel HEX (такой формат файла формируется практически всеми компиляторами, в том числе и средой Visual MCStudio). Загрузчик позволяет выполнить физическое программирование контроллеров типов AT89S51, AT89S52, AT89S8252, AT89S53. Одновременно с памятью программ может быть выполнена запись данных в EEPROM. Также загрузчик автоматически проводит верификацию (проверку содержимого) Flash- и EEPROM-памяти. Программа-загрузчик AEC_ISP реализована как приложение MS DOS.
Альтернативным решением является использование встроенного загрузчика по интерфейсу SPI в составе интегрированной среды Visual MCStudio. Достоинством является выполнение физического программирования МК непосредственно из среды разработки программ.
Автор конспекта: Джулгаков В.Г., доцент каф. 301, ХАИ
Современные модели микроконтроллеров MCS-51